@famibee/skynovel 1.64.22 → 2.0.0
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.
- package/README.md +3 -3
- package/dist/Button.js +131 -163
- package/dist/Button.js.map +1 -1
- package/dist/CallStack.js +19 -22
- package/dist/CallStack.js.map +1 -1
- package/dist/CmnInterface.js +91 -0
- package/dist/CmnInterface.js.map +1 -0
- package/dist/CmnLib.js +94 -0
- package/dist/CmnLib.js.map +1 -0
- package/dist/Config.js +26 -0
- package/dist/Config.js.map +1 -0
- package/dist/ConfigBase.js +152 -0
- package/dist/ConfigBase.js.map +1 -0
- package/dist/DebugMng.js +89 -102
- package/dist/DebugMng.js.map +1 -1
- package/dist/EventListenerCtn.js +21 -0
- package/dist/EventListenerCtn.js.map +1 -0
- package/dist/EventMng.js +1435 -1577
- package/dist/EventMng.js.map +1 -1
- package/dist/Grammar.js +194 -0
- package/dist/Grammar.js.map +1 -0
- package/dist/GrpLayer.js +163 -195
- package/dist/GrpLayer.js.map +1 -1
- package/dist/Layer.js +260 -0
- package/dist/Layer.js.map +1 -0
- package/dist/LayerMng.js +810 -992
- package/dist/LayerMng.js.map +1 -1
- package/dist/Main.js +144 -393
- package/dist/Main.js.map +1 -1
- package/dist/PropParser.js +936 -834
- package/dist/PropParser.js.map +1 -1
- package/dist/Reading.js +918 -786
- package/dist/Reading.js.map +1 -1
- package/dist/RubySpliter.js +59 -89
- package/dist/RubySpliter.js.map +1 -1
- package/dist/ScriptIterator.js +805 -1035
- package/dist/ScriptIterator.js.map +1 -1
- package/dist/SndBuf.js +1097 -1326
- package/dist/SndBuf.js.map +1 -1
- package/dist/SoundMng.js +124 -135
- package/dist/SoundMng.js.map +1 -1
- package/dist/SpritesMng.js +220 -232
- package/dist/SpritesMng.js.map +1 -1
- package/dist/SysBase.js +1729 -0
- package/dist/SysBase.js.map +1 -0
- package/dist/TxtLayer.js +1212 -1398
- package/dist/TxtLayer.js.map +1 -1
- package/dist/Variable.js +398 -466
- package/dist/Variable.js.map +1 -1
- package/dist/chunk.js +18 -0
- package/dist/gamepad.js +723 -511
- package/dist/gamepad.js.map +1 -1
- package/dist/pixi.js +13422 -0
- package/dist/pixi.js.map +1 -0
- package/dist/platform.js +424 -369
- package/dist/platform.js.map +1 -1
- package/dist/sn/AnalyzeTagArg.d.ts +1 -1
- package/dist/sn/AnalyzeTagArg.d.ts.map +1 -1
- package/dist/sn/CmnInterface.d.ts +3 -1
- package/dist/sn/CmnInterface.d.ts.map +1 -1
- package/dist/sn/CmnLib.d.ts.map +1 -1
- package/dist/sn/CmnTween.d.ts +7 -7
- package/dist/sn/CmnTween.d.ts.map +1 -1
- package/dist/sn/EventMng.d.ts.map +1 -1
- package/dist/sn/FocusMng.d.ts.map +1 -1
- package/dist/sn/Grammar.d.ts +1 -1
- package/dist/sn/Grammar.d.ts.map +1 -1
- package/dist/sn/Log.d.ts.map +1 -1
- package/dist/sn/Main.d.ts.map +1 -1
- package/dist/sn/Pages.d.ts.map +1 -1
- package/dist/sn/PropParser.d.ts +2 -2
- package/dist/sn/PropParser.d.ts.map +1 -1
- package/dist/sn/Reading.d.ts +7 -0
- package/dist/sn/Reading.d.ts.map +1 -1
- package/dist/sn/RubySpliter.d.ts.map +1 -1
- package/dist/sn/ScriptIterator.d.ts.map +1 -1
- package/dist/sn/SndBuf.d.ts +27 -16
- package/dist/sn/SndBuf.d.ts.map +1 -1
- package/dist/sn/SoundMng.d.ts +4 -1
- package/dist/sn/SoundMng.d.ts.map +1 -1
- package/dist/sn/SysBase.d.ts.map +1 -1
- package/dist/sn/TxtStage.d.ts +4 -1
- package/dist/sn/TxtStage.d.ts.map +1 -1
- package/dist/test/ValTest.d.ts +1 -1
- package/dist/test/ValTest.d.ts.map +1 -1
- package/dist/web.js +653 -8
- package/dist/web.js.map +1 -1
- package/dist_app/Button.js +131 -163
- package/dist_app/Button.js.map +1 -1
- package/dist_app/CallStack.js +19 -22
- package/dist_app/CallStack.js.map +1 -1
- package/dist_app/CmnInterface.js +91 -0
- package/dist_app/CmnInterface.js.map +1 -0
- package/dist_app/CmnLib.js +94 -0
- package/dist_app/CmnLib.js.map +1 -0
- package/dist_app/Config.js +26 -0
- package/dist_app/Config.js.map +1 -0
- package/dist_app/ConfigBase.js +152 -0
- package/dist_app/ConfigBase.js.map +1 -0
- package/dist_app/DebugMng.js +92 -0
- package/dist_app/DebugMng.js.map +1 -0
- package/dist_app/EventListenerCtn.js +21 -0
- package/dist_app/EventListenerCtn.js.map +1 -0
- package/dist_app/EventMng.js +1435 -1577
- package/dist_app/EventMng.js.map +1 -1
- package/dist_app/Grammar.js +194 -0
- package/dist_app/Grammar.js.map +1 -0
- package/dist_app/GrpLayer.js +163 -195
- package/dist_app/GrpLayer.js.map +1 -1
- package/dist_app/Layer.js +260 -0
- package/dist_app/Layer.js.map +1 -0
- package/dist_app/LayerMng.js +810 -992
- package/dist_app/LayerMng.js.map +1 -1
- package/dist_app/Main.js +144 -392
- package/dist_app/Main.js.map +1 -1
- package/dist_app/PropParser.js +936 -834
- package/dist_app/PropParser.js.map +1 -1
- package/dist_app/Reading.js +918 -786
- package/dist_app/Reading.js.map +1 -1
- package/dist_app/RubySpliter.js +59 -89
- package/dist_app/RubySpliter.js.map +1 -1
- package/dist_app/ScriptIterator.js +805 -1034
- package/dist_app/ScriptIterator.js.map +1 -1
- package/dist_app/SndBuf.js +1097 -1326
- package/dist_app/SndBuf.js.map +1 -1
- package/dist_app/SoundMng.js +124 -135
- package/dist_app/SoundMng.js.map +1 -1
- package/dist_app/SpritesMng.js +220 -231
- package/dist_app/SpritesMng.js.map +1 -1
- package/dist_app/SysBase.js +1729 -0
- package/dist_app/SysBase.js.map +1 -0
- package/dist_app/TxtLayer.js +1212 -1397
- package/dist_app/TxtLayer.js.map +1 -1
- package/dist_app/Variable.js +398 -466
- package/dist_app/Variable.js.map +1 -1
- package/dist_app/app.js +211 -8
- package/dist_app/app.js.map +1 -1
- package/dist_app/appMain.js +20 -21
- package/dist_app/appMain.js.map +1 -1
- package/dist_app/chunk.js +18 -0
- package/dist_app/gamepad.js +723 -511
- package/dist_app/gamepad.js.map +1 -1
- package/dist_app/pixi.js +11181 -0
- package/dist_app/pixi.js.map +1 -0
- package/dist_app/platform.js +424 -369
- package/dist_app/platform.js.map +1 -1
- package/dist_app/preload.js +2 -2
- package/dist_app/preload.js.map +1 -1
- package/dist_app/sn/AnalyzeTagArg.d.ts +1 -1
- package/dist_app/sn/AnalyzeTagArg.d.ts.map +1 -1
- package/dist_app/sn/CmnInterface.d.ts +3 -1
- package/dist_app/sn/CmnInterface.d.ts.map +1 -1
- package/dist_app/sn/CmnLib.d.ts.map +1 -1
- package/dist_app/sn/CmnTween.d.ts +7 -7
- package/dist_app/sn/CmnTween.d.ts.map +1 -1
- package/dist_app/sn/EventMng.d.ts.map +1 -1
- package/dist_app/sn/FocusMng.d.ts.map +1 -1
- package/dist_app/sn/Grammar.d.ts +1 -1
- package/dist_app/sn/Grammar.d.ts.map +1 -1
- package/dist_app/sn/Log.d.ts.map +1 -1
- package/dist_app/sn/Main.d.ts.map +1 -1
- package/dist_app/sn/Pages.d.ts.map +1 -1
- package/dist_app/sn/PropParser.d.ts +2 -2
- package/dist_app/sn/PropParser.d.ts.map +1 -1
- package/dist_app/sn/Reading.d.ts +7 -0
- package/dist_app/sn/Reading.d.ts.map +1 -1
- package/dist_app/sn/RubySpliter.d.ts.map +1 -1
- package/dist_app/sn/ScriptIterator.d.ts.map +1 -1
- package/dist_app/sn/SndBuf.d.ts +27 -16
- package/dist_app/sn/SndBuf.d.ts.map +1 -1
- package/dist_app/sn/SoundMng.d.ts +4 -1
- package/dist_app/sn/SoundMng.d.ts.map +1 -1
- package/dist_app/sn/SysBase.d.ts.map +1 -1
- package/dist_app/sn/TxtStage.d.ts +4 -1
- package/dist_app/sn/TxtStage.d.ts.map +1 -1
- package/dist_app/test/ValTest.d.ts +1 -1
- package/dist_app/test/ValTest.d.ts.map +1 -1
- package/package.json +24 -14
- package/dist/CmnTween.js +0 -193
- package/dist/CmnTween.js.map +0 -1
- package/dist/web2.js +0 -21644
- package/dist/web2.js.map +0 -1
- package/dist_app/CmnTween.js +0 -193
- package/dist_app/CmnTween.js.map +0 -1
- package/dist_app/app2.js +0 -18547
- package/dist_app/app2.js.map +0 -1
package/dist_app/RubySpliter.js
CHANGED
|
@@ -1,90 +1,60 @@
|
|
|
1
|
-
class
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
if (i) {
|
|
59
|
-
this.#t(i.slice(1), "");
|
|
60
|
-
continue;
|
|
61
|
-
}
|
|
62
|
-
for (const a of Array.from(f)) this.#t(a, "");
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
putTxtRb(t, s) {
|
|
66
|
-
if (/^\w+|{"/.test(s)) {
|
|
67
|
-
this.#t(t, s);
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
const c = Array.from(t), e = c.length;
|
|
71
|
-
if (/^\*.?$/.test(s)) {
|
|
72
|
-
const n = "center|" + (s === "*" ? o.#s : s.charAt(1));
|
|
73
|
-
for (let a = 0; a < e; ++a) this.#t(c[a], n);
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
if (e === 1 || !s.includes(" ")) {
|
|
77
|
-
this.#t(t, decodeURIComponent(s));
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
|
-
const r = s.split(" "), i = r.length, f = i > e ? i : e;
|
|
81
|
-
for (let n = 0; n < f; ++n) this.#t(
|
|
82
|
-
n < e ? c[n] : "",
|
|
83
|
-
n < i ? decodeURIComponent(r[n]) : ""
|
|
84
|
-
);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
export {
|
|
88
|
-
o as R
|
|
1
|
+
var RubySpliter = class e {
|
|
2
|
+
static #e = "ヽ";
|
|
3
|
+
static setting(t) {
|
|
4
|
+
t.sesame && (e.#e = t.sesame);
|
|
5
|
+
}
|
|
6
|
+
static getSesame() {
|
|
7
|
+
return e.#e;
|
|
8
|
+
}
|
|
9
|
+
static destroy() {
|
|
10
|
+
e.#e = "ヽ";
|
|
11
|
+
}
|
|
12
|
+
#t = () => {};
|
|
13
|
+
init(e) {
|
|
14
|
+
this.#t = e;
|
|
15
|
+
}
|
|
16
|
+
static #n;
|
|
17
|
+
static setEscape(t) {
|
|
18
|
+
e.#n = RegExp((t ? `(?<ce>\\${t}\\S)|` : "") + "|(?<str>[^《\\n]+)《(?<ruby>[^》\\n]+)》|(?:(?<kan>[⺀-々〇〻㐀-鿿豈-]+[ぁ-ヿ]*|[^ |《》\\n])《(?<kan_ruby>[^》\\n]+)》)|(?<txt>[�d800-�dbff][�dc00-�dfff]|[^|《》]+?|.)", "gs");
|
|
19
|
+
}
|
|
20
|
+
putTxt(t) {
|
|
21
|
+
for (let { groups: n } of t.matchAll(e.#n)) {
|
|
22
|
+
if (!n) break;
|
|
23
|
+
let { ruby: e, kan_ruby: t, kan: r = "", ce: i, txt: a = "", str: o = "" } = n;
|
|
24
|
+
if (e) {
|
|
25
|
+
this.putTxtRb(decodeURIComponent(o), e);
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
if (t) {
|
|
29
|
+
this.putTxtRb(r, t);
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
if (i) {
|
|
33
|
+
this.#t(i.slice(1), "");
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
for (let e of Array.from(a)) this.#t(e, "");
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
putTxtRb(t, n) {
|
|
40
|
+
if (/^\w+|{"/.test(n)) {
|
|
41
|
+
this.#t(t, n);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
let r = Array.from(t), i = r.length;
|
|
45
|
+
if (/^\*.?$/.test(n)) {
|
|
46
|
+
let t = "center|" + (n === "*" ? e.#e : n.charAt(1));
|
|
47
|
+
for (let e of r) this.#t(e, t);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
if (i === 1 || !n.includes(" ")) {
|
|
51
|
+
this.#t(t, decodeURIComponent(n));
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
let a = n.split(" "), o = a.length, s = o > i ? o : i;
|
|
55
|
+
for (let e = 0; e < s; ++e) this.#t(e < i ? r[e] : "", e < o ? decodeURIComponent(a[e]) : "");
|
|
56
|
+
}
|
|
89
57
|
};
|
|
90
|
-
|
|
58
|
+
export { RubySpliter as t };
|
|
59
|
+
|
|
60
|
+
//# sourceMappingURL=RubySpliter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RubySpliter.js","sources":["../src/sn/RubySpliter.ts"],"sourcesContent":["/* eslint-disable
|
|
1
|
+
{"version":3,"file":"RubySpliter.js","names":["#sesame","#putCh","#REG_RUBY","a: string[]"],"sources":["../src/sn/RubySpliter.ts"],"sourcesContent":["/* eslint-disable no-irregular-whitespace */\n/* ***** 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/*\n(?<txt4>\\\\\\S)\n|\t|(?<str>[^《\\n]+)《(?<ruby>[^》\\n]+)》\n|\t(?: (?<kan>[⺀-々〇〻㐀-鿿豈-]+ [ぁ-ヿ]* | [^ |《》\\n])\n\t\t《(?<kan_ruby>[^》\\n]+)》)\n|\t(?<txt>\n\t[\\xD800-\\xDBFF][\\xDC00-\\xDFFF]\n|\t[^|《》]+?\n|\t.)\n\t\t*/\n\t\t// (new RegExp(\"~\")) の場合は、バックスラッシュは2つ必要\n\t\tRubySpliter.#REG_RUBY = new RegExp(\n\t\t\t(ce ?`(?<ce>\\\\${ce}\\\\S)|` :'')+\n\t\t\t'|(?<str>[^《\\\\n]+)《(?<ruby>[^》\\\\n]+)》'+\n\t\t\t'|(?:(?<kan>[⺀-々〇〻㐀-鿿豈-]+[ぁ-ヿ]*|[^ |《》\\\\n])'+\n\t\t\t'《(?<kan_ruby>[^》\\\\n]+)》)'+\n\t\t\t'|(?<txt>'+\n\t\t\t'[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]'+\t// 上位 + 下位サロゲート\n\t\t\t'|[^|《》]+?'+\t\t// 不要だが細切れにしないほうが後々効率で有利\n\t\t\t'|.)',\n\t\t\t'gs'\n\t\t);\n\t}\n\n\tputTxt(text: string) {\n\t\tfor (const {groups} of text.matchAll(RubySpliter.#REG_RUBY)) {\n\t\t\tif (! groups) break;\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":"AAcA,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;AAa5B,KAAA,IAA4B,QAC1B,IAAI,WAAW,EAAG,SAAQ,MAC3B,0JAOA,KACA;;CAGF,OAAO,GAAc;AACpB,OAAK,IAAM,EAAC,eAAW,EAAK,SAAS,GAAA,EAAsB,EAAE;AAC5D,OAAI,CAAE,EAAQ;GACd,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,IAAMG,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"}
|