Skip to content
Snippets Groups Projects
Select Git revision
  • 20953df6d29a0ae63972ca6352a402779a918f0d
  • master default protected
  • 1.31
  • 4.38.7
  • 4.38.6
  • 4.38.5
  • 4.38.4
  • 4.38.3
  • 4.38.2
  • 4.38.1
  • 4.38.0
  • 4.37.2
  • 4.37.1
  • 4.37.0
  • 4.36.0
  • 4.35.0
  • 4.34.1
  • 4.34.0
  • 4.33.1
  • 4.33.0
  • 4.32.2
  • 4.32.1
  • 4.32.0
23 results

255.html

Blame
  • monster.dev.js.map 225.89 KiB
    {
      "version": 3,
      "sources": [
        "node_modules/browser-pack/_prelude.js",
        "packages/monster/source/constraints/abstract.js",
        "packages/monster/source/constraints/abstractoperator.js",
        "packages/monster/source/constraints/andoperator.js",
        "packages/monster/source/constraints/invalid.js",
        "packages/monster/source/constraints/isarray.js",
        "packages/monster/source/constraints/isobject.js",
        "packages/monster/source/constraints/oroperator.js",
        "packages/monster/source/constraints/valid.js",
        "packages/monster/source/data/diff.js",
        "packages/monster/source/data/pathfinder.js",
        "packages/monster/source/data/pipe.js",
        "packages/monster/source/data/transformer.js",
        "packages/monster/source/dom/assembler.js",
        "packages/monster/source/dom/customelement.js",
        "packages/monster/source/dom/handle.js",
        "packages/monster/source/dom/template.js",
        "packages/monster/source/dom/util.js",
        "packages/monster/source/logging/handler.js",
        "packages/monster/source/logging/handler/console.js",
        "packages/monster/source/logging/logentry.js",
        "packages/monster/source/logging/logger.js",
        "packages/monster/source/math/random.js",
        "packages/monster/source/monster.js",
        "packages/monster/source/namespace.js",
        "packages/monster/source/types/base.js",
        "packages/monster/source/types/global.js",
        "packages/monster/source/types/id.js",
        "packages/monster/source/types/is.js",
        "packages/monster/source/types/observer.js",
        "packages/monster/source/types/observerlist.js",
        "packages/monster/source/types/proxyobserver.js",
        "packages/monster/source/types/queue.js",
        "packages/monster/source/types/randomid.js",
        "packages/monster/source/types/stack.js",
        "packages/monster/source/types/tokenlist.js",
        "packages/monster/source/types/uniquequeue.js",
        "packages/monster/source/types/validate.js",
        "packages/monster/source/types/version.js",
        "packages/monster/source/util/clone.js",
        "packages/monster/source/util/comparator.js",
        "packages/monster/source/util/freeze.js"
      ],
      "names": [],
      "mappings": "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,KAFW,CAAZ;AAHc;AAOjB;AAED;AACJ;AACA;AACA;AACA;AACA;;;;;WACI,aAAI,KAAJ,EAAW;AACP,aAAO,KAAK,IAAL,CAAU,MAAV,CAAiB,UAAC,WAAD,EAAc,YAAd,EAA4B,YAA5B,EAA0C,KAA1C,EAAoD;AACxE,eAAO,YAAY,CAAC,GAAb,CAAiB,WAAjB,CAAP;AACH,OAFM,EAEJ,KAFI,CAAP;AAGH;;;;EA1Bc,U;;;;AA6BnB,mBAAQ,iBAAR,CAA0B,cAA1B,EAA0C,IAA1C;;;ACvFA;AAEA;AACA;AACA;;;;;;;;;;;;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACM,W;;;;;AACF;AACJ;AACA;AACA;AACI,uBAAY,UAAZ,EAAwB;AAAA;;AAAA;;AACpB;AACA,kCAAe,UAAf;AAEA,UAAK,IAAL,GAAY,WAAW,CAAC,UAAD,CAAvB;AACA,UAAK,OAAL,GAAe,MAAK,IAAL,CAAU,KAAV,EAAf;AACA,UAAK,SAAL,GAAiB,IAAI,GAAJ,EAAjB;AANoB;AAQvB;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;;;WACI,qBAAY,IAAZ,EAAkB,QAAlB,EAA4B;AACxB,oCAAe,IAAf;AACA,sCAAiB,QAAjB;AACA,WAAK,SAAL,CAAe,GAAf,CAAmB,IAAnB,EAAyB,QAAzB;AACA,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACI,aAAI,KAAJ,EAAW;AACP,aAAO,SAAS,CAAC,KAAV,CAAgB,IAAhB,EAAsB,CAAC,KAAD,CAAtB,CAAP;AACH;;;;EAxCqB,U;;;;AA2C1B,mBAAQ,iBAAR,CAA0B,cAA1B,EAA0C,WAA1C;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAT,CAAqB,OAArB,EAA8B;AAE1B,gCAAe,OAAf;AAEA,MAAI,WAAW,GAAG,IAAI,GAAJ,EAAlB;;AACA,MAAM,KAAK,4BAAG,iBAAH;AAAA;AAAA;AAAA,IAAX,CAL0B,CAO1B;AACA;;;AACA,MAAI,MAAM,GAAG,OAAO,CAAC,QAAR,CAAiB,KAAjB,CAAb;;AAT0B,6CAWZ,MAXY;AAAA;;AAAA;AAW1B,wDAAsB;AAAA,UAAb,CAAa;AAClB,UAAI,CAAC,GAAC,CAAD,aAAC,CAAD,uBAAC,CAAC,CAAG,QAAH,CAAP;;AACA,UAAG,CAAC,kBAAS,CAAT,CAAJ,EAAiB;AACb;AACH;;AAED,UAAI,CAAC,GAAC,CAAD,aAAC,CAAD,uBAAC,CAAC,CAAG,SAAH,CAAP;AACA,UAAI,CAAC,GAAC,CAAD,aAAC,CAAD,uBAAC,CAAC,CAAG,MAAH,CAAP;;AAEA,UAAG,CAAC,IAAE,CAAN,EAAS;AACL,YAAI,CAAC,GAAC,OAAK,IAAI,MAAJ,GAAS,QAAT,EAAL,GAAyB,IAA/B;AACA,QAAA,WAAW,CAAC,GAAZ,CAAgB,CAAhB,EAAmB,CAAnB;AACA,QAAA,OAAO,GAAC,OAAO,CAAC,OAAR,CAAgB,CAAhB,EAAkB,CAAlB,CAAR;AACH;AAEJ;AA1ByB;AAAA;AAAA;AAAA;AAAA;;AA2B1B,MAAI,KAAK,GAAG,OAAO,CAAC,KAAR,CAAc,GAAd,CAAZ;AAEA,EAAA,KAAK,GAAG,KAAK,CAAC,GAAN,CAAU,UAAU,KAAV,EAAiB;AAC/B,QAAI,CAAC,GAAI,KAAK,CAAC,IAAN,EAAT;;AAD+B,gDAElB,WAFkB;AAAA;;AAAA;AAE/B,6DAA0B;AAAA,YAAlB,CAAkB;AACvB,QAAA,CAAC,GAAE,CAAC,CAAC,OAAF,CAAU,CAAC,CAAC,CAAD,CAAX,EAAgB,CAAC,CAAC,CAAD,CAAjB,CAAH;AACF;AAJ8B;AAAA;AAAA;AAAA;AAAA;;AAK/B,WAAO,CAAP;AAGH,GARO,CAAR;AAUA,SAAO,KAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS,eAAT,CAAyB,KAAzB,EAAgC;AAE5B,MAAI,kBAAS,KAAT,KAAmB,KAAK,CAAC,cAAN,CAAqB,UAArB,CAAvB,EAAyD;AACrD,IAAA,KAAK,GAAG,KAAK,CAAC,QAAN,EAAR;AACH;;AAED,gCAAe,KAAf;AACA,SAAO,KAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS,SAAT,CAAmB,KAAnB,EAA0B;AAEtB,MAAI,IAAI,GAAG,kBAAM,KAAK,IAAX,CAAX;AACA,MAAI,GAAJ;;AAEA,UAAQ,KAAK,OAAb;AAEI,SAAK,QAAL;AACI,aAAO,KAAK,IAAL,CAAU,IAAV,CAAe,GAAf,CAAP;;AAEJ,SAAK,SAAL;AACA,SAAK,YAAL;AACA,SAAK,aAAL;AACI,oCAAe,KAAf;AACA,aAAO,KAAK,CAAC,WAAN,EAAP;;AAEJ,SAAK,SAAL;AACA,SAAK,YAAL;AACA,SAAK,aAAL;AACI,oCAAe,KAAf;AACA,aAAO,KAAK,CAAC,WAAN,EAAP;;AAEJ,SAAK,UAAL;AACI,aAAO,KAAK,KAAZ;;AAEJ,SAAK,WAAL;AACI,UAAI,CAAC,GAAG,QAAQ,CAAC,KAAD,CAAhB;AACA,qCAAgB,CAAhB;AACA,aAAO,CAAP;;AAEJ,SAAK,MAAL;AACI,oCAAe,KAAf;AACA,aAAO,KAAK,CAAC,IAAN,EAAP;;AAEJ,SAAK,cAAL;AACI,oCAAe,KAAf;AACA,aAAO,kBAAkB,CAAC,KAAD,CAAlB,CACF,OADE,CACM,IADN,EACY,KADZ,EAEF,OAFE,CAEM,IAFN,EAEY,KAFZ,EAGF,OAHE,CAGM,KAHN,EAGa,KAHb,EAIF,OAJE,CAIM,KAJN,EAIa,KAJb,EAKF,OALE,CAKM,KALN,EAKa,KALb,CAAP;;AAQJ,SAAM,MAAN;AAEI;AACZ;AACA;AACA;AACA;AACA;AAEY,UAAI,QAAJ;AACA,UAAI,YAAY,GAAG,IAAI,CAAC,KAAL,EAAnB;;AAEA,UAAI,kBAAS,KAAT,KAAmB,KAAK,CAAC,cAAN,CAAqB,YAArB,CAAvB,EAA2D;AACvD,QAAA,QAAQ,GAAG,KAAK,CAAC,YAAD,CAAhB;AACH,OAFD,MAEO,IAAI,KAAK,SAAL,CAAe,GAAf,CAAmB,YAAnB,CAAJ,EAAsC;AACzC,QAAA,QAAQ,GAAG,KAAK,SAAL,CAAe,GAAf,CAAmB,YAAnB,CAAX;AACH,OAFM,MAEA,IAAI,QAAO,MAAP,yCAAO,MAAP,OAAkB,QAAlB,IAA8B,MAAM,CAAC,cAAP,CAAsB,YAAtB,CAAlC,EAAuE;AAC1E,QAAA,QAAQ,GAAG,MAAM,CAAC,YAAD,CAAjB;AACH;;AACD,sCAAiB,QAAjB;AAEA,MAAA,IAAI,CAAC,OAAL,CAAa,KAAb;AACA,aAAO,QAAQ,MAAR,4BAAY,IAAZ,EAAP;;AAEJ,SAAM,OAAN;AACA,SAAM,WAAN;AACI,oCAAe,KAAf;AACA,UAAI,GAAG,GAAG,IAAI,SAAJ,GAAgB,eAAhB,CAAgC,KAAhC,EAAuC,WAAvC,CAAV;AACA,aAAO,GAAG,CAAC,IAAJ,CAAS,WAAT,IAAwB,EAA/B;;AAEJ,SAAM,IAAN;AACA,SAAM,GAAN;AAEI,uCAAkB,KAAlB;AAEA,UAAI,aAAa,GAAI,IAAI,CAAC,KAAL,MAAgB,SAArC;AACA,UAAI,cAAc,GAAI,IAAI,CAAC,KAAL,MAAgB,SAAtC;;AAEA,UAAI,aAAa,KAAK,OAAtB,EAA+B;AAC3B,QAAA,aAAa,GAAG,KAAhB;AACH;;AACD,UAAI,aAAa,KAAK,SAAtB,EAAiC;AAC7B,QAAA,aAAa,GAAG,OAAhB;AACH;;AACD,UAAI,cAAc,KAAK,OAAvB,EAAgC;AAC5B,QAAA,cAAc,GAAG,KAAjB;AACH;;AACD,UAAI,cAAc,KAAK,SAAvB,EAAkC;AAC9B,QAAA,cAAc,GAAG,OAAjB;AACH;;AAED,UAAI,SAAS,GAAK,KAAK,KAAK,SAAV,IAAuB,KAAK,KAAK,EAAjC,IAAuC,KAAK,KAAK,KAAjD,IAA0D,KAAK,KAAK,OAApE,IAA+E,KAAK,KAAK,KAA1F,IAAoG,KAAK,KAAK,IAA9G,IAAsH,KAAK,KAAK,MAAhI,IAA0I,KAAK,KAAK,IAArK;AACA,aAAO,SAAS,GAAG,aAAH,GAAmB,cAAnC;;AAGJ,SAAK,SAAL;AACI,oCAAe,KAAf;AAEA,UAAI,SAAS,GAAG,KAAK,CAAC,MAAN,CAAa,CAAb,EAAgB,WAAhB,EAAhB;AACA,aAAO,SAAS,GAAG,KAAK,CAAC,MAAN,CAAa,CAAb,CAAnB;;AACJ,SAAK,SAAL;AACI,oCAAe,KAAf;AAEA,aAAO,KAAK,CAAC,OAAN,CAAc,gDAAd,EAAgE,UAAU,CAAV,EAAa;AAChF,eAAO,CAAC,CAAC,WAAF,EAAP;AACH,OAFM,CAAP;;AAIJ,SAAM,OAAN;AACA,SAAM,QAAN;AAEI,UAAI,CAAC,kBAAS,KAAT,KAAmB,kBAAS,KAAT,CAAnB,IAAsC,iBAAQ,KAAR,CAAvC,KAA0D,KAAK,CAAC,cAAN,CAAqB,QAArB,CAA9D,EAA8F;AAC1F,eAAO,KAAK,CAAC,MAAb;AACH;;AAED,YAAM,IAAI,SAAJ,CAAc,kBAAd,CAAN;;AAEJ,SAAK,QAAL;AACI,MAAA,eAAe,CAAC,KAAD,CAAf;AACA,aAAO,IAAI,CAAC,KAAD,CAAX;;AAEJ,SAAK,OAAL;AACI,aAAO,EAAP;;AAEJ,SAAK,WAAL;AACI,aAAO,SAAP;;AAEJ,SAAK,QAAL;AACI,oCAAe,KAAf;AACA,UAAI,MAAM,GAAG,IAAH,aAAG,IAAH,uBAAG,IAAI,CAAG,CAAH,CAAjB;AACA,aAAO,MAAM,GAAG,KAAhB;;AAEJ,SAAK,QAAL;AACI,oCAAe,KAAf;AACA,UAAI,MAAM,GAAG,IAAH,aAAG,IAAH,uBAAG,IAAI,CAAG,CAAH,CAAjB;AACA,aAAO,KAAK,GAAG,MAAf;;AAEJ,SAAK,QAAL;AACI,aAAQ,IAAI,MAAJ,EAAD,CAAW,QAAX,EAAP;;AAEJ,SAAK,KAAL;AACA,SAAK,UAAL;AACA,SAAK,OAAL;AAEI,MAAA,GAAG,GAAI,IAAI,CAAC,KAAL,MAAgB,WAAvB;AACA,UAAI,YAAY,GAAI,IAAI,CAAC,KAAL,MAAgB,EAApC;;AAEA,UAAI,KAAK,YAAY,GAArB,EAA0B;AACtB,YAAG,CAAC,KAAK,CAAC,GAAN,CAAU,GAAV,CAAJ,EAAoB;AAChB,iBAAO,YAAP;AACH;;AACD,eAAO,KAAK,CAAC,GAAN,CAAU,GAAV,CAAP;AACH;;AAED,UAAI,kBAAS,KAAT,KAAiB,iBAAQ,KAAR,CAArB,EAAqC;AAEjC,YAAI,KAAJ,aAAI,KAAJ,eAAI,KAAK,CAAG,GAAH,CAAT,EAAkB;AACd,iBAAO,KAAP,aAAO,KAAP,uBAAO,KAAK,CAAG,GAAH,CAAZ;AACH;;AAED,eAAO,YAAP;AACH;;AAED,YAAM,IAAI,KAAJ,CAAU,oBAAV,CAAN;;AAEJ,SAAK,MAAL;AAEI,MAAA,GAAG,GAAI,IAAI,CAAC,KAAL,MAAgB,WAAvB;AACA,aAAO,IAAI,sBAAJ,CAAe,KAAf,EAAsB,MAAtB,CAA6B,GAA7B,CAAP;;AAGJ,SAAK,WAAL;AAEI,oCAAe,KAAf;AAEA,UAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAD,CAAL,CAAR,IAAqB,CAAjC;AACA,UAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAD,CAAL,CAAR,IAAqB,CAAtB,IAA2B,KAArC;AAEA,aAAO,KAAK,CAAC,SAAN,CAAgB,KAAhB,EAAuB,GAAvB,CAAP;;AAEJ,SAAK,KAAL;AACI,aAAO,KAAP;;AAEJ;AACI,YAAM,IAAI,KAAJ,CAAU,iBAAV,CAAN;AAtLR;;AAyLA,SAAO,KAAP;AACH;;;ACraD;AAEA;AACA;AACA;;;;;;;;;;;;;;;AAEA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,IAAM,eAAe,GAAG,eAAxB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;IACM,S;;;;;AAEF;AACJ;AACA;AACA;AACA;AACA;AACI,qBAAY,QAAZ,EAAsB;AAAA;;AAAA;;AAClB;AACA,UAAK,eAAL,GAAuB,eAAvB;AACA,oCAAiB,QAAjB,EAA2B,+BAAkB,kBAAlB,CAA3B;AACA,UAAK,QAAL,GAAgB,QAAhB;AAJkB;AAKrB;AAED;AACJ;AACA;AACA;AACA;AACA;;;;;WACI,4BAAmB,MAAnB,EAA2B;AACvB,oCAAe,MAAf;AACA,WAAK,eAAL,GAAuB,MAAvB;AACA,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;;;;WACI,8BAAqB;AACjB,aAAO,KAAK,eAAZ;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,gCAAuB,IAAvB,EAA6B;AAEzB,UAAI,IAAI,KAAK,SAAb,EAAwB;AACpB,QAAA,IAAI,GAAG,IAAI,4BAAJ,CAAkB,EAAlB,CAAP;AACH;;AAED,sCAAiB,IAAjB,EAAuB,4BAAvB;AACA,UAAI,QAAQ,GAAG,KAAK,QAAL,CAAc,SAAd,CAAwB,IAAxB,CAAf;AACA,aAAO,QAAP;AACH;;;;EAlDmB,U;;;;AAsDxB,cAAQ,iBAAR,CAA0B,aAA1B,EAAyC,SAAzC;;;ACjGA;AAEA;AACA;AACA;;;;;;;;;;;;;;;;AAEA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACM,a;;;;;AACF,2BAAc;AAAA;;AAAA;AAEb;AAED;AACJ;AACA;AACA;AACA;;;;;WACI,kBAAgB;AACZ,YAAM,IAAI,KAAJ,CAAU,6DAAV,CAAN;AACH;;;;iCAZuB,W;AAe5B;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AACA,SAAS,qBAAT,CAA+B,OAA/B,EAAwC;AACpC,kCAAiB,OAAjB;AACA,+BAAgB,gBAAhB,EAAkC,MAAlC,CAAyC,OAAO,CAAC,MAAR,EAAzC,EAA2D,OAA3D;AACA;AACH;;AAED,kBAAQ,iBAAR,CAA0B,aAA1B,EAAyC,aAAzC,EAAwD,qBAAxD;;;AC7DA;AAEA;AACA;AACA;;;;;;;;;;;;;;;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA,IAAM,gBAAgB,GAAG,MAAM,CAAC,eAAD,CAA/B;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACM,M;;;;;AACF;AACJ;AACA;AACA;AACI,kBAAY,IAAZ,EAAkB;AAAA;;AAAA;;AACd;;AAEA,QAAI,IAAI,gCAAR;;AAEA,IAAA,IAAI,CAAC,EAAL,GAAU,IAAI,MAAJ,EAAV;AAEA,oCAAiB,IAAjB,EAAuB,4BAAvB;AAEA,UAAK,IAAL,GAAY,IAAZ;AAEA,UAAK,gBAAL,GAAwB,sBAAsB,CAAC,IAAvB,+BAAxB;AACA,UAAK,YAAL,GAAoB,kBAAkB,CAAC,IAAnB,+BAApB;;AACA,UAAK,IAAL,CAAU,cAAV,CAAyB,MAAK,YAA9B;;AAEA,UAAK,KAAL,GAAa,IAAI,OAAJ,EAAb;AACA,UAAK,OAAL,GAAe,IAAI,YAAJ,EAAf;AAhBc;AAkBjB;AAED;AACJ;AACA;;;;;WACI,kBAAS;AACL;AACH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,gBAAO,IAAP,EAAa;AAET,UAAI,oBAAW,IAAX,EAAiB,+BAAkB,UAAlB,CAAjB,CAAJ,EAAqD;AACjD,QAAA,IAAI,GAAG,IAAI,CAAC,iBAAZ;AACH;;AAED,sCAAiB,IAAjB,EAAuB,+BAAkB,aAAlB,CAAvB;;AAEA,UAAI,CAAC,KAAK,KAAL,CAAW,GAAX,CAAe,IAAf,CAAL,EAA2B;AACvB,eAAO,IAAP;AACH;;AAED,WAAK,gBAAL,CAAsB,UAAtB,CAAiC,IAAjC;AAEA,aAAO,IAAI,CAAC,OAAL,CAAa,gBAAb,CAAP;AACA,MAAA,IAAI,CAAC,eAAL,CAAqB,6BAAkB,SAAvC;AAEA,aAAO,IAAP;AAEH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,gBAAO,IAAP,EAAa;AAET,UAAI,oBAAW,IAAX,EAAiB,+BAAkB,UAAlB,CAAjB,CAAJ,EAAqD;AACjD,QAAA,IAAI,GAAG,IAAI,CAAC,iBAAZ;AACH;;AAED,sCAAiB,IAAjB,EAAuB,+BAAkB,aAAlB,CAAvB;;AAEA,UAAI,KAAK,KAAL,CAAW,GAAX,CAAe,IAAf,CAAJ,EAA0B;AACtB,eAAO,IAAP;AACH;;AAED,MAAA,IAAI,CAAC,OAAL,CAAa,gBAAb,IAAiC,IAAjC;AACA,MAAA,IAAI,CAAC,YAAL,CAAkB,6BAAkB,SAApC,EAA+C,IAA/C;AAEA,WAAK,gBAAL,CAAsB,OAAtB,CAA8B,IAA9B,EAAoC;AAChC,QAAA,UAAU,EAAE,IADoB;AAEhC,QAAA,SAAS,EAAE,IAFqB;AAGhC,QAAA,OAAO,EAAE,IAHuB;AAIhC,QAAA,aAAa,EAAE,IAJiB;AAKhC,QAAA,qBAAqB,EAAE,IALS;AAMhC,QAAA,iBAAiB,EAAE;AANa,OAApC;AASA,WAAK,KAAL,CAAW,GAAX,CAAe,IAAf;AAEA,aAAO,IAAP;AAEH;;;;EA3FgB,U;AA8FrB;AACA;AACA;AACA;AACA;;;;;AACA,SAAS,kBAAT,GAA8B;AAC1B,MAAM,IAAI,GAAG,IAAb;AAEA,SAAO,IAAI,kBAAJ,CAAa,YAAM;AACtB,IAAA,IAAI,CAAC,MAAL;AACH,GAFM,CAAP;AAGH;AAED;AACA;AACA;AACA;AACA;;;AACA,SAAS,sBAAT,GAAkC;AAE9B,MAAM,IAAI,GAAG,IAAb;AAEA;AACJ;AACA;AACA;;AACI,MAAM,gBAAgB,GAAG,+BAAkB,kBAAlB,CAAzB,CAR8B,CAU9B;;AACA,SAAO,IAAI,gBAAJ,CAAqB,UAAC,aAAD,EAAgB,QAAhB,EAA6B;AAAA,+CAE1B,aAF0B;AAAA;;AAAA;AAEjD,0DAAsC;AAAA,YAA3B,QAA2B;AAClC,QAAA,IAAI,CAAC,OAAL,CAAa,IAAb,CAAkB,QAAlB;AACH;AAJgD;AAAA;AAAA;AAAA;AAAA;;AAMjD,IAAA,IAAI,CAAC,MAAL;AACH,GAPE,CAAP;AAUH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS,iBAAT,CAA2B,IAA3B,EAAiC;AAAA;;AAC7B,kCAAiB,IAAjB,EAAuB,+BAAkB,MAAlB,CAAvB;AAEA,MAAI,MAAM,oBAAG,IAAI,CAAC,OAAR,kDAAG,cAAe,gBAAf,CAAb;;AACA,MAAI,MAAM,KAAK,SAAf,EAA0B;AACtB,QAAI,UAAU,GAAG,IAAH,aAAG,IAAH,uBAAG,IAAI,CAAG,YAAH,CAArB;;AACA,QAAI,oBAAW,UAAX,EAAuB,+BAAkB,MAAlB,CAAvB,CAAJ,EAAuD;AACnD,aAAO,iBAAiB,CAAC,UAAD,CAAxB;AACH;AACJ;;AAED,SAAO,MAAP;AACH;;AAED,cAAQ,iBAAR,CAA0B,aAA1B,EAAyC,iBAAzC,EAA4D,MAA5D;;;ACjOA;AAEA;AACA;AACA;;;;;;;;;;;;;;;AAEA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACM,Q;;;;;AACF;AACJ;AACA;AACA;AACA;AACA;AACA;AACI,oBAAY,QAAZ,EAAsB;AAAA;;AAAA;;AAClB;AACA,oCAAiB,QAAjB,EAA2B,+BAAkB,qBAAlB,CAA3B;AACA,UAAK,QAAL,GAAgB,QAAhB;AAHkB;AAIrB;AAED;AACJ;AACA;AACA;;;;;WACI,8BAAqB;AACjB,aAAO,KAAK,QAAZ;AACH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,kCAAyB;AACrB,aAAO,KAAK,QAAL,CAAc,OAAd,CAAsB,SAAtB,CAAgC,IAAhC,CAAP;AACH;;;;EA7BkB,U;;;;AAmCvB,cAAQ,iBAAR,CAA0B,aAA1B,EAAyC,QAAzC;;;ACpEA;AAEA;AACA;AACA;;;;;;;;;;;;;;;AAEA;;AACA;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAT,GAAuB;AAAA;;AACnB,MAAI,QAAQ,iBAAG,wBAAH,+CAAG,WAAc,UAAd,CAAf;;AACA,MAAI,QAAO,QAAP,MAAoB,QAAxB,EAAkC;AAC9B,UAAM,IAAI,KAAJ,CAAU,2BAAV,CAAN;AACH;;AAED,SAAO,QAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS,SAAT,GAAqB;AAAA;;AACjB,MAAI,MAAM,kBAAG,wBAAH,gDAAG,YAAc,QAAd,CAAb;;AACA,MAAI,QAAO,MAAP,MAAkB,QAAtB,EAAgC;AAC5B,UAAM,IAAI,KAAJ,CAAU,2BAAV,CAAN;AACH;;AAED,SAAO,MAAP;AACH;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS,6BAAT,CAAuC,IAAvC,EAA6C;AACz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AC/EA;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;AAEA;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAT,CAAoB,KAApB,EAA2B;AACvB,MAAI,KAAK,KAAK,SAAd,EAAyB,OAAO,KAAP;AACzB,MAAI,KAAK,KAAK,IAAd,EAAoB,OAAO,KAAP;AACpB,SAAO,QAAO,KAAP,aAAO,KAAP,uBAAO,KAAK,CAAG,MAAM,CAAC,QAAV,CAAZ,MAAoC,UAA3C;AACH;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS,WAAT,CAAqB,KAArB,EAA4B;AACxB,MAAI,IAAJ;;AAEA,MAAI,KAAK,KAAK,SAAV,IAAuB,KAAK,KAAK,IAAjC,IAAyC,KAAK,KAAK,GAAvD,EAA4D;AACxD,WAAO,IAAP;AACH;;AAED,EAAA,IAAI,WAAU,KAAV,CAAJ;;AAEA,MAAI,IAAI,KAAK,QAAT,IAAqB,IAAI,KAAK,QAA9B,IAA0C,IAAI,KAAK,SAAnD,IAAgE,IAAI,KAAK,QAA7E,EAAuF;AACnF,WAAO,IAAP;AACH;;AAED,SAAO,KAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS,SAAT,CAAmB,KAAnB,EAA0B;AAEtB,MAAI,KAAK,KAAK,IAAV,IAAkB,KAAK,KAAK,KAAhC,EAAuC;AACnC,WAAO,IAAP;AACH;;AAED,SAAO,KAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS,QAAT,CAAkB,KAAlB,EAAyB;AACrB,MAAI,KAAK,KAAK,SAAV,IAAuB,OAAO,KAAP,KAAiB,QAA5C,EAAsD;AAClD,WAAO,KAAP;AACH;;AACD,SAAO,IAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS,QAAT,CAAkB,KAAlB,EAAyB;AAErB,MAAI,OAAO,CAAC,KAAD,CAAX,EAAoB,OAAO,KAAP;AACpB,MAAI,WAAW,CAAC,KAAD,CAAf,EAAwB,OAAO,KAAP;;AAExB,MAAI,QAAO,KAAP,MAAiB,QAArB,EAA+B;AAC3B,WAAO,IAAP;AACH;;AAED,SAAO,KAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS,UAAT,CAAoB,KAApB,EAA2B,QAA3B,EAAqC;AAEjC,MAAI,CAAC,QAAQ,CAAC,KAAD,CAAb,EAAsB,OAAO,KAAP;AACtB,MAAI,CAAC,UAAU,CAAC,QAAD,CAAf,EAA2B,OAAO,KAAP;AAC3B,MAAI,CAAC,QAAQ,CAAC,cAAT,CAAwB,WAAxB,CAAL,EAA2C,OAAO,KAAP;AAC3C,SAAQ,KAAK,YAAY,QAAlB,GAA4B,IAA5B,GAAiC,KAAxC;AAEH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS,OAAT,CAAiB,KAAjB,EAAwB;AACpB,MAAI,KAAK,CAAC,OAAN,CAAc,KAAd,CAAJ,EAA0B;AACtB,WAAO,IAAP;AACH;;AACD,SAAO,KAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS,UAAT,CAAoB,KAApB,EAA2B;AACvB,MAAI,OAAO,CAAC,KAAD,CAAX,EAAoB,OAAO,KAAP;AACpB,MAAI,WAAW,CAAC,KAAD,CAAf,EAAwB,OAAO,KAAP;;AAExB,MAAI,OAAO,KAAP,KAAiB,UAArB,EAAiC;AAC7B,WAAO,IAAP;AACH;;AAED,SAAO,KAAP;AAEH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS,SAAT,CAAmB,KAAnB,EAA0B;AACtB,SAAO,MAAM,CAAC,SAAP,CAAiB,KAAjB,CAAP;AACH;;AAGD,mBAAQ,iBAAR,CAA0B,eAA1B,EAA2C,WAA3C,EAAwD,SAAxD,EAAmE,QAAnE,EAA6E,QAA7E,EAAuF,OAAvF,EAAgG,UAAhG,EAA4G,UAA5G,EAAwH,SAAxH;;;AC5WA;AAEA;AACA;AACA;;;;;;;;;;;;;;;AAEA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACM,Q;;;;;AAEF;AACJ;AACA;AACA;AACA;AACI,oBAAY,QAAZ,EAA+B;AAAA;;AAAA;;AAC3B;;AAEA,QAAI,OAAO,QAAP,KAAoB,UAAxB,EAAoC;AAChC,YAAM,IAAI,KAAJ,CAAU,sCAAV,CAAN;AACH;;AAED,UAAK,QAAL,GAAgB,QAAhB;;AAP2B,sCAAN,IAAM;AAAN,MAAA,IAAM;AAAA;;AAQ3B,UAAK,SAAL,GAAiB,IAAjB;AACA,UAAK,IAAL,GAAY,IAAI,oBAAJ,EAAZ;AACA,UAAK,KAAL,GAAa,IAAI,wBAAJ,EAAb;AAV2B;AAW9B;AAED;AACJ;AACA;AACA;AACA;;;;;WACI,gBAAO,GAAP,EAAY;AACR,WAAK,IAAL,CAAU,GAAV,CAAc,GAAd;AACA,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,mBAAU,GAAV,EAAe;AACX,WAAK,IAAL,CAAU,MAAV,CAAiB,GAAjB;AACA,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;;;;WACI,mBAAU;AACN,aAAO,KAAK,IAAL,CAAU,OAAV,EAAP;AACH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,gBAAO,GAAP,EAAY;AACR,aAAO,KAAK,IAAL,CAAU,QAAV,CAAmB,GAAnB,CAAP;AACH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,gBAAO,OAAP,EAAgB;AACZ,UAAI,IAAI,GAAG,IAAX;AAEA,aAAO,IAAI,OAAJ,CAAY,UAAU,OAAV,EAAmB,MAAnB,EAA2B;AAC1C,YAAI,CAAC,kBAAS,OAAT,CAAL,EAAwB;AACpB,UAAA,MAAM,CAAC,2BAAD,CAAN;AACA;AACH;;AAED,QAAA,IAAI,CAAC,KAAL,CAAW,GAAX,CAAe,OAAf;AAEA,QAAA,UAAU,CAAC,YAAM;AAEb;AACA;AACA,cAAI,IAAI,CAAC,KAAL,CAAW,OAAX,EAAJ,EAA0B;AACtB,YAAA,OAAO;AACP;AACH;;AAED,cAAI,CAAC,GAAG,IAAI,CAAC,KAAL,CAAW,IAAX,EAAR;AACA,cAAI,MAAM,GAAG,IAAI,CAAC,QAAL,CAAc,KAAd,CAAoB,CAApB,EAAuB,IAAI,CAAC,SAA5B,CAAb;;AAEA,cAAI,kBAAS,MAAT,KAAoB,MAAM,YAAY,OAA1C,EAAmD;AAC/C,YAAA,MAAM,CAAC,IAAP,CAAY,OAAZ,WAA2B,MAA3B;AACA;AACH;;AAED,UAAA,OAAO,CAAC,MAAD,CAAP;AACH,SAlBS,EAkBP,CAlBO,CAAV;AAoBH,OA5BM,CAAP;AA8BH;;;;EA/FkB,U;;;;AAmGvB,mBAAQ,iBAAR,CAA0B,eAA1B,EAA2C,QAA3C;;;ACpKA;AAEA;AACA;AACA;;;;;;;;;;;;;;;AAEA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACM,Y;;;;;AAEF;AACJ;AACA;AACI,0BAAc;AAAA;;AAAA;;AACV;AACA,UAAK,SAAL,GAAiB,EAAjB;AAFU;AAGb;AAED;AACJ;AACA;AACA;AACA;AACA;;;;;WACI,gBAAO,QAAP,EAAiB;AACb,sCAAiB,QAAjB,EAA2B,kBAA3B;AAEA,WAAK,SAAL,CAAe,IAAf,CAAoB,QAApB;AACA,aAAO,IAAP;AACH;;;;AAED;AACJ;AACA;AACA;AACA;AACA;AACI,oBAAO,QAAP,EAAiB;AACb,sCAAiB,QAAjB,EAA2B,kBAA3B;AAEA,UAAI,CAAC,GAAG,CAAR;AAAA,UAAW,CAAC,GAAG,KAAK,SAAL,CAAe,MAA9B;;AACA,aAAO,CAAC,GAAG,CAAX,EAAc,CAAC,EAAf,EAAmB;AACf,YAAI,KAAK,SAAL,CAAe,CAAf,MAAsB,QAA1B,EAAoC;AAChC,eAAK,SAAL,CAAe,MAAf,CAAsB,CAAtB,EAAyB,CAAzB;AACH;AACJ;;AAED,aAAO,IAAP;AACH;;;;AAED;AACJ;AACA;AACA;AACA;AACA;AACI,sBAAS,QAAT,EAAmB;AACf,sCAAiB,QAAjB,EAA2B,kBAA3B;AACA,UAAI,CAAC,GAAG,CAAR;AAAA,UAAW,CAAC,GAAG,KAAK,SAAL,CAAe,MAA9B;;AACA,aAAO,CAAC,GAAG,CAAX,EAAc,CAAC,EAAf,EAAmB;AACf,YAAI,KAAK,SAAL,CAAe,CAAf,MAAsB,QAA1B,EAAoC;AAChC,iBAAO,IAAP;AACH;AACJ;;AACD,aAAO,KAAP;AACH;;;;AAED;AACJ;AACA;AACA;AACA;AACI,oBAAO,OAAP,EAAgB;AAEZ,UAAI,OAAO,GAAG,EAAd;AAEA,UAAI,CAAC,GAAG,CAAR;AAAA,UAAW,CAAC,GAAG,KAAK,SAAL,CAAe,MAA9B;;AACA,aAAO,CAAC,GAAG,CAAX,EAAc,CAAC,EAAf,EAAmB;AACf,QAAA,OAAO,CAAC,IAAR,CAAa,KAAK,SAAL,CAAe,CAAf,EAAkB,MAAlB,CAAyB,OAAzB,CAAb;AACH;;AAED,aAAO,OAAO,CAAC,GAAR,CAAY,OAAZ,CAAP;AACH;;;;EA1EsB,U;;;;AA8E3B,mBAAQ,iBAAR,CAA0B,eAA1B,EAA2C,YAA3C;;;ACpHA;AAEA;AACA;AACA;;;;;;;;;;;;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACM,a;;;;;AAEF;AACJ;AACA;AACA;AACA;AACI,yBAAY,MAAZ,EAAoB;AAAA;;AAAA;;AAChB;AACA,kCAAe,MAAf;AACA,UAAK,WAAL,GAAmB,MAAnB;AACA,UAAK,OAAL,GAAe,IAAI,KAAJ,CAAU,MAAV,EAAkB,UAAU,CAAC,IAAX,+BAAlB,CAAf;AAEA,UAAK,SAAL,GAAiB,IAAI,OAAJ,EAAjB;;AACA,UAAK,SAAL,CAAe,GAAf,CAAmB,MAAK,WAAxB,EAAqC,MAAK,OAA1C;;AAEA,UAAK,SAAL,GAAiB,IAAI,0BAAJ,EAAjB;AATgB;AAUnB;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;;;;;WACI,sBAAa;AACT,aAAO,KAAK,OAAZ;AACH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,0BAAiB;AACb,aAAO,KAAK,WAAZ;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,wBAAe,QAAf,EAAyB;AACrB,WAAK,SAAL,CAAe,MAAf,CAAsB,QAAtB;AACA,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,wBAAe,QAAf,EAAyB;AACrB,WAAK,SAAL,CAAe,MAAf,CAAsB,QAAtB;AACA,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,2BAAkB;AACd,WAAK,SAAL,CAAe,MAAf,CAAsB,IAAtB;AACA,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;;;;WACI,0BAAiB,QAAjB,EAA2B;AACvB,aAAO,KAAK,SAAL,CAAe,QAAf,CAAwB,QAAxB,CAAP;AACH;;;;EA7EuB,U;;;;AAiF5B,mBAAQ,iBAAR,CAA0B,eAA1B,EAA2C,aAA3C;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAT,GAAsB;AAElB,MAAM,KAAK,GAAG,IAAd,CAFkB,CAIlB;;AACA,MAAM,OAAO,GAAG;AAEZ;AACA,IAAA,GAAG,EAAE,aAAU,MAAV,EAAkB,GAAlB,EAAuB,QAAvB,EAAiC;AAElC,UAAM,KAAK,GAAG,OAAO,CAAC,GAAR,CAAY,MAAZ,EAAoB,GAApB,EAAyB,QAAzB,CAAd;;AAEA,UAAI,QAAO,GAAP,MAAe,QAAnB,EAA6B;AACzB,eAAO,KAAP;AACH;;AAED,UAAI,qBAAY,KAAZ,CAAJ,EAAwB;AACpB,eAAO,KAAP;AACH,OAViC,CAYlC;;;AACA,UAAK,iBAAQ,KAAR,KAAkB,kBAAS,KAAT,CAAvB,EAAyC;AACrC,YAAI,KAAK,CAAC,SAAN,CAAgB,GAAhB,CAAoB,KAApB,CAAJ,EAAgC;AAC5B,iBAAO,KAAK,CAAC,SAAN,CAAgB,GAAhB,CAAoB,KAApB,CAAP;AACH,SAFD,MAEO;AACH,cAAI,CAAC,GAAG,IAAI,KAAJ,CAAU,KAAV,EAAiB,OAAjB,CAAR;AACA,UAAA,KAAK,CAAC,SAAN,CAAgB,GAAhB,CAAoB,KAApB,EAA2B,CAA3B;AACA,iBAAO,CAAP;AACH;AAEJ;;AAED,aAAO,KAAP;AAEH,KA7BW;AA+BZ;AACA,IAAA,GAAG,EAAE,aAAU,MAAV,EAAkB,GAAlB,EAAuB,KAAvB,EAA8B,QAA9B,EAAwC;AACzC,UAAM,MAAM,GAAG,OAAO,CAAC,GAAR,CAAY,MAAZ,EAAoB,GAApB,EAAyB,KAAzB,EAAgC,QAAhC,CAAf;;AACA,UAAI,QAAO,QAAP,yCAAO,QAAP,OAAoB,QAAxB,EAAkC;AAC9B,QAAA,KAAK,CAAC,SAAN,CAAgB,MAAhB,CAAuB,KAAvB;AACH;;AAED,aAAO,MAAP;AACH,KAvCW;AAyCZ;AACA,IAAA,cAAc,EAAE,wBAAU,MAAV,EAAkB,GAAlB,EAAuB;AACnC,UAAI,GAAG,IAAI,MAAX,EAAmB;AACf,eAAO,MAAM,CAAC,GAAD,CAAb;;AAEA,YAAI,QAAO,GAAP,MAAe,QAAnB,EAA6B;AACzB,UAAA,KAAK,CAAC,SAAN,CAAgB,MAAhB,CAAuB,KAAvB;AACH;;AAGD,eAAO,IAAP;AACH;;AACD,aAAO,KAAP;AACH,KAtDW;AAwDZ;AACA,IAAA,cAAc,EAAE,wBAAU,MAAV,EAAkB,GAAlB,EAAuB,UAAvB,EAAmC;AAC/C,UAAI,MAAM,GAAG,OAAO,CAAC,cAAR,CAAuB,MAAvB,EAA+B,GAA/B,EAAoC,UAApC,CAAb;;AAEA,UAAI,QAAO,GAAP,MAAe,QAAnB,EAA6B;AACzB,QAAA,KAAK,CAAC,SAAN,CAAgB,MAAhB,CAAuB,KAAvB;AACH;;AAGD,aAAO,MAAP;AACH,KAlEW;AAoEZ;AACA,IAAA,cAAc,EAAE,wBAAU,MAAV,EAAkB,GAAlB,EAAuB;AACnC,UAAI,MAAM,GAAG,OAAO,CAAC,cAAR,CAAuB,OAAvB,EAAgC,GAAhC,CAAb;;AAEA,UAAI,QAAO,GAAP,MAAe,QAAnB,EAA6B;AACzB,QAAA,KAAK,CAAC,SAAN,CAAgB,MAAhB,CAAuB,KAAvB;AACH;;AAED,aAAO,MAAP;AACH;AA7EW,GAAhB;AAkFA,SAAO,OAAP;AACH;;;;;;;;;;;;;;;;;;ACnPD;;;;;;;;;;;;;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACM,K;;;;;AAEF;AACJ;AACA;AACI,mBAAc;AAAA;;AAAA;;AACV;AACA,UAAK,IAAL,GAAY,EAAZ;AAFU;AAGb;AAGD;AACJ;AACA;;;;;WACI,mBAAU;AACN,aAAO,KAAK,IAAL,CAAU,MAAV,KAAqB,CAA5B;AACH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,gBAAO;AACH,UAAI,KAAK,OAAL,EAAJ,EAAoB;AAChB,eAAO,SAAP;AACH;;AAED,aAAO,KAAK,IAAL,CAAU,CAAV,CAAP;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,aAAI,KAAJ,EAAW;AACP,WAAK,IAAL,CAAU,IAAV,CAAe,KAAf;AACA,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,iBAAQ;AACJ,WAAK,IAAL,GAAY,EAAZ;AACA,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,gBAAO;AACH,UAAI,KAAK,OAAL,EAAJ,EAAoB;AAChB,eAAO,SAAP;AACH;;AACD,aAAO,KAAK,IAAL,CAAU,KAAV,EAAP;AACH;;;;EA/De,U;;;;AAoEpB,cAAQ,iBAAR,CAA0B,eAA1B,EAA2C,KAA3C;;;AC7FA;AAEA;AACA;AACA;;;;;;;;;;;;;;;AAEA;;AACA;;AACA;;;;;;;;;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA,IAAI,eAAe,GAAG,CAAtB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACM,Q;;;;;AAEF;AACJ;AACA;AACI,sBAAc;AAAA;;AAAA;;AACV;AAEA,IAAA,eAAe,IAAI,CAAnB;AAEA,UAAK,EAAL,GAAU,yBAAY,IAAZ,CAAiB,oBAAO,CAAP,EAAU,KAAV,CAAjB,EACL,OADK,CACG,IADH,EACS,EADT;AAEN;AAFM,KAGL,OAHK,CAGG,SAHH,EAGc,GAHd,IAGqB,eAH/B;AALU;AASb;;;EAdkB,M;;;;AAkBvB,YAAQ,iBAAR,CAA0B,eAA1B,EAA2C,QAA3C;;;;;;;;;;;;;;;;;;ACzDA;;;;;;;;;;;;;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACM,K;;;;;AAEF;AACJ;AACA;AACI,mBAAc;AAAA;;AAAA;;AACV;AACA,UAAK,IAAL,GAAY,EAAZ;AAFU;AAGb;AAGD;AACJ;AACA;;;;;WACI,mBAAU;AACN,aAAO,KAAK,IAAL,CAAU,MAAV,KAAqB,CAA5B;AACH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,gBAAO;AAAA;;AACH,UAAI,KAAK,OAAL,EAAJ,EAAoB;AAChB,eAAO,SAAP;AACH;;AAED,2BAAO,KAAK,IAAZ,+CAAO,WAAY,KAAK,IAAL,CAAU,MAAV,GAAmB,CAA/B,CAAP;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,cAAK,KAAL,EAAY;AACR,WAAK,IAAL,CAAU,IAAV,CAAe,KAAf;AACA,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,iBAAQ;AACJ,WAAK,IAAL,GAAY,EAAZ;AACA,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;;;;WACI,eAAM;AACF,UAAI,KAAK,OAAL,EAAJ,EAAoB;AAChB,eAAO,SAAP;AACH;;AACD,aAAO,KAAK,IAAL,CAAU,GAAV,EAAP;AACH;;;;EAhEe,U;;;;AAqEpB,cAAQ,iBAAR,CAA0B,eAA1B,EAA2C,KAA3C;;;AC9FA;AAEA;AACA;AACA;;;;;;;;;;;;;;;AAEA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACM,S;;;;;AAEF;AACJ;AACA;AACA;AACI,qBAAY,IAAZ,EAAkB;AAAA;;AAAA;;AACd;AACA,UAAK,MAAL,GAAc,IAAI,GAAJ,EAAd;;AAEA,QAAI,OAAO,IAAP,KAAgB,WAApB,EAAiC;AAC7B,YAAK,GAAL,CAAS,IAAT;AACH;;AANa;AAQjB;AAED;AACJ;AACA;AACA;AACA;;;;;WACI,uBAAc;AACV,aAAO,KAAK,MAAM,CAAC,QAAZ,GAAP;AACH;AAED;AACJ;AACA;AACA;AACA;;;SACK,MAAM,CAAC,Q;WAAR,iBAAoB;AAChB;AACA;AACA;AACA,UAAI,KAAK,GAAG,CAAZ;AACA,UAAI,OAAO,GAAG,KAAK,OAAL,EAAd;AAEA,aAAO;AACH,QAAA,IAAI,EAAE,gBAAM;AACR,cAAI,KAAK,GAAG,OAAO,CAAC,MAApB,EAA4B;AACxB,mBAAO;AAAC,cAAA,KAAK,EAAE,OAAF,aAAE,OAAF,uBAAE,OAAO,CAAG,KAAK,EAAR,CAAf;AAA4B,cAAA,IAAI,EAAE;AAAlC,aAAP;AACH,WAFD,MAEO;AACH,mBAAO;AAAC,cAAA,IAAI,EAAE;AAAP,aAAP;AACH;AACJ;AAPE,OAAP;AASH;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACI,kBAAS,KAAT,EAAgB;AAAA;;AACZ,UAAI,kBAAS,KAAT,CAAJ,EAAqB;AACjB,QAAA,KAAK,GAAG,KAAK,CAAC,IAAN,EAAR;AACA,YAAI,OAAO,GAAG,CAAd;AACA,QAAA,KAAK,CAAC,KAAN,CAAY,GAAZ,EAAiB,OAAjB,CAAyB,UAAA,KAAK,EAAI;AAC9B,cAAI,MAAI,CAAC,MAAL,CAAY,GAAZ,CAAgB,KAAK,CAAC,IAAN,EAAhB,MAAkC,KAAtC,EAA6C,OAAO,KAAP;AAC7C,UAAA,OAAO;AACV,SAHD;AAIA,eAAO,OAAO,GAAG,CAAV,GAAc,IAAd,GAAqB,KAA5B;AACH;;AAED,UAAI,oBAAW,KAAX,CAAJ,EAAuB;AACnB,YAAI,QAAO,GAAG,CAAd;;AADmB,mDAED,KAFC;AAAA;;AAAA;AAEnB,8DAAyB;AAAA,gBAAhB,KAAgB;AACrB,0CAAe,KAAf;AACA,gBAAI,KAAK,MAAL,CAAY,GAAZ,CAAgB,KAAK,CAAC,IAAN,EAAhB,MAAkC,KAAtC,EAA6C,OAAO,KAAP;AAC7C,YAAA,QAAO;AACV;AANkB;AAAA;AAAA;AAAA;AAAA;;AAOnB,eAAO,QAAO,GAAG,CAAV,GAAc,IAAd,GAAqB,KAA5B;AACH;;AAED,aAAO,KAAP;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACI,aAAI,KAAJ,EAAW;AAAA;;AACP,UAAI,kBAAS,KAAT,CAAJ,EAAqB;AACjB,QAAA,KAAK,CAAC,KAAN,CAAY,GAAZ,EAAiB,OAAjB,CAAyB,UAAA,KAAK,EAAI;AAC9B,UAAA,MAAI,CAAC,MAAL,CAAY,GAAZ,CAAgB,KAAK,CAAC,IAAN,EAAhB;AACH,SAFD;AAGH,OAJD,MAIO,IAAI,oBAAW,KAAX,CAAJ,EAAuB;AAAA,oDACR,KADQ;AAAA;;AAAA;AAC1B,iEAAyB;AAAA,gBAAhB,KAAgB;AACrB,0CAAe,KAAf;AACA,iBAAK,MAAL,CAAY,GAAZ,CAAgB,KAAK,CAAC,IAAN,EAAhB;AACH;AAJyB;AAAA;AAAA;AAAA;AAAA;AAK7B,OALM,MAKA,IAAI,OAAO,KAAP,KAAiB,WAArB,EAAkC;AACrC,cAAM,IAAI,SAAJ,CAAc,mBAAd,CAAN;AACH;;AAED,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,iBAAQ;AACJ,WAAK,MAAL,CAAY,KAAZ;AACA,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACI,gBAAO,KAAP,EAAc;AAAA;;AACV,UAAI,kBAAS,KAAT,CAAJ,EAAqB;AACjB,QAAA,KAAK,CAAC,KAAN,CAAY,GAAZ,EAAiB,OAAjB,CAAyB,UAAA,KAAK,EAAI;AAC9B,UAAA,MAAI,CAAC,MAAL,WAAmB,KAAK,CAAC,IAAN,EAAnB;AACH,SAFD;AAGH,OAJD,MAIO,IAAI,oBAAW,KAAX,CAAJ,EAAuB;AAAA,oDACR,KADQ;AAAA;;AAAA;AAC1B,iEAAyB;AAAA,gBAAhB,KAAgB;AACrB,0CAAe,KAAf;AACA,iBAAK,MAAL,WAAmB,KAAK,CAAC,IAAN,EAAnB;AACH;AAJyB;AAAA;AAAA;AAAA;AAAA;AAK7B,OALM,MAKA,IAAI,OAAO,KAAP,KAAiB,WAArB,EAAkC;AACrC,cAAM,IAAI,SAAJ,CAAc,mBAAd,CAAN;AACH;;AAED,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACI,iBAAQ,KAAR,EAAe,QAAf,EAAyB;AACrB,oCAAe,KAAf;AACA,oCAAe,QAAf;;AACA,UAAI,CAAC,KAAK,QAAL,CAAc,KAAd,CAAL,EAA2B;AACvB,eAAO,IAAP;AACH;;AAED,UAAI,CAAC,GAAG,KAAK,CAAC,IAAN,CAAW,KAAK,MAAhB,CAAR;AACA,UAAI,CAAC,GAAG,CAAC,CAAC,OAAF,CAAU,KAAV,CAAR;AACA,UAAI,CAAC,KAAK,CAAC,CAAX,EAAc,OAAO,IAAP;AAEd,MAAA,CAAC,CAAC,MAAF,CAAS,CAAT,EAAY,CAAZ,EAAe,QAAf;AACA,WAAK,MAAL,GAAc,IAAI,GAAJ,EAAd;AACA,WAAK,GAAL,CAAS,CAAT;AAEA,aAAO,IAAP;AAGH;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACI,gBAAO,KAAP,EAAc;AAAA;;AAEV,UAAI,kBAAS,KAAT,CAAJ,EAAqB;AACjB,QAAA,KAAK,CAAC,KAAN,CAAY,GAAZ,EAAiB,OAAjB,CAAyB,UAAA,KAAK,EAAI;AAC9B,UAAA,WAAW,CAAC,IAAZ,CAAiB,MAAjB,EAAuB,KAAvB;AACH,SAFD;AAGH,OAJD,MAIO,IAAI,oBAAW,KAAX,CAAJ,EAAuB;AAAA,oDACR,KADQ;AAAA;;AAAA;AAC1B,iEAAyB;AAAA,gBAAhB,KAAgB;AACrB,YAAA,WAAW,CAAC,IAAZ,CAAiB,IAAjB,EAAuB,KAAvB;AACH;AAHyB;AAAA;AAAA;AAAA;AAAA;AAI7B,OAJM,MAIA,IAAI,OAAO,KAAP,KAAiB,WAArB,EAAkC;AACrC,cAAM,IAAI,SAAJ,CAAc,mBAAd,CAAN;AACH;;AAED,aAAO,IAAP;AAEH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,mBAAU;AACN,aAAO,KAAK,CAAC,IAAN,CAAW,KAAK,MAAhB,CAAP;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,iBAAQ,QAAR,EAAkB;AACd,sCAAiB,QAAjB;AACA,WAAK,MAAL,CAAY,OAAZ,CAAoB,QAApB;AACA,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,oBAAW;AACP,aAAO,KAAK,OAAL,GAAe,IAAf,CAAoB,GAApB,CAAP;AACH;;;;EArPmB,U;AAyPxB;AACA;AACA;AACA;AACA;AACA;;;;;AACA,SAAS,WAAT,CAAqB,KAArB,EAA4B;AACxB,MAAI,EAAE,gBAAgB,SAAlB,CAAJ,EAAkC,MAAM,KAAK,CAAC,oCAAD,CAAX;AAClC,gCAAe,KAAf;AACA,EAAA,KAAK,GAAG,KAAK,CAAC,IAAN,EAAR;;AACA,MAAI,KAAK,QAAL,CAAc,KAAd,CAAJ,EAA0B;AACtB,SAAK,MAAL,CAAY,KAAZ;AACA,WAAO,IAAP;AACH;;AACD,OAAK,GAAL,CAAS,KAAT;AACA,SAAO,IAAP;AACH;;AAED,mBAAQ,iBAAR,CAA0B,eAA1B,EAA2C,SAA3C;;;;;;;;;;;;;;;;;;AC1TA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACM,W;;;;;AAEF;AACJ;AACA;AACI,yBAAc;AAAA;;AAAA;;AACV;AACA,UAAK,MAAL,GAAc,IAAI,OAAJ,EAAd;AAFU;AAGb;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;;;;;WACI,aAAI,KAAJ,EAAW;AAEP,oCAAe,KAAf;;AAEA,UAAI,CAAC,KAAK,MAAL,CAAY,GAAZ,CAAgB,KAAhB,CAAL,EAA6B;AACzB,aAAK,MAAL,CAAY,GAAZ,CAAgB,KAAhB;;AACA,6EAAU,KAAV;AACH;;AAED,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,iBAAQ;AACJ;;AACA,WAAK,MAAL,GAAc,IAAI,OAAJ,EAAd;AACA,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,gBAAO;AAEH,UAAI,KAAK,OAAL,EAAJ,EAAoB;AAChB,eAAO,SAAP;AACH;;AACD,UAAI,KAAK,GAAG,KAAK,IAAL,CAAU,KAAV,EAAZ;AACA,WAAK,MAAL,WAAmB,KAAnB;AACA,aAAO,KAAP;AACH;;;;EAtDqB,Y;;;;AA2D1B,eAAQ,iBAAR,CAA0B,eAA1B,EAA2C,WAA3C;;;ACrFA;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;AAEA;;AACA;;AAYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,gBAAT,CAA0B,KAA1B,EAAiC;AAC7B,MAAI,CAAC,oBAAW,KAAX,CAAL,EAAwB;AACpB,UAAM,IAAI,SAAJ,CAAc,uBAAd,CAAN;AACH;AACJ;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS,iBAAT,CAA2B,KAA3B,EAAkC;AAC9B,MAAI,CAAC,qBAAY,KAAZ,CAAL,EAAyB;AACrB,UAAM,IAAI,SAAJ,CAAc,0BAAd,CAAN;AACH;AACJ;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS,eAAT,CAAyB,KAAzB,EAAgC;AAC5B,MAAI,CAAC,mBAAU,KAAV,CAAL,EAAuB;AACnB,UAAM,IAAI,SAAJ,CAAc,wBAAd,CAAN;AACH;AACJ;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS,cAAT,CAAwB,KAAxB,EAA+B;AAC3B,MAAI,CAAC,kBAAS,KAAT,CAAL,EAAsB;AAClB,UAAM,IAAI,SAAJ,CAAc,uBAAd,CAAN;AACH;AACJ;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS,cAAT,CAAwB,KAAxB,EAA+B;AAC3B,MAAI,CAAC,kBAAS,KAAT,CAAL,EAAsB;AAClB,UAAM,IAAI,SAAJ,CAAc,uBAAd,CAAN;AACH;AACJ;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS,gBAAT,CAA0B,KAA1B,EAAiC,QAAjC,EAA2C;AACvC,MAAI,CAAC,oBAAW,KAAX,EAAkB,QAAlB,CAAL,EAAkC;AAC9B,QAAI,CAAC,GAAG,EAAR;;AACA,QAAI,kBAAS,QAAT,KAAsB,oBAAW,QAAX,CAA1B,EAAgD;AAC5C,MAAA,CAAC,GAAG,QAAH,aAAG,QAAH,uBAAG,QAAQ,CAAG,MAAH,CAAZ;AACH;;AAED,QAAI,CAAJ,EAAO;AACH,MAAA,CAAC,GAAG,MAAM,CAAV;AACH;;AAED,UAAM,IAAI,SAAJ,CAAc,gCAAgC,CAA9C,CAAN;AACH;AACJ;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS,aAAT,CAAuB,KAAvB,EAA8B;AAC1B,MAAI,CAAC,iBAAQ,KAAR,CAAL,EAAqB;AACjB,UAAM,IAAI,SAAJ,CAAc,uBAAd,CAAN;AACH;AACJ;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS,gBAAT,CAA0B,KAA1B,EAAiC;AAC7B,MAAI,CAAC,oBAAW,KAAX,CAAL,EAAwB;AACpB,UAAM,IAAI,SAAJ,CAAc,yBAAd,CAAN;AACH;AACJ;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS,eAAT,CAAyB,KAAzB,EAAgC;AAC5B,MAAI,CAAC,mBAAU,KAAV,CAAL,EAAuB;AACnB,UAAM,IAAI,SAAJ,CAAc,yBAAd,CAAN;AACH;AACJ;;AAED,mBAAQ,iBAAR,CAA0B,eAA1B,EAA2C,iBAA3C,EAA8D,eAA9D,EAA+E,cAA/E,EAA+F,cAA/F,EAA+G,aAA/G,EAA8H,gBAA9H,EAAgJ,gBAAhJ,EAAkK,eAAlK;;;AClXA;;;;;;;;;;;;;;;;AAEA;;AACA;;;;;;;;;;;;;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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",
      "file": "generated.js",
      "sourceRoot": "",
      "sourcesContent": [
        "(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()",
        "'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {Monster} from '../namespace.js';\nimport {Base} from '../types/base.js';\n\n\n/**\n * the abstract contraint defines the api for all constraints. mainly the method isValid() is defined.\n *\n * derived classes must implement the method isValid().\n *\n * @since 1.3.0\n * @copyright schukai GmbH\n * @memberOf Monster/Constraints\n */\nclass AbstractConstraint extends Base {\n\n    /**\n     *\n     */\n    constructor() {\n        super();\n    }\n\n    /**\n     * this method must return a promise containing the result of the check.\n     *\n     * @param {*} value\n     * @returns {Promise}\n     */\n    isValid(value) {\n        return Promise.reject(value);\n    }\n}\n\nMonster.assignToNamespace('Monster.Constraints', AbstractConstraint);\nexport {Monster, AbstractConstraint}",
        "'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {Monster, AbstractConstraint} from \"./abstract.js\";\n\n/**\n * Operators allow you to link constraints together. for example, you can check whether a value is an object or an array. each operator has two operands that are linked together.\n * \n * @since 1.3.0\n * @copyright schukai GmbH\n * @memberOf Monster/Constraints\n */\nclass AbstractOperator extends AbstractConstraint {\n\n    /**\n     *\n     * @param {AbstractConstraint} operantA\n     * @param {AbstractConstraint} operantB\n     * @throws {TypeError} \"parameters must be from type AbstractConstraint\"\n     */\n    constructor(operantA, operantB) {\n        super();\n\n        if (!(operantA instanceof AbstractConstraint) || !(operantB instanceof AbstractConstraint)) {\n            throw new TypeError(\"parameters must be from type AbstractConstraint\")\n        }\n\n        this.operantA = operantA;\n        this.operantB = operantB;\n\n    }\n\n\n}\n\nMonster.assignToNamespace('Monster.Constraints', AbstractOperator);\nexport {Monster, AbstractOperator}",
        "'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {Monster, AbstractConstraint} from \"./abstract.js\";\nimport {AbstractOperator} from \"./abstractoperator.js\";\n\n/**\n * The AndOperator is used to link several contraints. The constraint is fulfilled if all constraints of the operators are fulfilled.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/constraints/andoperator.js';\n * new Monster.Constraint.AndOperator(new Monster.Constraint.Valid(), new Monster.Constraint.Valid()).then(()=>console.log(true)).catch(()=>console.log(false));\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Valid} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/constraint/valid.js';\n * import {AndOperator} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/constraints/andoperator.js';\n * new AndOperator(new Valid(), new Valid()).then(()=>console.log(true)).catch(()=>console.log(false));\n * </script>\n * ```\n *\n * @since 1.3.0\n * @copyright schukai GmbH\n * @memberOf Monster/Constraints\n */\nclass AndOperator extends AbstractOperator {\n\n    /**\n     * this method return a promise containing the result of the check.\n     *\n     * @param {*} value\n     * @returns {Promise}\n     */\n    isValid(value) {\n        return Promise.all([this.operantA.isValid(value), this.operantB.isValid(value)]);\n    }\n\n}\n\nMonster.assignToNamespace('Monster.Constraints', AndOperator);\nexport {Monster, AndOperator}\n",
        "'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {Monster, AbstractConstraint} from \"./abstract.js\";\n\n/**\n * the invalid constraint allows an always invalid query to be performed. this contraint is mainly intended for testing.\n *\n * you can call the method via the monster namespace `new Monster.Constraint.Invalid()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/constraints/invalid.js';\n * new Monster.Constraint.Invalid().catch(()=>console.log(true));\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Invalid} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/constraints/invalid.js';\n * new Invalid().catch(()=>console.log(true));\n * </script>\n * ```\n *\n * @since 1.3.0\n * @copyright schukai GmbH\n * @memberOf Monster/Constraints\n */\nclass Invalid extends AbstractConstraint {\n\n    /**\n     * this method return a rejected promise\n     *\n     * @param {*} value\n     * @returns {Promise}\n     */\n    isValid(value) {\n        return Promise.reject(value);\n    }\n\n}\n\nMonster.assignToNamespace('Monster.Constraints', Invalid);\nexport {Monster, Invalid}\n",
        "'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {Monster, AbstractConstraint} from \"./abstract.js\";\nimport {isArray} from \"../types/is.js\";\n\n/**\n * you can call the method via the monster namespace `new Monster.Constraint.IsObject()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/constraints/isarray.js';\n * console.log(new Monster.Constraint.IsArray())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {IsArray} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/constraints/isarray.js';\n * console.log(new IsArray())\n * </script>\n * ```\n *\n * @since 1.3.0\n * @copyright schukai GmbH\n * @memberOf Monster/Constraints\n */\nclass IsArray extends AbstractConstraint {\n\n    /**\n     * this method return a promise containing the result of the check.\n     *\n     * @param {*} value\n     * @returns {Promise}\n     */\n    isValid(value) {\n        if(isArray(value)) {\n            return Promise.resolve(value);\n        }\n\n        return Promise.reject(value);\n    }\n\n}\n\nMonster.assignToNamespace('Monster.Constraints', IsArray);\nexport {Monster, IsArray}\n",
        "'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {Monster, AbstractConstraint} from \"./abstract.js\";\nimport {isObject} from \"../types/is.js\";\n\n/**\n * you can call the method via the monster namespace `new Monster.Constraint.IsObject()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/constraints/isobject.js';\n * console.log(new Monster.Constraint.IsObject())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {IsObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/constraints/isobject.js';\n * console.log(new IsObject())\n * </script>\n * ```\n *\n * @since 1.3.0\n * @copyright schukai GmbH\n * @memberOf Monster/Constraints\n */\nclass IsObject extends AbstractConstraint {\n\n    /**\n     * this method return a promise containing the result of the check.\n     *\n     * @param {*} value\n     * @returns {Promise}\n     */\n    isValid(value) {\n        if (isObject(value)) {\n            return Promise.resolve(value);\n        }\n\n        return Promise.reject(value);\n    }\n\n}\n\nMonster.assignToNamespace('Monster.Constraints', IsObject);\nexport {Monster, IsObject}\n",
        "'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {Monster, AbstractOperator} from \"./abstractoperator.js\";\n\n/**\n * The OrOperator is used to link several constraints. The constraint is fulfilled if one of the constraints is fulfilled.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/constraint/oroperator.js';\n * new Monster.Constraint.OrOperator(new Monster.Constraint.Valid(), new Monster.Constraint.Valid()).then(()=>console.log(true)).catch(()=>console.log(false));\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Valid} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/constraint/valid.js';\n * import {AndOperator} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/constraint/oroperator.js';\n * new OrOperator(new Valid(), new Valid()).then(()=>console.log(true)).catch(()=>console.log(false));\n * </script>\n * ```\n *\n * @since 1.3.0\n * @copyright schukai GmbH\n * @memberOf Monster/Constraints\n */\nclass OrOperator extends AbstractOperator {\n\n    /**\n     * this method return a promise containing the result of the check.\n     *\n     * @param {*} value\n     * @returns {Promise}\n     */\n    isValid(value) {\n        var self = this;\n\n        return new Promise(function (resolve, reject) {\n            let a, b;\n\n            self.operantA.isValid(value)\n                .then(function () {\n                    resolve();\n                }).catch(function () {\n                a = false;\n                /** b has already been evaluated and was not true */\n                if (b === false) {\n                    reject();\n                }\n            });\n\n            self.operantB.isValid(value)\n                .then(function () {\n                    resolve();\n                }).catch(function () {\n                b = false;\n                /** b has already been evaluated and was not true */\n                if (a === false) {\n                    reject();\n                }\n            });\n        });\n    }\n\n\n}\n\nMonster.assignToNamespace('Monster.Constraints', OrOperator);\nexport {Monster, OrOperator}\n",
        "'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {Monster, AbstractConstraint} from \"./abstract.js\";\n\n/**\n * the valid constraint allows an always valid query to be performed. this contraint is mainly intended for testing.\n *\n * you can call the method via the monster namespace `new Monster.Constraint.Valid()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/constraints/valid.js';\n * new Monster.Constraint.Valid().then(()=>console.log(true));\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Valid} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/constraints/valid.js';\n * new Valid().then(()=>console.log(true));\n * </script>\n * ```\n *\n * @since 1.3.0\n * @copyright schukai GmbH\n * @memberOf Monster/Constraints\n */\nclass Valid extends AbstractConstraint {\n\n    /**\n     * this method return a promise containing the result of the check.\n     *\n     * @param {*} value\n     * @returns {Promise}\n     */\n    isValid(value) {\n        return Promise.resolve(value);\n    }\n\n}\n\nMonster.assignToNamespace('Monster.Constraints', Valid);\nexport {Monster, Valid}\n",
        "'use strict';\n\n/**\n * @author schukai GmbH\n */\n\n\nimport {Monster, isArray, isObject} from \"../types/is.js\";\n\n/**\n * With the diff function you can perform the change of one object to another. The result shows the changes of the second object to the first object.\n *\n * The operator `add` means that something has been added to the second object. `delete` means that something has been deleted from the second object compared to the first object.\n *\n * you can call the method via the monster namespace `Monster.Data.Diff()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/data/diff.js';\n * console.log(Monster.Data.Diff(a, b))\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Pipe} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/data/diff.js';\n * console.log(Diff(a, b))\n * </script>\n * ```\n *\n * given are two objects x and y.\n *\n * ```\n * let x = {\n *     a: 1,\n *     b: \"Hello!\"\n * }\n *\n *  let y = {\n *     a: 2,\n *     c: true\n * }\n * ```\n *\n * These two objects can be compared with each other.\n *\n * ```\n *  console.log(Diff(x, y));\n * ```\n *\n * the result is then the following\n *\n * ```\n *  [\n *  {\n *         operator: 'update',\n *         path: [ 'a' ],\n *         first: { value: 1, type: 'number' },\n *         second: { value: 2, type: 'number' }\n *     },\n *  {\n *         operator: 'delete',\n *         path: [ 'b' ],\n *         first: { value: 'Hello!', type: 'string' }\n *     },\n *  {\n *         operator: 'add',\n *         path: [ 'c' ],\n *         second: { value: true, type: 'boolean' }\n *     }\n *  ]\n * ```\n *\n * @param {*} first\n * @param {*} second\n * @return {array}\n * @since 1.6.0\n * @copyright schukai GmbH\n * @memberOf Monster/Data\n */\nfunction Diff(first, second) {\n    return doDiff(first, second)\n}\n\n/**\n * @private\n * @param a\n * @param b\n * @param type\n * @return {Set<string>|Set<number>}\n */\nfunction getKeys(a, b, type) {\n    if (isArray(type)) {\n        const keys = a.length > b.length ? new Array(a.length) : new Array(b.length);\n        keys.fill(0);\n        return new Set(keys.map((_, i) => i));\n    }\n\n    return new Set(Object.keys(a).concat(Object.keys(b)));\n}\n\n/**\n * @private\n * @param a\n * @param b\n * @param path\n * @param diff\n * @return {array}\n */\nfunction doDiff(a, b, path, diff) {\n\n    let typeA = typeof a\n    let typeB = typeof b\n\n    const currPath = path || [];\n    const currDiff = diff || [];\n\n    if (typeA === typeB && typeA === 'object') { // array is object too\n\n        getKeys(a, b, typeA).forEach((v) => {\n\n            if (!(Object.prototype.hasOwnProperty.call(a, v))) {\n                currDiff.push(buildResult(a[v], b[v], 'add', currPath.concat(v)));\n            } else if (!(Object.prototype.hasOwnProperty.call(b, v))) {\n                currDiff.push(buildResult(a[v], b[v], 'delete', currPath.concat(v)));\n            } else {\n                doDiff(a[v], b[v], currPath.concat(v), currDiff);\n            }\n        });\n\n    } else {\n\n        const o = getOperator(a, b, typeA, typeB);\n        if (o !== undefined) {\n            currDiff.push(buildResult(a, b, o, path));\n        }\n\n    }\n\n    return currDiff;\n\n}\n\n/**\n *\n * @param {*} a\n * @param {*} b\n * @param {string} operator\n * @param {array} path\n * @return {{path: array, operator: string}}\n * @private\n */\nfunction buildResult(a, b, operator, path) {\n\n    const result = {\n        operator,\n        path,\n    };\n\n    if (operator !== 'add') {\n        result.first = {\n            value: a,\n            type: typeof a\n        };\n\n        if (isObject(a)) {\n            const name = Object.getPrototypeOf(a)?.constructor?.name;\n            if (name !== undefined) {\n                result.first.instance = name;\n            }\n        }\n    }\n\n    if (operator === 'add' || operator === 'update') {\n        result.second = {\n            value: b,\n            type: typeof b\n        };\n\n        if (isObject(b)) {\n            const name = Object.getPrototypeOf(b)?.constructor?.name;\n            if (name !== undefined) {\n                result.second.instance = name;\n            }\n        }\n\n    }\n\n    return result;\n}\n\n/**\n * @private\n * @param {*} a\n * @param {*} b\n * @return {boolean}\n */\nfunction isNotEqual(a, b) {\n\n    if (typeof a !== typeof b) {\n        return true;\n    }\n\n    if (a instanceof Date && b instanceof Date) {\n        return a.getTime() !== b.getTime();\n    }\n\n    return a !== b;\n}\n\n/**\n * @private\n * @param {*} a\n * @param {*} b\n * @return {string|undefined}\n */\nfunction getOperator(a, b) {\n\n    /**\n     * @type {string|undefined}\n     */\n    let operator;\n\n    /**\n     * @type {string}\n     */\n    let typeA = typeof a;\n\n    /**\n     * @type {string}\n     */\n    let typeB = typeof b;\n\n    if (typeA === 'undefined' && typeB !== 'undefined') {\n        operator = 'add';\n    } else if (typeA !== 'undefined' && typeB === 'undefined') {\n        operator = 'delete';\n    } else if (isNotEqual(a, b)) {\n        operator = 'update';\n    }\n\n    return operator;\n\n}\n\nMonster.assignToNamespace('Monster.Data', Diff);\nexport {Monster, Diff}\n",
        "'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {Monster} from '../namespace.js';\nimport {isObject, isArray, isInteger} from '../types/is.js';\nimport {validateString, validateInteger} from '../types/validate.js';\nimport {Base} from '../types/base.js';\nimport {Stack} from \"../types/stack.js\";\n\n/**\n * path separator\n *\n * @private\n * @type {string}\n */\nconst DELIMITER = '.';\n\n/**\n * you can call the method via the monster namespace `new Monster.Data.Pathfinder()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/data/pathfinder.js';\n * console.log(new Monster.Data.Pathfinder())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Pathfinder} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/data/pathfinder.js';\n * console.log(new Pathfinder())\n * </script>\n * ```\n *\n * With the help of the pathfinder, values can be read and written from an object construct.\n *\n * ```\n * new Pathfinder({\n * a: {\n *     b: {\n *         f: [\n *             {\n *                 g: false,\n *             }\n *         ],\n *     }\n * }\n * }).getVia(\"a.b.f.0.g\"); // ↦ false\n * ```\n *\n * if a value is not present or has the wrong type, a corresponding exception is thrown.\n *\n * ```\n * new Pathfinder({}).getVia(\"a.b.f.0.g\"); // ↦ Error\n * ```\n *\n * The `Pathfinder.exists()` method can be used to check whether access to the path is possible.\n *\n * ```\n * new Pathfinder({}).exists(\"a.b.f.0.g\"); // ↦ false\n * ```\n *\n * pathfinder can also be used to build object structures. to do this, the `Pathfinder.setVia()` method must be used.\n *\n * ```\n * obj = {};\n * new Pathfinder(obj).setVia('a.b.0.c', true); // ↦ {a:{b:[{c:true}]}}\n * ```\n *\n * @since 1.4.0\n * @copyright schukai GmbH\n * @memberOf Monster/Data\n */\nclass Pathfinder extends Base {\n\n    /**\n     * @param {array|object|Map|Set} value\n     * @since 1.4.0\n     **/\n    constructor(object) {\n        super();\n        this.object = object;\n    }\n\n    /**\n     *\n     * @param {string} path\n     * @since 1.4.0\n     * @returns {*}\n     * @throws {TypeError} unsupported type\n     * @throws {Error} the journey is not at its end\n     * @throws {TypeError} value is not a string\n     * @throws {TypeError} value is not an integer\n     * @throws {Error} unsupported action for this data type\n     */\n    getVia(path) {\n        validateString(path);\n        return getValueViaPath(this.object, path);\n    }\n\n    /**\n     *\n     * @param {string} path\n     * @param {*} value\n     * @returns {Pathfinder}\n     * @since 1.4.0\n     * @throws {TypeError} unsupported type\n     * @throws {TypeError} value is not a string\n     * @throws {TypeError} value is not an integer\n     * @throws {Error} unsupported action for this data type\n     */\n    setVia(path, value) {\n        validateString(path);\n        setValueViaPath(this.object, path, value);\n        return this;\n    }\n\n    /**\n     * Delete Via Path\n     *\n     * @param {string} path\n     * @returns {Pathfinder}\n     * @since 1.6.0\n     * @throws {TypeError} unsupported type\n     * @throws {TypeError} value is not a string\n     * @throws {TypeError} value is not an integer\n     * @throws {Error} unsupported action for this data type\n     */\n    deleteVia(path) {\n        validateString(path);\n        deleteValueViaPath(this.object, path);\n        return this;\n    }\n\n    /**\n     *\n     * @param {string} path\n     * @return {bool}\n     * @throws {TypeError} unsupported type\n     * @throws {TypeError} value is not a string\n     * @throws {TypeError} value is not an integer\n     * @since 1.4.0\n     */\n    exists(path) {\n        validateString(path);\n        try {\n            getValueViaPath(this.object, path, true);\n            return true;\n        } catch (e) {\n\n        }\n\n        return false;\n    }\n\n}\n\nMonster.assignToNamespace('Monster.Data', Pathfinder);\nexport {Monster, Pathfinder}\n\n/**\n *\n * @param {*} object\n * @param [string} path\n * @param [boolean} check \n * @returns {*}\n * @throws {TypeError} unsupported type\n * @throws {Error} the journey is not at its end\n * @throws {Error} unsupported action for this data type\n * @private\n */\nfunction getValueViaPath(object, path, check) {\n\n    if (path === \"\") {\n        return object;\n    }\n\n    let parts = path.split(DELIMITER)\n    let current = parts.shift();\n\n    if (isObject(object) || isArray(object)) {\n\n        let anchor;\n        if (object instanceof Map || object instanceof WeakMap) {\n            anchor = object.get(current);\n\n        } else if (object instanceof Set || object instanceof WeakSet) {\n            current = parseInt(current);\n            validateInteger(current)\n            anchor = [...object]?.[current];\n\n        } else if (object instanceof WeakRef) {\n            throw Error('unsupported action for this data type');\n\n        } else if (isArray(object)) {\n            current = parseInt(current);\n            validateInteger(current)\n            anchor = object?.[current];\n        } else {\n            anchor = object?.[current];\n        }\n\n        if (isObject(anchor) || isArray(anchor)) {\n            return getValueViaPath(anchor, parts.join(DELIMITER), check)\n        }\n\n        if (parts.length > 0) {\n            throw Error(\"the journey is not at its end (\" + parts.join(DELIMITER) + \")\");\n        }\n\n        if (check === true && !object.hasOwnProperty(current)) {\n            throw Error('unknown value');\n        }\n\n        return anchor;\n\n    }\n\n    throw TypeError(\"unsupported type\")\n\n}\n\n/**\n *\n * @param object\n * @param path\n * @param value\n * @returns {void}\n * @throws {TypeError} unsupported type\n * @throws {TypeError} unsupported type\n * @throws {Error} the journey is not at its end\n * @throws {Error} unsupported action for this data type\n * @private\n */\nfunction setValueViaPath(object, path, value) {\n\n    let parts = path.split(DELIMITER)\n    let last = parts.pop();\n    let subpath = parts.join(DELIMITER);\n\n    let stack = new Stack()\n    let current = subpath;\n    while (true) {\n\n        try {\n            getValueViaPath(object, current, true)\n            break;\n        } catch (e) {\n\n        }\n\n        stack.push(current);\n        parts.pop();\n        current = parts.join(DELIMITER);\n\n        if (current === \"\") break;\n    }\n\n    while (!stack.isEmpty()) {\n        current = stack.pop();\n        let obj = {};\n\n        if (!stack.isEmpty()) {\n            let n = stack.peek().split(DELIMITER).pop();\n            if (isInteger(parseInt(n))) {\n                obj = [];\n            }\n\n        }\n\n\n        setValueViaPath(object, current, obj);\n    }\n\n    let anchor = getValueViaPath(object, subpath);\n\n    if (!isObject(object) && !isArray(object)) {\n        throw TypeError(\"unsupported type: \" + typeof object);\n    }\n\n    if (anchor instanceof Map || anchor instanceof WeakMap) {\n        anchor.set(last, value);\n    } else if (anchor instanceof Set || anchor instanceof WeakSet) {\n        anchor.append(value)\n\n    } else if (anchor instanceof WeakRef) {\n        throw Error('unsupported action for this data type');\n\n    } else if (isArray(anchor)) {\n        last = parseInt(last);\n        validateInteger(last)\n        anchor[last] = value;\n    } else {\n        anchor[last] = value;\n    }\n\n    return;\n\n}\n\n/**\n *\n * @param object\n * @param path\n * @returns {void}\n * @throws {TypeError} unsupported type\n * @throws {TypeError} unsupported type\n * @throws {Error} the journey is not at its end\n * @throws {Error} unsupported action for this data type\n * @since 1.6.0\n * @private\n */\nfunction deleteValueViaPath(object, path) {\n\n    const parts = path.split(DELIMITER)\n    let last = parts.pop();\n    const subpath = parts.join(DELIMITER);\n\n    const anchor = getValueViaPath.call(this, object, subpath);\n\n    if (anchor instanceof Map) {\n        anchor.delete(last);\n    } else if (anchor instanceof Set || anchor instanceof WeakMap || anchor instanceof WeakSet || anchor instanceof WeakRef) {\n        throw Error('unsupported action for this data type');\n\n    } else if (isArray(anchor)) {\n        last = parseInt(last);\n        validateInteger(last)\n        delete anchor[last];\n    } else {\n        delete anchor[last];\n    }\n\n    return;\n\n}\n",
        "'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {Monster} from '../namespace.js';\nimport {Transformer} from './transformer.js';\nimport {Base} from '../types/base.js';\nimport {validateString} from '../types/validate.js';\n\n\nconst DELIMITER = '|';\n\n/**\n * the pipe class makes it possible to combine several processing steps.\n *\n * you can call the method via the monster namespace `new Monster.Data.Pipe()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/data/pipe.js';\n * console.log(new Monster.Data.Pipe())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Pipe} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/data/pipe.js';\n * console.log(new Pipe())\n * </script>\n * ```\n *\n * a pipe consists of commands whose input and output are connected with the pipe symbol `|`.\n *\n * with the Pipe, processing steps can be combined. Here, the value of an object is accessed via the pathfinder (path command).\n * the word is then converted to uppercase letters and a prefix Hello is added. the two backslash safe the space char.\n *\n * ```\n * let obj = {\n *     a: {\n *         b: {\n *             c: {\n *                 d: \"world\"\n *             }\n *         }\n *     }\n * }\n *\n * new Pipe('path:a.b.c.d | toupper | prefix:Hello\\\\ ').run(obj); // ↦ Hello WORLD\n * ```\n *\n * @since 1.5.0\n * @copyright schukai GmbH\n * @memberOf Monster/Data\n */\nclass Pipe extends Base {\n\n    /**\n     *\n     * @param {string} pipe a pipe consists of commands whose input and output are connected with the pipe symbol `|`.\n     * @throws {TypeError} \n     */\n    constructor(pipe) {\n        super();\n        validateString(pipe);\n        this.pipe = pipe.split(DELIMITER).map((v) => {\n            return new Transformer(v);\n        });\n\n    }\n\n    /**\n     * run a pipe\n     *\n     * @param {*} value\n     * @returns {*}\n     */\n    run(value) {\n        return this.pipe.reduce((accumulator, currentValue, currentIndex, array) => {\n            return currentValue.run(accumulator);\n        }, value);\n    }\n}\n\nMonster.assignToNamespace('Monster.Data', Pipe);\nexport {Monster, Pipe}\n",
        "'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {Monster} from '../namespace.js';\nimport {Base} from '../types/base.js';\nimport {validateString, validatePrimitive, validateFunction, validateInteger} from '../types/validate.js';\nimport {isObject, isString, isArray} from '../types/is.js';\nimport {ID} from '../types/id.js';\nimport {clone} from \"../util/clone.js\";\nimport {Pathfinder} from \"./pathfinder.js\";\n\n/**\n * the transformer class is a swiss army knife for manipulating values. especially in combination with the pipe, processing chains can be built up.\n *\n * you can call the method via the monster namespace `new Monster.Data.Transformer()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/data/transformer.js';\n * console.log(new Monster.Data.Transformer())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Transformer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/data/transformer.js';\n * console.log(new Transformer())\n * </script>\n * ```\n *\n * a simple example is the conversion of all characters to lowercase. for this purpose the command tolower must be used.\n * \n * ```\n * let t = new Transformer('tolower').run('ABC'); // ↦ abc\n * ```\n * \n * **all commands**\n * \n * in the following table all commands, parameters and existing aliases are described.\n * \n *  | command      | parameter                  | alias                   | description                                                                                                                                                                                                                                                                                                                                                |\n *  |:-------------|:---------------------------|:------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n *  | base64       |                            |                         | Converts the value to base64                                                                                                                                                                                                                                                                                                                               |\n *  | call         | function,param1:param2:... |                         | Calling a callback function. The function can be defined in three places: either globally, in the context `addCallback` or in the passed object                                                                                                                                                                                                            |\n *  | empty        |                            |                         | Return empty String \"\"                                                                                                                                                                                                                                                                                                                                     |\n *  | if           | statement1:statement2      | ?                       | Is the ternary operator, the first parameter is the valid statement, the second is the false part. To use the current value in the queue, you can set the value keyword. On the other hand, if you want to have the static string \"value\", you have to put one backslash \\\\ in front of it and write value. the follow values are true: 'on', true, 'true' |\n *  | index        | key:default                | property, key           | Fetches a value from an object, an array, a map or a set                                                                                                                                                                                                                                                                                                   |\n *  | length       |                            | count                   | Length of the string or entries of an array or object                                                                                                                                                                                                                                                                                                      |\n *  | nop          |                            |                         | Do nothing                                                                                                                                                                                                                                                                                                                                                 |\n *  | path         | path                       |                         | The access to an object is done via a Pathfinder object                                                                                                                                                                                                                                                                                                    |\n *  | plaintext    |                            | plain                   | All HTML tags are removed (*)                                                                                                                                                                                                                                                                                                                              |\n *  | prefix       | text                       |                         | Adds a prefix                                                                                                                                                                                                                                                                                                                                              |\n *  | rawurlencode |                            |                         | URL coding                                                                                                                                                                                                                                                                                                                                                 |\n *  | static       |                            | none                    | The Arguments value is used and passed to the value. Special characters \\ <space> and : can be quotet by a preceding \\.                                                                                                                                                                                                                                    |\n *  | substring    | start:length               |                         | Returns a substring                                                                                                                                                                                                                                                                                                                                        |\n *  | suffix       | text                       |                         | Adds a suffix                                                                                                                                                                                                                                                                                                                                              |\n *  | tointeger    |                            |                         | Type conversion to an integer value                                                                                                                                                                                                                                                                                                                        |\n *  | tolower      |                            | strtolower, tolowercase | The input value is converted to lowercase letters                                                                                                                                                                                                                                                                                                          |\n *  | tostring     |                            |                         | Type conversion to a string                                                                                                                                                                                                                                                                                                                                |\n *  | toupper      |                            | strtoupper, touppercase | The input value is converted to uppercase letters                                                                                                                                                                                                                                                                                                          |\n *  | trim         |                            |                         | Remove spaces at the beginning and end                                                                                                                                                                                                                                                                                                                     |\n *  | ucfirst      |                            |                         | First character large                                                                                                                                                                                                                                                                                                                                      |\n *  | ucwords      |                            |                         | Any word beginning large                                                                                                                                                                                                                                                                                                                                   |\n *  | undefined    |                            |                         | Return undefined                                                                                                                                                                                                                                                                                                                                           |\n *  | uniqid       |                            |                         | Creates a string with a unique value (**)                                                                                                                                                                                                                                                                                                                  |\n * \n *  (*) for this functionality the extension [jsdom](https://www.npmjs.com/package/jsdom) must be loaded in the nodejs context.\n * \n *  ```\n *  // polyfill\n *  if (typeof window !== \"object\") {\n *     const {window} = new JSDOM('', {\n *         url: 'http://example.com/',\n *         pretendToBeVisual: true\n *     });\n * \n *     [\n *         'self',\n *         'document',\n *         'Node',\n *         'Element',\n *         'HTMLElement',\n *         'DocumentFragment',\n *         'DOMParser',\n *         'XMLSerializer',\n *         'NodeFilter',\n *         'InputEvent',\n *         'CustomEvent'\n *     ].forEach(key => (global[key] = window[key]));\n * }\n *  ```\n * \n *  (**) for this command the crypt library is necessary in the nodejs context.\n * \n *  ```\n *  import * as Crypto from \"@peculiar/webcrypto\";\n *  global['crypto'] = new Crypto.Crypto();\n *  ```\n * \n * \n *\n * @since 1.5.0\n * @copyright schukai GmbH\n * @memberOf Monster/Data\n */\nclass Transformer extends Base {\n    /**\n     *\n     * @param {string} definition\n     */\n    constructor(definition) {\n        super();\n        validateString(definition);\n\n        this.args = disassemble(definition);\n        this.command = this.args.shift()\n        this.callbacks = new Map();\n\n    }\n\n    /**\n     *\n     * @param {string} name\n     * @param {function} callback\n     * @returns {Transformer}\n     * @throws {TypeError} value is not a string\n     * @throws {TypeError} value is not a function\n     */\n    setCallback(name, callback) {\n        validateString(name)\n        validateFunction(callback)\n        this.callbacks.set(name, callback);\n        return this;\n    }\n\n    /**\n     *\n     * @param {*} value\n     * @returns {*}\n     * @throws {Error} unknown command\n     * @throws {TypeError} unsupported type\n     * @throws {Error} type not supported\n     */\n    run(value) {\n        return transform.apply(this, [value])\n    }\n}\n\nMonster.assignToNamespace('Monster.Data', Transformer);\nexport {Monster, Transformer}\n\n/**\n *\n * @param {string} command\n * @returns {array}\n * @private\n */\nfunction disassemble(command) {\n\n    validateString(command);\n    \n    let placeholder = new Map;\n    const regex = /((?<pattern>\\\\(?<char>.)){1})/mig;\n\n    // The separator for args must be quotable\n    // undefined string which should not occur normally and is also not a regex\n    let result = command.matchAll(regex)\n    \n    for (let m of result) {\n        let g=m?.['groups'];\n        if(!isObject(g)) {\n            continue;\n        }\n        \n        let p=g?.['pattern'];\n        let c=g?.['char'];\n        \n        if(p&&c) {\n            let r='__'+new ID().toString()+'__';\n            placeholder.set(r, c);\n            command=command.replace(p,r);\n        }\n        \n    }\n    let parts = command.split(':');\n\n    parts = parts.map(function (value) {\n        let v =  value.trim();\n        for(let k of placeholder) {\n           v= v.replace(k[0], k[1]);\n        }\n        return v;\n        \n        \n    });\n\n    return parts\n}\n\n/**\n * tries to make a string out of value and if this succeeds to return it back\n * \n * @param {*} value\n * @returns {string}\n * @private\n */\nfunction convertToString(value) {\n\n    if (isObject(value) && value.hasOwnProperty('toString')) {\n        value = value.toString();\n    }\n\n    validateString(value)\n    return value;\n}\n\n/**\n *\n * @param {*} value\n * @returns {*}\n * @private\n * @throws {Error} unknown command\n * @throws {TypeError} unsupported type\n * @throws {Error} type not supported\n */\nfunction transform(value) {\n\n    let args = clone(this.args);\n    let key\n\n    switch (this.command) {\n\n        case 'static':\n            return this.args.join(':');\n\n        case 'tolower':\n        case 'strtolower':\n        case 'tolowercase':\n            validateString(value)\n            return value.toLowerCase();\n\n        case 'toupper':\n        case 'strtoupper':\n        case 'touppercase':\n            validateString(value)\n            return value.toUpperCase();\n\n        case 'tostring':\n            return \"\" + value;\n\n        case 'tointeger':\n            let n = parseInt(value);\n            validateInteger(n);\n            return n\n\n        case 'trim':\n            validateString(value)\n            return value.trim();\n\n        case 'rawurlencode':\n            validateString(value)\n            return encodeURIComponent(value)\n                .replace(/!/g, '%21')\n                .replace(/'/g, '%27')\n                .replace(/\\(/g, '%28')\n                .replace(/\\)/g, '%29')\n                .replace(/\\*/g, '%2A');\n\n\n        case  'call':\n\n            /**\n             * callback-definition\n             * function callback(value, ...args) {\n             *   return value;\n             * }\n             */\n\n            let callback;\n            let callbackName = args.shift();\n\n            if (isObject(value) && calue.hasOwnProperty(callbackName)) {\n                callback = value[callbackName];\n            } else if (this.callbacks.has(callbackName)) {\n                callback = this.callbacks.get(callbackName);\n            } else if (typeof window === 'object' && window.hasOwnProperty(callbackName)) {\n                callback = window[callbackName];\n            }\n            validateFunction(callback);\n\n            args.unshift(value);\n            return callback(...args);\n\n        case  'plain':\n        case  'plaintext':\n            validateString(value);\n            let doc = new DOMParser().parseFromString(value, 'text/html');\n            return doc.body.textContent || \"\";\n\n        case  'if':\n        case  '?':\n\n            validatePrimitive(value);\n\n            let trueStatement = (args.shift() || undefined);\n            let falseStatement = (args.shift() || undefined);\n\n            if (trueStatement === 'value') {\n                trueStatement = value;\n            }\n            if (trueStatement === '\\\\value') {\n                trueStatement = 'value';\n            }\n            if (falseStatement === 'value') {\n                falseStatement = value;\n            }\n            if (falseStatement === '\\\\value') {\n                falseStatement = 'value';\n            }\n\n            let condition = ((value !== undefined && value !== '' && value !== 'off' && value !== 'false' && value !== false) || value === 'on' || value === 'true' || value === true);\n            return condition ? trueStatement : falseStatement;\n\n\n        case 'ucfirst':\n            validateString(value);\n\n            let firstchar = value.charAt(0).toUpperCase();\n            return firstchar + value.substr(1);\n        case 'ucwords':\n            validateString(value);\n\n            return value.replace(/^([a-z\\u00E0-\\u00FC])|\\s+([a-z\\u00E0-\\u00FC])/g, function (v) {\n                return v.toUpperCase();\n            });\n\n        case  'count':\n        case  'length':\n\n            if ((isString(value) || isObject(value) || isArray(value)) && value.hasOwnProperty('length')) {\n                return value.length;\n            }\n\n            throw new TypeError(\"unsupported type\");\n\n        case 'base64':\n            convertToString(value);\n            return btoa(value);\n\n        case 'empty':\n            return '';\n\n        case 'undefined':\n            return undefined;\n\n        case 'prefix':\n            validateString(value);\n            let prefix = args?.[0];\n            return prefix + value;\n\n        case 'suffix':\n            validateString(value);\n            let suffix = args?.[0];\n            return value + suffix;\n\n        case 'uniqid':\n            return (new ID()).toString();\n\n        case 'key':\n        case 'property':\n        case 'index':\n\n            key = (args.shift() || 'undefined');\n            let defaultValue = (args.shift() || '');\n\n            if (value instanceof Map) {\n                if(!value.has(key)) {\n                    return defaultValue;\n                }\n                return value.get(key);\n            }\n\n            if (isObject(value)||isArray(value)) {\n\n                if (value?.[key]) {\n                    return value?.[key];\n                }\n\n                return defaultValue;\n            }\n\n            throw new Error(\"type not supported\")\n\n        case 'path':\n\n            key = (args.shift() || 'undefined');\n            return new Pathfinder(value).getVia(key);\n            \n            \n        case 'substring':\n\n            validateString(value);\n            \n            let start = parseInt(args[0]) || 0;\n            let end = (parseInt(args[1]) || 0) + start;\n\n            return value.substring(start, end);\n            \n        case 'nop':\n            return value;\n\n        default:\n            throw new Error(\"unknown command\")\n    }\n\n    return value;\n}\n",
        "'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {Monster, Base} from '../types/base.js';\nimport {validateInstance, validateString} from \"../types/validate.js\";\nimport {getGlobalFunction} from \"../types/global.js\";\nimport {ProxyObserver} from \"../types/proxyobserver.js\";\n\n\n/**\n * attribute prefix\n * \n * @type {string}\n * @memberOf Monster/DOM\n */\nconst ATTRIBUTEPREFIX = \"data-monster-\";\n\n/**\n * you can call the method via the monster namespace `new Monster.DOM.Assembler()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/dom/assembler.js';\n * console.log(new Monster.DOM.Assembler())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Assembler} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/dom/assembler.js';\n * console.log(new Assembler())\n * </script>\n * ```\n *\n * @since 1.6.0\n * @copyright schukai GmbH\n * @memberOf Monster/DOM\n */\nclass Assembler extends Base {\n\n    /**\n     * @param {DocumentFragment} fragment\n     * @throws {TypeError} value is not an instance of\n     * @throws {TypeError} value is not a function\n     * @throws {Error} the function is not defined\n     */\n    constructor(fragment) {\n        super();\n        this.attributePrefix = ATTRIBUTEPREFIX;\n        validateInstance(fragment, getGlobalFunction('DocumentFragment'));\n        this.fragment = fragment;\n    }\n\n    /**\n     *\n     * @param {string} prefix\n     * @returns {Assembler}\n     * @throws {TypeError} value is not a string\n     */\n    setAttributePrefix(prefix) {\n        validateString(prefix);\n        this.attributePrefix = prefix;\n        return this;\n    }\n\n    /**\n     *\n     * @returns {string}\n     */\n    getAttributePrefix() {\n        return this.attributePrefix;\n    }\n\n    /**\n     *\n     * @param {ProxyObserver|undefined} data\n     * @return {DocumentFragment}\n     * @throws {TypeError} value is not an instance of\n     */\n    createDocumentFragment(data) {\n\n        if (data === undefined) {\n            data = new ProxyObserver({});\n        }\n\n        validateInstance(data, ProxyObserver);\n        let fragment = this.fragment.cloneNode(true);\n        return fragment;\n    }\n\n}\n\nMonster.assignToNamespace('Monster.DOM', Assembler);\nexport {Monster, ATTRIBUTEPREFIX, Assembler}\n",
        "'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {getGlobalObject} from \"../types/global.js\";\nimport {Monster, validateFunction} from \"../types/validate.js\";\n\n\n/**\n * you can call the method via the monster namespace `new Monster.DOM.Element()`.\n *\n * ```\n * <script type=\"module\">\n * import {CustomElement} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.6.0/dist/modules/dom/customelement.js';\n * console.log(new Monster.DOM.CustomElement())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {CustomElement} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.6.0/dist/modules/dom/customelement.js';\n * console.log(new CustomElement())\n * </script>\n * ```\n *\n * @since 1.7.0\n * @copyright schukai GmbH\n * @memberOf Monster/DOM\n */\nclass CustomElement extends HTMLElement {\n    constructor() {\n        super();\n    }\n\n    /**\n     * \n     * @return {string}\n     * @throws {Error} the method getTag must be overwritten by the derived class.\n     */\n    static getTag() {\n        throw new Error(\"the method getTag must be overwritten by the derived class.\");\n    }\n}\n\n/**\n * @param {CustomElement} element\n * @return {void}\n * @since 1.7.0\n * @copyright schukai GmbH\n * @memberOf Monster/DOM\n */\nfunction registerCustomElement(element) {\n    validateFunction(element);\n    getGlobalObject('customElements').define(element.getTag(), element);\n    return;\n}\n\nMonster.assignToNamespace('Monster.DOM', CustomElement, registerCustomElement);\nexport {Monster, registerCustomElement, CustomElement}",
        "'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {Monster, Base} from '../types/base.js';\nimport {Stack} from \"../types/stack.js\";\nimport {validateInstance} from \"../types/validate.js\";\nimport {ProxyObserver} from \"../types/proxyobserver.js\";\nimport {Observer} from \"../types/observer.js\";\nimport {getGlobalFunction, getGlobalObject} from \"../types/global.js\";\nimport {isInstance} from \"../types/is.js\";\nimport {ATTRIBUTEPREFIX} from \"./assembler.js\"\nimport {ID} from \"../types/id.js\";\n\n/**\n * @private\n * @type {Symbol}\n */\nconst MONSTERDOMHANDLE = Symbol('MonsterHandle');\n\n/**\n * you can call the method via the monster namespace `new Monster.DOM.Handle()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/dom/handle.js';\n * console.log(new Monster.DOM.Handle())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Handle} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/dom/handle.js';\n * console.log(new Handle())\n * </script>\n * ```\n *\n * @since 1.6.0\n * @copyright schukai GmbH\n * @memberOf Monster.DOM\n */\nclass Handle extends Base {\n    /**\n     *\n     * @param {ProxyObserver} data\n     */\n    constructor(data) {\n        super();\n\n        let self = this;\n\n        self.id = new ID();\n\n        validateInstance(data, ProxyObserver);\n\n        this.data = data\n\n        this.mutationObserver = createMutationObserver.call(this);\n        this.dataObserver = createDataObserver.call(this);\n        this.data.attachObserver(this.dataObserver);\n\n        this.nodes = new WeakSet\n        this.updates = new Stack();\n\n    }\n\n    /**\n     * @return {void}\n     */\n    update() {\n        return;\n    }\n\n    /**\n     *\n     * @param {HTMLElement|Document} node\n     * @return {Handle}\n     */\n    remove(node) {\n\n        if (isInstance(node, getGlobalFunction('Document'))) {\n            node = node.firstElementChild\n        }\n\n        validateInstance(node, getGlobalFunction('HTMLElement'))\n\n        if (!this.nodes.has(node)) {\n            return this;\n        }\n\n        this.mutationObserver.disconnect(node);\n\n        delete node.dataset[MONSTERDOMHANDLE]\n        node.removeAttribute(ATTRIBUTEPREFIX + \"handler\");\n\n        return this;\n\n    }\n\n    /**\n     *\n     * @param {HTMLElement|Document} node\n     * @return {Handle}\n     */\n    append(node) {\n\n        if (isInstance(node, getGlobalFunction('Document'))) {\n            node = node.firstElementChild\n        }\n\n        validateInstance(node, getGlobalFunction('HTMLElement'))\n\n        if (this.nodes.has(node)) {\n            return this;\n        }\n\n        node.dataset[MONSTERDOMHANDLE] = this;\n        node.setAttribute(ATTRIBUTEPREFIX + \"handler\", true);\n\n        this.mutationObserver.observe(node, {\n            attributes: true,\n            childList: true,\n            subtree: true,\n            characterData: true,\n            characterDataOldValue: true,\n            attributeOldValue: true\n        });\n\n        this.nodes.add(node);\n\n        return this;\n\n    }\n}\n\n/**\n *\n * @private\n * @return {Observer}\n */\nfunction createDataObserver() {\n    const self = this;\n\n    return new Observer(() => {\n        self.update();\n    });\n}\n\n/**\n *\n * @private\n * @return {MutationObserver}\n */\nfunction createMutationObserver() {\n\n    const self = this;\n\n    /**\n     * @private\n     * @type {MutationObserver}\n     */\n    const MutationObserver = getGlobalFunction('MutationObserver');\n\n    // @link https://developer.mozilla.org/en/docs/Web/API/MutationObserver\n    return new MutationObserver((mutationsList, observer) => {\n\n            for (const mutation of mutationsList) {\n                self.updates.push(mutation);\n            }\n\n            self.update();\n        }\n    )\n\n}\n\n/**\n * get the handle of a node\n *\n * if a node is specified without a handler, a recursive search upwards is performed until the corresponding\n * handle is found, or undefined is returned.\n *\n * you can call the method via the monster namespace `Monster.DOM.getHandleFromNode()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/dom/handle.js';\n * console.log(Monster.DOM.getHandleFromNode())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {getHandleFromNode} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/dom/handle.js';\n * console.log(getHandleFromNode())\n * </script>\n * ```\n *\n * @param {Node} node\n * @return {Handle|undefined}\n * @since 1.6.0\n * @copyright schukai GmbH\n * @memberOf Monster/DOM\n * @throws {TypeError} value is not an instance of Node\n */\nfunction getHandleFromNode(node) {\n    validateInstance(node, getGlobalFunction('Node'));\n\n    let handle = node.dataset?.[MONSTERDOMHANDLE];\n    if (handle === undefined) {\n        let parentNode = node?.['parentNode'];\n        if (isInstance(parentNode, getGlobalFunction('Node'))) {\n            return getHandleFromNode(parentNode)\n        }\n    }\n\n    return handle;\n}\n\nMonster.assignToNamespace('Monster.DOM', getHandleFromNode, Handle);\nexport {Monster, getHandleFromNode, Handle}\n\n",
        "'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {Monster, Base} from '../types/base.js';\nimport {getGlobalFunction} from '../types/global.js';\nimport {validateInstance} from \"../types/validate.js\";\n\n/**\n * you can call the method via the monster namespace `new Monster.DOM.Template()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/dom/template.js';\n * console.log(new Monster.DOM.Template())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Template} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/dom/template.js';\n * console.log(new Template())\n * </script>\n * ```\n *\n * @since 1.6.0\n * @copyright schukai GmbH\n * @memberOf Monster/DOM\n */\nclass Template extends Base {\n    /**\n     *\n     * @param {HTMLTemplateElement} template\n     * @throws {TypeError} value is not an instance of\n     * @throws {TypeError} value is not a function\n     * @throws {Error} the function is not defined\n     */\n    constructor(template) {\n        super();\n        validateInstance(template, getGlobalFunction('HTMLTemplateElement'));\n        this.template = template;\n    }\n\n    /**\n     *\n     * @returns {HTMLTemplateElement}\n     */\n    getTemplateElement() {\n        return this.template;\n    }\n\n    /**\n     *\n     * @return {DocumentFragment}\n     * @throws {TypeError} value is not an instance of\n     */\n    createDocumentFragment() {\n        return this.template.content.cloneNode(true);\n    }\n\n}\n\n\n\nMonster.assignToNamespace('Monster.DOM', Template);\nexport {Monster, Template}\n\n\n",
        "'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {Monster, getGlobal} from \"../types/global.js\";\nimport {validateString} from \"../types/validate.js\";\n\n\n/**\n * this method fetches the document object\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/dom/util.js';\n * console.log(Monster.DOM.getDocument())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {getDocument} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/dom/util.js';\n * console.log(getDocument())\n * </script>\n * ```\n *\n * in nodejs this functionality can be performed with [jsdom](https://www.npmjs.com/package/jsdom).\n *\n * ```\n * import {JSDOM} from \"jsdom\"\n * if (typeof window !== \"object\") {\n *    const {window} = new JSDOM('', {\n *        url: 'http://example.com/',\n *        pretendToBeVisual: true\n *    });\n *\n *    [\n *        'self',\n *        'document',\n *        'Document',\n *        'Node',\n *        'Element',\n *        'HTMLElement',\n *        'DocumentFragment',\n *        'DOMParser',\n *        'XMLSerializer',\n *        'NodeFilter',\n *        'InputEvent',\n *        'CustomEvent'\n *    ].forEach(key => (getGlobal()[key] = window[key]));\n * }\n * ```\n *\n * @returns {object}\n * @since 1.6.0\n * @copyright schukai GmbH\n * @memberOf Monster/DOM\n * @throws {Error} not supported environment\n */\nfunction getDocument() {\n    let document = getGlobal()?.['document'];\n    if (typeof document !== 'object') {\n        throw new Error(\"not supported environment\")\n    }\n\n    return document;\n}\n\n/**\n * this method fetches the window object\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/dom/util.js';\n * console.log(Monster.DOM.getWindow())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {getWindow} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/dom/util.js';\n * console.log(getWindow(null))\n * </script>\n * ```\n *\n * in nodejs this functionality can be performed with [jsdom](https://www.npmjs.com/package/jsdom).\n *\n * ```\n * import {JSDOM} from \"jsdom\"\n * if (typeof window !== \"object\") {\n *    const {window} = new JSDOM('', {\n *        url: 'http://example.com/',\n *        pretendToBeVisual: true\n *    });\n *\n *    getGlobal()['window']=window;\n * \n *    [\n *        'self',\n *        'document',\n *        'Document',\n *        'Node',\n *        'Element',\n *        'HTMLElement',\n *        'DocumentFragment',\n *        'DOMParser',\n *        'XMLSerializer',\n *        'NodeFilter',\n *        'InputEvent',\n *        'CustomEvent'\n *    ].forEach(key => (getGlobal()[key] = window[key]));\n * }\n * ```\n *\n * @returns {object}\n * @since 1.6.0\n * @copyright schukai GmbH\n * @memberOf Monster/DOM\n * @throws {Error} not supported environment\n */\nfunction getWindow() {\n    let window = getGlobal()?.['window'];\n    if (typeof window !== 'object') {\n        throw new Error(\"not supported environment\")\n    }\n\n    return window;\n}\n\n\n/**\n *\n *\n * this method fetches the document object\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/dom/util.js';\n * console.log(Monster.DOM.getDocumentFragmentFromString())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {getDocumentFragmentFromString} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/dom/util.js';\n * console.log(getDocumentFragmentFromString('<div></div>'))\n * </script>\n * ```\n *\n * in nodejs this functionality can be performed with [jsdom](https://www.npmjs.com/package/jsdom).\n *\n * ```\n * import {JSDOM} from \"jsdom\"\n * if (typeof window !== \"object\") {\n *    const {window} = new JSDOM('', {\n *        url: 'http://example.com/',\n *        pretendToBeVisual: true\n *    });\n *\n *    [\n *        'self',\n *        'document',\n *        'Document',\n *        'Node',\n *        'Element',\n *        'HTMLElement',\n *        'DocumentFragment',\n *        'DOMParser',\n *        'XMLSerializer',\n *        'NodeFilter',\n *        'InputEvent',\n *        'CustomEvent'\n *    ].forEach(key => (getGlobal()[key] = window[key]));\n * }\n * ```\n *\n * @returns {DocumentFragment}\n * @since 1.6.0\n * @copyright schukai GmbH\n * @memberOf Monster/DOM\n * @throws {Error} not supported environment\n * @throws {TypeError} value is not a string\n */\nfunction getDocumentFragmentFromString(html) {\n    validateString(html);\n\n    const document = getDocument();\n    const template = document.createElement('template');\n    template.innerHTML = html;\n    \n    return template.content;\n}\n\n\nMonster.assignToNamespace('Monster.DOM', getWindow, getDocument, getDocumentFragmentFromString);\nexport {Monster, getWindow, getDocument, getDocumentFragmentFromString}\n",
        "'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {Monster} from '../namespace.js';\nimport {Base} from '../types/base.js';\nimport {ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE, WARN} from \"./logger.js\";\nimport {LogEntry} from \"./logentry.js\";\nimport {validateInstance, validateInteger} from \"../types/validate.js\";\n\n/**\n * you can call the method via the monster namespace `new Monster.Logging.Handler()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/logging/handler.js';\n * console.log(new Monster.Logging.Handler())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/logging/handler.js';\n * console.log(new Handler())\n * </script>\n * ```\n *\n * @since 1.5.0\n * @copyright schukai GmbH\n * @memberOf Monster/Logging\n */\nclass Handler extends Base {\n    constructor() {\n        super();\n\n        /**\n         * Loglevel\n         * \n         * @type {integer} \n         */\n        this.loglevel = OFF;\n    }\n\n    /**\n     * this is the central log function. this method must be\n     * overwritten by derived handlers with their own logic.\n     *\n     * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF  (ALL = 0xff;OFF = 0x00;\n     *\n     * @param {LogEntry} entry\n     * @returns {boolean}\n     */\n    log(entry) {\n        validateInstance(entry, LogEntry);\n\n        if (this.loglevel < entry.getLogLevel()) {\n            return false;\n        }\n\n        return true;\n    }\n\n    /**\n     * set loglevel\n     *\n     * @param {integer} loglevel\n     * @returns {Handler}\n     * @since 1.5.0\n     */\n    setLogLevel(loglevel) {\n        validateInteger(loglevel)\n        this.loglevel = loglevel;\n        return this;\n    }\n\n    /**\n     * get loglevel\n     *\n     * @returns {integer}\n     * @since 1.5.0\n     */\n    getLogLevel() {\n        return this.loglevel;\n    }\n\n    /**\n     *  Set log level to All\n     *\n     * @returns {Handler}\n     * @since 1.5.0\n     */\n    setAll() {\n        this.setLogLevel(ALL);\n        return this;\n    };\n\n    /**\n     * Set log level to Trace\n     *\n     * @returns {Handler}\n     * @since 1.5.0\n     */\n    setTrace() {\n        this.setLogLevel(TRACE);\n        return this;\n    };\n\n    /**\n     * Set log level to Debug\n     *\n     * @returns {Handler}\n     * @since 1.5.0\n     */\n    setDebug() {\n        this.setLogLevel(DEBUG);\n        return this;\n    };\n\n    /**\n     * Set log level to Info\n     *\n     * @returns {Handler}\n     * @since 1.5.0\n     */\n    setInfo() {\n        this.setLogLevel(INFO);\n        return this;\n    };\n\n    /**\n     * Set log level to Warn\n     *\n     * @returns {undefined}\n     * @since 1.5.0\n     */\n    setWarn() {\n        this.setLogLevel(WARN);\n        return this;\n    };\n\n    /**\n     * Set log level to Error\n     *\n     * @returns {Handler}\n     * @since 1.5.0\n     */\n    setError() {\n        this.setLogLevel(ERROR);\n        return this;\n    };\n\n    /**\n     * Set log level to Fatal\n     *\n     * @returns {Handler}\n     * @since 1.5.0\n     */\n    setFatal() {\n        this.setLogLevel(FATAL);\n        return this;\n    };\n\n\n    /**\n     * Set log level to Off\n     *\n     * @returns {Handler}\n     * @since 1.5.0\n     */\n    setOff() {\n        this.setLogLevel(OFF);\n        return this;\n    };\n\n\n}\n\n\nMonster.assignToNamespace('Monster.Logging', Handler);\nexport {Monster, Handler};\n",
        "'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {Monster} from '../../namespace.js';\nimport {Base} from '../../types/base.js';\nimport {Handler} from '../../logging/handler.js';\n\n/**\n * you can call the method via the monster namespace `new Monster.Logging.Handler.ConsoleHandler()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/logging/handler/console.js';\n * console.log(new Monster.Logging.Handler.ConsoleHandler())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/logging/handler/console.js';\n * console.log(new ConsoleHandler())\n * </script>\n * ```\n *\n * @since 1.5.0\n * @copyright schukai GmbH\n * @memberOf Monster/Logging/Handler\n */\nclass ConsoleHandler extends Base {\n    constructor() {\n        super();\n    }\n}\n\n\nMonster.assignToNamespace('Monster.Logging', ConsoleHandler);\nexport {Monster, Handler};\n",
        "'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {Monster} from '../namespace.js';\nimport {validateInteger} from '../types/validate.js';\nimport {Base} from  '../types/base.js';\n\n\n/**\n * you can call the method via the monster namespace `new Monster.Logging.LogEntry()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/logging/logentry.js';\n * console.log(new Monster.Logging.LogEntry())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/logging/logentry.js';\n * console.log(new LogEntry())\n * </script>\n * ```\n *\n * @since 1.5.0\n * @copyright schukai GmbH\n * @memberOf Monster/Logging\n */\nclass LogEntry extends Base {\n    /**\n     *\n     * @param {int} loglevel\n     * @param {*} args\n     */\n    constructor(loglevel, ...args) {\n        super();\n        validateInteger(loglevel);\n\n        this.loglevel = loglevel\n        this.arguments = args\n    }\n\n    /**\n     *\n     * @returns {integerr}\n     */\n    getLogLevel() {\n        return this.loglevel\n    }\n\n    /**\n     *\n     * @returns {array}\n     */\n    getArguments() {\n        return this.arguments\n    }\n\n}\n\nMonster.assignToNamespace('Monster.Logging', LogEntry);\nexport {Monster, LogEntry}\n",
        "'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {Monster} from '../namespace.js';\nimport {validateInteger, validateObject, validateString} from '../types/validate.js';\nimport {Handler} from '../logging/handler.js';\nimport {LogEntry} from '../logging/logentry.js';\nimport {Base} from '../types/base.js';\n\n\n/**\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF\n * @type {number}\n * @memberOf Monster/Logging\n */\nconst ALL = 255;\n/**\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF\n * @type {number}\n * @memberOf Monster/Logging\n */\nconst TRACE = 64;\n/**\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF\n * @type {number}\n * @memberOf Monster/Logging\n */\nconst DEBUG = 32;\n/**\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF\n * @type {number}\n * @memberOf Monster/Logging\n */\nconst INFO = 16;\n/**\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF\n * @type {number}\n * @memberOf Monster/Logging\n */\nconst WARN = 8;\n/**\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF\n * @type {number}\n * @memberOf Monster/Logging\n */\nconst ERROR = 4;\n/**\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF\n * @type {number}\n * @memberOf Monster/Logging\n */\nconst FATAL = 2;\n/**\n * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF\n * @type {number}\n * @memberOf Monster/Logging\n */\nconst OFF = 0;\n\n/**\n * you can call the method via the monster namespace `new Monster.Logging.Logger()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/logging/logger.js';\n * console.log(new Monster.Logging.Logger())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/logging/logger.js';\n * console.log(new Logger())\n * </script>\n * ```\n *\n * @since 1.5.0\n * @copyright schukai GmbH\n * @memberOf Monster/Logging\n */\nclass Logger extends Base {\n\n    /**\n     *\n     */\n    constructor() {\n        super();\n        this.handler = new Set;\n    }\n\n    /**\n     *\n     * @param {Handler} handler\n     * @returns {Logger}\n     * @throws {Error} the handler must be an instance of Handler\n     */\n    addHandler(handler) {\n        validateObject(handler)\n        if (!(handler instanceof Handler)) {\n            throw new Error(\"the handler must be an instance of Handler\")\n        }\n\n        this.handler.add(handler)\n        return this;\n    }\n\n    /**\n     *\n     * @param {Handler} handler\n     * @returns {Logger}\n     * @throws {Error} the handler must be an instance of Handler\n     */\n    removeHandler(handler) {\n        validateObject(handler)\n        if (!(handler instanceof Handler)) {\n            throw new Error(\"the handler must be an instance of Handler\")\n        }\n\n        this.handler.delete(handler);\n        return this;\n    }\n\n    /**\n     * log Trace message\n     *\n     * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF  (ALL = 0xff;OFF = 0x00;\n     *\n     * @param {*} arguments\n     * @returns {Logger}\n     * @since 1.5.0\n     */\n    logTrace() {\n        triggerLog.apply(this, [TRACE, ...arguments]);\n        return this;\n    };\n\n    /**\n     * log Debug message\n     *\n     * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF  (ALL = 0xff;OFF = 0x00;\n     *\n     * @param {*} arguments\n     * @returns {Logger}\n     * @since 1.5.0\n     */\n    logDebug() {\n        triggerLog.apply(this, [DEBUG, ...arguments]);\n        return this;\n    };\n\n    /**\n     * log Info message\n     *\n     * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF  (ALL = 0xff;OFF = 0x00;\n     *\n     *\n     * @param {*} arguments\n     * @returns {Logger}\n     * @since 1.5.0\n     */\n    logInfo() {\n        triggerLog.apply(this, [INFO, ...arguments]);\n        return this;\n    };\n\n    /**\n     * log Warn message\n     *\n     * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF  (ALL = 0xff;OFF = 0x00;\n     *\n     * @param {*} arguments\n     * @returns {Logger}\n     * @since 1.5.0\n     */\n    logWarn() {\n        triggerLog.apply(this, [WARN, ...arguments]);\n        return this;\n    };\n\n    /**\n     * log Error message\n     *\n     * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF  (ALL = 0xff;OFF = 0x00;\n     *\n     * @param {*} arguments\n     * @returns {Logger}\n     * @since 1.5.0\n     */\n    logError() {\n        triggerLog.apply(this, [ERROR, ...arguments]);\n        return this;\n    };\n\n    /**\n     * log Fatal message\n     *\n     * ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF  (ALL = 0xff;OFF = 0x00;\n     *\n     * @param {*} arguments\n     * @returns {Logger}\n     * @since 1.5.0\n     */\n    logFatal() {\n        triggerLog.apply(this, [FATAL, ...arguments]);\n        return this;\n    };\n\n\n    /**\n     * Labels\n     *\n     * @param {integer} level\n     * @returns {string}\n     */\n    getLabel(level) {\n        validateInteger(level);\n\n        if (level === ALL) return 'ALL';\n        if (level === TRACE) return 'TRACE';\n        if (level === DEBUG) return 'DEBUG';\n        if (level === INFO) return 'INFO';\n        if (level === WARN) return 'WARN';\n        if (level === ERROR) return 'ERROR';\n        if (level === FATAL) return 'FATAL';\n        if (level === OFF) return 'OFF';\n\n        return 'unknown';\n    };\n\n    /**\n     * Level\n     *\n     * @param {string} label\n     * @returns {integer}\n     */\n    getLevel(label) {\n        validateString(label);\n\n        if (label === 'ALL') return ALL;\n        if (label === 'TRACE') return TRACE;\n        if (label === 'DEBUG') return DEBUG;\n        if (label === 'INFO') return INFO;\n        if (label === 'WARN') return WARN;\n        if (label === 'ERROR') return ERROR;\n        if (label === 'FATAL') return FATAL;\n        if (label === 'OFF') return OFF;\n\n        return 0;\n    };\n\n\n}\n\nMonster.assignToNamespace('Monster.Logging', Logger);\nexport {Monster, Logger, ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF};\n\n\n/**\n * Log triggern\n *\n * @param {integer} loglevel\n * @param {*} args\n * @returns {Logger}\n * @private\n */\nfunction triggerLog(loglevel, ...args) {\n    var logger = this;\n\n    for (let handler of logger.handler) {\n        handler.log(new LogEntry(loglevel, args))\n    }\n\n    return logger;\n\n}\n",
        "'use strict';\n\n/**\n * @author schukai GmbH\n */\n\n\nimport {Monster, getGlobal} from '../types/global.js';\n\n\n/**\n * this function uses crypt and returns a random number.\n *\n * you can call the method via the monster namespace `Monster.Math.random()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/math/random.js';\n * console.log(Monster.Math.random(1,10)) // ↦ 5\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {random} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/math/random.js';\n * console.log(random(1,10)) // ↦ 5\n * </script>\n * ```\n *\n * @param {number} min starting value of the definition set (default is 0)\n * @param {number} max end value of the definition set (default is 1000000000)\n * @returns {number}\n * @memberOf Monster/Math\n\n * @since 1.0.0\n * @copyright schukai GmbH\n */\nfunction random(min, max) {\n\n    if (min === undefined) {\n        min = 0;\n    }\n    if (max === undefined) {\n        max = MAX;\n    }\n\n    if (max < min) {\n        throw new Error(\"max must be greater than min\");\n    }\n\n    return Math.round(create(min, max));\n\n}\n\n/**\n * @private\n * @type {number}\n */\nvar MAX = 1000000000;\n\n\nMath.log2 = Math.log2 || function (n) {\n    return Math.log(n) / Math.log(2);\n};\n\n/**\n *\n * @param min\n * @param max\n * @returns {*}\n * @private\n */\nfunction create(min, max) {\n    let crypt;\n    let globalReference = getGlobal();\n\n    crypt = globalReference?.['crypto'] || globalReference?.['msCrypto'] || globalReference?.['crypto'] || undefined;\n\n    if (typeof crypt === \"undefined\") {\n        throw new Error(\"missing crypt\")\n    }\n\n    let rval = 0;\n    const range = max - min;\n    if (range < 2) {\n        return min;\n    }\n\n    const bitsNeeded = Math.ceil(Math.log2(range));\n    if (bitsNeeded > 53) {\n        throw  new Error(\"we cannot generate numbers larger than 53 bits.\");\n    }\n    const bytesNeeded = Math.ceil(bitsNeeded / 8);\n    const mask = Math.pow(2, bitsNeeded) - 1;\n\n    const byteArray = new Uint8Array(bytesNeeded);\n    crypt.getRandomValues(byteArray);\n\n    let p = (bytesNeeded - 1) * 8;\n    for (var i = 0; i < bytesNeeded; i++) {\n        rval += byteArray[i] * Math.pow(2, p);\n        p -= 8;\n    }\n\n    rval = rval & mask;\n\n    if (rval >= range) {\n        return create(min, max);\n    }\n\n    return min + rval;\n\n}\n\nMonster.assignToNamespace('Monster.Math', random);\nexport {Monster, random}\n\n\n\n\n",
        "/**\n * @license\n * Copyright 2021 schukai GmbH\n * SPDX-License-Identifier: AGPL-3.0-only or COMMERCIAL\n * @author schukai GmbH\n */\n\n'use strict';\n\nimport {Monster} from './namespace.js';\nimport './types/base.js';\nimport './types/global.js';\nimport './types/id.js';\nimport './types/is.js';\nimport './types/observer.js';\nimport './types/observerlist.js';\nimport './types/proxyobserver.js';\nimport './types/queue.js';\nimport './types/randomid.js';\nimport './types/stack.js';\nimport './types/tokenlist.js';\nimport './types/uniquequeue.js';\nimport './types/validate.js';\nimport './types/version.js';\nimport './math/random.js';\nimport './data/diff.js';\nimport './data/pathfinder.js';\nimport './data/pipe.js';\nimport './data/transformer.js';\nimport './logging/handler.js';\nimport './logging/logentry.js';\nimport './logging/logger.js';\nimport './logging/handler/console.js';\nimport './util/clone.js';\nimport './util/comparator.js';\nimport './util/freeze.js';\nimport './constraints/abstract.js';\nimport './constraints/abstractoperator.js';\nimport './constraints/andoperator.js';\nimport './constraints/invalid.js';\nimport './constraints/isarray.js';\nimport './constraints/isobject.js';\nimport './constraints/oroperator.js';\nimport './constraints/valid.js';\nimport './dom/util.js';\nimport './dom/template.js';\nimport './dom/handle.js';\nimport './dom/assembler.js';\nimport './dom/customelement.js';\n\n\nMonster.Util.deepFreeze(Monster);\nexport {Monster};\n\nlet rootName\ntry {\n    rootName = Monster.Types.getGlobalObject('__MonsterRootName__');\n} catch (e) {\n\n}\n\nif (!rootName) rootName = \"Monster\";\n\nMonster.Types.getGlobal()[rootName] = Monster",
        "'use strict';\n\n/**\n * @namespace Monster\n * @author schukai GmbH\n */\n\n\n/**\n * namespace class objects form the basic framework of the namespace administration.\n *\n * all functions, classes and objects of the library hang within the namespace tree.\n *\n * via `obj instanceof Monster.Namespace` it is also easy to check whether it is an object or a namespace.\n *\n * @memberOf Monster\n * @copyright schukai GmbH\n * @since 1.0.0\n */\nclass Namespace {\n\n    /**\n     *\n     * @param namespace\n     * @param obj\n     */\n    constructor(namespace) {\n        if (namespace === undefined || typeof namespace !== 'string') {\n            throw new Error(\"namespace is not a string\")\n        }\n        this.namespace = namespace;\n    }\n\n    /**\n     *\n     * @returns {string}\n     */\n    getNamespace() {\n        return this.namespace;\n    }\n\n    /**\n     *\n     * @returns {string}\n     */\n    toString() {\n        return this.getNamespace();\n    }\n}\n\n/**\n * @type {Namespace}\n * @global\n */\nexport const Monster = new Namespace(\"Monster\");\n\n\n/**\n *\n */\nassignToNamespace('Monster', assignToNamespace);\n\n/**\n * To expand monster, the `Monster.assignToNamespace()` method can be used. \n *\n * you must call the method in the monster namespace. this allows you to mount your own classes, objects and functions into the namespace.\n * \n * To avoid confusion and so that you do not accidentally overwrite existing functions, you should use the custom namespace `X`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/namespace.js';\n * function hello() {\n *            console.log('Hello World!');\n *        }\n * Monster.assignToNamespace(\"Monster.X\",hello)\n * Monster.X.hello(); // ↦ Hello World!\n * </script>\n * \n * ```\n *\n * @param ns\n * @param obj\n * @memberOf Monster\n \n */\nfunction assignToNamespace(ns, ...obj) {\n    let current = namespaceFor(ns.split(\".\"));\n\n    for (let i = 0, l = obj.length; i < l; i++) {\n        current[objectName(obj[i])] = obj[i];\n    }\n}\n\n/**\n *\n * @param fn\n * @returns {string|*}\n * @private\n */\nfunction objectName(fn) {\n    try {\n\n        if (typeof fn !== 'function') {\n            throw  new Error(\"the first argument is not a function or class.\");\n        }\n\n        if (fn.hasOwnProperty('name')) {\n            return fn.name;\n        }\n\n        if (\"function\" === typeof fn.toString) {\n            let s = fn.toString();\n            let f = s.match(/^\\s*function\\s+([^\\s(]+)/);\n            if (Array.isArray(f) && typeof f[1] === 'string') {\n                return f[1];\n            }\n            let c = s.match(/^\\s*class\\s+([^\\s(]+)/);\n            if (Array.isArray(c) && typeof c[1] === 'string') {\n                return c[1];\n            }\n        }\n\n    } catch (e) {\n        throw new Error(\"exception \" + e);\n    }\n\n    throw  new Error(\"the name of the class or function cannot be resolved.\");\n}\n\n/**\n *\n * @param parts\n * @returns {Namespace}\n * @private\n */\nfunction namespaceFor(parts) {\n    var space = Monster, ns = 'Monster';\n\n    for (let i = 0; i < parts.length; i++) {\n\n        if (\"Monster\" === parts[i]) {\n            continue;\n        }\n\n        ns += '.' + parts[i];\n\n        if (!space.hasOwnProperty(parts[i])) {\n            space[parts[i]] = new Namespace(ns);\n        }\n\n        space = space[parts[i]];\n    }\n\n    return space;\n}\n\n\nexport {assignToNamespace}\n",
        "'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {Monster} from '../namespace.js';\n\n\n/**\n * This is the base class from which all monster classes are derived.\n *\n * you can call the method via the monster namespace `new Monster.Types.Base()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/base.js';\n * console.log(new Monster.Types.Base())\n * console.log(new Monster.Types.Base())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Object} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/base.js';\n * console.log(new Base())\n * console.log(new Base())\n * </script>\n * ```\n *\n * the class was formerly called Object.\n *\n * @since 1.5.0\n * @copyright schukai GmbH\n * @memberOf Monster/Types\n */\nclass Base extends Object {\n\n    /**\n     *\n     * @returns {string}\n     */\n    toString() {\n        return JSON.stringify(this);\n    };\n\n\n}\n\nMonster.assignToNamespace('Monster.Types', Base);\nexport {Monster, Base}\n",
        "'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {Monster} from '../namespace.js';\nimport {validateFunction, validateString, validateObject} from \"./validate.js\";\n\n/**\n * @type {objec}\n * @private\n */\nvar globalReference;\n\n/**\n * @private\n */\n(function () {\n    if (typeof globalThis === 'object') {\n        globalReference = globalThis;\n        return;\n    }\n\n    Object.defineProperty(Object.prototype, '__monster__', {\n        get: function () {\n            return this;\n        },\n        configurable: true\n    });\n    \n    __monster__.globalThis = __monster__;\n    delete Object.prototype.__monster__;\n\n    globalReference = globalThis;\n\n}());\n\n/**\n * return globalThis\n *\n * if globalThis is not available, it will be polyfilled\n *\n * @since 1.6.0\n * @memberOf Monster/Types\n * @returns {objec} globalThis\n */\nfunction getGlobal() {\n    return globalReference;\n}\n\n/**\n * return global object or throw Error\n *\n * you can call the method via the monster namespace `Monster.Types.getGlobalObject()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/global.js';\n * console.log(Monster.Types.getGlobalObject('document')) // ↦ { }\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {getGlobalObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/global.js';\n * console.log(getGlobalObject('document')) // ↦ { }\n * </script>\n * ```\n *\n * @since 1.6.0\n * @memberOf Monster/Types\n * @param {string} name\n * @returns {objec}\n * @throws {Error} the object is not defined\n * @throws {TypeError} value is not a object\n * @throws {TypeError} value is not a string\n */\nfunction getGlobalObject(name) {\n    validateString(name);\n    let o = globalReference?.[name];\n    if (typeof o === 'undefined') throw new Error('the object '+name+' is not defined');\n    validateObject(o);\n    return o;\n}\n\n/**\n * return global function or throw Error\n *\n * you can call the method via the monster namespace `Monster.Types.getGlobalFunction()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/global.js';\n * console.log(Monster.Types.getGlobalFunction('parseInt')) // ↦ f parseInt() { }\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {getGlobalFunction} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/global.js';\n * console.log(getGlobalFunction('parseInt')) // ↦ f parseInt() { }\n * </script>\n * ```\n *\n * @since 1.6.0\n * @memberOf Monster/Types\n * @param {string} name\n * @returns {objec}\n * @throws {TypeError} value is not a function\n * @throws {Error} the function is not defined\n * @throws {TypeError} value is not a string\n */\nfunction getGlobalFunction(name) {\n    validateString(name);\n    let f = globalReference?.[name];\n    if (typeof f === 'undefined') throw new Error('the function '+name+' is not defined');\n    validateFunction(f);\n    return f;\n}\n\n\nMonster.assignToNamespace('Monster.Types', getGlobal, getGlobalObject, getGlobalFunction);\nexport {Monster, getGlobal, getGlobalObject, getGlobalFunction}\n",
        "'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {Monster, Base} from './base.js';\nimport {validateString} from \"./validate.js\";\n\n/**\n * @private\n * @type {Map<string, integer>}\n */\nlet internalCounter = new Map;\n\n/**\n * with the id class, sequences of ids can be created. for this purpose, an internal counter is incremented for each prefix.\n * thus, the first id with the prefix `myid` will be `myid1` and the second id `myid2`.\n * The ids are the same for every call, for example on a web page.\n *\n * so the ids can also be used for navigation. you just have to take care that the order stays the same.\n *\n * you can call the method via the monster namespace `new Monster.Types.ID()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/id.js';\n * console.log(new Monster.Types.ID())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/id.js';\n * console.log(new ID())\n * </script>\n * ```\n *\n * as of version 1.6.0 there is the new RandomID. this ID class is continuous from now on.\n *\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster/Types\n */\nclass ID extends Base {\n\n    /**\n     * create new object\n     */\n    constructor(prefix) {\n        super();\n\n        if (prefix === undefined) {\n            prefix = \"id\";\n        }\n\n        validateString(prefix);\n\n        if (!internalCounter.has(prefix)) {\n            internalCounter.set(prefix, 1);\n        }\n\n        let count = internalCounter.get(prefix);\n        this.id = prefix + count;\n\n        internalCounter.set(prefix, ++count);\n    }\n\n    /**\n     * @return {string}\n     */\n    toString() {\n        return this.id;\n    }\n\n}\n\nMonster.assignToNamespace('Monster.Types', ID);\nexport {Monster, ID}\n",
        "'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {Monster} from '../namespace.js';\n\n/**\n * with this function you can check if a value is iterable\n *\n * you can call the method via the monster namespace `Monster.Types.isPrimitive()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/is.js';\n * console.log(Monster.Types.isIterable(null)) // ↦ false\n * console.log(Monster.Types.isIterable('hello')) // ↦ true\n * console.log(Monster.Types.isIterable([])) // ↦ true\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {isIterable} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/is.js';\n * console.log(isIterable(null))  // ↦ false\n * console.log(isIterable('hello'))  // ↦ true\n * console.log(isIterable([]))  // ↦ true\n * </script>\n * ```\n *\n * @param {*} value\n * @returns {boolean}\n * @since 1.2.0\n * @copyright schukai GmbH\n * @memberOf Monster/Types\n */\nfunction isIterable(value) {\n    if (value === undefined) return false;\n    if (value === null) return false;\n    return typeof value?.[Symbol.iterator] === 'function';\n}\n\n\n/**\n * checks whether the value passed is a primitive (string, number, boolean, NaN, undefined, null or symbol)\n *\n * you can call the method via the monster namespace `Monster.Types.isPrimitive()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/is.js';\n * console.log(Monster.Types.isPrimitive('2')) // ↦ false\n * console.log(Monster.Types.isPrimitive([])) // ↦ true\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {isPrimitive} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/is.js';\n * console.log(isPrimitive('2'))  // ↦ true\n * console.log(isPrimitive([]))  // ↦ false\n * </script>\n * ```\n *\n * @param {*} value\n * @returns {boolean}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster/Types\n */\nfunction isPrimitive(value) {\n    var type;\n\n    if (value === undefined || value === null || value === NaN) {\n        return true;\n    }\n\n    type = typeof value;\n\n    if (type === 'string' || type === 'number' || type === 'boolean' || type === 'symbol') {\n        return true;\n    }\n\n    return false;\n}\n\n/**\n * checks whether the value passed is a boolean\n *\n * you can call the method via the monster namespace `Monster.Types.isBoolean()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/is.js';\n * console.log(Monster.Types.isBoolean('2')) // ↦ false\n * console.log(Monster.Types.isBoolean([])) // ↦ false\n * console.log(Monster.Types.isBoolean(true)) // ↦ true\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {isBoolean} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/is.js';\n * console.log(isBoolean('2'))  // ↦ false\n * console.log(isBoolean([]))  // ↦ false\n * console.log(isBoolean(2>4))  // ↦ true\n * </script>\n * ```\n *\n * @param {*} value\n * @returns {boolean}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster/Types\n */\nfunction isBoolean(value) {\n\n    if (value === true || value === false) {\n        return true;\n    }\n\n    return false;\n}\n\n/**\n * checks whether the value passed is a string\n *\n * you can call the method via the monster namespace `Monster.Types.isString()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/is.js';\n * console.log(Monster.Types.isString('2')) // ↦ true\n * console.log(Monster.Types.isString([])) // ↦ false\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {isString} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/is.js';\n * console.log(isString('2'))  // ↦ true\n * console.log(isString([]))  // ↦ false\n * </script>\n * ```\n *\n * @param {*} value\n * @returns {boolean}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster/Types\n */\nfunction isString(value) {\n    if (value === undefined || typeof value !== 'string') {\n        return false;\n    }\n    return true;\n}\n\n/**\n * checks whether the value passed is a object\n *\n * you can call the method via the monster namespace `Monster.Types.isObject()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/is.js';\n * console.log(Monster.Types.isObject('2')) // ↦ false\n * console.log(Monster.Types.isObject([])) // ↦ false\n * console.log(Monster.Types.isObject({})) // ↦ true\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {isObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/is.js';\n * console.log(isObject('2'))  // ↦ false\n * console.log(isObject([]))  // ↦ false\n * </script>\n * ```\n *\n * @param {*} value\n * @returns {boolean}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster/Types\n */\nfunction isObject(value) {\n\n    if (isArray(value)) return false;\n    if (isPrimitive(value)) return false;\n\n    if (typeof value === 'object') {\n        return true;\n    }\n\n    return false;\n}\n\n/**\n * checks whether the value passed is a object and instance of instance\n *\n * you can call the method via the monster namespace `Monster.Types.isInstance()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/is.js';\n * console.log(Monster.Types.isInstance('2')) // ↦ false\n * console.log(Monster.Types.isInstance([])) // ↦ false\n * console.log(Monster.Types.isInstance({})) // ↦ true\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {isInstance} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/is.js';\n * console.log(isInstance('2'))  // ↦ false\n * console.log(isInstance([]))  // ↦ false\n * </script>\n * ```\n *\n * @param {*} value\n * @param {*} instance\n * @returns {boolean}\n * @since 1.5.0\n * @copyright schukai GmbH\n * @memberOf Monster/Types\n */\nfunction isInstance(value, instance) {\n\n    if (!isObject(value)) return false;\n    if (!isFunction(instance)) return false;\n    if (!instance.hasOwnProperty('prototype')) return false;\n    return (value instanceof instance)?true:false; \n\n}\n\n/**\n * checks whether the value passed is a array\n *\n * you can call the method via the monster namespace `Monster.Types.isArray()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/is.js';\n * console.log(Monster.Types.isArray('2')) // ↦ false\n * console.log(Monster.Types.isArray([])) // ↦ true\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {isArray} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/is.js';\n * console.log(isArray('2'))  // ↦ false\n * console.log(isArray([]))  // ↦ true\n * </script>\n * ```\n *\n * @param {*} value\n * @returns {boolean}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster/Types\n */\nfunction isArray(value) {\n    if (Array.isArray(value)) {\n        return true;\n    }\n    return false;\n}\n\n/**\n * checks whether the value passed is a function\n *\n * you can call the method via the monster namespace `Monster.Types.isFunction()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/is.js';\n * console.log(Monster.Types.isFunction(()=>{})) // ↦ true\n * console.log(Monster.Types.isFunction('2')) // ↦ false\n * console.log(Monster.Types.isFunction([])) // ↦ false\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {isFunction} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/is.js';\n * console.log(isFunction(()=>{})) // ↦ true\n * console.log(isFunction('2'))  // ↦ false\n * console.log(isFunction([]))  // ↦ false\n * </script>\n * ```\n *\n * @param {*} value\n * @returns {boolean}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster/Types\n */\nfunction isFunction(value) {\n    if (isArray(value)) return false;\n    if (isPrimitive(value)) return false;\n\n    if (typeof value === 'function') {\n        return true;\n    }\n\n    return false;\n\n}\n\n/**\n * checks whether the value passed is an integer\n *\n * you can call the method via the monster namespace `Monster.Types.isFunction()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/is.js';\n * console.log(Monster.Types.isInteger(()=>{})) // ↦ true\n * console.log(Monster.Types.isInteger('2')) // ↦ false\n * console.log(Monster.Types.isInteger(2)) // ↦ true\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {isInteger} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/is.js';\n * console.log(isInteger(()=>{})) // ↦ true\n * console.log(isInteger('2'))  // ↦ false\n * console.log(isInteger(2))  // ↦ true\n * </script>\n * ```\n *\n * @param {*} value\n * @returns {boolean}\n * @since 1.4.0\n * @copyright schukai GmbH\n * @memberOf Monster/Types\n */\nfunction isInteger(value) {\n    return Number.isInteger(value);\n}\n\n\nMonster.assignToNamespace('Monster.Types', isPrimitive, isBoolean, isString, isObject, isArray, isFunction, isIterable, isInteger);\nexport {Monster, isPrimitive, isBoolean, isString, isObject, isInstance, isArray, isFunction, isIterable, isInteger}\n",
        "'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {Monster} from '../namespace.js';\nimport {TokenList} from './tokenlist.js';\nimport {isObject} from './is.js';\nimport {Base} from './base.js';\nimport {UniqueQueue} from './uniquequeue.js';\n\n/**\n * an observer manages a callback function\n *\n * you can call the method via the monster namespace `new Monster.Types.Observer()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/observer.js';\n * console.log(new Monster.Types.Observer())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Observer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/observer.js';\n * console.log(Observer())\n * </script>\n * ```\n *\n * the update method is called with the subject object as this pointer. for this reason the callback should not\n * be an arrow function, because it gets the this pointer of its own context.\n *\n * ```\n * <script>\n * Observer(()=>{\n *     // this is not subject\n * })\n *\n * Observer(function() {\n *     // this is subject\n * })\n * </script>\n * ```\n *\n * additional arguments can be passed to the callback. to do this, simply specify them.\n *\n * ```\n * <script>\n * Observer(function(a, b, c) {\n *     console.log(a, b, c); // ↦ \"a\", 2, true \n * }, \"a\", 2, true)\n * </script>\n * ```\n *\n * the callback function must have as many parameters as arguments are given.\n *\n *\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster/Types\n */\nclass Observer extends Base {\n\n    /**\n     *\n     * @param {function} callback\n     * @param {*} args\n     */\n    constructor(callback, ...args) {\n        super();\n\n        if (typeof callback !== 'function') {\n            throw new Error(\"observer callback must be a function\")\n        }\n\n        this.callback = callback;\n        this.arguments = args;\n        this.tags = new TokenList;\n        this.queue = new UniqueQueue();\n    }\n\n    /**\n     *\n     * @param {string} tag\n     * @returns {Observer}\n     */\n    addTag(tag) {\n        this.tags.add(tag);\n        return this;\n    }\n\n    /**\n     *\n     * @param {string} tag\n     * @returns {Observer}\n     */\n    removeTag(tag) {\n        this.tags.remove(tag);\n        return this;\n    }\n\n    /**\n     *\n     * @returns {Array}\n     */\n    getTags() {\n        return this.tags.entries()\n    }\n\n    /**\n     *\n     * @param {string} tag\n     * @returns {boolean}\n     */\n    hasTag(tag) {\n        return this.tags.contains(tag)\n    }\n\n    /**\n     *\n     * @param {object} subject\n     * @returns {Promise}\n     */\n    update(subject) {\n        let self = this;\n\n        return new Promise(function (resolve, reject) {\n            if (!isObject(subject)) {\n                reject(\"subject must be an object\");\n                return;\n            }\n\n            self.queue.add(subject);\n\n            setTimeout(() => {\n\n                // the queue and the settimeout ensure that an object is not \n                // informed of the same change more than once.\n                if (self.queue.isEmpty()) {\n                    resolve();\n                    return;\n                }\n\n                let s = self.queue.poll();\n                let result = self.callback.apply(s, self.arguments);\n\n                if (isObject(result) && result instanceof Promise) {\n                    result.then(resolve).catch(reject);\n                    return;\n                }\n\n                resolve(result);\n            }, 0)\n\n        });\n\n    };\n\n}\n\nMonster.assignToNamespace('Monster.Types', Observer);\nexport {Monster, Observer}\n\n\n\n",
        "'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {Monster} from '../namespace.js';\nimport {Base} from './base.js';\nimport {Observer} from \"./observer.js\";\nimport {validateInstance} from \"./validate.js\";\n\n/**\n * With the help of the ObserverList class, observer can be managed.\n *\n * you can call the method via the monster namespace `new Monster.Types.ObserverList()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/observerlist.js';\n * console.log(new Monster.Types.ObserverList())\n * console.log(new Monster.Types.ObserverList())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {ObserverList} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/observerlist.js';\n * console.log(ObserverList())\n * console.log(ObserverList())\n * </script>\n * ```\n *\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster/Types\n */\nclass ObserverList extends Base {\n\n    /**\n     *\n     */\n    constructor() {\n        super();\n        this.observers = [];\n    }\n\n    /**\n     *\n     * @param {Observer} observer\n     * @return {ObserverList}\n     * @throws {TypeError} value is not an instance of Observer\n     */\n    attach(observer) {\n        validateInstance(observer, Observer)\n\n        this.observers.push(observer);\n        return this;\n    };\n\n    /**\n     *\n     * @param {Observer} observer\n     * @return {ObserverList}\n     * @throws {TypeError} value is not an instance of Observer\n     */\n    detach(observer) {\n        validateInstance(observer, Observer)\n\n        var i = 0, l = this.observers.length;\n        for (; i < l; i++) {\n            if (this.observers[i] === observer) {\n                this.observers.splice(i, 1);\n            }\n        }\n\n        return this;\n    };\n\n    /**\n     *\n     * @param {Observer} observer\n     * @return {boolean}\n     * @throws {TypeError} value is not an instance of Observer\n     */\n    contains(observer) {\n        validateInstance(observer, Observer)\n        var i = 0, l = this.observers.length;\n        for (; i < l; i++) {\n            if (this.observers[i] === observer) {\n                return true;\n            }\n        }\n        return false;\n    };\n\n    /**\n     *\n     * @param subject\n     * @return {Promise}\n     */\n    notify(subject) {\n\n        let pomises = []\n\n        var i = 0, l = this.observers.length;\n        for (; i < l; i++) {\n            pomises.push(this.observers[i].update(subject));\n        }\n\n        return Promise.all(pomises);\n    };\n\n}\n\nMonster.assignToNamespace('Monster.Types', ObserverList);\nexport {Monster, ObserverList}\n",
        "'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {Monster} from '../namespace.js';\nimport {Base} from  './base.js';\nimport {validateObject} from \"./validate.js\";\nimport {ObserverList} from \"./observerlist.js\";\nimport {Observer} from \"./observer.js\";\nimport {isObject, isArray, isPrimitive} from \"./is.js\";\n\n/**\n * an observer manages a callback function\n *\n * you can call the method via the monster namespace `new Monster.Types.Observer()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/proxyobserver.js';\n * console.log(new Monster.Types.ProxyObserver())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Observer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/proxyobserver.js';\n * console.log(new ProxyObserver())\n * </script>\n * ```\n *\n * with the ProxyObserver you can attach observer for observation. with each change at the object to be observed an update takes place.\n *\n * this also applies to nested objects.\n *\n * ```javascript\n * const o = new Observer(function () {\n *    if (isObject(this) && this instanceof ProxyObserver) {\n *        // do something (this ist ProxyObserver)\n *        const subject = this.getSubject();\n *    }\n * )\n * \n * let realSubject = {\n *    a: {\n *        b: {\n *            c: true\n *        },\n *        d: 5\n *    }\n * \n * \n * const p = new ProxyObserver(realSubject);\n * p.attachObserver(o);\n * const s = p.getSubject();\n * s.a.b.c = false;\n * ```\n *\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster/Types\n */\nclass ProxyObserver extends Base {\n\n    /**\n     *\n     * @param {object} object\n     * @throws {TypeError} value is not a object\n     */\n    constructor(object) {\n        super();\n        validateObject(object);\n        this.realSubject = object\n        this.subject = new Proxy(object, getHandler.call(this));\n\n        this.objectMap = new WeakMap();\n        this.objectMap.set(this.realSubject, this.subject);\n\n        this.observers = new ObserverList;\n    }\n\n    /**\n     * get the real object\n     *\n     * changes to this object are not noticed by the observers, so you can make a large number of changes and inform the observers later.\n     *\n     * @returns {object}\n     */\n    getSubject() {\n        return this.subject\n    }\n\n    /**\n     * get the proxied object\n     *\n     * @returns {object}\n     */\n    getRealSubject() {\n        return this.realSubject\n    }\n\n    /**\n     * attach a new observer\n     *\n     * @param {Observer} observer\n     * @returns {ProxyObserver}\n     */\n    attachObserver(observer) {\n        this.observers.attach(observer)\n        return this;\n    }\n\n    /**\n     * detach a observer\n     *\n     * @param {Observer} observer\n     * @returns {ProxyObserver}\n     */\n    detachObserver(observer) {\n        this.observers.detach(observer)\n        return this;\n    }\n\n    /**\n     * notify all observer\n     *\n     * @returns {ProxyObserver}\n     */\n    notifyObservers() {\n        this.observers.notify(this);\n        return this;\n    }\n\n    /**\n     * @param {Observer} observer\n     * @returns {ProxyObserver}\n     */\n    containsObserver(observer) {\n        return this.observers.contains(observer)\n    }\n\n}\n\nMonster.assignToNamespace('Monster.Types', ProxyObserver);\nexport {Monster, ProxyObserver}\n\n/**\n *\n * @returns {{defineProperty: (function(*=, *=, *=): *), setPrototypeOf: (function(*, *=): boolean), set: (function(*, *, *, *): boolean), get: ((function(*=, *=, *=): (undefined))|*), deleteProperty: ((function(*, *): (boolean))|*)}}\n * @private\n * @see {@link https://gitlab.schukai.com/-/snippets/49}\n */\nfunction getHandler() {\n\n    const proxy = this;\n\n    // https://262.ecma-international.org/9.0/#sec-proxy-object-internal-methods-and-internal-slots\n    const handler = {\n\n        // https://262.ecma-international.org/9.0/#sec-proxy-object-internal-methods-and-internal-slots-get-p-receiver\n        get: function (target, key, receiver) {\n\n            const value = Reflect.get(target, key, receiver);\n\n            if (typeof key === \"symbol\") {\n                return value;\n            }\n\n            if (isPrimitive(value)) {\n                return value;\n            }\n\n            // set value as proxy if object or array\n            if ((isArray(value) || isObject(value))) {\n                if (proxy.objectMap.has(value)) {\n                    return proxy.objectMap.get(value);\n                } else {\n                    let p = new Proxy(value, handler);\n                    proxy.objectMap.set(value, p);\n                    return p;\n                }\n\n            }\n\n            return value;\n\n        },\n\n        // https://262.ecma-international.org/9.0/#sec-proxy-object-internal-methods-and-internal-slots-set-p-v-receiver \n        set: function (target, key, value, receiver) {\n            const result = Reflect.set(target, key, value, receiver);\n            if (typeof property !== \"symbol\") {\n                proxy.observers.notify(proxy);\n            }\n\n            return result;\n        },\n\n        // https://262.ecma-international.org/9.0/#sec-proxy-object-internal-methods-and-internal-slots-delete-p\n        deleteProperty: function (target, key) {\n            if (key in target) {\n                delete target[key];\n\n                if (typeof key !== \"symbol\") {\n                    proxy.observers.notify(proxy);\n                }\n\n\n                return true;\n            }\n            return false;\n        },\n\n        // https://262.ecma-international.org/9.0/#sec-proxy-object-internal-methods-and-internal-slots-defineownproperty-p-desc\n        defineProperty: function (target, key, descriptor) {\n            let result = Reflect.defineProperty(target, key, descriptor);\n\n            if (typeof key !== \"symbol\") {\n                proxy.observers.notify(proxy);\n            }\n\n\n            return result;\n        },\n\n        // https://262.ecma-international.org/9.0/#sec-proxy-object-internal-methods-and-internal-slots-setprototypeof-v\n        setPrototypeOf: function (target, key) {\n            let result = Reflect.setPrototypeOf(object1, key);\n\n            if (typeof key !== \"symbol\") {\n                proxy.observers.notify(proxy);\n            }\n\n            return result;\n        }\n\n    };\n\n\n    return handler;\n}\n",
        "import {Monster, Base} from './base.js';\n\n/**\n * you can call the method via the monster namespace `new Monster.Types.Queue()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/queue.js';\n * console.log(new Monster.Types.Queue())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/queue.js';\n * console.log(new Queue())\n * </script>\n * ```\n *\n * @since 1.4.0\n * @copyright schukai GmbH\n * @memberOf Monster/Types\n */\nclass Queue extends Base { \n\n    /**\n     *\n     */\n    constructor() {\n        super();\n        this.data = [];\n    }\n\n\n    /**\n     * @return {boolean}\n     */\n    isEmpty() {\n        return this.data.length === 0;\n    }\n\n    /**\n     * Read the element at the front of the queue without removing it.\n     *\n     * @return {*}\n     */\n    peek() {\n        if (this.isEmpty()) {\n            return undefined;\n        }\n\n        return this.data[0];\n    }\n\n    /**\n     * Add a new element to the end of the queue.\n     *\n     * @param {*} value\n     * @returns {Queue}\n     */\n    add(value) {\n        this.data.push(value)\n        return this;\n    }\n\n    /**\n     * remove all entries\n     *\n     * @returns {Queue}\n     */\n    clear() {\n        this.data = [];\n        return this;\n    }\n\n    /**\n     * Remove the element at the front of the queue\n     * If the queue is empty, return undefined.\n     *\n     * @return {*}\n     */\n    poll() {\n        if (this.isEmpty()) {\n            return undefined;\n        }\n        return this.data.shift();\n    }\n\n\n}\n\nMonster.assignToNamespace('Monster.Types', Queue);\nexport {Monster, Queue}\n",
        "'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {Monster, ID} from \"./id.js\";\nimport {getGlobal} from \"./global.js\";\nimport {random} from \"../math/random.js\";\n\n/**\n * @private\n * @type {number}\n */\nlet internalCounter = 0;\n\n/**\n * you can call the method via the monster namespace `new Monster.Types.RandomID()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/randomid.js';\n * console.log(new Monster.Types.RandomID())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/randomid.js';\n * console.log(new RandomID())\n * </script>\n * ```\n *\n * @since 1.6.0\n * @copyright schukai GmbH\n * @memberOf Monster/Types\n */\nclass RandomID extends ID {\n\n    /**\n     * create new object\n     */\n    constructor() {\n        super();\n\n        internalCounter += 1;\n\n        this.id = getGlobal().btoa(random(1, 10000))\n            .replace(/=/g, '')\n            /** No numbers at the beginning of the ID, because of possible problems with DOM */\n            .replace(/^[0-9]+/, 'X') + internalCounter;\n    }\n\n}\n\nMonster.assignToNamespace('Monster.Types', RandomID);\nexport {Monster, RandomID}\n",
        "import {Monster, Base} from './base.js';\n\n/**\n * you can call the method via the monster namespace `new Monster.Types.Queue()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/stack.js';\n * console.log(new Monster.Types.Stack())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/stack.js';\n * console.log(new Stack())\n * </script>\n * ```\n *\n * @since 1.4.0\n * @copyright schukai GmbH\n * @memberOf Monster/Types\n */\nclass Stack extends Base {\n\n    /**\n     *\n     */\n    constructor() {\n        super();\n        this.data = [];\n    }\n\n\n    /**\n     * @return {boolean}\n     */\n    isEmpty() {\n        return this.data.length === 0;\n    }\n\n    /**\n     * looks at the object at the top of this stack without removing it from the stack.\n     *\n     * @return {*}\n     */\n    peek() {\n        if (this.isEmpty()) {\n            return undefined;\n        }\n\n        return this.data?.[this.data.length - 1];\n    }\n\n    /**\n     * pushes an item onto the top of this stack.\n     *\n     * @param {*} value\n     * @returns {Queue}\n     */\n    push(value) {\n        this.data.push(value)\n        return this;\n    }\n\n    /**\n     * remove all entries\n     *\n     * @returns {Queue}\n     */\n    clear() {\n        this.data = [];\n        return this;\n    }\n\n    /**\n     * removes the object at the top of this stack and returns\n     * that object as the value of this function. is the stack empty\n     * the return value is undefined.\n     *\n     * @return {*}\n     */\n    pop() {\n        if (this.isEmpty()) {\n            return undefined;\n        }\n        return this.data.pop();\n    }\n\n\n}\n\nMonster.assignToNamespace('Monster.Types', Stack);\nexport {Monster, Stack}\n",
        "'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {Monster} from '../namespace.js';\nimport {Base} from  './base.js';\nimport {isString, isIterable} from '../types/is.js';\nimport {validateString, validateFunction} from '../types/validate.js';\n\n/**\n * A tokenlist allows you to manage tokens (individual character strings such as css classes in an attribute string).\n *\n * The tokenlist offers various functions to manipulate values. For example, you can add, remove or replace a class in a CSS list.\n *\n * you can call the method via the monster namespace `new Monster.Types.TokenList()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/tokenlist.js';\n * console.log(new Monster.Types.TokenList(\"myclass row\"))\n * console.log(new Monster.Types.TokenList(\"myclass row\"))\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {TokenList} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/tokenlist.js';\n * console.log(new TokenList(\"myclass row\"))\n * console.log(new TokenList(\"myclass row\"))\n * </script>\n * ```\n *\n * This class implements the [iteration protocol](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols).\n *\n * ```\n * console.log(typeof new TokenList(\"myclass row\")[Symbol.iterator]); // \"function\"\n * ```\n *\n *\n * @since 1.2.0\n * @copyright schukai GmbH\n * @memberOf Monster/Types\n */\nclass TokenList extends Base {\n\n    /**\n     *\n     * @param {array|string|iteratable} init\n     */\n    constructor(init) {\n        super();\n        this.tokens = new Set();\n\n        if (typeof init !== \"undefined\") {\n            this.add(init);\n        }\n\n    }\n\n    /**\n     * Iterator protocol\n     *\n     * @returns {Symbol.iterator}\n     */\n    getIterator() {\n        return this[Symbol.iterator]();\n    }\n\n    /**\n     * Iterator\n     *\n     * @returns {{next: ((function(): ({value: *, done: boolean}))|*)}}\n     */\n    [Symbol.iterator]() {\n        // Use a new index for each iterator. This makes multiple\n        // iterations over the iterable safe for non-trivial cases,\n        // such as use of break or nested looping over the same iterable.\n        let index = 0;\n        let entries = this.entries()\n\n        return {\n            next: () => {\n                if (index < entries.length) {\n                    return {value: entries?.[index++], done: false}\n                } else {\n                    return {done: true}\n                }\n            }\n        }\n    }\n\n    /**\n     * Returns true if it contains token, otherwise false\n     *\n     * ```\n     * new TokenList(\"start middle end\").contains('start')); // ↦ true\n     * new TokenList(\"start middle end\").contains('end')); // ↦ true\n     * new TokenList(\"start middle end\").contains('xyz')); // ↦ false\n     * new TokenList(\"start middle end\").contains(['end','start','middle'])); // ↦ true\n     * new TokenList(\"start middle end\").contains(['end','start','xyz'])); // ↦ false\n     * ```\n     *\n     * @param {array|string|iteratable} value\n     * @returns {boolean}\n     */\n    contains(value) {\n        if (isString(value)) {\n            value = value.trim()\n            let counter = 0;\n            value.split(\" \").forEach(token => {\n                if (this.tokens.has(token.trim()) === false) return false;\n                counter++\n            })\n            return counter > 0 ? true : false;\n        }\n\n        if (isIterable(value)) {\n            let counter = 0;\n            for (let token of value) {\n                validateString(token);\n                if (this.tokens.has(token.trim()) === false) return false;\n                counter++\n            }\n            return counter > 0 ? true : false;\n        }\n\n        return false;\n    }\n\n    /**\n     * add tokens\n     *\n     * ```\n     * new TokenList().add(\"abc xyz\").toString(); // ↦ \"abc xyz\"\n     * new TokenList().add([\"abc\",\"xyz\"]).toString(); // ↦ \"abc xyz\"\n     * new TokenList().add(undefined); // ↦ add nothing\n     * ```\n     *\n     * @param {array|string|iteratable} value\n     * @returns {TokenList}\n     * @throws {TypeError} unsupported value\n     */\n    add(value) {\n        if (isString(value)) {\n            value.split(\" \").forEach(token => {\n                this.tokens.add(token.trim());\n            })\n        } else if (isIterable(value)) {\n            for (let token of value) {\n                validateString(token);\n                this.tokens.add(token.trim());\n            }\n        } else if (typeof value !== \"undefined\") {\n            throw new TypeError(\"unsupported value\");\n        }\n\n        return this;\n    }\n\n    /**\n     * remove all tokens\n     *\n     * @returns {TokenList}\n     */\n    clear() {\n        this.tokens.clear();\n        return this;\n    }\n\n    /**\n     * Removes token\n     *\n     * ```\n     * new TokenList(\"abc xyz\").remove(\"xyz\").toString(); // ↦ \"abc\"\n     * new TokenList(\"abc xyz\").remove([\"xyz\"]).toString(); // ↦ \"abc\"\n     * new TokenList(\"abc xyz\").remove(undefined); // ↦ remove nothing\n     * ```\n     *\n     * @param {array|string|iteratable} value\n     * @returns {TokenList}\n     * @throws {TypeError} unsupported value\n     */\n    remove(value) {\n        if (isString(value)) {\n            value.split(\" \").forEach(token => {\n                this.tokens.delete(token.trim());\n            })\n        } else if (isIterable(value)) {\n            for (let token of value) {\n                validateString(token);\n                this.tokens.delete(token.trim());\n            }\n        } else if (typeof value !== \"undefined\") {\n            throw new TypeError(\"unsupported value\");\n        }\n\n        return this;\n    }\n\n    /**\n     * this method replaces a token with a new token.\n     *\n     * if the passed token exists, it is replaced with newToken and TokenList is returned.\n     * if the token does not exist, newToken is not set and TokenList is returned.\n     *\n     * @param {string} token\n     * @param {string} newToken\n     * @returns {TokenList}\n     */\n    replace(token, newToken) {\n        validateString(token);\n        validateString(newToken);\n        if (!this.contains(token)) {\n            return this;\n        }\n\n        let a = Array.from(this.tokens)\n        let i = a.indexOf(token);\n        if (i === -1) return this;\n\n        a.splice(i, 1, newToken);\n        this.tokens = new Set();\n        this.add(a);\n\n        return this;\n\n\n    }\n\n    /**\n     * Removes token from string. If token doesn't exist it's added.\n     * \n     * ```\n     * new TokenList(\"abc def ghi\").toggle(\"def xyz\").toString(); // ↦ \"abc ghi xyz\"\n     * new TokenList(\"abc def ghi\").toggle([\"abc\",\"xyz\"]).toString(); // ↦ \"def ghi xyz\"\n     * new TokenList().toggle(undefined); // ↦ nothing\n     * ```\n     * \n     * @param {array|string|iteratable} value\n     * @returns {boolean}\n     * @throws {TypeError} unsupported value\n     */\n    toggle(value) {\n\n        if (isString(value)) {\n            value.split(\" \").forEach(token => {\n                toggleValue.call(this, token);\n            })\n        } else if (isIterable(value)) {\n            for (let token of value) {\n                toggleValue.call(this, token);\n            }\n        } else if (typeof value !== \"undefined\") {\n            throw new TypeError(\"unsupported value\");\n        }\n\n        return this;\n\n    }\n\n    /**\n     * returns an array with all tokens\n     *\n     * @returns {array}\n     */\n    entries() {\n        return Array.from(this.tokens)\n    }\n\n    /**\n     * executes the provided function with each value of the set\n     *\n     * @param {function} callback\n     * @returns {TokenList}\n     */\n    forEach(callback) {\n        validateFunction(callback);\n        this.tokens.forEach(callback);\n        return this;\n    }\n\n    /**\n     * returns the individual tokens separated by a blank character\n     *\n     * @returns {string}\n     */\n    toString() {\n        return this.entries().join(' ');\n    }\n\n}\n\n/**\n * @private\n * @param token\n * @returns {toggleValue}\n * @throws {Error} must be called with TokenList.call\n */\nfunction toggleValue(token) {\n    if (!(this instanceof TokenList)) throw Error(\"must be called with TokenList.call\")\n    validateString(token);\n    token = token.trim();\n    if (this.contains(token)) {\n        this.remove(token);\n        return this;\n    }\n    this.add(token);\n    return this;\n}\n\nMonster.assignToNamespace('Monster.Types', TokenList);\nexport {Monster, TokenList}\n",
        "import {Monster, Queue} from \"./queue.js\";\nimport {validateObject} from \"./validate.js\";\n\n/**\n * you can call the method via the monster namespace `new Monster.Types.Queue()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/uniquequeue.js';\n * console.log(new Monster.Types.UniqueQueue())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/uniquequeue.js';\n * console.log(new UniqueQueue())\n * </script>\n * ```\n *\n * @since 1.4.0\n * @copyright schukai GmbH\n * @memberOf Monster/Types\n */\nclass UniqueQueue extends Queue {\n\n    /**\n     *\n     */\n    constructor() {\n        super();\n        this.unique = new WeakSet();\n    }\n\n    /**\n     * Add a new element to the end of the queue.\n     *\n     * @param {object} value\n     * @returns {Queue}\n     * @throws {TypeError} value is not a object\n     */\n    add(value) {\n        \n        validateObject(value);\n        \n        if (!this.unique.has(value)) {\n            this.unique.add(value);\n            super.add(value);\n        }\n        \n        return this;\n    }\n\n    /**\n     * remove all entries\n     *\n     * @returns {Queue}\n     */\n    clear() {\n        super.clear();\n        this.unique = new WeakSet;\n        return this;\n    }\n\n    /**\n     * Remove the element at the front of the queue\n     * If the queue is empty, return undefined.\n     *\n     * @return {object}\n     */\n    poll() {\n\n        if (this.isEmpty()) {\n            return undefined;\n        }\n        let value = this.data.shift();\n        this.unique.delete(value);\n        return value;\n    }\n\n\n}\n\nMonster.assignToNamespace('Monster.Types', UniqueQueue);\nexport {Monster, UniqueQueue}\n",
        "'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {Monster} from '../namespace.js';\nimport {\n    isPrimitive,\n    isBoolean,\n    isString,\n    isObject,\n    isArray,\n    isFunction,\n    isIterable,\n    isInstance,\n    isInteger\n} from './is.js';\n\n/**\n * this method checks if the type matches the primitive type. this function is identical to isPrimitive() except that a TypeError is thrown.\n *\n * you can call the method via the monster namespace `Monster.Types.validatePrimitive()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/validate.js';\n * console.log(Monster.Types.validateIterable('2')) // ↦ TypeError\n * console.log(Monster.Types.validateIterable([])) // ↦ undefined\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {validateIterable} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/validate.js';\n * console.log(validateIterable('2'))  // ↦ TypeError\n * console.log(validateIterable([]))  // ↦ undefined\n * </script>\n * ```\n *\n * @param {*} value\n * @return {undefined}\n * @since 1.2.0\n * @copyright schukai GmbH\n * @memberOf Monster/Types\n * @throws {TypeError} value is not a primitive\n * @see {@link isPrimitive}\n * @see {@link Monster/Types/isPrimitive}\n * @see {@link Monster/Types#isPrimitive}\n */\nfunction validateIterable(value) {\n    if (!isIterable(value)) {\n        throw new TypeError('value is not iterable')\n    }\n}\n\n/**\n * this method checks if the type matches the primitive type. this function is identical to isPrimitive() except that a TypeError is thrown.\n *\n * you can call the method via the monster namespace `Monster.Types.validatePrimitive()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/validate.js';\n * console.log(Monster.Types.validatePrimitive('2')) // ↦ undefined\n * console.log(Monster.Types.validatePrimitive([])) // ↦ TypeError\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {validatePrimitive} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/validate.js';\n * console.log(validatePrimitive('2'))  // ↦ undefined\n * console.log(validatePrimitive([]))  // ↦ TypeError\n * </script>\n * ```\n *\n * @param {*} value\n * @return {undefined}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster/Types\n * @throws {TypeError} value is not a primitive\n * @see {@link isPrimitive}\n * @see {@link Monster/Types/isPrimitive}\n * @see {@link Monster/Types#isPrimitive}\n */\nfunction validatePrimitive(value) {\n    if (!isPrimitive(value)) {\n        throw new TypeError('value is not a primitive')\n    }\n}\n\n/**\n * this method checks if the type matches the boolean type. this function is identical to isBoolean() except that a TypeError is thrown.\n *\n * you can call the method via the monster namespace `Monster.Types.validateBoolean()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/validate.js';\n * console.log(Monster.Types.validateBoolean(true)) // ↦ undefined\n * console.log(Monster.Types.validateBoolean('2')) // ↦ TypeError\n * console.log(Monster.Types.validateBoolean([])) // ↦ TypeError\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {validateBoolean} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/validate.js';\n * console.log(validateBoolean(false))  // ↦ undefined\n * console.log(validateBoolean('2'))  // ↦ TypeError\n * console.log(validateBoolean([]))  // ↦ TypeError\n * </script>\n * ```\n *\n * @param {*} value\n * @return {undefined}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster/Types\n\n * @throws {TypeError}  value is not primitive\n */\nfunction validateBoolean(value) {\n    if (!isBoolean(value)) {\n        throw new TypeError('value is not a boolean')\n    }\n}\n\n/**\n * this method checks if the type matches the string type. this function is identical to isString() except that a TypeError is thrown.\n *\n * you can call the method via the monster namespace `Monster.Types.validateString()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/validate.js';\n * console.log(Monster.Types.validateString('2')) // ↦ undefined\n * console.log(Monster.Types.validateString([])) // ↦ TypeError\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {validateString} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/validate.js';\n * console.log(validateString('2'))  // ↦ undefined\n * console.log(validateString([]))  // ↦ TypeError\n * </script>\n * ```\n *\n * @param {*} value\n * @return {undefined}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster/Types\n * @throws {TypeError} value is not a string\n */\nfunction validateString(value) {\n    if (!isString(value)) {\n        throw new TypeError('value is not a string')\n    }\n}\n\n\n/**\n * this method checks if the type matches the object type. this function is identical to isObject() except that a TypeError is thrown.\n *\n * you can call the method via the monster namespace `Monster.Types.validateObject()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/validate.js';\n * console.log(Monster.Types.validateObject({})) // ↦ undefined\n * console.log(Monster.Types.validateObject('2')) // ↦ TypeError\n * console.log(Monster.Types.validateObject([])) // ↦ TypeError\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {validateObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/validate.js';\n * console.log(validateObject({}))  // ↦ undefined\n * console.log(validateObject('2'))  // ↦ TypeError\n * console.log(validateObject([]))  // ↦ TypeError\n * </script>\n * ```\n *\n * @param {*} value\n * @return {undefined}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster/Types\n * @throws {TypeError} value is not a object\n */\nfunction validateObject(value) {\n    if (!isObject(value)) {\n        throw new TypeError('value is not a object')\n    }\n}\n\n/**\n * this method checks if the type matches the object instance.\n *\n * you can call the method via the monster namespace `Monster.Types.validateInstance()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/validate.js';\n * console.log(Monster.Types.validateInstance({}, Object)) // ↦ undefined\n * console.log(Monster.Types.validateInstance('2', Object)) // ↦ TypeError\n * console.log(Monster.Types.validateInstance([], Object)) // ↦ TypeError\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {validateInstance} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/validate.js';\n * console.log(validateInstance({}, Object)) // ↦ undefined\n * console.log(validateInstance('2', Object)) // ↦ TypeError\n * console.log(validateInstance([], Object)) // ↦ TypeError\n * </script>\n * ```\n *\n * @param {*} value\n * @return {undefined}\n * @since 1.5.0\n * @copyright schukai GmbH\n * @memberOf Monster/Types\n * @throws {TypeError} value is not an instance of\n */\nfunction validateInstance(value, instance) {\n    if (!isInstance(value, instance)) {\n        let n = \"\";\n        if (isObject(instance) || isFunction(instance)) {\n            n = instance?.['name']\n        }\n\n        if (n) {\n            n = \" \" + n;\n        }\n\n        throw new TypeError('value is not an instance of' + n)\n    }\n}\n\n/**\n * this method checks if the type matches the array type. this function is identical to isArray() except that a TypeError is thrown.\n *\n * you can call the method via the monster namespace `Monster.Types.validateArray()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/validate.js';\n * console.log(Monster.Types.validateArray('2')) // ↦ TypeError\n * console.log(Monster.Types.validateArray([])) // ↦ undefined\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {validateArray} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/validate.js';\n * console.log(validateArray('2'))  // ↦ TypeError\n * console.log(validateArray([]))  // ↦ undefined\n * </script>\n * ```\n *\n * @param {*} value\n * @return {undefined}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster/Types\n * @throws {TypeError} value is not an array\n */\nfunction validateArray(value) {\n    if (!isArray(value)) {\n        throw new TypeError('value is not an array')\n    }\n}\n\n/**\n * this method checks if the type matches the function type. this function is identical to isFunction() except that a TypeError is thrown.\n *\n * you can call the method via the monster namespace `Monster.Types.validateFunction()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/validate.js';\n * console.log(Monster.Types.validateFunction(()=>{})) // ↦ undefined\n * console.log(Monster.Types.validateFunction('2')) // ↦ TypeError\n * console.log(Monster.Types.validateFunction([])) // ↦ TypeError\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {validateFunction} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/validate.js';\n * console.log(validateFunction(()=>{})) // ↦ undefined\n * console.log(validateFunction('2'))  // ↦ TypeError\n * console.log(validateFunction([]))  // ↦ TypeError\n * </script>\n * ```\n *\n * @param {*} value\n * @return {undefined}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @memberOf Monster/Types\n * @throws {TypeError} value is not a function\n */\nfunction validateFunction(value) {\n    if (!isFunction(value)) {\n        throw new TypeError('value is not a function')\n    }\n}\n\n/**\n * this method checks if the type is an integer. this function is identical to isInteger() except that a TypeError is thrown.\n *\n * you can call the method via the monster namespace `Monster.Types.validateInteger()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/validate.js';\n * console.log(Monster.Types.validateInteger(true)) // ↦ TypeError\n * console.log(Monster.Types.validateInteger('2')) // ↦ TypeError\n * console.log(Monster.Types.validateInteger(2)) // ↦ undefined\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {validateFunction} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/validate.js';\n * console.log(validateInteger(true)) // ↦ TypeError\n * console.log(validateInteger('2'))  // ↦ TypeError\n * console.log(validateInteger(2))  // ↦ undefined\n * </script>\n * ```\n *\n * @param {*} value\n * @return {undefined}\n * @since 1.4.0\n * @copyright schukai GmbH\n * @memberOf Monster/Types\n * @throws {TypeError} value is not an integer\n */\nfunction validateInteger(value) {\n    if (!isInteger(value)) {\n        throw new TypeError('value is not an integer')\n    }\n}\n\nMonster.assignToNamespace('Monster.Types', validatePrimitive, validateBoolean, validateString, validateObject, validateArray, validateFunction, validateIterable, validateInteger);\nexport {\n    Monster,\n    validatePrimitive,\n    validateBoolean,\n    validateString,\n    validateObject,\n    validateInstance,\n    validateArray,\n    validateFunction,\n    validateIterable,\n    validateInteger\n}\n",
        "'use strict';\n\nimport {Monster} from '../namespace.js';\nimport {Base} from  './base.js';\n\n/**\n * the version object contains a sematic version number\n *\n * you can create the object via the monster namespace `new Monster.Types.Version()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/version.js';\n * console.log(new Monster.Types.Version('1.2.3')) // ↦ 1.2.3\n * console.log(new Monster.Types.Version('1')) // ↦ 1.0.0\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this class individually.\n *\n * ```\n * <script type=\"module\">\n * import {Version} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/version.js';\n * console.log(new Version('1.2.3')) // ↦ 1.2.3\n * console.log(new Version('1')) // ↦ 1.0.0\n * </script>\n * ```\n *\n * some examples\n *\n * ```\n * new Monster.Types.Version('1.0.0') // 1.0.0\n * new Monster.Types.Version(1)  // 1.0.0\n * new Monster.Types.Version(1, 0, 0) // 1.0.0\n * new Monster.Types.Version('1.2.3', 4, 5) // 1.4.5\n * ```\n *\n * @since 1.0.0\n * @author schukai GmbH\n * @copyright schukai GmbH\n * @memberOf Monster/Types\n */\nclass Version extends Base {\n\n    /**\n     *\n     * @param major\n     * @param minor\n     * @param patch\n     * @throws major is not a number\n     * @throws minor is not a number\n     * @throws patch is not a number\n     */\n    constructor(major, minor, patch) {\n        super();\n\n        if (typeof major === 'string' && minor === undefined && patch === undefined) {\n\n            let parts = major.toString().split('.');\n            major = parseInt(parts[0] || 0);\n            minor = parseInt(parts[1] || 0);\n            patch = parseInt(parts[2] || 0);\n        }\n\n        if (major === undefined) {\n            throw  new Error(\"major version is undefined\");\n        }\n\n        if (minor === undefined) {\n            minor = 0;\n        }\n\n        if (patch === undefined) {\n            patch = 0;\n        }\n\n        this.major = parseInt(major);\n        this.minor = parseInt(minor);\n        this.patch = parseInt(patch);\n\n        if (isNaN(this.major)) {\n            throw  new Error(\"major is not a number\");\n        }\n\n        if (isNaN(this.minor)) {\n            throw  new Error(\"minor is not a number\");\n        }\n\n        if (isNaN(this.patch)) {\n            throw  new Error(\"patch is not a number\");\n        }\n\n    }\n\n    /**\n     *\n     * @returns {string}\n     */\n    toString() {\n        return this.major + '.' + this.minor + '.' + this.patch;\n    }\n\n    /**\n     * returns 0 if equal, -1 if the object version is less and 1 if greater\n     * then the compared version\n     *\n     * @param {string|Version} version Version to compare\n     * @returns {number}\n     */\n    compareTo(version) {\n\n        if (version instanceof Version) {\n            version = version.toString();\n        }\n\n        if (typeof version !== 'string') {\n            throw  new Error(\"type exception\");\n        }\n\n        if (version === this.toString()) {\n            return 0;\n        }\n\n        let a = [this.major, this.minor, this.patch];\n        let b = version.split('.');\n        let len = Math.max(a.length, b.length);\n\n        for (let i = 0; i < len; i += 1) {\n            if ((a[i] && !b[i] && parseInt(a[i]) > 0) || (parseInt(a[i]) > parseInt(b[i]))) {\n                return 1;\n            } else if ((b[i] && !a[i] && parseInt(b[i]) > 0) || (parseInt(a[i]) < parseInt(b[i]))) {\n                return -1;\n            }\n        }\n\n        return 0;\n    };\n\n}\n\nMonster.assignToNamespace('Monster.Types', Version);\n\n\nlet monsterVersion;\n\n/**\n * Version of monster\n *\n * you can call the method via the monster namespace `Monster.getVersion()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/version.js';\n * console.log(Monster.getVersion())\n * console.log(Monster.getVersion())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {getVersion} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/version.js';\n * console.log(getVersion())\n * console.log(getVersion())\n * </script>\n * ```\n *\n * @returns {Monster.Types.Version}\n * @since 1.0.0\n * @copyright schukai GmbH\n * @author schukai GmbH\n * @memberOf Monster\n */\nfunction getVersion() {\n    if (monsterVersion instanceof Version) {\n        return monsterVersion;\n    }\n    /**#@+ dont touch, replaced by make with package.json version */\n    monsterVersion = new Version('1.7.0')\n    /**#@-*/\n    return monsterVersion;\n\n}\n\nMonster.assignToNamespace('Monster', getVersion);\nexport {Monster, Version, getVersion}\n",
        "'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {Monster} from '../namespace.js';\nimport {isObject, isFunction, isPrimitive, isArray} from '../types/is.js';\nimport {getGlobal} from '../types/global.js';\n\n\n/**\n * with this function, objects can be cloned.\n * the entire object tree is run through.\n *\n * Proxy, Element, HTMLDocument and DocumentFragment instances are not cloned.\n * Global objects such as windows are also not cloned,\n *\n * If an object has a method `getClone()`, this method is used to create the clone.\n *\n * you can call the method via the monster namespace `Monster.Util.clone()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/util/clone.js';\n * console.log(Monster.Util.clone({}))\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {clone} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/util/clone.js';\n * console.log(clone({}))\n * </script>\n * ```\n *\n *\n * @param {*} obj object to be cloned\n * @returns {*}\n *\n * @since 1.0.0\n * @memberOf Monster/Util\n * @copyright schukai GmbH\n * @throws {Error} unable to clone obj! its type isn't supported.\n */\nfunction clone(obj) {\n\n    // typeof null results in 'object'.  https://2ality.com/2013/10/typeof-null.html\n    if (null === obj) {\n        return obj;\n    }\n\n    // Handle the two simple types, null and undefined\n    if (isPrimitive(obj)) {\n        return obj;\n    }\n    \n    // Handle the two simple types, null and undefined\n    if (isFunction(obj)) {\n        return obj;\n    }\n\n    // Handle Array\n    if (isArray(obj)) {\n        let copy = [];\n        for (var i = 0, len = obj.length; i < len; i++) {\n            copy[i] = clone(obj[i]);\n        }\n\n        return copy;\n    }\n\n    if (isObject(obj)) {\n\n\n        // Handle Date\n        if (obj instanceof Date) {\n            let copy = new Date();\n            copy.setTime(obj.getTime());\n            return copy;\n        }\n\n        /** Do not clone DOM nodes */\n        if (typeof Element !== 'undefined' && obj instanceof Element) return obj;\n        if (typeof HTMLDocument !== 'undefined' && obj instanceof HTMLDocument) return obj;\n        if (typeof DocumentFragment !== 'undefined' && obj instanceof DocumentFragment) return obj;\n\n        /** Do not clone global objects */\n        if (obj === getGlobal()) return obj;\n        if (typeof globalContext !== 'undefined' && obj === globalContext) return obj;\n        if (typeof window !== 'undefined' && obj === window) return obj;\n        if (typeof document !== 'undefined' && obj === document) return obj;\n        if (typeof navigator !== 'undefined' && obj === navigator) return obj;\n        if (typeof JSON !== 'undefined' && obj === JSON) return obj;\n\n        // Handle Proxy-Object\n        try {\n            // try/catch because possible: TypeError: Function has non-object prototype 'undefined' in instanceof check\n            if (obj instanceof Proxy) {\n                return obj;\n            }\n        } catch (e) {\n        }\n\n        return cloneObject(obj)\n\n    }\n\n    throw new Error(\"unable to clone obj! its type isn't supported.\");\n}\n\n/**\n *\n * @param {object} obj\n * @returns {object}\n * @private\n */\nfunction cloneObject(obj) {\n    var copy;\n\n    /** Object has clone method */\n    if (typeof obj.hasOwnProperty('getClone') && obj.getClone === 'function') {\n        return obj.getClone();\n    }\n\n    copy = {};\n    if (typeof obj.constructor === 'function' &&\n        typeof obj.constructor.call === 'function') {\n        copy = new obj.constructor();\n    }\n\n    for (let key in obj) {\n\n        if (!obj.hasOwnProperty(key)) {\n            continue;\n        }\n\n        if (Monster.Types.isPrimitive(obj[key])) {\n            copy[key] = obj[key];\n            continue;\n        }\n\n        copy[key] = clone(obj[key]);\n    }\n\n    return copy;\n}\n\nMonster.assignToNamespace('Monster.Util', clone);\nexport {Monster, clone}\n",
        "'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {Monster, Base} from '../types/base.js';\nimport {isFunction} from '../types/is.js';\n\n/**\n * the comparator allows a comparison function to be abstracted.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/id.js';\n * console.log(new Monster.Util.Comparator())\n * console.log(new Monster.Util.Comparator())\n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {Comparator} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/types/id.js';\n * console.log(new Util())\n * console.log(new Util())\n * </script>\n * ```\n *\n * the following are some examples of the application of the class.\n *\n * ```\n * new Comparator().lessThanOrEqual(2, 5) // ↦ true\n * new Comparator().greaterThan(4, 2) // ↦ true\n * new Comparator().equal(4, 4) // ↦ true\n * new Comparator().equal(4, 5) // ↦ false\n * ```\n *\n * you can also pass your own comparison function, and thus define the comparison function.\n *\n * ```\n * new Comparator(function (a, b) {\n *      if (a.v === b.v) return 0;\n *         return a.v < b.v ? -1 : 1;\n *      }).equal({v: 2}, {v: 2});  // ↦ true\n * ```\n *\n * @since 1.3.0\n * @memberOf Monster/Util\n */\nclass Comparator extends Base {\n\n    /**\n     * create new comparator\n     *\n     * @param {function} callback\n     * @throw {TypeError} \"unsupported type\"\n     * @throw {TypeError} \"impractical comparison\"\n     */\n    constructor(callback) {\n        super();\n\n        if (isFunction(callback)) {\n            this.compare = callback\n        } else if (callback !== undefined) {\n            throw new TypeError(\"unsupported type\")\n        } else {\n            // default compare function\n            this.compare = function (a, b) {\n\n                if (typeof a !== typeof b) {\n                    throw new TypeError(\"impractical comparison\")\n                }\n\n                if (a === b) {\n                    return 0;\n                }\n                return a < b ? -1 : 1;\n            };\n        }\n\n    }\n\n    /**\n     * changes the order of the operators\n     *\n     * @return {Comparator}\n     */\n    reverse() {\n        const original = this.compare;\n        this.compare = (a, b) => original(b, a);\n        return this;\n    }\n\n    /**\n     * Checks if two variables are equal.\n     *\n     * @param {*} a\n     * @param {*} b\n     *\n     * @return {boolean}\n     */\n    equal(a, b) {\n        return this.compare(a, b) === 0;\n    }\n\n\n    /**\n     * Checks if variable `a` is greater than `b`\n     *\n     * @param {*} a\n     * @param {*} b\n     *\n     * @return {boolean}\n     */\n    greaterThan(a, b) {\n        return this.compare(a, b) > 0;\n    }\n\n    /**\n     * Checks if variable `a` is greater than or equal to `b`\n     *\n     * @param {*} a\n     * @param {*} b\n     *\n     * @return {boolean}\n     */\n    greaterThanOrEqual(a, b) {\n        return this.greaterThan(a, b) || this.equal(a, b);\n    }\n\n    /**\n     * Checks if variable `a` is less than or equal to `b`\n     *\n     * @param {*} a\n     * @param {*} b\n     *\n     * @return {boolean}\n     */\n    lessThanOrEqual(a, b) {\n        return this.lessThan(a, b) || this.equal(a, b);\n    }\n\n    /**\n     * Checks if variable a is less than b\n     *\n     * @param {*} a\n     * @param {*} b\n     *\n     * @return {boolean}\n     */\n    lessThan(a, b) {\n        return this.compare(a, b) < 0;\n    }\n\n\n}\n\nMonster.assignToNamespace('Monster.Util', Comparator);\nexport {Monster, Comparator}\n",
        "'use strict';\n\n/**\n * @author schukai GmbH\n */\n\nimport {Monster} from '../namespace.js';\nimport {validateObject} from '../types/validate.js';\n\n/**\n * deep freeze a object\n *\n * you can call the method via the monster namespace `Monster.Util.deepFreeze()`.\n *\n * ```\n * <script type=\"module\">\n * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/util/freeze.js';\n * console.log(Monster.Util.deepFreeze({})) \n * </script>\n * ```\n *\n * Alternatively, you can also integrate this function individually.\n *\n * ```\n * <script type=\"module\">\n * import {deepFreeze} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.7.0/dist/modules/util/freeze.js';\n * console.log(deepFreeze({}))  \n * </script>\n * ```\n *\n * @param {object} obj object to be freeze\n * @since 1.0.0\n * @returns {object}\n * @memberOf Monster/Util\n * @copyright schukai GmbH\n * @throws {TypeError} value is not a object\n */\nfunction deepFreeze(object) {\n    \n    validateObject(object)\n\n    // Retrieve the defined property names of the object\n    var propNames = Object.getOwnPropertyNames(object);\n\n    // Freeze properties before freezing yourself\n    for (let name of propNames) {\n        let value = object[name];\n\n        object[name] = value && typeof value === \"object\" ?\n            deepFreeze(value) : value;\n    }\n\n    return Object.freeze(object);\n}\n\nMonster.assignToNamespace('Monster.Util', deepFreeze);\nexport {Monster, deepFreeze}\n"
      ]
    }