@famibee/skynovel 2.0.2 → 2.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/dist/Button.js +36 -34
  2. package/dist/Button.js.map +1 -1
  3. package/dist/CallStack.js +11 -6
  4. package/dist/CallStack.js.map +1 -1
  5. package/dist/CmnInterface.js +13 -11
  6. package/dist/CmnInterface.js.map +1 -1
  7. package/dist/CmnLib.js +58 -56
  8. package/dist/CmnLib.js.map +1 -1
  9. package/dist/Config.js +9 -7
  10. package/dist/Config.js.map +1 -1
  11. package/dist/ConfigBase.js +52 -49
  12. package/dist/ConfigBase.js.map +1 -1
  13. package/dist/DebugMng.js +9 -6
  14. package/dist/DebugMng.js.map +1 -1
  15. package/dist/EventListenerCtn.js +6 -4
  16. package/dist/EventListenerCtn.js.map +1 -1
  17. package/dist/EventMng.js +522 -417
  18. package/dist/EventMng.js.map +1 -1
  19. package/dist/Grammar.js +22 -20
  20. package/dist/Grammar.js.map +1 -1
  21. package/dist/GrpLayer.js +58 -57
  22. package/dist/GrpLayer.js.map +1 -1
  23. package/dist/Layer.js +66 -64
  24. package/dist/Layer.js.map +1 -1
  25. package/dist/LayerMng.js +461 -441
  26. package/dist/LayerMng.js.map +1 -1
  27. package/dist/Main.js +69 -67
  28. package/dist/Main.js.map +1 -1
  29. package/dist/PropParser.js +23 -19
  30. package/dist/PropParser.js.map +1 -1
  31. package/dist/Reading.js +422 -418
  32. package/dist/Reading.js.map +1 -1
  33. package/dist/RubySpliter.js +4 -2
  34. package/dist/RubySpliter.js.map +1 -1
  35. package/dist/ScriptIterator.js +374 -370
  36. package/dist/ScriptIterator.js.map +1 -1
  37. package/dist/SndBuf.js +643 -622
  38. package/dist/SndBuf.js.map +1 -1
  39. package/dist/SoundMng.js +59 -60
  40. package/dist/SoundMng.js.map +1 -1
  41. package/dist/SpritesMng.js +135 -129
  42. package/dist/SpritesMng.js.map +1 -1
  43. package/dist/SysBase.js +1019 -955
  44. package/dist/SysBase.js.map +1 -1
  45. package/dist/TxtLayer.js +558 -551
  46. package/dist/TxtLayer.js.map +1 -1
  47. package/dist/Variable.js +47 -45
  48. package/dist/Variable.js.map +1 -1
  49. package/dist/chunk.js +11 -9
  50. package/dist/gamepad.js +396 -660
  51. package/dist/gamepad.js.map +1 -1
  52. package/dist/pixi.js +3044 -3648
  53. package/dist/pixi.js.map +1 -1
  54. package/dist/platform.js +6 -4
  55. package/dist/platform.js.map +1 -1
  56. package/dist/rolldown-runtime.js +20 -0
  57. package/dist/web.js +106 -590
  58. package/dist/web.js.map +1 -1
  59. package/dist_app/Button.js +36 -34
  60. package/dist_app/Button.js.map +1 -1
  61. package/dist_app/CallStack.js +11 -6
  62. package/dist_app/CallStack.js.map +1 -1
  63. package/dist_app/CmnInterface.js +13 -11
  64. package/dist_app/CmnInterface.js.map +1 -1
  65. package/dist_app/CmnLib.js +58 -56
  66. package/dist_app/CmnLib.js.map +1 -1
  67. package/dist_app/Config.js +9 -7
  68. package/dist_app/Config.js.map +1 -1
  69. package/dist_app/ConfigBase.js +52 -49
  70. package/dist_app/ConfigBase.js.map +1 -1
  71. package/dist_app/DebugMng.js +9 -6
  72. package/dist_app/DebugMng.js.map +1 -1
  73. package/dist_app/EventListenerCtn.js +6 -4
  74. package/dist_app/EventListenerCtn.js.map +1 -1
  75. package/dist_app/EventMng.js +522 -417
  76. package/dist_app/EventMng.js.map +1 -1
  77. package/dist_app/Grammar.js +22 -20
  78. package/dist_app/Grammar.js.map +1 -1
  79. package/dist_app/GrpLayer.js +58 -57
  80. package/dist_app/GrpLayer.js.map +1 -1
  81. package/dist_app/Layer.js +66 -64
  82. package/dist_app/Layer.js.map +1 -1
  83. package/dist_app/LayerMng.js +461 -441
  84. package/dist_app/LayerMng.js.map +1 -1
  85. package/dist_app/Main.js +69 -67
  86. package/dist_app/Main.js.map +1 -1
  87. package/dist_app/PropParser.js +23 -19
  88. package/dist_app/PropParser.js.map +1 -1
  89. package/dist_app/Reading.js +422 -418
  90. package/dist_app/Reading.js.map +1 -1
  91. package/dist_app/RubySpliter.js +4 -2
  92. package/dist_app/RubySpliter.js.map +1 -1
  93. package/dist_app/ScriptIterator.js +374 -370
  94. package/dist_app/ScriptIterator.js.map +1 -1
  95. package/dist_app/SndBuf.js +643 -622
  96. package/dist_app/SndBuf.js.map +1 -1
  97. package/dist_app/SoundMng.js +59 -60
  98. package/dist_app/SoundMng.js.map +1 -1
  99. package/dist_app/SpritesMng.js +135 -129
  100. package/dist_app/SpritesMng.js.map +1 -1
  101. package/dist_app/SysBase.js +1019 -955
  102. package/dist_app/SysBase.js.map +1 -1
  103. package/dist_app/TxtLayer.js +558 -551
  104. package/dist_app/TxtLayer.js.map +1 -1
  105. package/dist_app/Variable.js +47 -45
  106. package/dist_app/Variable.js.map +1 -1
  107. package/dist_app/app.js +62 -63
  108. package/dist_app/app.js.map +1 -1
  109. package/dist_app/appMain.js +1 -21
  110. package/dist_app/appMain.js.map +1 -1
  111. package/dist_app/chunk.js +11 -9
  112. package/dist_app/gamepad.js +396 -660
  113. package/dist_app/gamepad.js.map +1 -1
  114. package/dist_app/pixi.js +2028 -1990
  115. package/dist_app/pixi.js.map +1 -1
  116. package/dist_app/platform.js +6 -4
  117. package/dist_app/platform.js.map +1 -1
  118. package/dist_app/preload.js +1 -1
  119. package/dist_app/preload.js.map +1 -1
  120. package/dist_app/rolldown-runtime.js +20 -0
  121. package/package.json +20 -47
@@ -1 +1 @@
1
- {"version":3,"file":"RubySpliter.js","names":["#sesame","#putCh","#REG_RUBY","#REGTXT_RUBY_BASE","a: string[]"],"sources":["../src/sn/RubySpliter.ts"],"sourcesContent":["/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2018-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport type {TArg} from './Grammar';\nimport type {T_PutCh} from './CmnInterface';\n\nexport type IAutoPage = (idx: number, str: string) => void;\n\n\nexport class RubySpliter {\n\tstatic\t#sesame\t\t= 'ヽ';\n\tstatic\tsetting(hArg: TArg) {if (hArg.sesame) RubySpliter.#sesame = hArg.sesame}\n\tstatic\tgetSesame() {return RubySpliter.#sesame}\n\n\tstatic\tdestroy() {RubySpliter.#sesame = 'ヽ'}\n\n\t#putCh\t: T_PutCh\t= ()=> { /* empty */ };\n\tinit(putCh: T_PutCh) {this.#putCh = putCh}\n\n/*\n\t\t★Unicodeで「漢字」の正規表現 – ものかの http://tama-san.com/kanji-regex/\n\t\t2E80..2FDF\tCJK部首補助+康熙部首\n\t\t3005\t\t々(漢字の踊り字)\n\t\t3007\t\t〇(漢数字のゼロ)\n\t\t303B\t\t〻(漢字の踊り字)\n\t\t3400..4DBF\t\tCJK統合漢字拡張A\n\t\t4E00..9FFF\t\tCJK統合漢字\n\t\tF900..FAFF\t\tCJK互換漢字\n\t\t20000..2FFFF\tCJK統合漢字拡張B〜F+CJK互換漢字追加+念のためU+2FFFFまで\n\n\t\t[\\x{2E80}-\\x{2FDF}々〇〻\\x{3400}-\\x{4DBF}\\x{4E00}-\\x{9FFF}\\x{F900}-\\x{FAFF}\\x{20000}-\\x{2FFFF}]\n\t\t[\\u2E80-\\u2FDF々〇〻\\u3400-\\u4DBF\\u4E00-\\u9FFF\\uF900-\\uFAFF\\u20000-\\u2FFFF]\n\t\t[⺀-⿟々〇〻㐀-䶿一-鿿豈-﫿\\u20000-\\u2FFFF]\t\t// 含まれない文字がある\n\t\t[⺀-⿟々〇〻㐀-鿿豈-﫿\\u20000-\\u2FFFF]\t\t\t// ヽ--30FD が変に引っかかる。多分\\u2000-\\u2FFF解釈\n\t\t\\\\u{20000}-\\\\u{2FFFF}\t// 五桁だとエラー\n\n\t\t【2022/10/03】ruby正規表現のUnicode プロパティ(とPOSIX文字クラス) - Qiita https://qiita.com/Takayuki_Nakano/items/8d38beaddb84b488d683\n\t\t\t> このHiraganaプロパティ、長音記号は含まれていません。\n\t\t\t> \\p{Han}…簡体字や繁体字、韓国語の漢字…ベトナム語の漢字にもマッチ\n\n\t\t・Unicode文字一覧表 - instant tools https://tools.m-bsys.com/ex/unicode_table.php\n*/\n\tstatic\t#REG_RUBY\t: RegExp;\n\tstatic\tsetEscape(ce: string) {\n\t\t// 830 match 11293 step(1.7ms) PCRE2 https://regex101.com/r/BBrQtC/1\n\t\t// (new RegExp(\"~\")) の場合は、バックスラッシュは2つ必要\n\t\tRubySpliter.#REG_RUBY = new RegExp(\n\t\t\t(ce ?`(?<ce>\\\\${ce}\\\\S)|` :'') +\n\t\t\tRubySpliter.#REGTXT_RUBY_BASE, 'gs'\n\t\t);\n\t}\n\tstatic\treadonly\t#REGTXT_RUBY_BASE =\n\t\t'|(?<str>[^《\\\\n]+)《(?<ruby>[^》\\\\n]+)》'+\n\t\t'|(?:(?<kan>[⺀-⿟々〇〻㐀-鿿豈-﫿]+[ぁ-ヿ]*|[^ |《》\\\\n])'+\n\t\t'《(?<kan_ruby>[^》\\\\n]+)》)'+\n\t\t'|(?<txt>'+\n\t\t'[\\\\uD800-\\\\uDBFF][\\\\uDC00-\\\\uDFFF]'+\t// 上位 + 下位サロゲート\n\t\t'|[^|《》]+?'+\t\t// 不要だが細切れにしないほうが後々効率で有利\n\t\t'|.)';\n\n\tputTxt(text: string) {\n\t\tfor (const {groups} of text.matchAll(RubySpliter.#REG_RUBY)) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tconst {ruby, kan_ruby, kan='', ce, txt='', str=''} = groups!;\n\t\t\tif (ruby) {this.putTxtRb(decodeURIComponent(str), ruby); continue}\n\n\t\t\tif (kan_ruby) {this.putTxtRb(kan, kan_ruby); continue}\n\t\t\tif (ce) {this.#putCh(ce.slice(1), ''); continue}\n\n\t\t\tfor (const v of Array.from(txt)) this.#putCh(v, '');\n\t\t\t\t// txt.split('')や [...txt] はサロゲートペアで問題\n\t\t}\n\t}\n\n\tputTxtRb(text: string, ruby: string) {\t// テスト用にpublic\n\t\t// 自動区切りを行わない(内部的 json文法)\n\t\tif (/^\\w+|{\"/.test(ruby)) {this.#putCh(text, ruby); return}\n\n\t\tconst a: string[] = Array.from(text);\n\t\tconst len = a.length;\n\t\tif (/^\\*.?$/.test(ruby)) {\t// 傍点文法\n\t\t\tconst rb_ses = 'center|'+ (ruby === '*' ?RubySpliter.#sesame :ruby.charAt(1));\n\t\t\tfor (const s of a) this.#putCh(s, rb_ses);\n\t\t\treturn;\n\t\t}\n\n\t\t// 自動区切りを行わない(単漢字など)\n\t\tif (len === 1 || ! ruby.includes(' ')) {\n\t\t\tthis.#putCh(text, decodeURIComponent(ruby));\n\t\t\treturn;\n\t\t}\n\n\t\t// 空白がある場合はユーザが区切りを指定しているものと見なす\n\t\tconst aR = ruby.split(' ');\n\t\tconst lenR = aR.length;\n\t\tconst len_max = lenR > len ?lenR :len;\n\t\tfor (let i=0; i<len_max; ++i) this.#putCh(\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\ti < len ? a[i]! : '',\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\ti < lenR ? decodeURIComponent(aR[i]!) : ''\n\t\t);\n\t}\n\n}\n"],"mappings":"AAaA,IAAa,cAAb,MAAa,EAAY;CACxB,QAAA,IAAkB;CAClB,OAAO,QAAQ,GAAY;AAAC,EAAI,EAAK,WAAQ,GAAA,IAAsB,EAAK;;CACxE,OAAO,YAAY;AAAC,SAAO,GAAA;;CAE3B,OAAO,UAAU;AAAC,KAAA,IAAsB;;CAExC,WAAwB;CACxB,KAAK,GAAgB;AAAC,QAAA,IAAc;;CAyBpC,QAAA;CACA,OAAO,UAAU,GAAY;AAG5B,KAAA,IAA4B,QAC1B,IAAI,WAAW,EAAG,SAAQ,MAC3B,GAAA,GAA+B,KAC/B;;CAEF,QAAA,IACC;CAQD,OAAO,GAAc;AACpB,OAAK,IAAM,EAAC,eAAW,EAAK,SAAS,GAAA,EAAsB,EAAE;GAE5D,IAAM,EAAC,SAAM,aAAU,SAAI,IAAI,OAAI,SAAI,IAAI,SAAI,OAAM;AACrD,OAAI,GAAM;AAAC,SAAK,SAAS,mBAAmB,EAAI,EAAE,EAAK;AAAE;;AAEzD,OAAI,GAAU;AAAC,SAAK,SAAS,GAAK,EAAS;AAAE;;AAC7C,OAAI,GAAI;AAAC,UAAA,EAAY,EAAG,MAAM,EAAE,EAAE,GAAG;AAAE;;AAEvC,QAAK,IAAM,KAAK,MAAM,KAAK,EAAI,CAAE,OAAA,EAAY,GAAG,GAAG;;;CAKrD,SAAS,GAAc,GAAc;AAEpC,MAAI,UAAU,KAAK,EAAK,EAAE;AAAC,SAAA,EAAY,GAAM,EAAK;AAAE;;EAEpD,IAAMI,IAAc,MAAM,KAAK,EAAK,EAC9B,IAAM,EAAE;AACd,MAAI,SAAS,KAAK,EAAK,EAAE;GACxB,IAAM,IAAS,aAAY,MAAS,MAAK,GAAA,IAAqB,EAAK,OAAO,EAAE;AAC5E,QAAK,IAAM,KAAK,EAAG,OAAA,EAAY,GAAG,EAAO;AACzC;;AAID,MAAI,MAAQ,KAAK,CAAE,EAAK,SAAS,IAAI,EAAE;AACtC,SAAA,EAAY,GAAM,mBAAmB,EAAK,CAAC;AAC3C;;EAID,IAAM,IAAK,EAAK,MAAM,IAAI,EACpB,IAAO,EAAG,QACV,IAAU,IAAO,IAAK,IAAM;AAClC,OAAK,IAAI,IAAE,GAAG,IAAE,GAAS,EAAE,EAAG,OAAA,EAE7B,IAAI,IAAM,EAAE,KAAM,IAElB,IAAI,IAAO,mBAAmB,EAAG,GAAI,GAAG,GACxC"}
1
+ {"version":3,"file":"RubySpliter.js","names":["#sesame","#putCh","#REG_RUBY","#REGTXT_RUBY_BASE"],"sources":["../src/sn/RubySpliter.ts"],"sourcesContent":["/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2018-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport type {TArg} from './Grammar';\nimport type {T_PutCh} from './CmnInterface';\n\nexport type IAutoPage = (idx: number, str: string) => void;\n\n\nexport class RubySpliter {\n\tstatic\t#sesame\t\t= 'ヽ';\n\tstatic\tsetting(hArg: TArg) {if (hArg.sesame) RubySpliter.#sesame = hArg.sesame}\n\tstatic\tgetSesame() {return RubySpliter.#sesame}\n\n\tstatic\tdestroy() {RubySpliter.#sesame = 'ヽ'}\n\n\t#putCh\t: T_PutCh\t= ()=> { /* empty */ };\n\tinit(putCh: T_PutCh) {this.#putCh = putCh}\n\n/*\n\t\t★Unicodeで「漢字」の正規表現 – ものかの http://tama-san.com/kanji-regex/\n\t\t2E80..2FDF\tCJK部首補助+康熙部首\n\t\t3005\t\t々(漢字の踊り字)\n\t\t3007\t\t〇(漢数字のゼロ)\n\t\t303B\t\t〻(漢字の踊り字)\n\t\t3400..4DBF\t\tCJK統合漢字拡張A\n\t\t4E00..9FFF\t\tCJK統合漢字\n\t\tF900..FAFF\t\tCJK互換漢字\n\t\t20000..2FFFF\tCJK統合漢字拡張B〜F+CJK互換漢字追加+念のためU+2FFFFまで\n\n\t\t[\\x{2E80}-\\x{2FDF}々〇〻\\x{3400}-\\x{4DBF}\\x{4E00}-\\x{9FFF}\\x{F900}-\\x{FAFF}\\x{20000}-\\x{2FFFF}]\n\t\t[\\u2E80-\\u2FDF々〇〻\\u3400-\\u4DBF\\u4E00-\\u9FFF\\uF900-\\uFAFF\\u20000-\\u2FFFF]\n\t\t[⺀-⿟々〇〻㐀-䶿一-鿿豈-﫿\\u20000-\\u2FFFF]\t\t// 含まれない文字がある\n\t\t[⺀-⿟々〇〻㐀-鿿豈-﫿\\u20000-\\u2FFFF]\t\t\t// ヽ--30FD が変に引っかかる。多分\\u2000-\\u2FFF解釈\n\t\t\\\\u{20000}-\\\\u{2FFFF}\t// 五桁だとエラー\n\n\t\t【2022/10/03】ruby正規表現のUnicode プロパティ(とPOSIX文字クラス) - Qiita https://qiita.com/Takayuki_Nakano/items/8d38beaddb84b488d683\n\t\t\t> このHiraganaプロパティ、長音記号は含まれていません。\n\t\t\t> \\p{Han}…簡体字や繁体字、韓国語の漢字…ベトナム語の漢字にもマッチ\n\n\t\t・Unicode文字一覧表 - instant tools https://tools.m-bsys.com/ex/unicode_table.php\n*/\n\tstatic\t#REG_RUBY\t: RegExp;\n\tstatic\tsetEscape(ce: string) {\n\t\t// 830 match 11293 step(1.7ms) PCRE2 https://regex101.com/r/BBrQtC/1\n\t\t// (new RegExp(\"~\")) の場合は、バックスラッシュは2つ必要\n\t\tRubySpliter.#REG_RUBY = new RegExp(\n\t\t\t(ce ?`(?<ce>\\\\${ce}\\\\S)|` :'') +\n\t\t\tRubySpliter.#REGTXT_RUBY_BASE, 'gs'\n\t\t);\n\t}\n\tstatic\treadonly\t#REGTXT_RUBY_BASE =\n\t\t'|(?<str>[^《\\\\n]+)《(?<ruby>[^》\\\\n]+)》'+\n\t\t'|(?:(?<kan>[⺀-⿟々〇〻㐀-鿿豈-﫿]+[ぁ-ヿ]*|[^ |《》\\\\n])'+\n\t\t'《(?<kan_ruby>[^》\\\\n]+)》)'+\n\t\t'|(?<txt>'+\n\t\t'[\\\\uD800-\\\\uDBFF][\\\\uDC00-\\\\uDFFF]'+\t// 上位 + 下位サロゲート\n\t\t'|[^|《》]+?'+\t\t// 不要だが細切れにしないほうが後々効率で有利\n\t\t'|.)';\n\n\tputTxt(text: string) {\n\t\tfor (const {groups} of text.matchAll(RubySpliter.#REG_RUBY)) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tconst {ruby, kan_ruby, kan='', ce, txt='', str=''} = groups!;\n\t\t\tif (ruby) {this.putTxtRb(decodeURIComponent(str), ruby); continue}\n\n\t\t\tif (kan_ruby) {this.putTxtRb(kan, kan_ruby); continue}\n\t\t\tif (ce) {this.#putCh(ce.slice(1), ''); continue}\n\n\t\t\tfor (const v of Array.from(txt)) this.#putCh(v, '');\n\t\t\t\t// txt.split('')や [...txt] はサロゲートペアで問題\n\t\t}\n\t}\n\n\tputTxtRb(text: string, ruby: string) {\t// テスト用にpublic\n\t\t// 自動区切りを行わない(内部的 json文法)\n\t\tif (/^\\w+|{\"/.test(ruby)) {this.#putCh(text, ruby); return}\n\n\t\tconst a: string[] = Array.from(text);\n\t\tconst len = a.length;\n\t\tif (/^\\*.?$/.test(ruby)) {\t// 傍点文法\n\t\t\tconst rb_ses = 'center|'+ (ruby === '*' ?RubySpliter.#sesame :ruby.charAt(1));\n\t\t\tfor (const s of a) this.#putCh(s, rb_ses);\n\t\t\treturn;\n\t\t}\n\n\t\t// 自動区切りを行わない(単漢字など)\n\t\tif (len === 1 || ! ruby.includes(' ')) {\n\t\t\tthis.#putCh(text, decodeURIComponent(ruby));\n\t\t\treturn;\n\t\t}\n\n\t\t// 空白がある場合はユーザが区切りを指定しているものと見なす\n\t\tconst aR = ruby.split(' ');\n\t\tconst lenR = aR.length;\n\t\tconst len_max = lenR > len ?lenR :len;\n\t\tfor (let i=0; i<len_max; ++i) this.#putCh(\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\ti < len ? a[i]! : '',\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\ti < lenR ? decodeURIComponent(aR[i]!) : ''\n\t\t);\n\t}\n\n}\n"],"mappings":";AAaA,IAAa,IAAb,MAAa,EAAY;CACxB,OAAOA,KAAW;CAClB,OAAO,QAAQ,GAAY;EAAC,AAAI,EAAK,WAAQ,EAAYA,KAAU,EAAK;CAAM;CAC9E,OAAO,YAAY;EAAC,OAAO,EAAYA;CAAO;CAE9C,OAAO,UAAU;EAAC,EAAYA,KAAU;CAAG;CAE3C,WAAwB,CAAc;CACtC,KAAK,GAAgB;EAAC,KAAKC,KAAS;CAAK;CAyBzC,OAAOC;CACP,OAAO,UAAU,GAAY;EAG5B,EAAYA,KAAgB,QAC1B,IAAI,WAAW,EAAG,SAAQ,MAC3B,EAAYC,IAAmB,IAChC;CACD;CACA,OAAgBA,KACf;CAQD,OAAO,GAAc;EACpB,KAAK,IAAM,EAAC,eAAW,EAAK,SAAS,EAAYD,EAAS,GAAG;GAE5D,IAAM,EAAC,SAAM,aAAU,SAAI,IAAI,OAAI,SAAI,IAAI,SAAI,OAAM;GACrD,IAAI,GAAM;IAAC,KAAK,SAAS,mBAAmB,CAAG,GAAG,CAAI;IAAG;GAAQ;GAEjE,IAAI,GAAU;IAAC,KAAK,SAAS,GAAK,CAAQ;IAAG;GAAQ;GACrD,IAAI,GAAI;IAAC,KAAKD,GAAO,EAAG,MAAM,CAAC,GAAG,EAAE;IAAG;GAAQ;GAE/C,KAAK,IAAM,KAAK,MAAM,KAAK,CAAG,GAAG,KAAKA,GAAO,GAAG,EAAE;EAEnD;CACD;CAEA,SAAS,GAAc,GAAc;EAEpC,IAAI,UAAU,KAAK,CAAI,GAAG;GAAC,KAAKA,GAAO,GAAM,CAAI;GAAG;EAAM;EAE1D,IAAM,IAAc,MAAM,KAAK,CAAI,GAC7B,IAAM,EAAE;EACd,IAAI,SAAS,KAAK,CAAI,GAAG;GACxB,IAAM,IAAS,aAAY,MAAS,MAAK,EAAYD,KAAS,EAAK,OAAO,CAAC;GAC3E,KAAK,IAAM,KAAK,GAAG,KAAKC,GAAO,GAAG,CAAM;GACxC;EACD;EAGA,IAAI,MAAQ,KAAK,CAAE,EAAK,SAAS,GAAG,GAAG;GACtC,KAAKA,GAAO,GAAM,mBAAmB,CAAI,CAAC;GAC1C;EACD;EAGA,IAAM,IAAK,EAAK,MAAM,GAAG,GACnB,IAAO,EAAG,QACV,IAAU,IAAO,IAAK,IAAM;EAClC,KAAK,IAAI,IAAE,GAAG,IAAE,GAAS,EAAE,GAAG,KAAKA,GAElC,IAAI,IAAM,EAAE,KAAM,IAElB,IAAI,IAAO,mBAAmB,EAAG,EAAG,IAAI,EACzC;CACD;AAED"}