From 6aebf7139de4cf11305ae30fca637ff636bac63a Mon Sep 17 00:00:00 2001 From: Jeongho Nam Date: Fri, 29 Jul 2016 16:49:08 +0900 Subject: [PATCH] v1.0 --- README.md | 2 +- .../images/design/abstract_containers.png | Bin 50838 -> 0 bytes api/assets/images/design/exceptions.png | Bin 53422 -> 0 bytes .../images/design/linear_containers.png | Bin 109519 -> 0 bytes api/assets/images/design/map_containers.png | Bin 123035 -> 0 bytes api/assets/images/design/set_containers.png | Bin 118026 -> 0 bytes .../tree/Red-black_tree_delete_case_2.svg | 1145 ---- .../tree/Red-black_tree_delete_case_3.svg | 944 --- .../tree/Red-black_tree_delete_case_4.svg | 958 --- .../tree/Red-black_tree_delete_case_5.svg | 755 --- .../tree/Red-black_tree_delete_case_6.svg | 865 --- .../images/tree/Red-black_tree_example.svg | 812 --- .../tree/Red-black_tree_insert_case_3.svg | 730 --- .../tree/Red-black_tree_insert_case_4.svg | 866 --- .../tree/Red-black_tree_insert_case_5.svg | 873 --- lib/typescript-stl.d.ts | 829 ++- lib/typescript-stl.js | 1270 ++-- ts/include/typescript-stl.js | 5465 +++++++++-------- ts/include/typescript-stl.js.map | 2 +- ts/index.html | 2 +- ts/src/std/API.ts | 9 - ts/src/std/Deque.ts | 102 +- ts/src/std/Exception.ts | 40 +- ts/src/std/HashMap.ts | 393 +- ts/src/std/HashMultiMap.ts | 373 ++ ts/src/std/HashMultiSet.ts | 374 ++ ts/src/std/HashSet.ts | 376 +- ts/src/std/Iterator.ts | 8 +- ts/src/std/List.ts | 23 +- ts/src/std/Queue.ts | 4 +- ts/src/std/Stack.ts | 4 +- ts/src/std/SystemError.ts | 18 +- ts/src/std/TreeMap.ts | 436 +- ts/src/std/TreeMultiMap.ts | 417 ++ ts/src/std/TreeMultiSet.ts | 392 ++ ts/src/std/TreeSet.ts | 396 +- ts/src/std/Vector.ts | 12 +- ts/src/std/base/Container.ts | 4 +- ts/src/std/base/ErrorInstance.ts | 8 +- ts/src/std/base/HashBuckets.ts | 6 + ts/src/std/base/HashMapBase.ts | 8 +- ts/src/std/base/HashSetBase.ts | 8 +- ts/src/std/base/IArrayContainer.ts | 4 +- ts/src/std/base/IArrayIterator.ts | 4 +- ts/src/std/base/IContainer.ts | 4 +- ts/src/std/base/IDequeContainer.ts | 4 +- ts/src/std/base/ILinearContainer.ts | 4 +- ts/src/std/base/MapContainer.ts | 12 +- ts/src/std/base/MultiMap.ts | 4 +- ts/src/std/base/MultiSet.ts | 4 +- ts/src/std/base/SetContainer.ts | 12 +- ts/src/std/base/TreeMapBase.ts | 14 +- ts/src/std/base/TreeSetBase.ts | 14 +- ts/src/std/base/UniqueMap.ts | 4 +- ts/src/std/base/UniqueSet.ts | 4 +- ts/src/std/base/XTree.ts | 18 +- ts/src/std/miscellaneous/exports.ts | 7 +- .../typescript-stl/typescript-stl.d.ts | 2 +- ts/tsconfig.json | 5 +- 59 files changed, 5420 insertions(+), 13629 deletions(-) delete mode 100644 api/assets/images/design/abstract_containers.png delete mode 100644 api/assets/images/design/exceptions.png delete mode 100644 api/assets/images/design/linear_containers.png delete mode 100644 api/assets/images/design/map_containers.png delete mode 100644 api/assets/images/design/set_containers.png delete mode 100644 api/assets/images/tree/Red-black_tree_delete_case_2.svg delete mode 100644 api/assets/images/tree/Red-black_tree_delete_case_3.svg delete mode 100644 api/assets/images/tree/Red-black_tree_delete_case_4.svg delete mode 100644 api/assets/images/tree/Red-black_tree_delete_case_5.svg delete mode 100644 api/assets/images/tree/Red-black_tree_delete_case_6.svg delete mode 100644 api/assets/images/tree/Red-black_tree_example.svg delete mode 100644 api/assets/images/tree/Red-black_tree_insert_case_3.svg delete mode 100644 api/assets/images/tree/Red-black_tree_insert_case_4.svg delete mode 100644 api/assets/images/tree/Red-black_tree_insert_case_5.svg create mode 100644 ts/src/std/HashMultiMap.ts create mode 100644 ts/src/std/HashMultiSet.ts create mode 100644 ts/src/std/TreeMultiMap.ts create mode 100644 ts/src/std/TreeMultiSet.ts diff --git a/README.md b/README.md index d64c7d91..fd16f005 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ STL (Standard Template Library) Containers and Algorithms for TypeScript TypeScript-STL is an open-source JavaScript library providing containers and algorithms migrated from C++ STL. You can enjoy STL containers and algorithms in JavaScript. If TypeScript, you will be much happier feeling like using originla STL with type restriction and template programming. -![Abstract Containers](http://samchon.github.io/typescript-stl/api/assets/images/design/abstract_containers.png) +![Abstract Containers](http://samchon.github.io/typescript-stl/images/design/class_diagram/abstract_containers.png) ##### Containers - [**Linear containers**](http://samchon.github.io/typescript-stl/api/interfaces/std.base.container.ilinearcontainer.html) diff --git a/api/assets/images/design/abstract_containers.png b/api/assets/images/design/abstract_containers.png deleted file mode 100644 index 6c17888695b1bdf6283a8fcc5c5fbc82f368e1d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50838 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 diff --git a/api/assets/images/design/exceptions.png b/api/assets/images/design/exceptions.png deleted file mode 100644 index 65fc6d3b9767138a0712fa4e7c4e9ae7e27caaed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53422 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 diff --git a/api/assets/images/design/linear_containers.png b/api/assets/images/design/linear_containers.png deleted file mode 100644 index c15b5767085b175ad0c1a89a3ec6be7c55fb4a5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109519 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�oUeTXG8&2E+8T?2Lq>f!bQ|1dl*<$1Z4^ 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 arOhV#N7V+oL-MTu8eA~?3!{7W&VK>YZ{(5y diff --git a/api/assets/images/design/map_containers.png b/api/assets/images/design/map_containers.png deleted file mode 100644 index 94231562d2a344935b15e38ed7487448729713ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123035 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 zwManV!37®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%0A#?0|&Y){0CjEa#cYAf464d4= z!p0u2vfeWb;H5Q>ao*_my3g&PNQXL~X#rv^d^Idrku`oF=JheHzg_v`#w`^;!20W3 zh$XzgQe4%3WVJW{SH?2?=lAaDq?=2 z3ai5%b~O10m34*vqEX+IJsR`ds9e>bb3<=TZ=53E)KJ3d>hA7oZcc+_!p?xf#;oJj zERBl58Wz`m@vEVX<*(K!w-@_nnd(elxlAaHhEvXX)MU}G4MroH23*oB56B*a2Q!l) zwzFJZku>l@LL3CyCt_Hz37)Y4Uo^vXyR z$3>6PlGpBMVb9#ZgKh#S`orFQY&frS5gcAHU~4cm&pR+87O5uJ+{H*EuhL3ml8P;! z7+dggnDzsV<<3II1GRI&D^S`aWZu1_Ha39+8H}~vr}JTs(|v6syzK9u*Q;~*VU2qr zJr2#K$xH`ZdHSeJOXP6JG~3-EXA;!MtO}o5@1O4^kF~0|ug{z$P`a}bX^`(x``TPx zzo8+sr@-k;yM&k6%js9>ZW@uOu4gn`7i~RYVt2sFt8|OQ+&-fHa8N$;AW1B`b~}sA ztK37%EHCi$;de_1Ko|J{-%CP{Ok{4@QhOa2tlpR++E_5R9TVQSim)+5E+^>iCS~Y6 z;8Gw}5mTI3dbt(Ahp z!rdsLVU7jAygc=hob(UWhOts(xh#^+F$#&)u*C(jvEk~X>unQmnWOH@Z!mp`BB~pMG!4`G*v_w8WrCtUL3CnH3r1 z82td`a&a;3nbd^-aGqj_Ub}u|GJUA-W4K$$x*fjL6HywUbx*JAr<7iwtWWRfQK>~Q zN0F=%NBc&!!-#QwfcD{tC7Dbof~;jG`{yTvyG7c@oo1v40fon3SD7MeDbo;b)-DMtnz)+?uQ&#R&aY) zv)It(ZW>e0;pQ`HGS%7r7ZIpjOIKXxKg!$Az$#63BjHd^RI)!7W4B{0bYm0+kc7AcpVWRV@w1=e+&t3`pP4LPW)rHtkgA3z$5#2^ou9B73vC**u zJenK{FuMO;<&pO@#sh}z5DJbUpEoSEi4}ka)9ZbGd240GTG_L6+%T^*?S2Zbr&>wG zpf3?|m-2Vp{{HScBUiq}ps8T)=#pVWC#77om#rfIi>`Bn0rk7V%n;YDqvYk9ZykG4 z6p)C?rg(Jm-NjDiA5k7-4^4a_y(~J%qSKJwygjDPlRVcEEV3Be)8!XD{sId10WSSJ zKz5eCd}lX&D`Q>wB^&m;1roaG-GUNEcXq$rY(rThD5fp3>;z)+X8d0(Y5ELVO+*d4 z%xn@nXTBx~GUGhjE4XrO{?X}k=@I!c_WMhJRge5r@6hG}zcDD08)G?TvPk53H{tuN z5Yp7JOI>3KJ9kk*I?&G!D?I{9(e-8J%K><>p9%)f(>;!cV+NF02_`?$wx6-Y>J3JW ziO`qId%>$pC9yhhP>y#`7q=t&_rBDxM46J!_ZA?&Z*wFr?dBp~G75+I8e<*q!ic&O z`BYVNuwqIyj!o~CT^94m5HXb6oqMUbZ+&N)wKA5$w^z`F&bOD#m5#gh0PsvhoJ#$L zmX)i`ZDY=)hDw}A^l#jO)IzbV%x5a?ik8>yvk|c}k~4O-by@^; znbW7>CZAApQV-EFnYkfvFEo^s)-3nQha0}4*6Vmn`dACI4;Ue(QuzX(Fvc{j*OvgX z74?8w4^Y|k6xnyw&-=107KWzq%o$Z(&d)r~{CG+Z`J(=bOZN75zMN6ulE(NBZ4WudMQZ{dkqG6=RbF9T(QetxXa_RsGgC=GH5&6 zmt@_;rLaJr>1v>-z{Pk4SU~ALg%xjG-r~bMBjVcDyI1T7Z4abYSdD^A#FQiUS=dT+ znF`_*lVl`qiXW3yX}q7SU{FIp#gSdA-)s(whzaiN)o`*RB;sxC8tl4w#HdD^IbEi8 zky)etN&lD=`Jmte?Ck3Roqnu|Ta=0w@3p9F*~=gqM_7Z(M4uDOn17Lik@cinl>Hj3 z{KCadn~~eiCMi;NgN0@%>J#*5NPhA=R0ELwN>y$)`f@U?tSBfhe(QObdv7;|i{!ms z&Zf*nq70$32O)CHR(Y2hFM{bJ{rQ{Cv?oV$rV9;MDe3$^yYRRSm1PeX$nb0wWM*#p z23Lj~;yBq#M)xxeu4h{Qa#!5{4YiZZU2cv_a)loi=XX9K{osil%O7Z+hVE={4vqXW z9A6@%bMjL;OW8QvizQD@d0%Z(={>hmaU@xMg_Ch=M}F3?ajuvEL#J{tdDu`zRk|-F zQo0F^x8tYv=|p3sej_e+OzUD_mh16m?9jOwu(Prfhe$1!`Me@UfK}Szt(p>ljNegQ zijS?VN5HRV)M_-=ZfLzqlNwt^A^vc;EzS-;6yuEBvgZclI;}UEDhoR!kN;0)R~`;! z*Z-$Yi=rN)$X+CaR?7%adlCvmsf;DcGGv!!s7R$K!^r*?6B&$s$~N|GLfN-5c8zW9 z+YEkZ@bpa2_57~)dgrfuu6yR(=RW7Vo%8*i&sVjAi(U)ZMWl#RQXnJmWnJOQM_C?s zQC<2emYYrxX5>gJ$yG?uBJ7km+zR2Gnir3q)|X56oPjJG4}E=o4rj68#QN$I017)T z<}6+Dnz^FqD>2=qk7#4Un0c8yZKb!1@hcSs8-swn%7W+Xso~|OYY^`S#suK60Cei& z2z}ygvaPa;ih*}w zkJe7Is=-0_HT`F<9wADMg$mVZ)Tq?bASlx?HK11i?6?1Ix)4p;sW zHAM~4nP1W8R5TY|vy2s;C-jLjqs2BUwA%EmL>{o6wvJkYI0G7Ny7HoZ`$D;V!Q^zz zYNtVW?+zkIhJ(JcDe2x^PW`PelLkXg|JeDZQ#`2^C&VICy;Pk>yq5S2c7tH!(}a4! ztoY8Ei;CIiDd(K*G6isnXD{V#gAd=ew3o`aq3KXMvobrai+!al#&)%n;QBY%3ZF6~ zix3Z?j6WdVx5%7clWF)7J}E{}R6m#PVWo~1lcB0VqWv^G-LQK=j$Qfk)kzhPKp6MB| zY7JVlVfG*5rVHdka0MT0p+P zBi<0YmTD-B8m8!EI~3_7Jk6A!0i^`58a7DtuuSU-?Xb!rTecyelWminhj8{mu-R;U zn9}D9S|n6|>#e%mO>rNOs$;YT3613`15D7niGU|8FTF@ytiSErW7t(b6z4q;LD}zo zxXL~ki7~zBA2FksW;Br}d?Iv<4Qbq~xxPNT_bw z@j>5~9{v?Qi)kKg?6F5$MjEu^tYXW)v89yPY_~|7;nO7(pkBW)@4=_k1haMSz-PNO zUFvPj46a4XRG-qF9XmSvLhCgM@aeo=BVJu#BP>s5)JW7ZScRJPeQkv^(B<22V0lw& z+Q~AmKu}pOxy2jAMS!}d5Fiz@mIwV}?u1NJ<73J>y^wSyfGi(SBGRj*a79kivuMP! zr&*RrO++g)w@o)JJDHkAikj&Q0Y@wN)v?^-=)v>Qj>4udi^5T|V@>s4jY5I-sN@TU%5DQ6Io|2VEvUFRZcHlzknt_&G#)ta?50`Qr=NQ_V zX?o8>Ln*c@Bq$EG%q}^1dEwPlJYWr+*0nd0`L|F*= zMM@fnA+mr_Yq+1xZISd(?59t(rMP`3lq;Xm5S4l7;46dr@T$!)nx>({DFlk?Bq}GY ze$3r7ScL*Bup(j%KR)i zr~EA$M*ApGO2ln}+s5y156eV^g`RvIpE#51GQ>Mf(h2}ueRZ|{3b2KTx_u5Sa63}n#I-D`B8yzd0N0$3|7 zEc69>fkH?gY`c4yh~k}q-T;!y-_w!~Y_J4~n?a>WD!uS%!F)c=bGAv}+0GW^N0^MG zJ_r(U@R7iW-x669k`OV50cM*YB5>X%V^yGBlB(QFG+jtlT*3D>dNoaEuJVw;S}h5z zR6!@I_o1Xo1||5Qxys||k>-aLr8#P!)dy+TJqQr+bwjD)0Cu(z?7iL>gx+B4bWxmR=Z{|9jN8)MY;}{;)*vr%z4J3aMYct)T zqKj*Q??ROpYHFG0Md8SH_3#K@O(O84)XuT#V$XeM&#L)Q_oVnZr@e}cjb)r2#@)ie zF@`NFz^wk|$$X8Ed*u0(cWZ=8UYoWoJ}jMi@USMD0_c9vA{)Gv^3~`eIlecG?dZWRCF4P4{cF6sjZHA%mV zSh?gQ`IpC!Y9z&K`RQ+*57OGMRzmyWU)Q(Iz;yp(#&{gL`bJ|=e!`0ODA{*gX@fyz z#$X2%6TCL8kW^vz9mLb7pKs~?fyN9bkqj?t!iO)6p|!Aum&1Kv?oP-=N$aPLu*wZ{ zhxAT-^8Wfw`2_QZ*m2>3>p^~Fje78P9Sp++#rsd~hI=YqQ|{diW%hHeynuxgJLk7j9pbpsSUtBolbu#7x5;lWz#2Ox^ke|simUpDlxU&8YIK_-SzLP z7MoAu(9MrJ`S3wK%FM93KPs`lq$>)MAS?R^OTVEK3>aQVEcDK6YaSsnX)cyqNoN?a zGm<$)|9Lq&0t29v{UD$NBgu0=3+$%|{t|Qu`)?WrdJKMx28#IC$b($_Be36YT$BgaFnd6hM(Fl&Tw|QSYju=9lYh0(5XlfqUg~ zQO=UlpwQgv%7vSFGzCmE^`? zWVhlQDwyz@j0sXD)v;f5G%`sLLhxh#(_T<|NA*&}m&9OPc{pE{WKRj!@XA*nw26lNLIgCNjs3Ffv~(Zya?v>A4qQ7#(?#}{&a_ZYV|ITn(2xaA-=0N(RU zUcr$`-=H>YIhT3P`SEymbu_Bt?j4~+e{v;5U+>MpS$L9N_4CYXt`^$tXZaTxYBx)n z378zcn2$xbcJ%0D#PC*Th?BPdb?#(v>hAxYY#=t^c+)Rg0)`kE^uN2cZohw7puOvE zV8f&`C9TOdkCn6D!}`s_l~Ed=BwY2rAl+*sQPmfm%DKtL(~I>o zdO6uQoBm^I{9u@^$$BxtCU)3aL5f8N4tDc)#lN`96|KSe7Mh*!GB%+5>RH@@YAXCE zB<*MW*BxpRdT&a;M4cEhIVcwhFV}sX@X_Xbm-P~_th&F0$R{CwN&dj;cb>}9Ebnw13Bm}l z@ARvc|0=mGQ3tRoDO@N(a64M}M8so0mlE}uebWIpW{d%xVaraUVS&fup#x>i6Cu@X zsT>n9=yqI#{=;{9f?s5yX diff --git a/api/assets/images/design/set_containers.png b/api/assets/images/design/set_containers.png deleted file mode 100644 index cccfac6a30bf65d1b586a99b5ae461f401d35297..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 118026 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 - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - P1 - - P - - - N1->dot1 - - - - - N1->dot2 - - - - - N - - P1->N1 - - - - - P1->S1 - - - - - S1 - - S - - - SL1 - - S - - - S1->SL1 - - - - - SR1 - - S - - - S1->SR1 - - - - - - - - - tri1 - - 1 - - - tri2 - - 2 - - 3 - 4 - 5 - 6 - - subscript1 - L - - - subscript2 - R - - - arrow - - - - S2 - - S - - - S2->P2 - - - - - P2 - - P - - - SR2 - - S - - - S2->SR2 - - - - - N2->dot2b - - - - - N2->dot1b - - - - - N - - P2->N2 - - - - - SL2 - - S - - - P2->SL2 - - - - - - - - - tri1b - - 1 - - - tri2b - - 2 - - 3 - 4 - 5 - 6 - - subscript3 - L - - - subscript4 - R - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/api/assets/images/tree/Red-black_tree_delete_case_3.svg b/api/assets/images/tree/Red-black_tree_delete_case_3.svg deleted file mode 100644 index 25216d1c..00000000 --- a/api/assets/images/tree/Red-black_tree_delete_case_3.svg +++ /dev/null @@ -1,944 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - P1 - - P - - - N - - P1->N1 - - - - - S1 - - S - - - P1->S1 - - - - - N1->dot1 - - - - - N1->dot2 - - - - - SL1 - - S - - - S1->SL1 - - - - - SR1 - - S - - - S1->SR1 - - - - - SL1->dot3 - - - - - SL1->dot4 - - - - - SR1->dot5 - - - - - SR1->dot6 - - - - - tri1 - - 1 - - - tri2 - - 2 - - - tri3 - - 3 - - - tri4 - - 4 - - - tri5 - - 5 - - - tri6 - - 6 - - - subscript1 - L - - - subscript2 - R - - - arrow - - - - P - - N2 - - N - - - P2->N2 - - - - - S2 - - S - - - P2->S2 - - - - - N2->dot1b - - - - - N2->dot2b - - - - - SL2 - - S - - - S2->SL2 - - - - - SR2 - - S - - - S2->SR2 - - - - - SL2->dot3b - - - - - SL2->dot4b - - - - - SR2->dot5b - - - - - SR2->dot6b - - - - - tri1b - - 1 - - - tri2b - - 2 - - - tri3b - - 3 - - - tri4b - - 4 - - - tri5b - - 5 - - - tri6b - - 6 - - - subscript3 - L - - - subscript4 - R - - - diff --git a/api/assets/images/tree/Red-black_tree_delete_case_4.svg b/api/assets/images/tree/Red-black_tree_delete_case_4.svg deleted file mode 100644 index 354e6f75..00000000 --- a/api/assets/images/tree/Red-black_tree_delete_case_4.svg +++ /dev/null @@ -1,958 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - P1 - - P - - - P1->N1 - - - - - N - - P1->S1 - - - - - S1 - - S - - - N1->dot1 - - - - - N1->dot2 - - - - - SL1 - - S - - - S1->SL1 - - - - - SR1 - - S - - - S1->SR1 - - - - - SL1->dot3 - - - - - SL1->dot4 - - - - - SR1->dot5 - - - - - SR1->dot6 - - - - - tri1 - - 1 - - - tri2 - - 2 - - - tri3 - - 3 - - - tri4 - - 4 - - - tri5 - - 5 - - - tri6 - - 6 - - - subscript1 - L - - - subscript2 - R - - - arrow - - - - P2 - - P - - - N2 - - N - - - P2->N2 - - - - - P2->S2 - - - - - S2 - - S - - - N2->dot1b - - - - - N2->dot2b - - - - - SL2 - - S - - - S2->SL2 - - - - - SR2 - - S - - - S2->SR2 - - - - - SL2->dot3b - - - - - SL2->dot4b - - - - - SR2->dot5b - - - - - SR2->dot6b - - - - - tri1b - - 1 - - - tri2b - - 2 - - - tri3b - - 3 - - - tri4b - - 4 - - - tri5b - - 5 - - - tri6b - - 6 - - - subscript3 - L - - - subscript4 - R - - - diff --git a/api/assets/images/tree/Red-black_tree_delete_case_5.svg b/api/assets/images/tree/Red-black_tree_delete_case_5.svg deleted file mode 100644 index d6bea65a..00000000 --- a/api/assets/images/tree/Red-black_tree_delete_case_5.svg +++ /dev/null @@ -1,755 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - S2 - - S - - - SR2 - - S - - - S2->SR2 - - - - - dot2b - - - - S2->dot2b - - - - - SL2 - - S - - - SL2->S2 - - - - - dot1b - - - - SL2->dot1b - - - - - SR2->dot3b - - - - - SR2->dot4b - - - - - tri1b - - 1 - - - tri2b - - 2 - - - tri3b - - 3 - - - tri4b - - 4 - - - subscript1 - L - - - subscript2 - R - - - - - S1 - - S - - - SL1 - - S - - - S1->SL1 - - - - - SR1 - - S - - - S1->SR1 - - - - - dot1 - - - - SL1->dot1 - - - - - dot2 - - - - SL1->dot2 - - - - - SR1->dot3 - - - - - SR1->dot4 - - - - - tri1 - - 1 - - - tri2 - - 2 - - - tri3 - - 3 - - - tri4 - - 4 - - - subscript1 - L - - - subscript2 - R - - - arrow - - - - diff --git a/api/assets/images/tree/Red-black_tree_delete_case_6.svg b/api/assets/images/tree/Red-black_tree_delete_case_6.svg deleted file mode 100644 index 24c31884..00000000 --- a/api/assets/images/tree/Red-black_tree_delete_case_6.svg +++ /dev/null @@ -1,865 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - P1 - - P - - - N - - P1->N1 - - - - - S1 - - S - - - P1->S1 - - - - - N1->dot1 - - - - - N1->dot2 - - - - - S1->SR1 - - - - - S1->dot3 - - - - - SR1->dot4 - - - - - dot5 - - - - SR1->dot5 - - - - - tri1 - - 1 - - - tri2 - - 2 - - 3 - - - dot4 - - - - - 4 - - tri5 - - 5 - - - subscript2 - R - - - arrow - - - - S2 - - S - - - P2 - - P - - - S2->P2 - - - - - - S2->SR2 - - - - - N2 - - N - - - N2->dot1b - - - - - N2->dot2b - - - - - P2->N2 - - - - - P2->dot3b - - - - - dot4b - - - - SR2->dot4b - - - - - dot5b - - - - SR2->dot5b - - - - - tri1b - - 1 - - - tri2b - - 2 - - 3 - - tri4b - - 4 - - - tri5b - - 5 - - - - dot4 - - - - - - dot4 - - - - - S - R - S - R - - diff --git a/api/assets/images/tree/Red-black_tree_example.svg b/api/assets/images/tree/Red-black_tree_example.svg deleted file mode 100644 index ae642196..00000000 --- a/api/assets/images/tree/Red-black_tree_example.svg +++ /dev/null @@ -1,812 +0,0 @@ - - - - - - - - - - - - - image/svg+xml - - - - - - - - 13 - - - - 8 - - - - 17 - - - - 1 - - - - 25 - - - - 6 - - - - 22 - - - - NIL - - - - NIL - - - - - - - - - - - - 27 - - - - NIL - - - - NIL - - - - - - - - - - - - - - - - 15 - - - - NIL - - - - NIL - - - - - - - - - - - - 11 - - - - NIL - - - - NIL - - - - NIL - - - - - - - - - - - - NIL - - - - NIL - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/api/assets/images/tree/Red-black_tree_insert_case_3.svg b/api/assets/images/tree/Red-black_tree_insert_case_3.svg deleted file mode 100644 index c3d96f50..00000000 --- a/api/assets/images/tree/Red-black_tree_insert_case_3.svg +++ /dev/null @@ -1,730 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - G1 - - G - - - G1->P1 - - - - - P1 - - P - - - G1->U1 - - - - - U1 - - U - - - P1->N1 - - - - - N - - P1->dot3 - - - - - U1->dot4 - - - - - U1->dot5 - - - - - N1->dot1 - - - - - N1->dot2 - - - - - tri1 - - 1 - - - tri2 - - 2 - - - tri3 - - 3 - - - tri4 - - 4 - - - tri5 - - 5 - - - arrow - - - - G - - G2->P2 - - - - - P2 - - P - - - G2->U2 - - - - - U2 - - U - - - P2->N2 - - - - - N2 - - N - - - P2->dot3b - - - - - U2->dot4b - - - - - U2->dot5b - - - - - N2->dot1b - - - - - N2->dot2b - - - - - tri1b - - 1 - - - tri2b - - 2 - - - tri3b - - 3 - - - tri4b - - 4 - - - tri5b - - 5 - - - diff --git a/api/assets/images/tree/Red-black_tree_insert_case_4.svg b/api/assets/images/tree/Red-black_tree_insert_case_4.svg deleted file mode 100644 index 2a4f1360..00000000 --- a/api/assets/images/tree/Red-black_tree_insert_case_4.svg +++ /dev/null @@ -1,866 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - G1 - - G - - - P1 - - P - - - G1->P1 - - - - - U1 - - U - - - G1->U1 - - - - - N - - P1->N1 - - - - - dot1 - - - - P1->dot1 - - - - - U1->dot4 - - - - - U1->dot5 - - - - - dot2 - - - - N1->dot2 - - - - - dot3 - - - - N1->dot3 - - - - - tri1 - - 1 - - - tri2 - - 2 - - - tri3 - - 3 - - - tri4 - - 4 - - - tri5 - - 5 - - - arrow - - - - G2 - - G - - - U2 - - U - - - G2->U2 - - - - - N2 - - N - - - G2->N2 - - - - - P - - dot1b - - - - P2->dot1b - - - - - dot2b - - - - P2->dot2b - - - - - U2->dot4b - - - - - U2->dot5b - - - - - N2->P2 - - - - - dot3b - - - - N2->dot3b - - - - - tri1b - - 1 - - - tri2b - - 2 - - - tri3b - - 3 - - - tri4b - - 4 - - - tri5b - - 5 - - - diff --git a/api/assets/images/tree/Red-black_tree_insert_case_5.svg b/api/assets/images/tree/Red-black_tree_insert_case_5.svg deleted file mode 100644 index 1da108ca..00000000 --- a/api/assets/images/tree/Red-black_tree_insert_case_5.svg +++ /dev/null @@ -1,873 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - G1 - - G - - - G1->P1 - - - - - P1 - - P - - - U1 - - U - - - G1->U1 - - - - - P1->N1 - - - - - N - - dot3 - - - - P1->dot3 - - - - - U1->dot4 - - - - - U1->dot5 - - - - - dot1 - - - - N1->dot1 - - - - - dot2 - - - - N1->dot2 - - - - - tri1 - - 1 - - - tri2 - - 2 - - - tri3 - - 3 - - - tri4 - - 4 - - - tri5 - - 5 - - - arrow - - - - G2 - - G - - - U2 - - U - - - G2->U2 - - - - - dot3b - - - - G2->dot3b - - - - - P2->G2 - - - - - P2 - - P - - - P2->N2 - - - - - N2 - - N - - - U2->dot4b - - - - - U2->dot5b - - - - - dot1b - - - - N2->dot1b - - - - - dot2b - - - - N2->dot2b - - - - - tri1b - - 1 - - - tri2b - - 2 - - - tri3b - - 3 - - - tri4b - - 4 - - - tri5b - - 5 - - - diff --git a/lib/typescript-stl.d.ts b/lib/typescript-stl.d.ts index a949dd0a..d05d3bc3 100644 --- a/lib/typescript-stl.d.ts +++ b/lib/typescript-stl.d.ts @@ -1,4 +1,4 @@ -// Type definitions for TypeScript-STL v1.0.0-rc.3 +// Type definitions for TypeScript-STL v1.0.0 // Project: https://github.com/samchon/typescript-stl // Definitions by: Jeongho Nam // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped @@ -117,13 +117,6 @@ declare namespace std { */ declare namespace std.base { } -/** - * Examples for supporting developers who use STL library. - * - * @author Jeongho Nam - */ -declare namespace std.example { -} declare namespace std { /** *

Apply function to range.

@@ -2751,8 +2744,8 @@ declare namespace std.base { /** *

An abstract container.

* - *

- * + *

+ * *

* *

Container properties

@@ -2872,8 +2865,8 @@ declare namespace std { *

There is not a single type of {@link Iterator bidirectional iterator}: {@link IContainer Each container} * may define its own specific iterator type able to iterate through it and access its elements.

* - *

- * + *

+ * *

* * @reference http://www.cplusplus.com/reference/iterator/BidirectionalIterator @@ -2958,8 +2951,8 @@ declare namespace std { * first element in a range is reversed, the reversed iterator points to the element before the first element (this * would be the past-the-end element of the reversed range).

* - *

- * + *

+ * *

* * @reference http://www.cplusplus.com/reference/iterator/reverse_iterator @@ -3194,8 +3187,8 @@ declare namespace std { * the end, {@link Deque Deques} perform worse and have less consistent iterators and references than * {@link List Lists}.

* - *

- * + *

+ * *

* *

Container properties

@@ -3217,66 +3210,27 @@ declare namespace std { */ class Deque extends base.Container implements base.IArrayContainer, base.IDequeContainer { /** - *

Row size of the {@link matrix_ matrix} which contains elements.

- * - *

Note that the {@link ROW} affects on time complexity of accessing and inserting element. - * Accessing element is {@link ROW} times slower than ordinary {@link Vector} and inserting element - * in middle position is {@link ROW} times faster than ordinary {@link Vector}.

- * - *

When the {@link ROW} returns 8, time complexity of accessing element is O(8) and inserting - * element in middle position is O(N/8). ({@link Vector}'s time complexity of accessement is O(1) - * and inserting element is O(N)).

+ * @hidden */ private static ROW; /** - *

Minimum {@link capacity}.

- * - *

Although a {@link Deque} has few elements, even no element is belonged to, the {@link Deque} - * keeps the minimum {@link capacity} at least.

+ * @hidden */ private static MIN_CAPACITY; /** - *

A matrix containing elements.

- * - *

This {@link matrix_} is the biggest difference one between {@link Vector} and {@link Deque}. - * Its number of rows follows {@link ROW} and number of columns follows {@link get_col_size} which - * returns divide of {@link capacity} and {@link ROW}.

- * - * By separating segment of elements (segment: row, elements in a segment: col), {@link Deque} takes - * advantage of time complexity on inserting element in middle position. {@link Deque} is {@link ROW} - * times faster than {@link Vector} when inserting elements in middle position.

- * - *

However, separating segment of elements from matrix, {@link Deque} also takes disadvantage of - * time complexity on accessing element. {@link Deque} is {@link ROW} times slower than {@link Vector} - * when accessing element.

+ * @hidden */ private matrix_; /** - * Number of elements in the {@link Deque}. + * @hidden */ private size_; /** - *

Size of allocated storage capacity.

- * - *

The {@link capacity_ capacity} is size of the storage space currently allocated for the - * {@link Deque container}, expressed in terms of elements.

- * - *

This {@link capacity_ capacity} is not necessarily equal to the {@link Deque container} - * {@link size}. It can be equal or greater, with the extra space allowing to accommodate for growth - * without the need to reallocate on each insertion.

- * - *

Notice that this {@link capacity_ capacity} does not suppose a limit on the {@link size} of - * the {@link Deque container}. When this {@link capacity} is exhausted and more is needed, it is - * automatically expanded by the {@link Deque container} (reallocating it storage space). - * The theoretical limit on the {@link size} of a {@link Deque container} is given by member - * {@link max_size}.

- * - *

The {@link capacity_ capacity} of a {@link Deque container} can be explicitly altered by - * calling member {@link Deque.reserve}.

+ * @hidden */ private capacity_; /** - * Get column size; {@link capacity_ capacity} / {@link ROW row}. + * @hidden */ private get_col_size(); /** @@ -3480,8 +3434,8 @@ declare namespace std { /** *

An iterator of {@link Deque}.

* - *

- * + *

+ * *

* * @author Jeongho Nam @@ -3552,8 +3506,8 @@ declare namespace std { /** *

A reverse-iterator of Deque.

* - *

- * + *

+ * *

* * @param Type of the elements. @@ -3629,8 +3583,8 @@ declare namespace std { *

All objects thrown by components of the standard library are derived from this class. * Therefore, all standard exceptions can be caught by catching this type by reference.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/exception/exception * @author Jeongho Nam @@ -3678,8 +3632,8 @@ declare namespace std { * *

It is used as a base class for several logical error exceptions.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/logic_error * @author Jeongho Nam @@ -3704,8 +3658,8 @@ declare namespace std { *

No component of the standard library throws exceptions of this type. It is designed as a standard * exception to be thrown by programs.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/domain_error * @author Jeongho Nam @@ -3726,8 +3680,8 @@ declare namespace std { *

It is a standard exception that can be thrown by programs. Some components of the standard library * also throw exceptions of this type to signal invalid arguments.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/invalid_argument * @author Jeongho Nam @@ -3748,8 +3702,8 @@ declare namespace std { *

It is a standard exception that can be thrown by programs. Some components of the standard library, * such as vector and string also throw exceptions of this type to signal errors resizing.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/length_error * @author Jeongho Nam @@ -3771,8 +3725,8 @@ declare namespace std { * such as vector, deque, string and bitset also throw exceptions of this type to signal arguments * out of range.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/out_of_range * @author Jeongho Nam @@ -3793,8 +3747,8 @@ declare namespace std { * *

It is used as a base class for several runtime error exceptions.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/runtime_error * @author Jeongho Nam @@ -3815,8 +3769,8 @@ declare namespace std { *

It is a standard exception that can be thrown by programs. Some components of the standard library * also throw exceptions of this type to signal range errors.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/overflow_error * @author Jeongho Nam @@ -3837,8 +3791,8 @@ declare namespace std { *

No component of the standard library throws exceptions of this type. It is designed as a standard * exception to be thrown by programs.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/underflow_error * @author Jeongho Nam @@ -3860,8 +3814,8 @@ declare namespace std { *

It is a standard exception that can be thrown by programs. Some components of the standard library * also throw exceptions of this type to signal range errors.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/range_error * @author Jeongho Nam @@ -4422,8 +4376,8 @@ declare namespace std.base { * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -4820,8 +4774,8 @@ declare namespace std { /** *

An iterator of {@link MapContainer map container}.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ @@ -4891,8 +4845,8 @@ declare namespace std { /** *

A reverse-iterator of {@link MapContainer map container}.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ @@ -4931,8 +4885,8 @@ declare namespace std.base { * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -5198,8 +5152,8 @@ declare namespace std.base { * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -5311,8 +5265,8 @@ declare namespace std { *

{@link HashMap} containers are faster than {@link TreeMap} containers to access individual elements by their * key, although they are generally less efficient for range iteration through a subset of their elements.

* - *

- * + *

+ * *

* *

Container properties

@@ -5342,6 +5296,9 @@ declare namespace std { * @author Jeongho Nam */ class HashMap extends base.UniqueMap implements base.IHashMap { + /** + * @hidden + */ private hash_buckets_; /** * @hidden @@ -5473,8 +5430,8 @@ declare namespace std { *

Elements with equivalent keys are grouped together in the same bucket and in such a way that * an iterator can iterate through all of them. Iterators in the container are doubly linked iterators.

* - *

- * + *

+ * *

* *

Container properties

@@ -5505,7 +5462,7 @@ declare namespace std { */ class HashMultiMap extends base.MultiMap { /** - * + * @hidden */ private hash_buckets_; /** @@ -5633,8 +5590,8 @@ declare namespace std.base { * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -5910,8 +5867,8 @@ declare namespace std { /** *

An iterator of a Set.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ @@ -5969,8 +5926,8 @@ declare namespace std { /** *

A reverse-iterator of Set.

* - *

- *

+ *

+ *

* * @param Type of the elements. * @@ -5984,131 +5941,6 @@ declare namespace std { protected create_neighbor(): SetReverseIterator; } } -declare namespace std.base { - /** - *

An abstract set.

- * - *

{@link SetContainer SetContainers} are containers that store elements allowing fast retrieval of - * individual elements based on their value.

- * - *

In an {@link SetContainer}, the value of an element is at the same time its key, used to uniquely - * identify it. Keys are immutable, therefore, the elements in an {@link SetContainer} cannot be modified - * once in the container - they can be inserted and removed, though.

- * - *

{@link SetContainer} stores elements, keeps sequence and enables indexing by inserting elements into a - * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index - * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

- * - *

- *

- * - *

Container properties

- *
- *
Associative
- *
- * Elements in associative containers are referenced by their key and not by their absolute - * position in the container. - *
- * - *
Set
- *
The value of an element is also the key used to identify it.
- * - *
Unique keys
- *
No two elements in the container can have equivalent keys.
- *
- * - * @param Type of the elements. Each element in a {@link SetContainer} container is also identified - * by this value (each value is itself also the element's key). - * - * @author Jeongho Nam - */ - abstract class UniqueSet extends SetContainer { - /** - * @inheritdoc - */ - count(key: T): number; - /** - *

Extract an element.

- * - *

Extracts the element pointed to by val and erases it from the {@link UniqueSet}.

- * - * @param val Value to be extracted. - * - * @return A value. - */ - extract(val: T): T; - /** - *

Extract an element.

- * - *

Extracts the element pointed to by key and erases it from the {@link UniqueMap}.

- * - * @param it An iterator pointing an element to extract. - * - * @return An iterator pointing to the element immediately following it prior to the element being - * erased. If no such element exists,returns {@link end end()}. - */ - extract(it: SetIterator): SetIterator; - /** - *

Extract an element.

- * - *

Extracts the element pointed to by key and erases it from the {@link UniqueMap}.

- * - * @param it An iterator pointing an element to extract. - * - * @return An iterator pointing to the element immediately following it prior to the element being - * erased. If no such element exists,returns {@link end end()}. - */ - extract(it: SetReverseIterator): SetReverseIterator; - /** - * @hidden - */ - private extract_by_key(val); - /** - * @hidden - */ - private extract_by_iterator(it); - /** - * @hidden - */ - private extract_by_reverse_iterator(it); - /** - *

Insert an element.

- * - *

Extends the container by inserting new elements, effectively increasing the container {@link size} by - * the number of element inserted (zero or one).

- * - *

Because elements in a {@link UniqueSet UniqueSets} are unique, the insertion operation checks whether - * each inserted element is equivalent to an element already in the container, and if so, the element is not - * inserted, returning an iterator to this existing element (if the function returns a value).

- * - *

For a similar container allowing for duplicate elements, see {@link MultiSet}.

- * - * @param key Value to be inserted as an element. - * - * @return A {@link Pair}, with its member {@link Pair.first} set to an iterator pointing to either the newly - * inserted element or to the equivalent element already in the {@link UniqueSet}. The - * {@link Pair.second} element in the {@link Pair} is set to true if a new element was inserted or - * false if an equivalent element already existed. - */ - insert(val: T): Pair, boolean>; - /** - * @inheritdoc - */ - insert(hint: SetIterator, val: T): SetIterator; - /** - * @inheritdoc - */ - insert(hint: SetReverseIterator, val: T): SetReverseIterator; - /** - * @inheritdoc - */ - insert>(begin: InputIterator, end: InputIterator): void; - /** - * @inheritdoc - */ - swap(obj: UniqueSet): void; - } -} declare namespace std.base { /** *

An abstract set.

@@ -6124,8 +5956,8 @@ declare namespace std.base { * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -6177,31 +6009,31 @@ declare namespace std.base { swap(obj: MultiSet): void; } } -declare namespace std.HashSet { +declare namespace std.HashMultiSet { type iterator = std.SetIterator; type reverse_iterator = std.SetReverseIterator; } declare namespace std { /** - *

Hashed, unordered set.

+ *

Hashed, unordered Multiset.

* - *

{@link HashSet}s are containers that store unique elements in no particular order, and which - * allow for fast retrieval of individual elements based on their value.

+ *

{@link HashMultiSet HashMultiSets} are containers that store elements in no particular order, allowing fast + * retrieval of individual elements based on their value, much like {@link HashSet} containers, + * but allowing different elements to have equivalent values.

* - *

In an {@link HashSet}, the value of an element is at the same time its key, that - * identifies it uniquely. Keys are immutable, therefore, the elements in an {@link HashSet} cannot be + *

In an {@link HashMultiSet}, the value of an element is at the same time its key, used to + * identify it. Keys are immutable, therefore, the elements in an {@link HashMultiSet} cannot be * modified once in the container - they can be inserted and removed, though.

* - *

Internally, the elements in the {@link HashSet} are not sorted in any particular order, but - * organized into buckets depending on their hash values to allow for fast access to individual elements - * directly by their values (with a constant average time complexity on average).

+ *

Internally, the elements in the {@link HashMultiSet} are not sorted in any particular, but + * organized into buckets depending on their hash values to allow for fast access to individual + * elements directly by their values (with a constant average time complexity on average).

* - *

{@link HashSet} containers are faster than {@link TreeSet} containers to access individual - * elements by their key, although they are generally less efficient for range iteration through a - * subset of their elements.

+ *

Elements with equivalent values are grouped together in the same bucket and in such a way that an + * iterator can iterate through all of them. Iterators in the container are doubly linked iterators.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -6216,17 +6048,20 @@ declare namespace std { *
Set
*
The value of an element is also the key used to identify it.
* - *
Unique keys
- *
No two elements in the container can have equivalent keys.
+ *
Multiple equivalent keys
+ *
The container can hold multiple elements with equivalent keys.
*
* * @param Type of the elements. - * Each element in an {@link HashSet} is also uniquely identified by this value. + * Each element in an {@link UnorderedMultiSet} is also identified by this value.. * - * @reference http://www.cplusplus.com/reference/unordered_set/unordered_set + * @reference http://www.cplusplus.com/reference/unordered_set/unordered_multiset * @author Jeongho Nam */ - class HashSet extends base.UniqueSet { + class HashMultiSet extends base.MultiSet { + /** + * @hidden + */ private hash_buckets_; /** * @hidden @@ -6244,6 +6079,10 @@ declare namespace std { * @inheritdoc */ find(key: T): SetIterator; + /** + * @inheritdoc + */ + count(key: T): number; /** * @inheritdoc */ @@ -6327,38 +6166,163 @@ declare namespace std { /** * @inheritdoc */ - swap(obj: base.UniqueSet): void; + swap(obj: base.MultiSet): void; /** * @hidden */ private swap_tree_set(obj); } } -declare namespace std.HashMultiSet { +declare namespace std.base { + /** + *

An abstract set.

+ * + *

{@link SetContainer SetContainers} are containers that store elements allowing fast retrieval of + * individual elements based on their value.

+ * + *

In an {@link SetContainer}, the value of an element is at the same time its key, used to uniquely + * identify it. Keys are immutable, therefore, the elements in an {@link SetContainer} cannot be modified + * once in the container - they can be inserted and removed, though.

+ * + *

{@link SetContainer} stores elements, keeps sequence and enables indexing by inserting elements into a + * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index + * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

+ * + *

+ *

+ * + *

Container properties

+ *
+ *
Associative
+ *
+ * Elements in associative containers are referenced by their key and not by their absolute + * position in the container. + *
+ * + *
Set
+ *
The value of an element is also the key used to identify it.
+ * + *
Unique keys
+ *
No two elements in the container can have equivalent keys.
+ *
+ * + * @param Type of the elements. Each element in a {@link SetContainer} container is also identified + * by this value (each value is itself also the element's key). + * + * @author Jeongho Nam + */ + abstract class UniqueSet extends SetContainer { + /** + * @inheritdoc + */ + count(key: T): number; + /** + *

Extract an element.

+ * + *

Extracts the element pointed to by val and erases it from the {@link UniqueSet}.

+ * + * @param val Value to be extracted. + * + * @return A value. + */ + extract(val: T): T; + /** + *

Extract an element.

+ * + *

Extracts the element pointed to by key and erases it from the {@link UniqueMap}.

+ * + * @param it An iterator pointing an element to extract. + * + * @return An iterator pointing to the element immediately following it prior to the element being + * erased. If no such element exists,returns {@link end end()}. + */ + extract(it: SetIterator): SetIterator; + /** + *

Extract an element.

+ * + *

Extracts the element pointed to by key and erases it from the {@link UniqueMap}.

+ * + * @param it An iterator pointing an element to extract. + * + * @return An iterator pointing to the element immediately following it prior to the element being + * erased. If no such element exists,returns {@link end end()}. + */ + extract(it: SetReverseIterator): SetReverseIterator; + /** + * @hidden + */ + private extract_by_key(val); + /** + * @hidden + */ + private extract_by_iterator(it); + /** + * @hidden + */ + private extract_by_reverse_iterator(it); + /** + *

Insert an element.

+ * + *

Extends the container by inserting new elements, effectively increasing the container {@link size} by + * the number of element inserted (zero or one).

+ * + *

Because elements in a {@link UniqueSet UniqueSets} are unique, the insertion operation checks whether + * each inserted element is equivalent to an element already in the container, and if so, the element is not + * inserted, returning an iterator to this existing element (if the function returns a value).

+ * + *

For a similar container allowing for duplicate elements, see {@link MultiSet}.

+ * + * @param key Value to be inserted as an element. + * + * @return A {@link Pair}, with its member {@link Pair.first} set to an iterator pointing to either the newly + * inserted element or to the equivalent element already in the {@link UniqueSet}. The + * {@link Pair.second} element in the {@link Pair} is set to true if a new element was inserted or + * false if an equivalent element already existed. + */ + insert(val: T): Pair, boolean>; + /** + * @inheritdoc + */ + insert(hint: SetIterator, val: T): SetIterator; + /** + * @inheritdoc + */ + insert(hint: SetReverseIterator, val: T): SetReverseIterator; + /** + * @inheritdoc + */ + insert>(begin: InputIterator, end: InputIterator): void; + /** + * @inheritdoc + */ + swap(obj: UniqueSet): void; + } +} +declare namespace std.HashSet { type iterator = std.SetIterator; type reverse_iterator = std.SetReverseIterator; } declare namespace std { /** - *

Hashed, unordered Multiset.

+ *

Hashed, unordered set.

* - *

{@link HashMultiSet HashMultiSets} are containers that store elements in no particular order, allowing fast - * retrieval of individual elements based on their value, much like {@link HashSet} containers, - * but allowing different elements to have equivalent values.

+ *

{@link HashSet}s are containers that store unique elements in no particular order, and which + * allow for fast retrieval of individual elements based on their value.

* - *

In an {@link HashMultiSet}, the value of an element is at the same time its key, used to - * identify it. Keys are immutable, therefore, the elements in an {@link HashMultiSet} cannot be + *

In an {@link HashSet}, the value of an element is at the same time its key, that + * identifies it uniquely. Keys are immutable, therefore, the elements in an {@link HashSet} cannot be * modified once in the container - they can be inserted and removed, though.

* - *

Internally, the elements in the {@link HashMultiSet} are not sorted in any particular, but - * organized into buckets depending on their hash values to allow for fast access to individual - * elements directly by their values (with a constant average time complexity on average).

+ *

Internally, the elements in the {@link HashSet} are not sorted in any particular order, but + * organized into buckets depending on their hash values to allow for fast access to individual elements + * directly by their values (with a constant average time complexity on average).

* - *

Elements with equivalent values are grouped together in the same bucket and in such a way that an - * iterator can iterate through all of them. Iterators in the container are doubly linked iterators.

+ *

{@link HashSet} containers are faster than {@link TreeSet} containers to access individual + * elements by their key, although they are generally less efficient for range iteration through a + * subset of their elements.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -6373,17 +6337,20 @@ declare namespace std { *
Set
*
The value of an element is also the key used to identify it.
* - *
Multiple equivalent keys
- *
The container can hold multiple elements with equivalent keys.
+ *
Unique keys
+ *
No two elements in the container can have equivalent keys.
*
* * @param Type of the elements. - * Each element in an {@link UnorderedMultiSet} is also identified by this value.. + * Each element in an {@link HashSet} is also uniquely identified by this value. * - * @reference http://www.cplusplus.com/reference/unordered_set/unordered_multiset + * @reference http://www.cplusplus.com/reference/unordered_set/unordered_set * @author Jeongho Nam */ - class HashMultiSet extends base.MultiSet { + class HashSet extends base.UniqueSet { + /** + * @hidden + */ private hash_buckets_; /** * @hidden @@ -6401,10 +6368,6 @@ declare namespace std { * @inheritdoc */ find(key: T): SetIterator; - /** - * @inheritdoc - */ - count(key: T): number; /** * @inheritdoc */ @@ -6488,7 +6451,7 @@ declare namespace std { /** * @inheritdoc */ - swap(obj: base.MultiSet): void; + swap(obj: base.UniqueSet): void; /** * @hidden */ @@ -6523,8 +6486,8 @@ declare namespace std { * distance between these. They also consume some extra memory to keep the linking information associated to each * element (which may be an important factor for large lists of small-sized elements).

* - *

- * + *

+ * *

* *

Container properties

@@ -6546,15 +6509,15 @@ declare namespace std { */ class List extends base.Container implements base.IDequeContainer { /** - * An iterator of beginning. + * @hidden */ protected begin_: ListIterator; /** - * An iterator of end. + * @hidden */ protected end_: ListIterator; /** - * Number of elements in the {@link List}. + * @hidden */ protected size_: number; /** @@ -7096,8 +7059,8 @@ declare namespace std { /** *

An iterator, node of a List.

* - *

- * + *

+ * *

* * @author Jeongho Nam @@ -7158,8 +7121,8 @@ declare namespace std { /** *

A reverse-iterator of List.

* - *

- * + *

+ * *

* * @param Type of the elements. @@ -7208,8 +7171,8 @@ declare namespace std { * By default, if no container class is specified for a particular {@link Queue} class instantiation, the standard * container {@link List} is used.

* - *

- * + *

+ * *

* * @param Type of elements. @@ -7540,8 +7503,8 @@ declare namespace std { * By default, if no container class is specified for a particular {@link Stack} class instantiation, the standard * container {@link List} is used.

* - *

- * + *

+ * *

* * @param Type of elements. @@ -7651,18 +7614,18 @@ declare namespace std.base { * so that they can be interpreted when needed as more abstract (and portable) * {@link ErrorCondition error conditions}.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ abstract class ErrorInstance { /** - * A reference to an {@link ErrorCategory} object. + * @hidden */ protected category_: ErrorCategory; /** - * A numerical value identifying an error instance. + * @hidden */ protected value_: number; /** @@ -7761,15 +7724,15 @@ declare namespace std { *

The class inherits from {@link RuntimeError}, to which it adds an {@link ErrorCode} as * member code (and defines a specialized what member).

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/system_error/system_error * @author Jeongho Nam */ class SystemError extends RuntimeError { /** - * Error code. + * @hidden */ protected code_: ErrorCode; /** @@ -7827,8 +7790,8 @@ declare namespace std { * passed by reference. As such, only one object of each of these types shall exist, each uniquely identifying its own * category: all error codes and conditions of a same category shall return a reference to same object.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/system_error/error_category * @author Jeongho Nam @@ -7955,8 +7918,8 @@ declare namespace std { *

The {@link ErrorCategory categories} associated with the {@link ErrorCondition} and the * {@link ErrorCode} define the equivalences between them.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/system_error/error_condition * @author Jeongho Nam @@ -7988,8 +7951,8 @@ declare namespace std { *

Objects of this class associate such numerical codes to {@link ErrorCategory error categories}, so that they * can be interpreted when needed as more abstract (and portable) {@link ErrorCondition error conditions}.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/system_error/error_code * @author Jeongho Nam @@ -8034,8 +7997,8 @@ declare namespace std { * *

{@link TreeMap}s are typically implemented as binary search trees.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -8063,7 +8026,7 @@ declare namespace std { */ class TreeMap extends base.UniqueMap implements base.ITreeMap { /** - * RB-Tree+ object for implemeting the {@link TreeMap}. + * @hidden */ private tree_; /** @@ -8216,8 +8179,8 @@ declare namespace std { * *

{@link TreeMultiMap TreeMultiMaps} are typically implemented as binary search trees.

* - *

< - * img src="http://samchon.github.io/typescript-stl/api/assets/images/design/map_containers.png" style="max-width: 100%" />

+ *

< + * img src="http://samchon.github.io/typescript-stl/images/design/class_diagram/map_containers.png" style="max-width: 100%" />

* *

Container properties

*
@@ -8250,6 +8213,9 @@ declare namespace std { * @author Jeongho Nam */ class TreeMultiMap extends base.MultiMap implements base.ITreeMap { + /** + * @hidden + */ private tree_; /** * Default Constructor. @@ -8377,32 +8343,33 @@ declare namespace std { private swap_tree_multimap(obj); } } -declare namespace std.TreeSet { +declare namespace std.TreeMultiSet { type iterator = std.SetIterator; type reverse_iterator = std.SetReverseIterator; } declare namespace std { /** - *

Tree-structured set, std::set of STL.

+ *

Tree-structured multiple-key set.

* - *

{@link TreeSet}s are containers that store unique elements following a specific order.

+ *

{@link TreeMultiSet TreeMultiSets} are containers that store elements following a specific order, and + * where multiple elements can have equivalent values.

* - *

In a {@link TreeSet}, the value of an element also identifies it (the value is itself the - * key, of type T), and each value must be unique. The value of the elements in a - * {@link TreeSet} cannot be modified once in the container (the elements are always const), but they - * can be inserted or removed from the

+ *

In a {@link TreeMultiSet}, the value of an element also identifies it (the value is itself + * the key, of type T). The value of the elements in a {@link TreeMultiSet} cannot + * be modified once in the container (the elements are always const), but they can be inserted or removed + * from the

* - *

Internally, the elements in a {@link TreeSet} are always sorted following a specific strict weak - * ordering criterion indicated by its internal comparison method (of {@link less}).

+ *

Internally, the elements in a {@link TreeMultiSet TreeMultiSets} are always sorted following a strict + * weak ordering criterion indicated by its internal comparison method (of {@link IComparable.less less}).

* - *

{@link TreeSet} containers are generally slower than {@link HashSet} containers to access - * individual elements by their key, but they allow the direct iteration on subsets based on their - * order.

+ *

{@link TreeMultiSet} containers are generally slower than {@link HashMultiSet} containers + * to access individual elements by their key, but they allow the direct iteration on subsets based on + * their order.

* - *

{@link TreeSet}s are typically implemented as binary search trees.

+ *

{@link TreeMultiSet TreeMultiSets} are typically implemented as binary search trees.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -8421,19 +8388,19 @@ declare namespace std { *
Set
*
The value of an element is also the key used to identify it.
* - *
Unique keys
- *
No two elements in the container can have equivalent keys.
+ *
Multiple equivalent keys
+ *
Multiple elements in the container can have equivalent keys.
*
* - * @param Type of the elements. - * Each element in an {@link TreeSet} is also uniquely identified by this value. + * @param Type of the elements. Each element in a {@link TreeMultiSet} container is also identified + * by this value (each value is itself also the element's key). * - * @reference http://www.cplusplus.com/reference/set/set + * @reference http://www.cplusplus.com/reference/set/multiset * @author Jeongho Nam */ - class TreeSet extends base.UniqueSet implements base.ITreeSet { + class TreeMultiSet extends base.MultiSet implements base.ITreeSet { /** - * RB-Tree+ object for implemeting the {@link TreeSet}. + * @hidden */ private tree_; /** @@ -8462,14 +8429,14 @@ declare namespace std { /** * Copy Constructor. */ - constructor(container: base.IContainer); + constructor(container: base.Container); /** * Copy Constructor with compare. * * @param container A container to be copied. * @param compare A binary predicate determines order of elements. */ - constructor(container: base.IContainer, compare: (x: T, y: T) => boolean); + constructor(container: base.Container, compare: (x: T, y: T) => boolean); /** * Range Constructor. * @@ -8478,7 +8445,7 @@ declare namespace std { */ constructor(begin: Iterator, end: Iterator); /** - * Range Constructor with compare. + * Construct from range and compare. * * @param begin Input interator of the initial position in a sequence. * @param end Input interator of the final position in a sequence. @@ -8493,6 +8460,10 @@ declare namespace std { * @inheritdoc */ find(val: T): SetIterator; + /** + * @inheritdoc + */ + count(val: T): number; /** * @inheritdoc */ @@ -8517,6 +8488,9 @@ declare namespace std { * @hidden */ protected insert_by_val(val: T): any; + /** + * @hidden + */ protected insert_by_hint(hint: SetIterator, val: T): SetIterator; /** * @hidden @@ -8533,40 +8507,39 @@ declare namespace std { /** * @inheritdoc */ - swap(obj: base.UniqueSet): void; + swap(obj: base.MultiSet): void; /** * @hidden */ private swap_tree_set(obj); } } -declare namespace std.TreeMultiSet { +declare namespace std.TreeSet { type iterator = std.SetIterator; type reverse_iterator = std.SetReverseIterator; } declare namespace std { /** - *

Tree-structured multiple-key set.

+ *

Tree-structured set, std::set of STL.

* - *

{@link TreeMultiSet TreeMultiSets} are containers that store elements following a specific order, and - * where multiple elements can have equivalent values.

+ *

{@link TreeSet}s are containers that store unique elements following a specific order.

* - *

In a {@link TreeMultiSet}, the value of an element also identifies it (the value is itself - * the key, of type T). The value of the elements in a {@link TreeMultiSet} cannot - * be modified once in the container (the elements are always const), but they can be inserted or removed - * from the

+ *

In a {@link TreeSet}, the value of an element also identifies it (the value is itself the + * key, of type T), and each value must be unique. The value of the elements in a + * {@link TreeSet} cannot be modified once in the container (the elements are always const), but they + * can be inserted or removed from the

* - *

Internally, the elements in a {@link TreeMultiSet TreeMultiSets} are always sorted following a strict - * weak ordering criterion indicated by its internal comparison method (of {@link IComparable.less less}).

+ *

Internally, the elements in a {@link TreeSet} are always sorted following a specific strict weak + * ordering criterion indicated by its internal comparison method (of {@link less}).

* - *

{@link TreeMultiSet} containers are generally slower than {@link HashMultiSet} containers - * to access individual elements by their key, but they allow the direct iteration on subsets based on - * their order.

+ *

{@link TreeSet} containers are generally slower than {@link HashSet} containers to access + * individual elements by their key, but they allow the direct iteration on subsets based on their + * order.

* - *

{@link TreeMultiSet TreeMultiSets} are typically implemented as binary search trees.

+ *

{@link TreeSet}s are typically implemented as binary search trees.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -8585,19 +8558,19 @@ declare namespace std { *
Set
*
The value of an element is also the key used to identify it.
* - *
Multiple equivalent keys
- *
Multiple elements in the container can have equivalent keys.
+ *
Unique keys
+ *
No two elements in the container can have equivalent keys.
*
* - * @param Type of the elements. Each element in a {@link TreeMultiSet} container is also identified - * by this value (each value is itself also the element's key). + * @param Type of the elements. + * Each element in an {@link TreeSet} is also uniquely identified by this value. * - * @reference http://www.cplusplus.com/reference/set/multiset + * @reference http://www.cplusplus.com/reference/set/set * @author Jeongho Nam */ - class TreeMultiSet extends base.MultiSet implements base.ITreeSet { + class TreeSet extends base.UniqueSet implements base.ITreeSet { /** - * RB-Tree+ object for implemeting the {@link TreeMultiSet}. + * @hidden */ private tree_; /** @@ -8626,14 +8599,14 @@ declare namespace std { /** * Copy Constructor. */ - constructor(container: base.Container); + constructor(container: base.IContainer); /** * Copy Constructor with compare. * * @param container A container to be copied. * @param compare A binary predicate determines order of elements. */ - constructor(container: base.Container, compare: (x: T, y: T) => boolean); + constructor(container: base.IContainer, compare: (x: T, y: T) => boolean); /** * Range Constructor. * @@ -8642,7 +8615,7 @@ declare namespace std { */ constructor(begin: Iterator, end: Iterator); /** - * Construct from range and compare. + * Range Constructor with compare. * * @param begin Input interator of the initial position in a sequence. * @param end Input interator of the final position in a sequence. @@ -8657,10 +8630,6 @@ declare namespace std { * @inheritdoc */ find(val: T): SetIterator; - /** - * @inheritdoc - */ - count(val: T): number; /** * @inheritdoc */ @@ -8685,9 +8654,6 @@ declare namespace std { * @hidden */ protected insert_by_val(val: T): any; - /** - * @hidden - */ protected insert_by_hint(hint: SetIterator, val: T): SetIterator; /** * @hidden @@ -8704,7 +8670,7 @@ declare namespace std { /** * @inheritdoc */ - swap(obj: base.MultiSet): void; + swap(obj: base.UniqueSet): void; /** * @hidden */ @@ -8818,8 +8784,8 @@ declare namespace std { * end, they perform worse than the others, and have less consistent iterators and references than {@link List}s. *

* - *

- * + *

+ * *

* *

Container properties

@@ -9200,8 +9166,8 @@ declare namespace std { /** *

An iterator of Vector.

* - *

- * + *

+ * *

* * @param Type of the elements. @@ -9277,8 +9243,8 @@ declare namespace std { /** *

A reverse-iterator of Vector.

* - *

- * + *

+ * *

* * @param Type of the elements. @@ -9353,7 +9319,13 @@ declare namespace std.base { * @author Jeongho Nam */ class HashBuckets { + /** + * @hidden + */ private buckets_; + /** + * @hidden + */ private item_size_; /** * Default Constructor. @@ -9400,8 +9372,8 @@ declare namespace std.base { *

Elements with equivalent keys are grouped together in the same bucket and in such a way that * an iterator can iterate through all of them. Iterators in the container are doubly linked iterators.

* - *

- * + *

+ * *

* *

Container properties

@@ -9696,8 +9668,8 @@ declare namespace std.base { /** *

Hash buckets storing {@link MapIterator MapIterators}.

* - *

- * + *

+ * *

* * @author Jeongho Nam @@ -9727,8 +9699,8 @@ declare namespace std.base { * elements by their key, although they are generally less efficient for range iteration through a * subset of their elements.

* - *

- * + *

+ * *

* *

Container properties

@@ -9951,8 +9923,8 @@ declare namespace std.base { /** *

Hash buckets storing {@link SetIterator SetIterators}.

* - *

- * + *

+ * *

* * @author Jeongho Nam @@ -9993,8 +9965,8 @@ declare namespace std.base { * beginning or the end, {@link IArray} objects perform worse and have less consistent iterators and references * than {@link List Lists}

. * - *

- * + *

+ * *

* *

Container properties

@@ -10107,8 +10079,8 @@ declare namespace std.base { *

There is not a single type of {@link IArrayIterator random-access iterator}: Each container may define its * own specific iterator type able to iterate through it and access its elements.

* - *

- * + *

+ * *

* * @reference http://www.cplusplus.com/reference/iterator/RandomAccessIterator @@ -10138,8 +10110,8 @@ declare namespace std.base { *

{@link IContainer} is an interface designed for sequence containers. Sequence containers of STL * (Standard Template Library) are based on the {@link IContainer}.

* - *

- * + *

+ * *

* *

Container properties

@@ -10330,8 +10302,8 @@ declare namespace std.base { /** *

An interface for deque

* - *

- * + *

+ * *

* * @author Jeongho Nam @@ -10360,8 +10332,8 @@ declare namespace std.base { /** *

An interface for linear containers.

* - *

- * + *

+ * *

* * @author Jeonngho Nam @@ -10522,7 +10494,7 @@ declare namespace std.base { * * * - *

* *

These constraints enforce a critical property of red-black trees: the path from the root to the farthest @@ -10717,7 +10689,7 @@ declare namespace std.base { * the only loop, and any rotations occur after this loop, this proves that a constant number of rotations * occur.

* - *

* * @param N A node to be inserted or swapped. @@ -10751,7 +10723,7 @@ declare namespace std.base { * node are black) is still violated, but now we can resolve this by * continuing to case 5.

* - *

* * @param N A node to be inserted or swapped. @@ -10782,7 +10754,7 @@ declare namespace std.base { * through {@link XTreeNode.parent P}. In each case, this is the only * black node of the three.

* - *

* * @param N A node to be inserted or swapped. @@ -10936,7 +10908,7 @@ declare namespace std.base { /** *

{@link XTreeNode.sibling S} is red.

* - *

* *

In this case we reverse the colors of {@link XTreeNode.parent P} and @@ -10958,7 +10930,7 @@ declare namespace std.base { *

{@link XTreeNode.parent P}, {@link XTreeNode.sibling S}, and {@link XTreeNode.sibling * S}'s children are black.

* - *

* *

In this case, we simply repaint {@link XTreeNode.sibling S} red. The @@ -10982,7 +10954,7 @@ declare namespace std.base { *

{@link XTreeNode.sibling S} and {@link XTreeNode.sibling S}'s children are * black, but {@link XTreeNode.parent P} is red.

* - *

* *

In this case, we simply exchange the colors of {@link XTreeNode.sibling S} and @@ -10999,7 +10971,7 @@ declare namespace std.base { * left child is red, {@link XTreeNode.sibling S}'s right child is * black, and N is the left child of its parent.

* - *

* *

In this case we rotate right at {@link XTreeNode.sibling S}, so that @@ -11038,7 +11010,7 @@ declare namespace std.base { *

Thus, the paths passing through N pass through one additional * black node.

* - *

* *

Meanwhile, if a path does not go through N, then there are two possibilities:

@@ -11122,8 +11094,8 @@ declare namespace std.base { * *

{@link ITreeMap TreeMultiMaps} are typically implemented as binary search trees.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -11257,13 +11229,19 @@ declare namespace std.base { /** *

A red-black tree storing {@link MapIterator MapIterators}.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ class PairTree extends XTree> { + /** + * @hidden + */ private map_; + /** + * @hidden + */ private compare_; /** * Default Constructor. @@ -11409,8 +11387,8 @@ declare namespace std.base { * *

{@link ITreeSet TreeMultiSets} are typically implemented as binary search trees.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -11551,13 +11529,19 @@ declare namespace std.base { /** *

A red-black Tree storing {@link SetIterator SetIterators}.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ class AtomicTree extends XTree> { + /** + * @hidden + */ private set_; + /** + * @hidden + */ private compare_; /** * Default Constructor. @@ -11738,30 +11722,3 @@ declare namespace std.base { uncle: XTreeNode; } } -declare namespace std.example { - function test_all(): void; -} -declare namespace std.example { - function test_anything(): void; -} -declare namespace std.example { - function test_bind(): void; -} -declare namespace std.example { - function test_deque(): void; -} -declare namespace std.example { - function test_for_each(): void; -} -declare namespace std.example { - function test_hash_map(): void; -} -declare namespace std.example { - function test_list(): void; -} -declare namespace std.example { - function sorting(): void; -} -declare namespace std.example { - function tree_set(): void; -} diff --git a/lib/typescript-stl.js b/lib/typescript-stl.js index 5eca6fb2..3c603c0b 100644 --- a/lib/typescript-stl.js +++ b/lib/typescript-stl.js @@ -1857,8 +1857,8 @@ var std; /** *

An abstract container.

* - *

- * + *

+ * *

* *

Container properties

@@ -1933,8 +1933,8 @@ var std; *

There is not a single type of {@link Iterator bidirectional iterator}: {@link IContainer Each container} * may define its own specific iterator type able to iterate through it and access its elements.

* - *

- * + *

+ * *

* * @reference http://www.cplusplus.com/reference/iterator/BidirectionalIterator @@ -2039,8 +2039,8 @@ var std; * first element in a range is reversed, the reversed iterator points to the element before the first element (this * would be the past-the-end element of the reversed range).

* - *

- * + *

+ * *

* * @reference http://www.cplusplus.com/reference/iterator/reverse_iterator @@ -2244,8 +2244,8 @@ var std; * the end, {@link Deque Deques} perform worse and have less consistent iterators and references than * {@link List Lists}.

* - *

- * + *

+ * *

* *

Container properties

@@ -2293,34 +2293,39 @@ var std; } } Object.defineProperty(Deque, "ROW", { + /// + // Row size of the {@link matrix_ matrix} which contains elements. + // + // Note that the {@link ROW} affects on time complexity of accessing and inserting element. + // Accessing element is {@link ROW} times slower than ordinary {@link Vector} and inserting element + // in middle position is {@link ROW} times faster than ordinary {@link Vector}. + // + // When the {@link ROW} returns 8, time complexity of accessing element is O(8) and inserting + // element in middle position is O(N/8). ({@link Vector}'s time complexity of accessement is O(1) + // and inserting element is O(N)). /** - *

Row size of the {@link matrix_ matrix} which contains elements.

- * - *

Note that the {@link ROW} affects on time complexity of accessing and inserting element. - * Accessing element is {@link ROW} times slower than ordinary {@link Vector} and inserting element - * in middle position is {@link ROW} times faster than ordinary {@link Vector}.

- * - *

When the {@link ROW} returns 8, time complexity of accessing element is O(8) and inserting - * element in middle position is O(N/8). ({@link Vector}'s time complexity of accessement is O(1) - * and inserting element is O(N)).

+ * @hidden */ get: function () { return 8; }, enumerable: true, configurable: true }); Object.defineProperty(Deque, "MIN_CAPACITY", { + /// + // Minimum {@link capacity}. + // + // Although a {@link Deque} has few elements, even no element is belonged to, the {@link Deque} + // keeps the minimum {@link capacity} at least. /** - *

Minimum {@link capacity}.

- * - *

Although a {@link Deque} has few elements, even no element is belonged to, the {@link Deque} - * keeps the minimum {@link capacity} at least.

+ * @hidden */ get: function () { return 100; }, enumerable: true, configurable: true }); + // Get column size; {@link capacity_ capacity} / {@link ROW row}. /** - * Get column size; {@link capacity_ capacity} / {@link ROW row}. + * @hidden */ Deque.prototype.get_col_size = function () { return Math.floor(this.capacity_ / Deque.ROW); @@ -2757,8 +2762,8 @@ var std; /** *

An iterator of {@link Deque}.

* - *

- * + *

+ * *

* * @author Jeongho Nam @@ -2888,8 +2893,8 @@ var std; /** *

A reverse-iterator of Deque.

* - *

- * + *

+ * *

* * @param Type of the elements. @@ -3037,8 +3042,8 @@ var std; *

All objects thrown by components of the standard library are derived from this class. * Therefore, all standard exceptions can be caught by catching this type by reference.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/exception/exception * @author Jeongho Nam @@ -3101,8 +3106,8 @@ var std; * *

It is used as a base class for several logical error exceptions.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/logic_error * @author Jeongho Nam @@ -3132,8 +3137,8 @@ var std; *

No component of the standard library throws exceptions of this type. It is designed as a standard * exception to be thrown by programs.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/domain_error * @author Jeongho Nam @@ -3159,8 +3164,8 @@ var std; *

It is a standard exception that can be thrown by programs. Some components of the standard library * also throw exceptions of this type to signal invalid arguments.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/invalid_argument * @author Jeongho Nam @@ -3186,8 +3191,8 @@ var std; *

It is a standard exception that can be thrown by programs. Some components of the standard library, * such as vector and string also throw exceptions of this type to signal errors resizing.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/length_error * @author Jeongho Nam @@ -3214,8 +3219,8 @@ var std; * such as vector, deque, string and bitset also throw exceptions of this type to signal arguments * out of range.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/out_of_range * @author Jeongho Nam @@ -3248,8 +3253,8 @@ var std; * *

It is used as a base class for several runtime error exceptions.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/runtime_error * @author Jeongho Nam @@ -3275,8 +3280,8 @@ var std; *

It is a standard exception that can be thrown by programs. Some components of the standard library * also throw exceptions of this type to signal range errors.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/overflow_error * @author Jeongho Nam @@ -3302,8 +3307,8 @@ var std; *

No component of the standard library throws exceptions of this type. It is designed as a standard * exception to be thrown by programs.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/underflow_error * @author Jeongho Nam @@ -3330,8 +3335,8 @@ var std; *

It is a standard exception that can be thrown by programs. Some components of the standard library * also throw exceptions of this type to signal range errors.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/range_error * @author Jeongho Nam @@ -3840,8 +3845,8 @@ var std; * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -4144,8 +4149,8 @@ var std; /** *

An iterator of {@link MapContainer map container}.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ @@ -4272,8 +4277,8 @@ var std; /** *

A reverse-iterator of {@link MapContainer map container}.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ @@ -4345,8 +4350,8 @@ var std; * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -4551,8 +4556,8 @@ var std; * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -4640,8 +4645,8 @@ var std; *

{@link HashMap} containers are faster than {@link TreeMap} containers to access individual elements by their * key, although they are generally less efficient for range iteration through a subset of their elements.

* - *

- * + *

+ * *

* *

Container properties

@@ -4886,6 +4891,8 @@ var std; }(std.base.UniqueMap)); std.HashMap = HashMap; })(std || (std = {})); +/// +/// var std; (function (std) { /** @@ -4907,8 +4914,8 @@ var std; *

Elements with equivalent keys are grouped together in the same bucket and in such a way that * an iterator can iterate through all of them. Iterators in the container are doubly linked iterators.

* - *

- * + *

+ * *

* *

Container properties

@@ -5164,8 +5171,8 @@ var std; * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -5413,8 +5420,8 @@ var std; /** *

An iterator of a Set.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ @@ -5514,8 +5521,8 @@ var std; /** *

A reverse-iterator of Set.

* - *

- *

+ *

+ *

* * @param Type of the elements. * @@ -5542,119 +5549,6 @@ var std; /// /// var std; -(function (std) { - var base; - (function (base) { - /** - *

An abstract set.

- * - *

{@link SetContainer SetContainers} are containers that store elements allowing fast retrieval of - * individual elements based on their value.

- * - *

In an {@link SetContainer}, the value of an element is at the same time its key, used to uniquely - * identify it. Keys are immutable, therefore, the elements in an {@link SetContainer} cannot be modified - * once in the container - they can be inserted and removed, though.

- * - *

{@link SetContainer} stores elements, keeps sequence and enables indexing by inserting elements into a - * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index - * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

- * - *

- *

- * - *

Container properties

- *
- *
Associative
- *
- * Elements in associative containers are referenced by their key and not by their absolute - * position in the container. - *
- * - *
Set
- *
The value of an element is also the key used to identify it.
- * - *
Unique keys
- *
No two elements in the container can have equivalent keys.
- *
- * - * @param Type of the elements. Each element in a {@link SetContainer} container is also identified - * by this value (each value is itself also the element's key). - * - * @author Jeongho Nam - */ - var UniqueSet = (function (_super) { - __extends(UniqueSet, _super); - function UniqueSet() { - _super.apply(this, arguments); - } - /* --------------------------------------------------------- - ACCESSOR - --------------------------------------------------------- */ - /** - * @inheritdoc - */ - UniqueSet.prototype.count = function (key) { - return this.find(key).equal_to(this.end()) ? 0 : 1; - }; - UniqueSet.prototype.extract = function (param) { - if (param instanceof std.SetIterator) - return this.extract_by_iterator(param); - else if (param instanceof std.SetReverseIterator) - return this.extract_by_reverse_iterator(param); - else - return this.extract_by_key(param); - }; - /** - * @hidden - */ - UniqueSet.prototype.extract_by_key = function (val) { - var it = this.find(val); - if (it.equal_to(this.end()) == true) - throw new std.OutOfRange("No such key exists."); - return val; - }; - /** - * @hidden - */ - UniqueSet.prototype.extract_by_iterator = function (it) { - if (it.equal_to(this.end()) == true || this.has(it.value) == false) - return this.end(); - this.erase(it); - return it; - }; - /** - * @hidden - */ - UniqueSet.prototype.extract_by_reverse_iterator = function (it) { - this.extract_by_iterator(it.base().next()); - return it; - }; - UniqueSet.prototype.insert = function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i - 0] = arguments[_i]; - } - return _super.prototype.insert.apply(this, args); - }; - /* --------------------------------------------------------- - UTILITIES - --------------------------------------------------------- */ - /** - * @inheritdoc - */ - UniqueSet.prototype.swap = function (obj) { - var vec = new std.Vector(this.begin(), this.end()); - this.assign(obj.begin(), obj.end()); - obj.assign(vec.begin(), vec.end()); - }; - return UniqueSet; - }(base.SetContainer)); - base.UniqueSet = UniqueSet; - })(base = std.base || (std.base = {})); -})(std || (std = {})); -/// -/// -var std; (function (std) { var base; (function (base) { @@ -5672,8 +5566,8 @@ var std; * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -5724,30 +5618,29 @@ var std; })(base = std.base || (std.base = {})); })(std || (std = {})); /// -/// /// var std; (function (std) { /** - *

Hashed, unordered set.

+ *

Hashed, unordered Multiset.

* - *

{@link HashSet}s are containers that store unique elements in no particular order, and which - * allow for fast retrieval of individual elements based on their value.

+ *

{@link HashMultiSet HashMultiSets} are containers that store elements in no particular order, allowing fast + * retrieval of individual elements based on their value, much like {@link HashSet} containers, + * but allowing different elements to have equivalent values.

* - *

In an {@link HashSet}, the value of an element is at the same time its key, that - * identifies it uniquely. Keys are immutable, therefore, the elements in an {@link HashSet} cannot be + *

In an {@link HashMultiSet}, the value of an element is at the same time its key, used to + * identify it. Keys are immutable, therefore, the elements in an {@link HashMultiSet} cannot be * modified once in the container - they can be inserted and removed, though.

* - *

Internally, the elements in the {@link HashSet} are not sorted in any particular order, but - * organized into buckets depending on their hash values to allow for fast access to individual elements - * directly by their values (with a constant average time complexity on average).

+ *

Internally, the elements in the {@link HashMultiSet} are not sorted in any particular, but + * organized into buckets depending on their hash values to allow for fast access to individual + * elements directly by their values (with a constant average time complexity on average).

* - *

{@link HashSet} containers are faster than {@link TreeSet} containers to access individual - * elements by their key, although they are generally less efficient for range iteration through a - * subset of their elements.

+ *

Elements with equivalent values are grouped together in the same bucket and in such a way that an + * iterator can iterate through all of them. Iterators in the container are doubly linked iterators.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -5762,20 +5655,23 @@ var std; *
Set
*
The value of an element is also the key used to identify it.
* - *
Unique keys
- *
No two elements in the container can have equivalent keys.
+ *
Multiple equivalent keys
+ *
The container can hold multiple elements with equivalent keys.
*
* * @param Type of the elements. - * Each element in an {@link HashSet} is also uniquely identified by this value. + * Each element in an {@link UnorderedMultiSet} is also identified by this value.. * - * @reference http://www.cplusplus.com/reference/unordered_set/unordered_set + * @reference http://www.cplusplus.com/reference/unordered_set/unordered_multiset * @author Jeongho Nam */ - var HashSet = (function (_super) { - __extends(HashSet, _super); - function HashSet() { + var HashMultiSet = (function (_super) { + __extends(HashMultiSet, _super); + function HashMultiSet() { _super.apply(this, arguments); + /** + * @hidden + */ this.hash_buckets_ = new std.base.SetHashBuckets(this); } /* ========================================================= @@ -5791,14 +5687,14 @@ var std; /** * @hidden */ - HashSet.prototype.init = function () { + HashMultiSet.prototype.init = function () { _super.prototype.init.call(this); this.hash_buckets_ = new std.base.SetHashBuckets(this); }; /** * @hidden */ - HashSet.prototype.construct_from_array = function (items) { + HashMultiSet.prototype.construct_from_array = function (items) { this.hash_buckets_.rehash(items.length * std.base.Hash.RATIO); _super.prototype.construct_from_array.call(this, items); }; @@ -5808,7 +5704,7 @@ var std; /** * @inheritdoc */ - HashSet.prototype.clear = function () { + HashMultiSet.prototype.clear = function () { this.hash_buckets_.clear(); _super.prototype.clear.call(this); }; @@ -5822,28 +5718,42 @@ var std; /** * @inheritdoc */ - HashSet.prototype.find = function (key) { + HashMultiSet.prototype.find = function (key) { return this.hash_buckets_.find(key); }; - HashSet.prototype.begin = function (index) { + /** + * @inheritdoc + */ + HashMultiSet.prototype.count = function (key) { + // FIND MATCHED BUCKET + var index = std.hash(key) % this.hash_buckets_.item_size(); + var bucket = this.hash_buckets_.at(index); + // ITERATE THE BUCKET + var cnt = 0; + for (var i = 0; i < bucket.length; i++) + if (std.equal_to(bucket[i].value, key)) + cnt++; + return cnt; + }; + HashMultiSet.prototype.begin = function (index) { if (index == undefined) return _super.prototype.begin.call(this); else return this.hash_buckets_.at(index).front(); }; - HashSet.prototype.end = function (index) { + HashMultiSet.prototype.end = function (index) { if (index == undefined) return _super.prototype.end.call(this); else return this.hash_buckets_.at(index).back().next(); }; - HashSet.prototype.rbegin = function (index) { + HashMultiSet.prototype.rbegin = function (index) { if (index == undefined) return _super.prototype.rbegin.call(this); else return new std.SetReverseIterator(this.end(index)); }; - HashSet.prototype.rend = function (index) { + HashMultiSet.prototype.rend = function (index) { if (index == undefined) return _super.prototype.rend.call(this); else @@ -5855,16 +5765,16 @@ var std; /** * @inheritdoc */ - HashSet.prototype.bucket_count = function () { + HashMultiSet.prototype.bucket_count = function () { return this.hash_buckets_.size(); }; /** * @inheritdoc */ - HashSet.prototype.bucket_size = function (n) { + HashMultiSet.prototype.bucket_size = function (n) { return this.hash_buckets_.at(n).size(); }; - HashSet.prototype.max_load_factor = function (z) { + HashMultiSet.prototype.max_load_factor = function (z) { if (z == undefined) return this.size() / this.bucket_count(); else @@ -5873,19 +5783,19 @@ var std; /** * @inheritdoc */ - HashSet.prototype.bucket = function (key) { + HashMultiSet.prototype.bucket = function (key) { return std.hash(key) % this.hash_buckets_.size(); }; /** * @inheritdoc */ - HashSet.prototype.reserve = function (n) { + HashMultiSet.prototype.reserve = function (n) { this.hash_buckets_.rehash(Math.ceil(n * this.max_load_factor())); }; /** * @inheritdoc */ - HashSet.prototype.rehash = function (n) { + HashMultiSet.prototype.rehash = function (n) { if (n <= this.bucket_count()) return; this.hash_buckets_.rehash(n); @@ -5900,25 +5810,16 @@ var std; /** * @hidden */ - HashSet.prototype.insert_by_val = function (val) { - // TEST WHETHER EXIST - var it = this.find(val); - if (it.equal_to(this.end()) == false) - return std.make_pair(it, false); + HashMultiSet.prototype.insert_by_val = function (val) { // INSERT - this.data_.push_back(val); - it = it.prev(); - // POST-PROCESS - this.handle_insert(it, it.next()); - return std.make_pair(it, true); + var it = new std.SetIterator(this, this.data_.insert(this.data_.end(), val)); + this.handle_insert(it, it.next()); // POST-PROCESS + return it; }; /** * @hidden */ - HashSet.prototype.insert_by_hint = function (hint, val) { - // FIND KEY - if (this.has(val) == true) - return this.end(); + HashMultiSet.prototype.insert_by_hint = function (hint, val) { // INSERT var list_iterator = this.data_.insert(hint.get_list_iterator(), val); // POST-PROCESS @@ -5929,22 +5830,14 @@ var std; /** * @hidden */ - HashSet.prototype.insert_by_range = function (first, last) { - var my_first = this.end().prev(); - var size = 0; - for (; !first.equal_to(last); first = first.next()) { - // TEST WHETER EXIST - if (this.has(first.value)) - continue; - // INSERTS - this.data_.push_back(first.value); - size++; - } - my_first = my_first.next(); + HashMultiSet.prototype.insert_by_range = function (first, last) { + // INSERT ELEMENTS + var list_iterator = this.data_.insert(this.data_.end(), first, last); + var my_first = new std.SetIterator(this, list_iterator); // IF NEEDED, HASH_BUCKET TO HAVE SUITABLE SIZE - if (this.size() + size > this.hash_buckets_.size() * std.base.Hash.MAX_RATIO) - this.hash_buckets_.rehash((this.size() + size) * std.base.Hash.RATIO); - // INSERTS + if (this.size() > this.hash_buckets_.item_size() * std.base.Hash.MAX_RATIO) + this.hash_buckets_.rehash(this.size() * std.base.Hash.RATIO); + // POST-PROCESS this.handle_insert(my_first, this.end()); }; /* --------------------------------------------------------- @@ -5953,14 +5846,14 @@ var std; /** * @inheritdoc */ - HashSet.prototype.handle_insert = function (first, last) { + HashMultiSet.prototype.handle_insert = function (first, last) { for (; !first.equal_to(last); first = first.next()) this.hash_buckets_.insert(first); }; /** * @inheritdoc */ - HashSet.prototype.handle_erase = function (first, last) { + HashMultiSet.prototype.handle_erase = function (first, last) { for (; !first.equal_to(last); first = first.next()) this.hash_buckets_.erase(first); }; @@ -5970,8 +5863,8 @@ var std; /** * @inheritdoc */ - HashSet.prototype.swap = function (obj) { - if (obj instanceof HashSet) + HashMultiSet.prototype.swap = function (obj) { + if (obj instanceof HashMultiSet) this.swap_tree_set(obj); else _super.prototype.swap.call(this, obj); @@ -5979,37 +5872,152 @@ var std; /** * @hidden */ - HashSet.prototype.swap_tree_set = function (obj) { + HashMultiSet.prototype.swap_tree_set = function (obj) { _a = [obj.data_, this.data_], this.data_ = _a[0], obj.data_ = _a[1]; _b = [obj.hash_buckets_, this.hash_buckets_], this.hash_buckets_ = _b[0], obj.hash_buckets_ = _b[1]; var _a, _b; }; - return HashSet; - }(std.base.UniqueSet)); - std.HashSet = HashSet; -})(std || (std = {})); + return HashMultiSet; + }(std.base.MultiSet)); + std.HashMultiSet = HashMultiSet; +})(std || (std = {})); +/// +/// +var std; +(function (std) { + var base; + (function (base) { + /** + *

An abstract set.

+ * + *

{@link SetContainer SetContainers} are containers that store elements allowing fast retrieval of + * individual elements based on their value.

+ * + *

In an {@link SetContainer}, the value of an element is at the same time its key, used to uniquely + * identify it. Keys are immutable, therefore, the elements in an {@link SetContainer} cannot be modified + * once in the container - they can be inserted and removed, though.

+ * + *

{@link SetContainer} stores elements, keeps sequence and enables indexing by inserting elements into a + * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index + * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

+ * + *

+ *

+ * + *

Container properties

+ *
+ *
Associative
+ *
+ * Elements in associative containers are referenced by their key and not by their absolute + * position in the container. + *
+ * + *
Set
+ *
The value of an element is also the key used to identify it.
+ * + *
Unique keys
+ *
No two elements in the container can have equivalent keys.
+ *
+ * + * @param Type of the elements. Each element in a {@link SetContainer} container is also identified + * by this value (each value is itself also the element's key). + * + * @author Jeongho Nam + */ + var UniqueSet = (function (_super) { + __extends(UniqueSet, _super); + function UniqueSet() { + _super.apply(this, arguments); + } + /* --------------------------------------------------------- + ACCESSOR + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + UniqueSet.prototype.count = function (key) { + return this.find(key).equal_to(this.end()) ? 0 : 1; + }; + UniqueSet.prototype.extract = function (param) { + if (param instanceof std.SetIterator) + return this.extract_by_iterator(param); + else if (param instanceof std.SetReverseIterator) + return this.extract_by_reverse_iterator(param); + else + return this.extract_by_key(param); + }; + /** + * @hidden + */ + UniqueSet.prototype.extract_by_key = function (val) { + var it = this.find(val); + if (it.equal_to(this.end()) == true) + throw new std.OutOfRange("No such key exists."); + return val; + }; + /** + * @hidden + */ + UniqueSet.prototype.extract_by_iterator = function (it) { + if (it.equal_to(this.end()) == true || this.has(it.value) == false) + return this.end(); + this.erase(it); + return it; + }; + /** + * @hidden + */ + UniqueSet.prototype.extract_by_reverse_iterator = function (it) { + this.extract_by_iterator(it.base().next()); + return it; + }; + UniqueSet.prototype.insert = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i - 0] = arguments[_i]; + } + return _super.prototype.insert.apply(this, args); + }; + /* --------------------------------------------------------- + UTILITIES + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + UniqueSet.prototype.swap = function (obj) { + var vec = new std.Vector(this.begin(), this.end()); + this.assign(obj.begin(), obj.end()); + obj.assign(vec.begin(), vec.end()); + }; + return UniqueSet; + }(base.SetContainer)); + base.UniqueSet = UniqueSet; + })(base = std.base || (std.base = {})); +})(std || (std = {})); +/// +/// var std; (function (std) { /** - *

Hashed, unordered Multiset.

+ *

Hashed, unordered set.

* - *

{@link HashMultiSet HashMultiSets} are containers that store elements in no particular order, allowing fast - * retrieval of individual elements based on their value, much like {@link HashSet} containers, - * but allowing different elements to have equivalent values.

+ *

{@link HashSet}s are containers that store unique elements in no particular order, and which + * allow for fast retrieval of individual elements based on their value.

* - *

In an {@link HashMultiSet}, the value of an element is at the same time its key, used to - * identify it. Keys are immutable, therefore, the elements in an {@link HashMultiSet} cannot be + *

In an {@link HashSet}, the value of an element is at the same time its key, that + * identifies it uniquely. Keys are immutable, therefore, the elements in an {@link HashSet} cannot be * modified once in the container - they can be inserted and removed, though.

* - *

Internally, the elements in the {@link HashMultiSet} are not sorted in any particular, but - * organized into buckets depending on their hash values to allow for fast access to individual - * elements directly by their values (with a constant average time complexity on average).

+ *

Internally, the elements in the {@link HashSet} are not sorted in any particular order, but + * organized into buckets depending on their hash values to allow for fast access to individual elements + * directly by their values (with a constant average time complexity on average).

* - *

Elements with equivalent values are grouped together in the same bucket and in such a way that an - * iterator can iterate through all of them. Iterators in the container are doubly linked iterators.

+ *

{@link HashSet} containers are faster than {@link TreeSet} containers to access individual + * elements by their key, although they are generally less efficient for range iteration through a + * subset of their elements.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -6024,20 +6032,23 @@ var std; *
Set
*
The value of an element is also the key used to identify it.
* - *
Multiple equivalent keys
- *
The container can hold multiple elements with equivalent keys.
+ *
Unique keys
+ *
No two elements in the container can have equivalent keys.
*
* * @param Type of the elements. - * Each element in an {@link UnorderedMultiSet} is also identified by this value.. + * Each element in an {@link HashSet} is also uniquely identified by this value. * - * @reference http://www.cplusplus.com/reference/unordered_set/unordered_multiset + * @reference http://www.cplusplus.com/reference/unordered_set/unordered_set * @author Jeongho Nam */ - var HashMultiSet = (function (_super) { - __extends(HashMultiSet, _super); - function HashMultiSet() { + var HashSet = (function (_super) { + __extends(HashSet, _super); + function HashSet() { _super.apply(this, arguments); + /** + * @hidden + */ this.hash_buckets_ = new std.base.SetHashBuckets(this); } /* ========================================================= @@ -6053,14 +6064,14 @@ var std; /** * @hidden */ - HashMultiSet.prototype.init = function () { + HashSet.prototype.init = function () { _super.prototype.init.call(this); this.hash_buckets_ = new std.base.SetHashBuckets(this); }; /** * @hidden */ - HashMultiSet.prototype.construct_from_array = function (items) { + HashSet.prototype.construct_from_array = function (items) { this.hash_buckets_.rehash(items.length * std.base.Hash.RATIO); _super.prototype.construct_from_array.call(this, items); }; @@ -6070,7 +6081,7 @@ var std; /** * @inheritdoc */ - HashMultiSet.prototype.clear = function () { + HashSet.prototype.clear = function () { this.hash_buckets_.clear(); _super.prototype.clear.call(this); }; @@ -6084,42 +6095,28 @@ var std; /** * @inheritdoc */ - HashMultiSet.prototype.find = function (key) { + HashSet.prototype.find = function (key) { return this.hash_buckets_.find(key); }; - /** - * @inheritdoc - */ - HashMultiSet.prototype.count = function (key) { - // FIND MATCHED BUCKET - var index = std.hash(key) % this.hash_buckets_.item_size(); - var bucket = this.hash_buckets_.at(index); - // ITERATE THE BUCKET - var cnt = 0; - for (var i = 0; i < bucket.length; i++) - if (std.equal_to(bucket[i].value, key)) - cnt++; - return cnt; - }; - HashMultiSet.prototype.begin = function (index) { + HashSet.prototype.begin = function (index) { if (index == undefined) return _super.prototype.begin.call(this); else return this.hash_buckets_.at(index).front(); }; - HashMultiSet.prototype.end = function (index) { + HashSet.prototype.end = function (index) { if (index == undefined) return _super.prototype.end.call(this); else return this.hash_buckets_.at(index).back().next(); }; - HashMultiSet.prototype.rbegin = function (index) { + HashSet.prototype.rbegin = function (index) { if (index == undefined) return _super.prototype.rbegin.call(this); else return new std.SetReverseIterator(this.end(index)); }; - HashMultiSet.prototype.rend = function (index) { + HashSet.prototype.rend = function (index) { if (index == undefined) return _super.prototype.rend.call(this); else @@ -6131,16 +6128,16 @@ var std; /** * @inheritdoc */ - HashMultiSet.prototype.bucket_count = function () { + HashSet.prototype.bucket_count = function () { return this.hash_buckets_.size(); }; /** * @inheritdoc */ - HashMultiSet.prototype.bucket_size = function (n) { + HashSet.prototype.bucket_size = function (n) { return this.hash_buckets_.at(n).size(); }; - HashMultiSet.prototype.max_load_factor = function (z) { + HashSet.prototype.max_load_factor = function (z) { if (z == undefined) return this.size() / this.bucket_count(); else @@ -6149,19 +6146,19 @@ var std; /** * @inheritdoc */ - HashMultiSet.prototype.bucket = function (key) { + HashSet.prototype.bucket = function (key) { return std.hash(key) % this.hash_buckets_.size(); }; /** * @inheritdoc */ - HashMultiSet.prototype.reserve = function (n) { + HashSet.prototype.reserve = function (n) { this.hash_buckets_.rehash(Math.ceil(n * this.max_load_factor())); }; /** * @inheritdoc */ - HashMultiSet.prototype.rehash = function (n) { + HashSet.prototype.rehash = function (n) { if (n <= this.bucket_count()) return; this.hash_buckets_.rehash(n); @@ -6176,16 +6173,25 @@ var std; /** * @hidden */ - HashMultiSet.prototype.insert_by_val = function (val) { + HashSet.prototype.insert_by_val = function (val) { + // TEST WHETHER EXIST + var it = this.find(val); + if (it.equal_to(this.end()) == false) + return std.make_pair(it, false); // INSERT - var it = new std.SetIterator(this, this.data_.insert(this.data_.end(), val)); - this.handle_insert(it, it.next()); // POST-PROCESS - return it; + this.data_.push_back(val); + it = it.prev(); + // POST-PROCESS + this.handle_insert(it, it.next()); + return std.make_pair(it, true); }; /** * @hidden */ - HashMultiSet.prototype.insert_by_hint = function (hint, val) { + HashSet.prototype.insert_by_hint = function (hint, val) { + // FIND KEY + if (this.has(val) == true) + return this.end(); // INSERT var list_iterator = this.data_.insert(hint.get_list_iterator(), val); // POST-PROCESS @@ -6196,14 +6202,22 @@ var std; /** * @hidden */ - HashMultiSet.prototype.insert_by_range = function (first, last) { - // INSERT ELEMENTS - var list_iterator = this.data_.insert(this.data_.end(), first, last); - var my_first = new std.SetIterator(this, list_iterator); + HashSet.prototype.insert_by_range = function (first, last) { + var my_first = this.end().prev(); + var size = 0; + for (; !first.equal_to(last); first = first.next()) { + // TEST WHETER EXIST + if (this.has(first.value)) + continue; + // INSERTS + this.data_.push_back(first.value); + size++; + } + my_first = my_first.next(); // IF NEEDED, HASH_BUCKET TO HAVE SUITABLE SIZE - if (this.size() > this.hash_buckets_.item_size() * std.base.Hash.MAX_RATIO) - this.hash_buckets_.rehash(this.size() * std.base.Hash.RATIO); - // POST-PROCESS + if (this.size() + size > this.hash_buckets_.size() * std.base.Hash.MAX_RATIO) + this.hash_buckets_.rehash((this.size() + size) * std.base.Hash.RATIO); + // INSERTS this.handle_insert(my_first, this.end()); }; /* --------------------------------------------------------- @@ -6212,14 +6226,14 @@ var std; /** * @inheritdoc */ - HashMultiSet.prototype.handle_insert = function (first, last) { + HashSet.prototype.handle_insert = function (first, last) { for (; !first.equal_to(last); first = first.next()) this.hash_buckets_.insert(first); }; /** * @inheritdoc */ - HashMultiSet.prototype.handle_erase = function (first, last) { + HashSet.prototype.handle_erase = function (first, last) { for (; !first.equal_to(last); first = first.next()) this.hash_buckets_.erase(first); }; @@ -6229,8 +6243,8 @@ var std; /** * @inheritdoc */ - HashMultiSet.prototype.swap = function (obj) { - if (obj instanceof HashMultiSet) + HashSet.prototype.swap = function (obj) { + if (obj instanceof HashSet) this.swap_tree_set(obj); else _super.prototype.swap.call(this, obj); @@ -6238,14 +6252,14 @@ var std; /** * @hidden */ - HashMultiSet.prototype.swap_tree_set = function (obj) { + HashSet.prototype.swap_tree_set = function (obj) { _a = [obj.data_, this.data_], this.data_ = _a[0], obj.data_ = _a[1]; _b = [obj.hash_buckets_, this.hash_buckets_], this.hash_buckets_ = _b[0], obj.hash_buckets_ = _b[1]; var _a, _b; }; - return HashMultiSet; - }(std.base.MultiSet)); - std.HashMultiSet = HashMultiSet; + return HashSet; + }(std.base.UniqueSet)); + std.HashSet = HashSet; })(std || (std = {})); /// /// @@ -6275,8 +6289,8 @@ var std; * distance between these. They also consume some extra memory to keep the linking information associated to each * element (which may be an important factor for large lists of small-sized elements).

* - *

- * + *

+ * *

* *

Container properties

@@ -6714,8 +6728,8 @@ var std; /** *

An iterator, node of a List.

* - *

- * + *

+ * *

* * @author Jeongho Nam @@ -6844,8 +6858,8 @@ var std; /** *

A reverse-iterator of List.

* - *

- * + *

+ * *

* * @param Type of the elements. @@ -6915,8 +6929,8 @@ var std; * By default, if no container class is specified for a particular {@link Queue} class instantiation, the standard * container {@link List} is used.

* - *

- * + *

+ * *

* * @param Type of elements. @@ -7251,8 +7265,8 @@ var std; * By default, if no container class is specified for a particular {@link Stack} class instantiation, the standard * container {@link List} is used.

* - *

- * + *

+ * *

* * @param Type of elements. @@ -7380,8 +7394,8 @@ var std; * so that they can be interpreted when needed as more abstract (and portable) * {@link ErrorCondition error conditions}.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ @@ -7510,8 +7524,8 @@ var std; *

The class inherits from {@link RuntimeError}, to which it adds an {@link ErrorCode} as * member code (and defines a specialized what member).

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/system_error/system_error * @author Jeongho Nam @@ -7560,8 +7574,8 @@ var std; * passed by reference. As such, only one object of each of these types shall exist, each uniquely identifying its own * category: all error codes and conditions of a same category shall return a reference to same object.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/system_error/error_category * @author Jeongho Nam @@ -7640,8 +7654,8 @@ var std; *

The {@link ErrorCategory categories} associated with the {@link ErrorCondition} and the * {@link ErrorCode} define the equivalences between them.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/system_error/error_condition * @author Jeongho Nam @@ -7671,8 +7685,8 @@ var std; *

Objects of this class associate such numerical codes to {@link ErrorCategory error categories}, so that they * can be interpreted when needed as more abstract (and portable) {@link ErrorCondition error conditions}.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/system_error/error_code * @author Jeongho Nam @@ -7690,7 +7704,6 @@ var std; })(std || (std = {})); /// /// -/// var std; (function (std) { /** @@ -7714,8 +7727,8 @@ var std; * *

{@link TreeMap}s are typically implemented as binary search trees.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -7935,6 +7948,8 @@ var std; }(std.base.UniqueMap)); std.TreeMap = TreeMap; })(std || (std = {})); +/// +/// var std; (function (std) { /** @@ -7960,8 +7975,8 @@ var std; * *

{@link TreeMultiMap TreeMultiMaps} are typically implemented as binary search trees.

* - *

< - * img src="http://samchon.github.io/typescript-stl/api/assets/images/design/map_containers.png" style="max-width: 100%" />

+ *

< + * img src="http://samchon.github.io/typescript-stl/images/design/class_diagram/map_containers.png" style="max-width: 100%" />

* *

Container properties

*
@@ -8201,31 +8216,31 @@ var std; std.TreeMultiMap = TreeMultiMap; })(std || (std = {})); /// -/// /// var std; (function (std) { /** - *

Tree-structured set, std::set of STL.

+ *

Tree-structured multiple-key set.

* - *

{@link TreeSet}s are containers that store unique elements following a specific order.

+ *

{@link TreeMultiSet TreeMultiSets} are containers that store elements following a specific order, and + * where multiple elements can have equivalent values.

* - *

In a {@link TreeSet}, the value of an element also identifies it (the value is itself the - * key, of type T), and each value must be unique. The value of the elements in a - * {@link TreeSet} cannot be modified once in the container (the elements are always const), but they - * can be inserted or removed from the

+ *

In a {@link TreeMultiSet}, the value of an element also identifies it (the value is itself + * the key, of type T). The value of the elements in a {@link TreeMultiSet} cannot + * be modified once in the container (the elements are always const), but they can be inserted or removed + * from the

* - *

Internally, the elements in a {@link TreeSet} are always sorted following a specific strict weak - * ordering criterion indicated by its internal comparison method (of {@link less}).

+ *

Internally, the elements in a {@link TreeMultiSet TreeMultiSets} are always sorted following a strict + * weak ordering criterion indicated by its internal comparison method (of {@link IComparable.less less}).

* - *

{@link TreeSet} containers are generally slower than {@link HashSet} containers to access - * individual elements by their key, but they allow the direct iteration on subsets based on their - * order.

+ *

{@link TreeMultiSet} containers are generally slower than {@link HashMultiSet} containers + * to access individual elements by their key, but they allow the direct iteration on subsets based on + * their order.

* - *

{@link TreeSet}s are typically implemented as binary search trees.

+ *

{@link TreeMultiSet TreeMultiSets} are typically implemented as binary search trees.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -8244,19 +8259,19 @@ var std; *
Set
*
The value of an element is also the key used to identify it.
* - *
Unique keys
- *
No two elements in the container can have equivalent keys.
+ *
Multiple equivalent keys
+ *
Multiple elements in the container can have equivalent keys.
*
* - * @param Type of the elements. - * Each element in an {@link TreeSet} is also uniquely identified by this value. + * @param Type of the elements. Each element in a {@link TreeMultiSet} container is also identified + * by this value (each value is itself also the element's key). * - * @reference http://www.cplusplus.com/reference/set/set + * @reference http://www.cplusplus.com/reference/set/multiset * @author Jeongho Nam */ - var TreeSet = (function (_super) { - __extends(TreeSet, _super); - function TreeSet() { + var TreeMultiSet = (function (_super) { + __extends(TreeMultiSet, _super); + function TreeMultiSet() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i - 0] = arguments[_i]; @@ -8296,7 +8311,7 @@ var std; /** * @inheritdoc */ - TreeSet.prototype.clear = function () { + TreeMultiSet.prototype.clear = function () { _super.prototype.clear.call(this); this.tree_.clear(); }; @@ -8306,9 +8321,9 @@ var std; /** * @inheritdoc */ - TreeSet.prototype.find = function (val) { + TreeMultiSet.prototype.find = function (val) { var node = this.tree_.find(val); - if (node == null || std.equal_to(node.value.value, val) == false) + if (node == null || std.equal_to(val, node.value.value) == false) return this.end(); else return node.value; @@ -8316,31 +8331,41 @@ var std; /** * @inheritdoc */ - TreeSet.prototype.key_comp = function () { + TreeMultiSet.prototype.count = function (val) { + var it = this.find(val); + var cnt = 0; + for (; !it.equal_to(this.end()) && std.equal_to(it.value, val); it = it.next()) + cnt++; + return cnt; + }; + /** + * @inheritdoc + */ + TreeMultiSet.prototype.key_comp = function () { return this.tree_.key_comp(); }; /** * @inheritdoc */ - TreeSet.prototype.value_comp = function () { + TreeMultiSet.prototype.value_comp = function () { return this.tree_.key_comp(); }; /** * @inheritdoc */ - TreeSet.prototype.lower_bound = function (val) { + TreeMultiSet.prototype.lower_bound = function (val) { return this.tree_.lower_bound(val); }; /** * @inheritdoc */ - TreeSet.prototype.upper_bound = function (val) { - return this.tree_.lower_bound(val); + TreeMultiSet.prototype.upper_bound = function (val) { + return this.tree_.upper_bound(val); }; /** * @inheritdoc */ - TreeSet.prototype.equal_range = function (val) { + TreeMultiSet.prototype.equal_range = function (val) { return this.tree_.equal_range(val); }; /* ========================================================= @@ -8353,36 +8378,41 @@ var std; /** * @hidden */ - TreeSet.prototype.insert_by_val = function (val) { + TreeMultiSet.prototype.insert_by_val = function (val) { var node = this.tree_.find(val); - // IF EQUALS, THEN RETURN FALSE - if (node != null && std.equal_to(node.value.value, val) == true) - return std.make_pair(node.value, false); - // FIND NODE var it; - if (node == null) + // FIND NODE + if (node == null) { it = this.end(); - else if (std.less(node.value.value, val) == true) + } + else if (std.equal_to(node.value.value, val) == true) { it = node.value.next(); - else + } + else if (std.less(node.value.value, val) == true) { + it = node.value.next(); + while (it.equal_to(this.end()) == false && std.less(it.value, val)) + it = it.next(); + } + else { it = node.value; + } ///// // INSERTS ///// it = new std.SetIterator(this, this.data_.insert(it.get_list_iterator(), val)); this.handle_insert(it, it.next()); // POST-PROCESS - return std.make_pair(it, true); + return it; }; - TreeSet.prototype.insert_by_hint = function (hint, val) { - // FIND KEY - if (this.has(val) == true) - return this.end(); + /** + * @hidden + */ + TreeMultiSet.prototype.insert_by_hint = function (hint, val) { // VALIDATE HINT var ret; var compare = this.tree_.key_comp(); - // hint < current && current < next - if (compare(hint.value, val) == true - && (hint.next().equal_to(this.end()) || compare(val, hint.next().value) == true)) { + // hint <= current && current <= next + if ((compare(hint.value, val) || std.equal_to(hint.value, val)) + && (hint.next().equal_to(this.end()) || (compare(val, hint.next().value) || std.equal_to(val, hint.next().value)))) { /////// // RIGHT HINT /////// @@ -8396,14 +8426,14 @@ var std; // WRONG HINT /////// // INSERT BY AUTOMATIC NODE FINDING - ret = this.insert_by_val(val).first; + ret = this.insert_by_val(val); } return ret; }; /** * @hidden */ - TreeSet.prototype.insert_by_range = function (first, last) { + TreeMultiSet.prototype.insert_by_range = function (first, last) { for (; !first.equal_to(last); first = first.next()) this.insert_by_val(first.value); }; @@ -8413,13 +8443,13 @@ var std; /** * @inheritdoc */ - TreeSet.prototype.handle_insert = function (first, last) { + TreeMultiSet.prototype.handle_insert = function (first, last) { this.tree_.insert(first); }; /** * @inheritdoc */ - TreeSet.prototype.handle_erase = function (first, last) { + TreeMultiSet.prototype.handle_erase = function (first, last) { for (; !first.equal_to(last); first = first.next()) this.tree_.erase(last); }; @@ -8429,8 +8459,8 @@ var std; /** * @inheritdoc */ - TreeSet.prototype.swap = function (obj) { - if (obj instanceof TreeSet) + TreeMultiSet.prototype.swap = function (obj) { + if (obj instanceof TreeMultiSet) this.swap_tree_set(obj); else _super.prototype.swap.call(this, obj); @@ -8438,39 +8468,40 @@ var std; /** * @hidden */ - TreeSet.prototype.swap_tree_set = function (obj) { + TreeMultiSet.prototype.swap_tree_set = function (obj) { _a = [obj.data_, this.data_], this.data_ = _a[0], obj.data_ = _a[1]; _b = [obj.tree_, this.tree_], this.tree_ = _b[0], obj.tree_ = _b[1]; var _a, _b; }; - return TreeSet; - }(std.base.UniqueSet)); - std.TreeSet = TreeSet; + return TreeMultiSet; + }(std.base.MultiSet)); + std.TreeMultiSet = TreeMultiSet; })(std || (std = {})); +/// +/// var std; (function (std) { /** - *

Tree-structured multiple-key set.

+ *

Tree-structured set, std::set of STL.

* - *

{@link TreeMultiSet TreeMultiSets} are containers that store elements following a specific order, and - * where multiple elements can have equivalent values.

+ *

{@link TreeSet}s are containers that store unique elements following a specific order.

* - *

In a {@link TreeMultiSet}, the value of an element also identifies it (the value is itself - * the key, of type T). The value of the elements in a {@link TreeMultiSet} cannot - * be modified once in the container (the elements are always const), but they can be inserted or removed - * from the

+ *

In a {@link TreeSet}, the value of an element also identifies it (the value is itself the + * key, of type T), and each value must be unique. The value of the elements in a + * {@link TreeSet} cannot be modified once in the container (the elements are always const), but they + * can be inserted or removed from the

* - *

Internally, the elements in a {@link TreeMultiSet TreeMultiSets} are always sorted following a strict - * weak ordering criterion indicated by its internal comparison method (of {@link IComparable.less less}).

+ *

Internally, the elements in a {@link TreeSet} are always sorted following a specific strict weak + * ordering criterion indicated by its internal comparison method (of {@link less}).

* - *

{@link TreeMultiSet} containers are generally slower than {@link HashMultiSet} containers - * to access individual elements by their key, but they allow the direct iteration on subsets based on - * their order.

+ *

{@link TreeSet} containers are generally slower than {@link HashSet} containers to access + * individual elements by their key, but they allow the direct iteration on subsets based on their + * order.

* - *

{@link TreeMultiSet TreeMultiSets} are typically implemented as binary search trees.

+ *

{@link TreeSet}s are typically implemented as binary search trees.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -8489,19 +8520,19 @@ var std; *
Set
*
The value of an element is also the key used to identify it.
* - *
Multiple equivalent keys
- *
Multiple elements in the container can have equivalent keys.
+ *
Unique keys
+ *
No two elements in the container can have equivalent keys.
*
* - * @param Type of the elements. Each element in a {@link TreeMultiSet} container is also identified - * by this value (each value is itself also the element's key). + * @param Type of the elements. + * Each element in an {@link TreeSet} is also uniquely identified by this value. * - * @reference http://www.cplusplus.com/reference/set/multiset + * @reference http://www.cplusplus.com/reference/set/set * @author Jeongho Nam */ - var TreeMultiSet = (function (_super) { - __extends(TreeMultiSet, _super); - function TreeMultiSet() { + var TreeSet = (function (_super) { + __extends(TreeSet, _super); + function TreeSet() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i - 0] = arguments[_i]; @@ -8541,7 +8572,7 @@ var std; /** * @inheritdoc */ - TreeMultiSet.prototype.clear = function () { + TreeSet.prototype.clear = function () { _super.prototype.clear.call(this); this.tree_.clear(); }; @@ -8551,9 +8582,9 @@ var std; /** * @inheritdoc */ - TreeMultiSet.prototype.find = function (val) { + TreeSet.prototype.find = function (val) { var node = this.tree_.find(val); - if (node == null || std.equal_to(val, node.value.value) == false) + if (node == null || std.equal_to(node.value.value, val) == false) return this.end(); else return node.value; @@ -8561,41 +8592,31 @@ var std; /** * @inheritdoc */ - TreeMultiSet.prototype.count = function (val) { - var it = this.find(val); - var cnt = 0; - for (; !it.equal_to(this.end()) && std.equal_to(it.value, val); it = it.next()) - cnt++; - return cnt; - }; - /** - * @inheritdoc - */ - TreeMultiSet.prototype.key_comp = function () { + TreeSet.prototype.key_comp = function () { return this.tree_.key_comp(); }; /** * @inheritdoc */ - TreeMultiSet.prototype.value_comp = function () { + TreeSet.prototype.value_comp = function () { return this.tree_.key_comp(); }; /** * @inheritdoc */ - TreeMultiSet.prototype.lower_bound = function (val) { + TreeSet.prototype.lower_bound = function (val) { return this.tree_.lower_bound(val); }; /** * @inheritdoc */ - TreeMultiSet.prototype.upper_bound = function (val) { - return this.tree_.upper_bound(val); + TreeSet.prototype.upper_bound = function (val) { + return this.tree_.lower_bound(val); }; /** * @inheritdoc */ - TreeMultiSet.prototype.equal_range = function (val) { + TreeSet.prototype.equal_range = function (val) { return this.tree_.equal_range(val); }; /* ========================================================= @@ -8608,41 +8629,36 @@ var std; /** * @hidden */ - TreeMultiSet.prototype.insert_by_val = function (val) { + TreeSet.prototype.insert_by_val = function (val) { var node = this.tree_.find(val); - var it; + // IF EQUALS, THEN RETURN FALSE + if (node != null && std.equal_to(node.value.value, val) == true) + return std.make_pair(node.value, false); // FIND NODE - if (node == null) { + var it; + if (node == null) it = this.end(); - } - else if (std.equal_to(node.value.value, val) == true) { - it = node.value.next(); - } - else if (std.less(node.value.value, val) == true) { + else if (std.less(node.value.value, val) == true) it = node.value.next(); - while (it.equal_to(this.end()) == false && std.less(it.value, val)) - it = it.next(); - } - else { + else it = node.value; - } ///// // INSERTS ///// it = new std.SetIterator(this, this.data_.insert(it.get_list_iterator(), val)); this.handle_insert(it, it.next()); // POST-PROCESS - return it; + return std.make_pair(it, true); }; - /** - * @hidden - */ - TreeMultiSet.prototype.insert_by_hint = function (hint, val) { + TreeSet.prototype.insert_by_hint = function (hint, val) { + // FIND KEY + if (this.has(val) == true) + return this.end(); // VALIDATE HINT var ret; var compare = this.tree_.key_comp(); - // hint <= current && current <= next - if ((compare(hint.value, val) || std.equal_to(hint.value, val)) - && (hint.next().equal_to(this.end()) || (compare(val, hint.next().value) || std.equal_to(val, hint.next().value)))) { + // hint < current && current < next + if (compare(hint.value, val) == true + && (hint.next().equal_to(this.end()) || compare(val, hint.next().value) == true)) { /////// // RIGHT HINT /////// @@ -8656,14 +8672,14 @@ var std; // WRONG HINT /////// // INSERT BY AUTOMATIC NODE FINDING - ret = this.insert_by_val(val); + ret = this.insert_by_val(val).first; } return ret; }; /** * @hidden */ - TreeMultiSet.prototype.insert_by_range = function (first, last) { + TreeSet.prototype.insert_by_range = function (first, last) { for (; !first.equal_to(last); first = first.next()) this.insert_by_val(first.value); }; @@ -8673,13 +8689,13 @@ var std; /** * @inheritdoc */ - TreeMultiSet.prototype.handle_insert = function (first, last) { + TreeSet.prototype.handle_insert = function (first, last) { this.tree_.insert(first); }; /** * @inheritdoc */ - TreeMultiSet.prototype.handle_erase = function (first, last) { + TreeSet.prototype.handle_erase = function (first, last) { for (; !first.equal_to(last); first = first.next()) this.tree_.erase(last); }; @@ -8689,8 +8705,8 @@ var std; /** * @inheritdoc */ - TreeMultiSet.prototype.swap = function (obj) { - if (obj instanceof TreeMultiSet) + TreeSet.prototype.swap = function (obj) { + if (obj instanceof TreeSet) this.swap_tree_set(obj); else _super.prototype.swap.call(this, obj); @@ -8698,14 +8714,14 @@ var std; /** * @hidden */ - TreeMultiSet.prototype.swap_tree_set = function (obj) { + TreeSet.prototype.swap_tree_set = function (obj) { _a = [obj.data_, this.data_], this.data_ = _a[0], obj.data_ = _a[1]; _b = [obj.tree_, this.tree_], this.tree_ = _b[0], obj.tree_ = _b[1]; var _a, _b; }; - return TreeMultiSet; - }(std.base.MultiSet)); - std.TreeMultiSet = TreeMultiSet; + return TreeSet; + }(std.base.UniqueSet)); + std.TreeSet = TreeSet; })(std || (std = {})); /// var std; @@ -8835,8 +8851,8 @@ var std; * end, they perform worse than the others, and have less consistent iterators and references than {@link List}s. *

* - *

- * + *

+ * *

* *

Container properties

@@ -9152,8 +9168,8 @@ var std; /** *

An iterator of Vector.

* - *

- * + *

+ * *

* * @param Type of the elements. @@ -9288,8 +9304,8 @@ var std; /** *

A reverse-iterator of Vector.

* - *

- * + *

+ * *

* * @param Type of the elements. @@ -9490,8 +9506,8 @@ var std; /** *

Hash buckets storing {@link MapIterator MapIterators}.

* - *

- * + *

+ * *

* * @author Jeongho Nam @@ -9524,8 +9540,8 @@ var std; /** *

Hash buckets storing {@link SetIterator SetIterators}.

* - *

- * + *

+ * *

* * @author Jeongho Nam @@ -9609,7 +9625,7 @@ var std; * * * - *

* *

These constraints enforce a critical property of red-black trees: the path from the root to the farthest @@ -9867,7 +9883,7 @@ var std; * the only loop, and any rotations occur after this loop, this proves that a constant number of rotations * occur.

* - *

* * @param N A node to be inserted or swapped. @@ -9911,7 +9927,7 @@ var std; * node are black) is still violated, but now we can resolve this by * continuing to case 5.

* - *

* * @param N A node to be inserted or swapped. @@ -9952,7 +9968,7 @@ var std; * through {@link XTreeNode.parent P}. In each case, this is the only * black node of the three.

* - *

* * @param N A node to be inserted or swapped. @@ -10136,7 +10152,7 @@ var std; /** *

{@link XTreeNode.sibling S} is red.

* - *

* *

In this case we reverse the colors of {@link XTreeNode.parent P} and @@ -10168,7 +10184,7 @@ var std; *

{@link XTreeNode.parent P}, {@link XTreeNode.sibling S}, and {@link XTreeNode.sibling * S}'s children are black.

* - *

* *

In this case, we simply repaint {@link XTreeNode.sibling S} red. The @@ -10202,7 +10218,7 @@ var std; *

{@link XTreeNode.sibling S} and {@link XTreeNode.sibling S}'s children are * black, but {@link XTreeNode.parent P} is red.

* - *

* *

In this case, we simply exchange the colors of {@link XTreeNode.sibling S} and @@ -10230,7 +10246,7 @@ var std; * left child is red, {@link XTreeNode.sibling S}'s right child is * black, and N is the left child of its parent.

* - *

* *

In this case we rotate right at {@link XTreeNode.sibling S}, so that @@ -10288,7 +10304,7 @@ var std; *

Thus, the paths passing through N pass through one additional * black node.

* - *

* *

Meanwhile, if a path does not go through N, then there are two possibilities:

@@ -10410,8 +10426,8 @@ var std; /** *

A red-black tree storing {@link MapIterator MapIterators}.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ @@ -10626,8 +10642,8 @@ var std; /** *

A red-black Tree storing {@link SetIterator SetIterators}.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ @@ -10901,253 +10917,6 @@ var std; base.XTreeNode = XTreeNode; })(base = std.base || (std.base = {})); })(std || (std = {})); -/// -var std; -(function (std) { - var example; - (function (example) { - function test_all() { - for (var key in std.example) - if (key != "test_all" && std.example[key] instanceof Function) - std.example[key](); - } - example.test_all = test_all; - })(example = std.example || (std.example = {})); -})(std || (std = {})); -/// -var std; -(function (std) { - var example; - (function (example) { - function test_anything() { - var map = new std.HashMap(); - map.insert(["samchon", 1]); - map.insert(["FireFox", 2]); - console.log(map.has("samchon"), "#" + map.size()); - for (var it = map.begin(); !it.equal_to(map.end()); it = it.next()) - console.log(it.first); - map.erase("samchon"); - console.log(map.has("samchon"), "#" + map.size()); - for (var it = map.begin(); !it.equal_to(map.end()); it = it.next()) - console.log(it.first); - console.log("first item", map.begin().first); - console.log("last item", map.rbegin().first); - /* --------------------------------------------------------- */ - //let list: std.List = new std.List(); - //list.push_back("samchon"); - //list.push_back("FireFox"); - //console.log("#" + list.size()); - //list.erase(list.begin()); - //console.log("#" + list.size()); - //for (let it = list.begin(); !it.equal_to(list.end()); it = it.next()) - // console.log(it.value); - } - example.test_anything = test_anything; - })(example = std.example || (std.example = {})); -})(std || (std = {})); -/// -var std; -(function (std) { - var example; - (function (example) { - function test_bind() { - var list = new std.List(); - // ???.insert(...) - // list.insert(list.end(), 5, 1) - var fn = std.bind(std.List.prototype.insert); - fn(list, list.end(), 5, 1); - debug_list(); - var fn2 = std.bind(std.List.prototype.clear); - fn2(list); - debug_list(); - // ???.insert(_1, _2, 5, _3) - // list.insert(list.end(), 5, 2) - var fn3 = std.bind(list.insert, std.placeholders._1, std.placeholders._2, 5, std.placeholders._3); - fn3(list, list.end(), 2); - debug_list(); - function debug_list() { - console.log("#" + list.size()); - for (var it = list.begin(); !it.equal_to(list.end()); it = it.next()) - console.log(it.value); - console.log("----------------------------------------------------------"); - } - } - example.test_bind = test_bind; - })(example = std.example || (std.example = {})); -})(std || (std = {})); -/// -var std; -(function (std) { - var example; - (function (example) { - function test_deque() { - var deque = new std.Deque(); - for (var i = 0; i < 10; i++) - deque.push_back(i); - var it = deque.begin().advance(3); - it = deque.erase(it); // erase 3 - console.log(it.value); // print 4 - it = deque.begin().advance(2); - it = deque.insert(it, -1); // insert -1 - console.log(it.next().value); // print 2 - it = deque.begin().advance(6); - it = deque.erase(it, it.advance(3)); // erase from 6 to 9 - //console.log(it.value); // print 9 - console.log(it.equal_to(deque.end())); - console.log("-------------------------------------"); - for (var it_1 = deque.begin(); !it_1.equal_to(deque.end()); it_1 = it_1.next()) - console.log(it_1.value); - } - example.test_deque = test_deque; - })(example = std.example || (std.example = {})); -})(std || (std = {})); -/// -var std; -(function (std) { - var example; - (function (example) { - function test_for_each() { - var array = new std.Vector(); - for (var i = 0; i < 20; i++) - array.push_back(i); - var fn = std.for_each(array.begin(), array.end(), function (val) { console.log(val); }); - } - example.test_for_each = test_for_each; - })(example = std.example || (std.example = {})); -})(std || (std = {})); -/// -var std; -(function (std) { - var example; - (function (example) { - function test_hash_map() { - var map = new std.TreeMap(); - map.insert(["first", 1]); - map.insert(["second", 2]); - for (var it = map.begin(); !it.equal_to(map.end()); it = it.next()) - console.log(it.first, it.second); - var array = new Array(); - array["abcd"] = 2; - for (var key in array) - console.log(array[key]); - } - example.test_hash_map = test_hash_map; - })(example = std.example || (std.example = {})); -})(std || (std = {})); -/// -/// -var std; -(function (std) { - var example; - (function (example) { - function test_list() { - var list = new std.List(); - for (var i = 0; i < 10; i++) - list.push_back(i); - var it = list.begin().advance(3); - it = list.erase(it); // erase 3 - console.log(it.value); // print 4 - it = list.begin().advance(2); - it = list.insert(it, -1); // insert -1 - console.log(it.next().value); // print 2 - it = list.begin().advance(6); - it = list.erase(it, it.advance(3)); // erase from 6 to 9 - //console.log(it.value); // print 9 - console.log(it.equal_to(list.end())); - console.log("-------------------------------------"); - for (var it_2 = list.begin(); !it_2.equal_to(list.end()); it_2 = it_2.next()) - console.log(it_2.value); - } - example.test_list = test_list; - })(example = std.example || (std.example = {})); -})(std || (std = {})); -/// -var std; -(function (std) { - var example; - (function (example) { - function sorting() { - var cubes = new std.Deque(); - for (var i = 0; i < 0; i++) - cubes.push_back(new Cube()); - /////////////////////////////// - // SORT BY Cube.less() - /////////////////////////////// - std.sort(cubes.begin(), cubes.end()); - for (var it = cubes.begin(); !it.equal_to(cubes.end()); it = it.next()) - it.value.debug_size(); - console.log("------------------------------"); - /////////////////////////////// - // SORT BY inline function - /////////////////////////////// - std.sort(cubes.begin(), cubes.end(), function (left, right) { - if (left.x != right.x) - return left.x < right.x; - else if (left.y != right.y) - return left.y < right.y; - else - return left.z < right.z; - }); - for (var it = cubes.begin(); !it.equal_to(cubes.end()); it = it.next()) - it.value.debug_position(); - } - example.sorting = sorting; - var Cube = (function () { - function Cube() { - this.width = Math.random() * 10; - this.height = Math.random() * 10; - this.length = Math.random() * 10; - this.x = Math.random() * 100 - 50; - this.y = Math.random() * 100 - 50; - this.z = Math.random() * 100 - 50; - } - Object.defineProperty(Cube.prototype, "volume", { - get: function () { - return this.width * this.height * this.length; - }, - enumerable: true, - configurable: true - }); - Cube.prototype.less = function (obj) { - return this.volume < obj.volume; - }; - Cube.prototype.debug_size = function () { - console.log(this.width, this.height, this.length + " => " + this.volume); - }; - Cube.prototype.debug_position = function () { - console.log(this.x, this.y, this.z); - }; - return Cube; - }()); - })(example = std.example || (std.example = {})); -})(std || (std = {})); -/// -var std; -(function (std) { - var example; - (function (example) { - function tree_set() { - var set = new std.TreeMultiSet(); - // INSERTS EVEN NUMBERS - for (var i = 0; i <= 10; i += 2) - for (var j = 0; j < 3; j++) - set.insert(i); - // FIND 4 -> HAS - console.log("Matched node: 4"); - console.log(" lower bound: " + set.lower_bound(4).value); - console.log(" upper bound: " + set.upper_bound(4).value); - console.log(" "); - // FIND ODD NUMBERS -> NOT EXIST - for (var i = 1; i <= 10; i += 2) { - console.log("Mis-matched node: " + i); - console.log(" lower bound: " + set.lower_bound(i).value); - console.log(" upper bound: " + set.upper_bound(i).value); - console.log(" "); - } - } - example.tree_set = tree_set; - })(example = std.example || (std.example = {})); -})(std || (std = {})); /// /// /// @@ -11155,15 +10924,18 @@ var std; /// /// /// +/// +/// /// /// +/// +/// /// /// /// /// /// /// -/// try { module.exports = std; } diff --git a/ts/include/typescript-stl.js b/ts/include/typescript-stl.js index ad5d5697..d1719260 100644 --- a/ts/include/typescript-stl.js +++ b/ts/include/typescript-stl.js @@ -1855,1734 +1855,1244 @@ var std; var base; (function (base) { /** - *

Red-black Tree.

- * - *

A red-black tree is a kind of self-balancing - * binary search tree. Each node of the binary tree has an extra bit, and that bit is often interpreted as the - * color (red or black) of the node. These color bits - * are used to ensure the tree remains approximately balanced during insertions and deletions.

- * - *

Balance is preserved by painting each node of the tree with one of two colors (typically called - * 'red' and 'black') in a way that satisfies certain - * properties, which collectively constrain how unbalanced the tree can become in the worst case. When the tree - * is modified, the new tree is subsequently rearranged and repainted to restore the coloring properties. The - * properties are designed in such a way that this rearranging and recoloring can be performed efficiently.

- * - *

The balancing of the tree is not perfect but it is good enough to allow it to guarantee searching in - * O(log n) time, where n is the total number of elements in the tree. The insertion and deletion operations, - * along with the tree rearrangement and recoloring, are also performed in O(log n) time.

- * - *

Tracking the color of each node requires only 1 bit of information per node because there are only two - * colors. The tree does not contain any other data specific to its being a - * red-black tree so its memory footprint is almost - * identical to a classic (uncolored) binary search tree. In many cases the additional bit of information can - * be stored at no additional memory cost.

+ *

Static class holding enumeration codes of color of Red-black tree.

* - *

Properties

- *

In addition to the requirements imposed on a binary search tree the following must be satisfied by a - * red-black tree:

+ *

Color codes imposed to nodes of RB-Tree are following those rules:

* *
    *
  1. A node is either red or black.
  2. - *
  3. - * The root is black. This rule is sometimes omitted. Since the root can - * always be changed from red to black, but not - * necessarily vice versa, this rule has little effect on analysis. - *
  4. + *
  5. The root is black. This rule is sometimes omitted. Since the root can + * always be changed from red to black, but not + * necessarily vice versa, this rule has little effect on analysis.
  6. *
  7. All leaves (NIL; null) are black.
  8. - *
  9. - * If a node is red, then both its children are - * black. - *
  10. - *
  11. - * Every path from a given node to any of its descendant NIL nodes contains the same number of - * black nodes. Some definitions: the number of - * black nodes from the root to a node is the node's - * black depth; the uniform number of black - * nodes in all paths from root to the leaves is called the black-height of - * the red-black tree. - *
  12. + *
  13. If a node is red, then both its children are + * black.
  14. + *
  15. Every path from a given node to any of its descendant NIL nodes contains the same number of + * black nodes. Some definitions: the number of + * black nodes from the root to a node is the node's + * black depth; the uniform number of black + * nodes in all paths from root to the leaves is called the black-height of + * the red-black tree.
  16. *
* - *

+ * @author Migrated by Jeongho Nam + */ + (function (Color) { + /** + *

Code of color black.

+ * + *
    + *
  • Those are clearly black: root, leaf nodes or children nodes of red.
  • + *
  • Every path from a given nodes containes the same number of black nodes exclude NIL(s).
  • + *
+ */ + Color[Color["BLACK"] = 0] = "BLACK"; + /** + *

Code of color red.

+ */ + Color[Color["RED"] = 1] = "RED"; + })(base.Color || (base.Color = {})); + var Color = base.Color; + })(base = std.base || (std.base = {})); +})(std || (std = {})); +/// +var std; +(function (std) { + var base; + (function (base) { + /** + *

An abstract container.

* - *

These constraints enforce a critical property of red-black trees: the path from the root to the farthest - * leaf is no more than twice as long as the path from the root to the nearest leaf. The result is that the tree - * is roughly height-balanced. Since operations such as inserting, deleting, and finding values require - * worst-case time proportional to the height of the tree, this theoretical upper bound on the height allows - * red-black trees to be efficient in the worst case, unlike ordinary binary search trees.

+ *

+ * + *

* - *

To see why this is guaranteed, it suffices to consider the effect of properties 4 and 5 together. For a - * red-black tree T, let B be the number of black nodes in property 5. Let the - * shortest possible path from the root of T to any leaf consist of B black nodes. - * Longer possible paths may be constructed by inserting red nodes. However, property 4 - * makes it impossible to insert more than one consecutive red node. Therefore, - * ignoring any black NIL leaves, the longest possible path consists of 2*B nodes, - * alternating black and red (this is the worst case). - * Counting the black NIL leaves, the longest possible path consists of 2*B-1 - * nodes.

+ *

Container properties

+ *
+ *
Sequence
+ *
Elements in sequence containers are ordered in a strict linear sequence. Individual elements are + * accessed by their position in this sequence.
* - *

The shortest possible path has all black nodes, and the longest possible - * path alternates between red and black nodes. Since all - * maximal paths have the same number of black nodes, by property 5, this shows - * that no path is more than twice as long as any other path.

+ *
Doubly-linked list
+ *
Each element keeps information on how to locate the next and the previous elements, allowing + * constant time insert and erase operations before or after a specific element (even of entire ranges), + * but no direct random access.
+ *
* * @param Type of elements. * - * @reference https://en.wikipedia.org/w/index.php?title=Red%E2%80%93black_tree - * @inventor Rudolf Bayer - * @author Migrated by Jeongho Nam + * @author Jeongho Nam */ - var XTree = (function () { - /* ========================================================= - CONSTRUCTOR - ========================================================= */ + var Container = (function () { + function Container() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i - 0] = arguments[_i]; + } + // THIS IS ABSTRACT CLASS + // NOTHING TO DO ESPECIALLY + } /** - * Default Constructor. + * @inheritdoc */ - function XTree() { - this.root_ = null; - } - XTree.prototype.clear = function () { - this.root_ = null; + Container.prototype.clear = function () { + this.erase(this.begin(), this.end()); }; - /* ========================================================= - ACCESSORS - - GETTERS - - COMPARISON - ============================================================ - GETTERS - --------------------------------------------------------- */ /** - * Find a node from its contained value. + * @inheritdoc + */ + Container.prototype.empty = function () { + return this.size() == 0; + }; + /* --------------------------------------------------------------- + UTILITIES + --------------------------------------------------------------- */ + /** + * @inheritdoc + */ + Container.prototype.swap = function (obj) { + var supplement = new std.Vector(this.begin(), this.end()); + this.assign(obj.begin(), obj.end()); + obj.assign(supplement.begin(), supplement.end()); + }; + return Container; + }()); + base.Container = Container; + })(base = std.base || (std.base = {})); +})(std || (std = {})); +/// +var std; +(function (std) { + var base; + (function (base) { + /** + *

An abstract error instance.

+ * + *

{@link ErrorInstance} is an abstract class of {@link ErrorCode} and {@link ErrorCondition} + * holding an error instance's identifier {@link value}, associated with a {@link category}.

+ * + *

The operating system and other low-level applications and libraries generate numerical error codes to + * represent possible results. These numerical values may carry essential information for a specific platform, + * but be non-portable from one platform to another.

+ * + *

Objects of this class associate such numerical codes to {@link ErrorCategory error categories}, + * so that they can be interpreted when needed as more abstract (and portable) + * {@link ErrorCondition error conditions}.

+ * + *

+ *

+ * + * @author Jeongho Nam + */ + var ErrorInstance = (function () { + function ErrorInstance(val, category) { + if (val === void 0) { val = 0; } + if (category === void 0) { category = null; } + this.assign(val, category); + } + /** + *

Assign error instance.

* - * @param val Value to find. + *

Assigns the {@link ErrorCode} object a value of val associated with the {@link ErrorCategory}.

+ * + * @param val A numerical value identifying an error instance. + * @param category A reference to an {@link ErrorCategory} object. */ - XTree.prototype.find = function (val) { - if (this.root_ == null) - return null; - var node = this.root_; - while (true) { - var newNode = null; - if (this.is_equal_to(val, node.value)) - break; // EQUALS, MEANS MATCHED, THEN TERMINATE - else if (this.is_less(val, node.value)) - newNode = node.left; // LESS, THEN TO THE LEFT - else - newNode = node.right; // GREATER, THEN TO THE RIGHT - // ULTIL CHILD NODE EXISTS - if (newNode == null) - break; - // SHIFT A NEW NODE TO THE NODE TO BE RETURNED - node = newNode; - } - return node; + ErrorInstance.prototype.assign = function (val, category) { + this.category_ = category; + this.value_ = val; }; /** - * Fetch maximum (the rightes?) node from one. + *

Clear error instance.

* - * @param node A node to fetch its maximum node. - * @return The maximum node. + *

Clears the value in the {@link ErrorCode} object so that it is set to a value of 0 of the + * {@link ErrorCategory.systemCategory ErrorCategory.systemCategory()} (indicating no error).

*/ - XTree.prototype.fetch_maximum = function (node) { - while (node.right != null) - node = node.right; - return node; + ErrorInstance.prototype.clear = function () { + this.value_ = 0; }; - /* ========================================================= - ELEMENTS I/O - - INSERT - - ERASE - - COLOR - - ROTATION - ============================================================ - INSERT + /* --------------------------------------------------------- + ACCESSORS --------------------------------------------------------- */ /** - *

Insert an element with a new node.

+ *

Get category.

* - *

Insertion begins by adding the node as any binary search tree insertion does and by coloring it - * red. Whereas in the binary search tree, we always add a leaf, in the red-black - * tree, leaves contain no information, so instead we add a red interior node, with - * two black leaves, in place of an existing - * black leaf.

+ *

Returns a reference to the {@link ErrorCategory} associated with the {@link ErrorCode} object.

* - *

What happens next depends on the color of other nearby nodes. The term uncle node will be used to - * refer to the sibling of a node's parent, as in human family trees. Note that:

- * - *
    - *
  • property 3 (all leaves are black) always holds.
  • - *
  • - * property 4 (both children of every red node are - * black) is threatened only by adding a red - * node, repainting a black node red, or a - * rotation. - *
  • - *
  • - * property 5 (all paths from any given node to its leaf nodes contain the same number of - * black nodes) is threatened only by adding a - * black node, repainting a red node - * black (or vice versa), or a rotation. - *
  • - *
- * - *

Notes

- *
    - *
  1. - * The label N will be used to denote the current node (colored - * red). In the diagrams N carries a blue contour. At the - * beginning, this is the new node being inserted, but the entire procedure may also be applied - * recursively to other nodes (see case 3). {@link XTreeNode.parent P} will denote - * N's parent node, {@link XTreeNode.grand_parent G} will denote N's - * grandparent, and {@link XTreeNode.uncle U} will denote N's uncle. In between - * some cases, the roles and labels of the nodes are exchanged, but in each case, every label continues - * to represent the same node it represented at the beginning of the case. - *
  2. - *
  3. - * If a node in the right (target) half of a diagram carries a blue contour it will become the current - * node in the next iteration and there the other nodes will be newly assigned relative to it. Any - * color shown in the diagram is either assumed in its case or implied by those assumptions. - *
  4. - *
  5. - * A numbered triangle represents a subtree of unspecified depth. A black - * circle atop a triangle means that black-height of subtree is greater - * by one compared to subtree without this circle.
  6. - *
- * - *

There are several cases of red-black tree insertion to handle:

- * - *
    - *
  • N is the root node, i.e., first node of red-black tree.
  • - *
  • - * N's parent ({@link XTreeNode.parent P}) is black. - *
  • - *
  • - * N's parent ({@link XTreeNode.parent P}) and uncle - * ({@link XTreeNode.uncle U}) are red. - *
  • - *
  • - * N is added to right of left child of grandparent, or N is added to left - * of right child of grandparent ({@link XTreeNode.parent P} is red and - * {@link XTreeNode.uncle U} is black). - *
  • - *
  • - * N is added to left of left child of grandparent, or N is added to right - * of right child of grandparent ({@link XTreeNode.parent P} is red and - * {@link XTreeNode.uncle U} is black). - *
  • - *
- * - *

Note

- *

Note that inserting is actually in-place, since all the calls above use tail recursion.

- * - *

In the algorithm above, all cases are chained in order, except in insert case 3 where it can recurse - * to case 1 back to the grandparent node: this is the only case where an iterative implementation will - * effectively loop. Because the problem of repair is escalated to the next higher level but one, it takes - * maximally h⁄2 iterations to repair the tree (where h is the height of the tree). Because the probability - * for escalation decreases exponentially with each iteration the average insertion cost is constant.

- * - * @param val An element to insert. + * @return A reference to a non-copyable object of a type derived from {@link ErrorCategory}. */ - XTree.prototype.insert = function (val) { - var parent = this.find(val); - var node = new base.XTreeNode(val, base.Color.RED); - if (parent == null) - this.root_ = node; - else { - node.parent = parent; - if (this.is_less(node.value, parent.value)) - parent.left = node; - else - parent.right = node; - } - this.insert_case1(node); + ErrorInstance.prototype.category = function () { + return this.category_; }; /** - *

N is the root node, i.e., first node of red-black tree.

- * - *

The current node N is at the {@link root_ root} of the tree.

+ *

Error value.

* - *

In this case, it is repainted black to satisfy property 2 (the root is - * black). Since this adds one black node to - * every path at once, property 5 (all paths from any given node to its leaf nodes contain the same number - * of black nodes) is not violated.

+ *

Returns the error value associated with the {@link ErrorCode} object.

* - * @param N A node to be inserted or swapped. + * @return The error value. */ - XTree.prototype.insert_case1 = function (N) { - if (N.parent == null) - N.color = base.Color.BLACK; - else - this.insert_case2(N); + ErrorInstance.prototype.value = function () { + return this.value_; }; /** - *

N's parent ({@link XTreeNode.parent P}) is black.

+ *

Get message.

* - *

The current node's parent {@link XTreeNode.parent P} is black, - * so property 4 (both children of every red node are - * black) is not invalidated.

+ *

Returns the message associated with the error instance.

* - *

In this case, the tree is still valid. Property 5 (all paths from any given node to its leaf nodes - * contain the same number of black nodes) is not threatened, because the - * current node N has two black leaf children, but because - * N is red, the paths through each of its children have the same - * number of black nodes as the path through the leaf it replaced, which was - * black, and so this property remains satisfied.

+ *

Error messages are defined by the {@link category} the error instance belongs to.

* - * @param N A node to be inserted or swapped. + *

This function returns the same as if the following member was called:

+ * + *

category().message(value())

+ * + * @return A string object with the message associated with the {@link ErrorCode}. */ - XTree.prototype.insert_case2 = function (N) { - if (this.fetch_color(N.parent) == base.Color.BLACK) - return; + ErrorInstance.prototype.message = function () { + if (this.category_ == null || this.value_ == 0) + return ""; else - this.insert_case3(N); + return this.category_.message(this.value_); }; /** - *

N's parent ({@link XTreeNode.parent P}) and uncle - * ({@link XTreeNode.uncle U}) are red.

- * - *

If both the parent {@link XTreeNode.parent P} and the uncle {@link XTreeNode.uncle U} - * are red, then both of them can be repainted black - * and the grandparent {@link XTreeNode.grand_parent G} becomes red (to - * maintain property 5 (all paths from any given node to its leaf nodes contain the same number of - * black nodes)).

+ *

Default error condition.

* - *

Now, the current red node N has a - * black parent. Since any path through the parent or uncle must pass through - * the grandparent, the number of black nodes on these paths has not changed. + *

Returns the default {@link ErrorCondition}object associated with the {@link ErrorCode} object.

* - *

However, the grandparent {@link XTreeNode.grand_parent G} may now violate properties 2 (The - * root is black) or 4 (Both children of every red - * node are black) (property 4 possibly being violated since - * {@link XTreeNode.grand_parent G} may have a red parent).

+ *

This function returns the same as if the following member was called:

* - *

To fix this, the entire procedure is recursively performed on {@link XTreeNode.grand_parent G} - * from case 1. Note that this is a tail-recursive call, so it could be rewritten as a loop; since this is - * the only loop, and any rotations occur after this loop, this proves that a constant number of rotations - * occur.

+ *

category().default_error_condition(value())

* - *

+ *

{@link ErrorCategory.default_error_condition ErrorCategory.default_error_condition()} + * is a virtual member function, that can operate differently for each category.

* - * @param N A node to be inserted or swapped. + * @return An {@link ErrorCondition}object that corresponds to the {@link ErrorCode} object. */ - XTree.prototype.insert_case3 = function (N) { - if (this.fetch_color(N.uncle) == base.Color.RED) { - N.parent.color = base.Color.BLACK; - N.uncle.color = base.Color.BLACK; - N.grand_parent.color = base.Color.RED; - this.insert_case1(N.grand_parent); - } - else { - this.insert_case4(N); - } + ErrorInstance.prototype.default_error_condition = function () { + if (this.category_ == null || this.value_ == 0) + return null; + else + return this.category_.default_error_condition(this.value_); }; + /* --------------------------------------------------------- + OPERATORS + --------------------------------------------------------- */ /** - *

N is added to right of left child of grandparent, or N is added to left - * of right child of grandparent ({@link XTreeNode.parent P} is red and - * {@link XTreeNode.uncle U} is black).

+ *

Convert to bool.

* - *

The parent {@link XTreeNode.parent P} is red but the uncle - * {@link XTreeNode.uncle U} is black; also, the current node - * N is the right child of {@link XTreeNode.parent P}, and - * {@link XTreeNode.parent P} in turn is the left child of its parent - * {@link XTreeNode.grand_parent G}.

+ *

Returns whether the error instance has a numerical {@link value} other than 0.

* - *

In this case, a left rotation on {@link XTreeNode.parent P} that switches the roles of the - * current node N and its parent {@link XTreeNode.parent P} can be performed; then, - * the former parent node {@link XTreeNode.parent P} is dealt with using case 5 - * (relabeling N and {@link XTreeNode.parent P}) because property 4 (both children of - * every red node are black) is still violated.

+ *

If it is zero (which is generally used to represent no error), the function returns false, otherwise it returns true.

* - *

The rotation causes some paths (those in the sub-tree labelled "1") to pass through the node - * N where they did not before. It also causes some paths (those in the sub-tree labelled "3") - * not to pass through the node {@link XTreeNode.parent P} where they did before. However, both of - * these nodes are red, so property 5 (all paths from any given node to its leaf - * nodes contain the same number of black nodes) is not violated by the - * rotation.

+ * @return true if the error's numerical value is not zero. + * false otherwise. + */ + ErrorInstance.prototype.to_bool = function () { + return this.value_ != 0; + }; + return ErrorInstance; + }()); + base.ErrorInstance = ErrorInstance; + })(base = std.base || (std.base = {})); +})(std || (std = {})); +/// +var std; +(function (std) { + var base; + (function (base) { + (function (Hash) { + Hash[Hash["MIN_SIZE"] = 10] = "MIN_SIZE"; + Hash[Hash["RATIO"] = 1] = "RATIO"; + Hash[Hash["MAX_RATIO"] = 2] = "MAX_RATIO"; + })(base.Hash || (base.Hash = {})); + var Hash = base.Hash; + /** + *

Hask buckets.

+ * + * @author Jeongho Nam + */ + var HashBuckets = (function () { + /* --------------------------------------------------------- + CONSTRUCTORS + --------------------------------------------------------- */ + /** + * Default Constructor. + */ + function HashBuckets() { + this.clear(); + } + /** + *

Reconstruction of hash table.

* - *

After this case has been completed, property 4 (both children of every red - * node are black) is still violated, but now we can resolve this by - * continuing to case 5.

+ *

All the elements in the hash buckets are rearranged according to their hash value into the new set of + * buckets. This may alter the order of iteration of elements within the container.

* - *

+ *

Notice that {@link rehash rehashes} are automatically performed whenever its number of elements is going + * to greater than its own {@link capacity}.

* - * @param N A node to be inserted or swapped. + * @param size Number of bucket size to rehash. */ - XTree.prototype.insert_case4 = function (node) { - if (node == node.parent.right && node.parent == node.grand_parent.left) { - this.rotate_left(node.parent); - node = node.left; - } - else if (node == node.parent.left && node.parent == node.grand_parent.right) { - this.rotate_right(node.parent); - node = node.right; - } - this.insert_case5(node); - }; - /** - *

N is added to left of left child of grandparent, or N is added to right - * of right child of grandparent ({@link XTreeNode.parent P} is red and - * {@link XTreeNode.uncle U} is black).

- * - *

The parent {@link XTreeNode.parent P} is red but the uncle - * {@link XTreeNode.uncle U} is black, the current node N - * is the left child of {@link XTreeNode.parent P}, and {@link XTreeNode.parent P} is the left - * child of its parent {@link XTreeNode.grand_parent G}.

- * - *

In this case, a right rotation on {@link XTreeNode.grand_parent G} is performed; the result is a - * tree where the former parent {@link XTreeNode.parent P} is now the parent of both the current node - * N and the former grandparent {@link XTreeNode.grand_parent G}.

- * - *

{@link XTreeNode.grand_parent G} is known to be black, since its - * former child {@link XTreeNode.parent P} could not have been red otherwise - * (without violating property 4). Then, the colors of {@link XTreeNode.parent P} and - * {@link XTreeNode.grand_parent G} are switched, and the resulting tree satisfies property 4 (both - * children of every red node are black). Property 5 - * (all paths from any given node to its leaf nodes contain the same number of - * black nodes) also remains satisfied, since all paths that went through any - * of these three nodes went through {@link XTreeNode.grand_parent G} before, and now they all go - * through {@link XTreeNode.parent P}. In each case, this is the only - * black node of the three.

- * - *

- * - * @param N A node to be inserted or swapped. - */ - XTree.prototype.insert_case5 = function (node) { - node.parent.color = base.Color.BLACK; - node.grand_parent.color = base.Color.RED; - if (node == node.parent.left && node.parent == node.grand_parent.left) - this.rotate_right(node.grand_parent); - else - this.rotate_left(node.grand_parent); - }; - /* --------------------------------------------------------- - ERASE - --------------------------------------------------------- */ - /** - *

Erase an element with its node.

- * - *

In a regular binary search tree when deleting a node with two non-leaf children, we find either the - * maximum element in its left subtree (which is the in-order predecessor) or the minimum element in its - * right subtree (which is the in-order successor) and move its value into the node being deleted (as shown - * here). We then delete the node we copied the value from, which must have fewer than two non-leaf children. - * (Non-leaf children, rather than all children, are specified here because unlike normal binary search - * trees, red-black trees can have leaf nodes anywhere, so that all nodes are either internal nodes with - * two children or leaf nodes with, by definition, zero children. In effect, internal nodes having two leaf - * children in a red-black tree are like the leaf nodes in a regular binary search tree.) Because merely - * copying a value does not violate any red-black properties, this reduces to the problem of deleting a node - * with at most one non-leaf child. Once we have solved that problem, the solution applies equally to the - * case where the node we originally want to delete has at most one non-leaf child as to the case just - * considered where it has two non-leaf children.

- * - *

Therefore, for the remainder of this discussion we address the deletion of a node with at most one - * non-leaf child. We use the label M to denote the node to be deleted; C will denote a - * selected child of M, which we will also call "its child". If M does have a non-leaf child, - * call that its child, C; otherwise, choose either leaf as its child, C.

- * - *

If M is a red node, we simply replace it with its child C, - * which must be black by property 4. (This can only occur when M has - * two leaf children, because if the red node M had a - * black non-leaf child on one side but just a leaf child on the other side, - * then the count of black nodes on both sides would be different, thus the - * tree would violate property 5.) All paths through the deleted node will simply pass through one fewer - * red node, and both the deleted node's parent and child must be - * black, so property 3 (all leaves are black) - * and property 4 (both children of every red node are - * black) still hold.

- * - *

Another simple case is when M is black and C is - * red. Simply removing a black node could break - * Properties 4 (“Both children of every red node are - * black”) and 5 (“All paths from any given node to its leaf nodes contain the - * same number of black nodes”), but if we repaint C - * black, both of these properties are preserved.

- * - *

The complex case is when both M and C are black. (This - * can only occur when deleting a black node which has two leaf children, - * because if the black node M had a black - * non-leaf child on one side but just a leaf child on the other side, then the count of - * black nodes on both sides would be different, thus the tree would have been - * an invalid red-black tree by violation of property 5.) We begin by replacing M with its child - * C. We will relabel this child C (in its new position) N, and its sibling (its - * new parent's other child) {@link XTreeNode.sibling S}. ({@link XTreeNode.sibling S} was - * previously the sibling of M.)

- * - *

In the diagrams below, we will also use {@link XTreeNode.parent P} for N's new - * parent (M's old parent), SL for {@link XTreeNode.sibling S}'s left child, and - * SR for {@link XTreeNode.sibling S}'s right child ({@link XTreeNode.sibling S} cannot - * be a leaf because if M and C were black, then - * {@link XTreeNode.parent P}'s one subtree which included M counted two - * black-height and thus {@link XTreeNode.parent P}'s other subtree - * which includes {@link XTreeNode.sibling S} must also count two - * black-height, which cannot be the case if {@link XTreeNode.sibling S} - * is a leaf node).

- * - *

Notes

- *
    - *
  1. - * The label N will be used to denote the current node (colored - * black). In the diagrams N carries a blue contour. At the - * beginning, this is the replacement node and a leaf, but the entire procedure may also be applied - * recursively to other nodes (see case 3). In between some cases, the roles and labels of the nodes - * are exchanged, but in each case, every label continues to represent the same node it represented at - * the beginning of the case. - *
  2. - *
  3. - * If a node in the right (target) half of a diagram carries a blue contour it will become the current - * node in the next iteration and there the other nodes will be newly assigned relative to it. Any - * color shown in the diagram is either assumed in its case or implied by those assumptions. - * White represents an arbitrary color (either red or - * black), but the same in both halves of the diagram. - *
  4. - *
  5. - * A numbered triangle represents a subtree of unspecified depth. A black - * circle atop a triangle means that black-height of subtree is greater - * by one compared to subtree without this circle. - *
  6. - *
- * - *

If both N and its original parent are black, then - * deleting this original parent causes paths which proceed through N to have one fewer - * black node than paths that do not. As this violates property 5 (all paths - * from any given node to its leaf nodes contain the same number of black - * nodes), the tree must be rebalanced. There are several cases to consider:

- * - *
    - *
  1. N is the new root.
  2. - *
  3. {@link XTreeNode.sibling S} is red.
  4. - *
  5. - * {@link XTreeNode.parent P}, {@link XTreeNode.sibling S}, and - * {@link XTreeNode.sibling S}'s children are black.
  6. - *
  7. - * {@link XTreeNode.sibling S} and {@link XTreeNode.sibling S}'s children are - * black, but {@link XTreeNode.parent P} is - * red. - *
  8. - *
  9. - * {@link XTreeNode.sibling S} is black, - * {@link XTreeNode.sibling S}'s left child is red, - * {@link XTreeNode.sibling S}'s right child is black, and - * N is the left child of its parent. - *
  10. - *
  11. - * {@link XTreeNode.sibling S} is black, - * {@link XTreeNode.sibling S}'s right child is red, and - * N is the left child of its parent {@link XTreeNode.parent P}. - *
  12. - *
- * - *

Again, the function calls all use tail recursion, so the algorithm is in-place.

- * - *

In the algorithm above, all cases are chained in order, except in delete case 3 where it can recurse - * to case 1 back to the parent node: this is the only case where an iterative implementation will - * effectively loop. No more than h loops back to case 1 will occur (where h is the height of the tree). - * And because the probability for escalation decreases exponentially with each iteration the average - * removal cost is constant.

- * - *

Additionally, no tail recursion ever occurs on a child node, so the tail recursion loop can only - * move from a child back to its successive ancestors. If a rotation occurs in case 2 (which is the only - * possibility of rotation within the loop of cases 1–3), then the parent of the node N - * becomes red after the rotation and we will exit the loop. Therefore, at most one - * rotation will occur within this loop. Since no more than two additional rotations will occur after - * exiting the loop, at most three rotations occur in total.

- * - * @param val An element to erase. - */ - XTree.prototype.erase = function (val) { - var node = this.find(val); - if (node == null || this.is_equal_to(val, node.value) == false) - return; - if (node.left != null && node.right != null) { - var pred = this.fetch_maximum(node.left); - node.value = pred.value; - node = pred; - } - var child = (node.right == null) ? node.left : node.right; - if (this.fetch_color(node) == base.Color.BLACK) { - node.color = this.fetch_color(child); - this.erase_case1(node); - } - this.replace_node(node, child); - }; - /** - *

N is the new root.

- * - *

In this case, we are done. We removed one black node from every path, - * and the new root is black, so the properties are preserved.

- * - *

Note

- *

In cases 2, 5, and 6, we assume N is the left child of its parent - * {@link XTreeNode.parent P}. If it is the right child, left and right should be reversed throughout - * these three cases. Again, the code examples take both cases into account.

- * - * @param N A node to be erased or swapped. - */ - XTree.prototype.erase_case1 = function (N) { - if (N.parent == null) - return; - else - this.erase_case2(N); - }; - /** - *

{@link XTreeNode.sibling S} is red.

- * - *

- * - *

In this case we reverse the colors of {@link XTreeNode.parent P} and - * {@link XTreeNode.sibling S}, and then rotate left at {@link XTreeNode.parent P}, turning - * {@link XTreeNode.sibling S} into N's grandparent.

- * - *

Note that {@link XTreeNode.parent P} has to be black as it had a - * red child. The resulting subtree has a path short one - * black node so we are not done. Now N has a - * black sibling and a red parent, so we can proceed - * to step 4, 5, or 6. (Its new sibling is black because it was once the child - * of the red {@link XTreeNode.sibling S}.) In later cases, we will re-label - * N's new sibling as {@link XTreeNode.sibling S}.

- * - * @param N A node to be erased or swapped. - */ - XTree.prototype.erase_case2 = function (N) { - if (this.fetch_color(N.sibling) == base.Color.RED) { - N.parent.color = base.Color.RED; - N.sibling.color = base.Color.BLACK; - if (N == N.parent.left) - this.rotate_left(N.parent); - else - this.rotate_right(N.parent); - } - this.erase_case3(N); - }; - /** - *

{@link XTreeNode.parent P}, {@link XTreeNode.sibling S}, and {@link XTreeNode.sibling - * S}'s children are black.

- * - *

- * - *

In this case, we simply repaint {@link XTreeNode.sibling S} red. The - * result is that all paths passing through {@link XTreeNode.sibling S}, which are precisely those - * paths not passing through N, have one less black node. - * Because deleting N's original parent made all paths passing through N have - * one less black node, this evens things up.

- * - *

However, all paths through {@link XTreeNode.parent P} now have one fewer - * black node than paths that do not pass through - * {@link XTreeNode.parent P}, so property 5 (all paths from any given node to its leaf nodes contain - * the same number of black nodes) is still violated.

- * - *

To correct this, we perform the rebalancing procedure on {@link XTreeNode.parent P}, starting - * at case 1.

- * - * @param N A node to be erased or swapped. - */ - XTree.prototype.erase_case3 = function (N) { - if (this.fetch_color(N.parent) == base.Color.BLACK && - this.fetch_color(N.sibling) == base.Color.BLACK && - this.fetch_color(N.sibling.left) == base.Color.BLACK && - this.fetch_color(N.sibling.right) == base.Color.BLACK) { - N.sibling.color = base.Color.RED; - this.erase_case1(N.parent); - } - else - this.erase_case4(N); - }; - /** - *

{@link XTreeNode.sibling S} and {@link XTreeNode.sibling S}'s children are - * black, but {@link XTreeNode.parent P} is red.

- * - *

- * - *

In this case, we simply exchange the colors of {@link XTreeNode.sibling S} and - * {@link XTreeNode.parent P}. This does not affect the number of black - * nodes on paths going through {@link XTreeNode.sibling S}, but it does add one to the number of - * black nodes on paths going through N, making up for the - * deleted black node on those paths.

- * - * @param N A node to be erased or swapped. - */ - XTree.prototype.erase_case4 = function (N) { - if (this.fetch_color(N.parent) == base.Color.RED && - N.sibling != null && - this.fetch_color(N.sibling) == base.Color.BLACK && - this.fetch_color(N.sibling.left) == base.Color.BLACK && - this.fetch_color(N.sibling.right) == base.Color.BLACK) { - N.sibling.color = base.Color.RED; - N.parent.color = base.Color.BLACK; - } - else - this.erase_case5(N); - }; - /** - *

{@link XTreeNode.sibling S} is black, {@link XTreeNode.sibling S}'s - * left child is red, {@link XTreeNode.sibling S}'s right child is - * black, and N is the left child of its parent.

- * - *

- * - *

In this case we rotate right at {@link XTreeNode.sibling S}, so that - * {@link XTreeNode.sibling S}'s left child becomes {@link XTreeNode.sibling S}'s parent and - * N's new sibling. We then exchange the colors of {@link XTreeNode.sibling S} and its - * new parent.

- * - *

All paths still have the same number of black nodes, but now - * N has a black sibling whose right child is - * red, so we fall into case 6. Neither N nor its parent are affected - * by this transformation. (Again, for case 6, we relabel N's new sibling as - * {@link XTreeNode.sibling S}.)

- * - * @param N A node to be erased or swapped. - */ - XTree.prototype.erase_case5 = function (N) { - if (N == N.parent.left && - N.sibling != null && - this.fetch_color(N.sibling) == base.Color.BLACK && - this.fetch_color(N.sibling.left) == base.Color.RED && - this.fetch_color(N.sibling.right) == base.Color.BLACK) { - N.sibling.color = base.Color.RED; - N.sibling.left.color = base.Color.BLACK; - this.rotate_right(N.sibling); - } - else if (N == N.parent.right && - N.sibling != null && - this.fetch_color(N.sibling) == base.Color.BLACK && - this.fetch_color(N.sibling.left) == base.Color.BLACK && - this.fetch_color(N.sibling.right) == base.Color.RED) { - N.sibling.color = base.Color.RED; - N.sibling.right.color = base.Color.BLACK; - this.rotate_left(N.sibling); - } - }; - /** - *

{@link XTreeNode.sibling S} is black, - * {@link XTreeNode.sibling S}'s right child is red, and N is - * the left child of its parent {@link XTreeNode.parent P}.

- * - *

In this case we rotate left at {@link XTreeNode.parent P}, so that - * {@link XTreeNode.sibling S} becomes the parent of {@link XTreeNode.parent P} and - * {@link XTreeNode.sibling S}'s right child. We then exchange the colors of - * {@link XTreeNode.parent P} and {@link XTreeNode.sibling S}, and make - * {@link XTreeNode.sibling S}'s right child black.

- * - *

The subtree still has the same color at its root, so Properties 4 (Both children of every - * red node are black) and 5 (All paths from any - * given node to its leaf nodes contain the same number of black nodes) are - * not violated. However, N now has one additional black - * ancestor: either {@link XTreeNode.parent P} has become black, or it - * was black and {@link XTreeNode.sibling S} was added as a - * black grandparent.

- * - *

Thus, the paths passing through N pass through one additional - * black node.

- * - *

- * - *

Meanwhile, if a path does not go through N, then there are two possibilities:

- *
    - *
  1. - * It goes through N's new sibling SL, a node with arbitrary color and the root of - * the subtree labeled 3 (s. diagram). Then, it must go through {@link XTreeNode.sibling S} and - * {@link XTreeNode.parent P}, both formerly and currently, as they have only exchanged colors - * and places. Thus the path contains the same number of black nodes. - *
  2. - *
  3. - * It goes through N's new uncle, {@link XTreeNode.sibling S}'s right child. Then, - * it formerly went through {@link XTreeNode.sibling S}, {@link XTreeNode.sibling S}'s - * parent, and {@link XTreeNode.sibling S}'s right child SR (which was - * red), but now only goes through {@link XTreeNode.sibling S}, which - * has assumed the color of its former parent, and {@link XTreeNode.sibling S}'s right child, - * which has changed from red to black (assuming - * {@link XTreeNode.sibling S}'s color: black). The net effect is - * that this path goes through the same number of black nodes. - *
  4. - *
- * - *

Either way, the number of black nodes on these paths does not change. - * Thus, we have restored Properties 4 (Both children of every red node are - * black) and 5 (All paths from any given node to its leaf nodes contain the - * same number of black nodes). The white node in the diagram can be either - * red or black, but must refer to the same color - * both before and after the transformation.

- * - * @param N A node to be erased or swapped. - */ - XTree.prototype.erase_case6 = function (node) { - node.sibling.color = this.fetch_color(node.parent); - node.parent.color = base.Color.BLACK; - if (node == node.parent.left) { - node.sibling.right.color = base.Color.BLACK; - this.rotate_left(node.parent); - } - else { - node.sibling.left.color = base.Color.BLACK; - this.rotate_right(node.parent); - } - }; - /* --------------------------------------------------------- - ROTATION - --------------------------------------------------------- */ - /** - * Rotate a node left. - * - * @param node Node to rotate left. - */ - XTree.prototype.rotate_left = function (node) { - var right = node.right; - this.replace_node(node, right); - node.right = right.left; - if (right.left != null) - right.left.parent = node; - right.left = node; - node.parent = right; - }; - /** - * Rotate a node to right. - * - * @param node A node to rotate right. - */ - XTree.prototype.rotate_right = function (node) { - var left = node.left; - this.replace_node(node, left); - node.left = left.right; - if (left.right != null) - left.right.parent = node; - left.right = node; - node.parent = left; - }; - /** - * Replace a node. - * - * @param oldNode Ordinary node to be replaced. - * @param newNode Target node to replace. - */ - XTree.prototype.replace_node = function (oldNode, newNode) { - if (oldNode.parent == null) - this.root_ = newNode; - else { - if (oldNode == oldNode.parent.left) - oldNode.parent.left = newNode; - else - oldNode.parent.right = newNode; - } - if (newNode != null) - newNode.parent = oldNode.parent; - }; - /* --------------------------------------------------------- - COLOR - --------------------------------------------------------- */ - /** - * Fetch color from a node. - * - * @param node A node to fetch color. - * @retur color. - */ - XTree.prototype.fetch_color = function (node) { - if (node == null) - return base.Color.BLACK; - else - return node.color; - }; - return XTree; - }()); - base.XTree = XTree; - })(base = std.base || (std.base = {})); -})(std || (std = {})); -/// -/// -var std; -(function (std) { - var base; - (function (base) { - /** - *

A red-black Tree storing {@link SetIterator SetIterators}.

- * - *

- *

- * - * @author Jeongho Nam - */ - var AtomicTree = (function (_super) { - __extends(AtomicTree, _super); - /* --------------------------------------------------------- - CONSTRUCTOR - --------------------------------------------------------- */ - /** - * Default Constructor. - */ - function AtomicTree(set, compare) { - if (compare === void 0) { compare = std.less; } - _super.call(this); - this.set_ = set; - this.compare_ = compare; - } - AtomicTree.prototype.find = function (val) { - if (val instanceof std.SetIterator && val.value instanceof std.SetIterator == false) - return _super.prototype.find.call(this, val); - else - return this.find_by_val(val); - }; - /** - * @hidden - */ - AtomicTree.prototype.find_by_val = function (val) { - if (this.root_ == null) - return null; - var node = this.root_; - while (true) { - var newNode = null; - if (std.equal_to(val, node.value.value)) - break; // EQUALS, MEANS MATCHED, THEN TERMINATE - else if (this.compare_(val, node.value.value)) - newNode = node.left; // LESS, THEN TO THE LEFT - else - newNode = node.right; // GREATER, THEN TO THE RIGHT - // ULTIL CHILD NODE EXISTS - if (newNode == null) - break; - // SHIFT A NEW NODE TO THE NODE TO BE RETURNED - node = newNode; - } - return node; - }; - /* --------------------------------------------------------- - BOUNDS - --------------------------------------------------------- */ - /** - *

Return iterator to lower bound.

- * - *

Returns an iterator pointing to the first element in the container which is not considered to - * go before val (i.e., either it is equivalent or goes after).

- * - *

The function uses its internal comparison object (key_comp) to determine this, returning an - * iterator to the first element for which key_comp(element,val) would return false.

- * - *

If the {@link ITreeSet} class is instantiated with the default comparison type ({@link less}), - * the function returns an iterator to the first element that is not less than val.

- - *

A similar member function, {@link upper_bound}, has the same behavior as {@link lower_bound}, except - * in the case that the {@link ITreeSet} contains elements equivalent to val: In this case - * {@link lower_bound} returns an iterator pointing to the first of such elements, whereas - * {@link upper_bound} returns an iterator pointing to the element following the last.

- * - * @param val Value to compare. - * - * @return An iterator to the the first element in the container which is not considered to go before - * val, or {@link ITreeSet.end} if all elements are considered to go before val. - */ - AtomicTree.prototype.lower_bound = function (val) { - var node = this.find(val); - if (node == null) - return this.set_.end(); - else if (std.equal_to(node.value.value, val)) - return node.value; - else { - var it = node.value; - while (!std.equal_to(it, this.set_.end()) && std.less(it.value, val)) - it = it.next(); - return it; - } - }; - /** - *

Return iterator to upper bound.

- * - *

Returns an iterator pointing to the first element in the container which is considered to go after - * val.

- - *

The function uses its internal comparison object (key_comp) to determine this, returning an - * iterator to the first element for which key_comp(val,element) would return true.

- - *

If the {@code ITreeSet} class is instantiated with the default comparison type (less), the - * function returns an iterator to the first element that is greater than val.

- * - *

A similar member function, {@link lower_bound}, has the same behavior as {@link upper_bound}, except - * in the case that the {@ITreeSet} contains elements equivalent to val: In this case - * {@link lower_bound} returns an iterator pointing to the first of such elements, whereas - * {@link upper_bound} returns an iterator pointing to the element following the last.

- * - * @param val Value to compare. - * - * @return An iterator to the the first element in the container which is considered to go after - * val, or {@link TreeSet.end end} if no elements are considered to go after val. - */ - AtomicTree.prototype.upper_bound = function (val) { - var node = this.find(val); - if (node == null) - return this.set_.end(); - else { - var it = node.value; - while (!std.equal_to(it, this.set_.end()) && (std.equal_to(it.value, val) || std.less(it.value, val))) - it = it.next(); - return it; - } + HashBuckets.prototype.rehash = function (size) { + if (size < Hash.MIN_SIZE) + size = Hash.MIN_SIZE; + var prev_matrix = this.buckets_; + this.buckets_ = new std.Vector(); + for (var i = 0; i < size; i++) + this.buckets_.push_back(new std.Vector()); + for (var i = 0; i < prev_matrix.size(); i++) + for (var j = 0; j < prev_matrix.at(i).size(); j++) { + var val = prev_matrix.at(i).at(j); + var bucket = this.buckets_.at(this.hash_index(val)); + bucket.push_back(val); + this.item_size_++; + } }; - /** - *

Get range of equal elements.

- * - *

Returns the bounds of a range that includes all the elements in the container that are equivalent - * to val.

- * - *

If no matches are found, the range returned has a length of zero, with both iterators pointing to - * the first element that is considered to go after val according to the container's - * internal comparison object (key_comp).

- * - *

Two elements of a multiset are considered equivalent if the container's comparison object returns - * false reflexively (i.e., no matter the order in which the elements are passed as arguments).

- * - * @param key Value to search for. - * - * @return The function returns a {@link Pair}, whose member {@link Pair.first} is the lower bound of - * the range (the same as {@link lower_bound}), and {@link Pair.second} is the upper bound - * (the same as {@link upper_bound}). - */ - AtomicTree.prototype.equal_range = function (val) { - return std.make_pair(this.lower_bound(val), this.upper_bound(val)); + HashBuckets.prototype.clear = function () { + this.buckets_ = new std.Vector(); + this.item_size_ = 0; + for (var i = 0; i < Hash.MIN_SIZE; i++) + this.buckets_.push_back(new std.Vector()); }; /* --------------------------------------------------------- - COMPARISON + ACCESSORS --------------------------------------------------------- */ - /** - *

Return comparison function.

- * - *

Returns a copy of the comparison function used by the container.

- * - *

By default, this is a {@link less} object, which returns the same as operator<.

- * - *

This object determines the order of the elements in the container: it is a function pointer or a function - * object that takes two arguments of the same type as the container elements, and returns true if - * the first argument is considered to go before the second in the strict weak ordering it - * defines, and false otherwise.

- * - *

Two elements of a {@link ITreeSet} are considered equivalent if {@link key_comp} returns false - * reflexively (i.e., no matter the order in which the elements are passed as arguments).

- * - *

In {@link ITreeSet} containers, the keys to sort the elements are the values (T) themselves, - * therefore {@link key_comp} and its sibling member function {@link value_comp} are equivalent.

- * - * @return The comparison function. - */ - AtomicTree.prototype.key_comp = function () { - return this.compare_; + HashBuckets.prototype.size = function () { + return this.buckets_.size(); }; - /** - *

Return comparison function.

- * - *

Returns a copy of the comparison function used by the container.

- * - *

By default, this is a {@link less} object, which returns the same as operator<.

- * - *

This object determines the order of the elements in the container: it is a function pointer or a function - * object that takes two arguments of the same type as the container elements, and returns true if - * the first argument is considered to go before the second in the strict weak ordering it - * defines, and false otherwise.

- * - *

Two elements of a {@link ITreeSet} are considered equivalent if {@link key_comp} returns false - * reflexively (i.e., no matter the order in which the elements are passed as arguments).

- * - *

In {@link ITreeSet} containers, the keys to sort the elements are the values (T) themselves, - * therefore {@link key_comp} and its sibling member function {@link value_comp} are equivalent.

- * - * @return The comparison function. - */ - AtomicTree.prototype.value_comp = function () { - return this.compare_; + HashBuckets.prototype.item_size = function () { + return this.item_size_; }; - /** - * @inheritdoc - */ - AtomicTree.prototype.is_equal_to = function (left, right) { - return std.equal_to(left, right); + HashBuckets.prototype.capacity = function () { + return this.buckets_.size() * Hash.MAX_RATIO; }; - /** - * @inheritdoc - */ - AtomicTree.prototype.is_less = function (left, right) { - return this.compare_(left.value, right.value); + HashBuckets.prototype.at = function (index) { + return this.buckets_.at(index); }; - return AtomicTree; - }(base.XTree)); - base.AtomicTree = AtomicTree; + HashBuckets.prototype.hash_index = function (val) { + return std.hash(val) % this.buckets_.size(); + }; + /* --------------------------------------------------------- + ELEMENTS I/O + --------------------------------------------------------- */ + HashBuckets.prototype.insert = function (val) { + this.buckets_.at(this.hash_index(val)).push_back(val); + if (++this.item_size_ > this.capacity()) + this.rehash(this.item_size_ * Hash.RATIO); + }; + HashBuckets.prototype.erase = function (val) { + var bucket = this.buckets_.at(this.hash_index(val)); + for (var i = 0; i < bucket.size(); i++) + if (bucket.at(i) == val) { + bucket.splice(i, 1); + this.item_size_--; + break; + } + }; + return HashBuckets; + }()); + base.HashBuckets = HashBuckets; + })(base = std.base || (std.base = {})); +})(std || (std = {})); +/// +/// +var std; +(function (std) { + var base; + (function (base) { + /** + *

Hash buckets storing {@link MapIterator MapIterators}.

+ * + *

+ * + *

+ * + * @author Jeongho Nam + */ + var MapHashBuckets = (function (_super) { + __extends(MapHashBuckets, _super); + function MapHashBuckets(map) { + _super.call(this); + this.map = map; + } + MapHashBuckets.prototype.find = function (key) { + var index = std.hash(key) % this.size(); + var bucket = this.at(index); + for (var i = 0; i < bucket.size(); i++) + if (std.equal_to(bucket.at(i).first, key)) + return bucket.at(i); + return this.map.end(); + }; + return MapHashBuckets; + }(base.HashBuckets)); + base.MapHashBuckets = MapHashBuckets; })(base = std.base || (std.base = {})); })(std || (std = {})); /// +/// var std; (function (std) { var base; (function (base) { /** - *

Static class holding enumeration codes of color of Red-black tree.

+ *

Hash buckets storing {@link SetIterator SetIterators}.

+ * + *

+ * + *

+ * + * @author Jeongho Nam + */ + var SetHashBuckets = (function (_super) { + __extends(SetHashBuckets, _super); + function SetHashBuckets(set) { + _super.call(this); + this.set = set; + } + SetHashBuckets.prototype.find = function (val) { + var index = std.hash(val) % this.size(); + var bucket = this.at(index); + for (var i = 0; i < bucket.size(); i++) + if (std.equal_to(bucket.at(i).value, val)) + return bucket.at(i); + return this.set.end(); + }; + return SetHashBuckets; + }(base.HashBuckets)); + base.SetHashBuckets = SetHashBuckets; + })(base = std.base || (std.base = {})); +})(std || (std = {})); +/// +/// +/// +/// +/// +/// +// Iterator definitions. +// +// @reference http://www.cplusplus.com/reference/iterator +// @author Jeongho Nam +var std; +(function (std) { + /** + *

Bi-directional iterator.

+ * + *

{@link Iterator Bidirectional iterators} are iterators that can be used to access the sequence of elements + * in a range in both directions (towards the end and towards the beginning).

+ * + *

All {@link IArrayIterator random-access iterators} are also valid {@link Iterrator bidirectional iterators}. + *

+ * + *

There is not a single type of {@link Iterator bidirectional iterator}: {@link IContainer Each container} + * may define its own specific iterator type able to iterate through it and access its elements.

+ * + *

+ * + *

+ * + * @reference http://www.cplusplus.com/reference/iterator/BidirectionalIterator + * @author Jeongho Nam + */ + var Iterator = (function () { + /* --------------------------------------------------------- + CONSTRUCTORS + --------------------------------------------------------- */ + /** + * Construct from the source {@link IContainer container}. + * + * @param source The source + */ + function Iterator(source) { + this.source_ = source; + } + /** + * Advances the {@link Iterator} by n element positions. + * + * @param n Number of element positions to advance. + * @return An advanced iterator. + */ + Iterator.prototype.advance = function (n) { + var it = this; + var i; + if (n >= 0) { + for (i = 0; i < n; i++) + if (it.equal_to(this.source_.end())) + return this.source_.end(); + else + it = it.next(); + } + else { + n = n * -1; + for (i = 0; i < n; i++) + if (it.equal_to(this.source_.end())) + return this.source_.end(); + else + it = it.prev(); + } + return it; + }; + /* --------------------------------------------------------- + ACCESSORS + --------------------------------------------------------- */ + /** + * Get source + */ + Iterator.prototype.get_source = function () { + return this.source_; + }; + /** + *

Whether an iterator is equal with the iterator.

* - *

Color codes imposed to nodes of RB-Tree are following those rules:

+ *

Compare two iterators and returns whether they are equal or not.

* - *
    - *
  1. A node is either red or black.
  2. - *
  3. The root is black. This rule is sometimes omitted. Since the root can - * always be changed from red to black, but not - * necessarily vice versa, this rule has little effect on analysis.
  4. - *
  5. All leaves (NIL; null) are black.
  6. - *
  7. If a node is red, then both its children are - * black.
  8. - *
  9. Every path from a given node to any of its descendant NIL nodes contains the same number of - * black nodes. Some definitions: the number of - * black nodes from the root to a node is the node's - * black depth; the uniform number of black - * nodes in all paths from root to the leaves is called the black-height of - * the red-black tree.
  10. - *
+ *

Note

+ *

Iterator's equal_to() only compare souce container and index number.

* - * @author Migrated by Jeongho Nam + *

Although elements in a pair, key and value are equal_to, if the source map or + * index number is different, then the {@link equal_to equal_to()} will return false. If you want to + * compare the elements of a pair, compare them directly by yourself.

+ * + * @param obj An iterator to compare + * @return Indicates whether equal or not. */ - (function (Color) { + Iterator.prototype.equal_to = function (obj) { + return this.source_ == obj.source_; + }; + Object.defineProperty(Iterator.prototype, "value", { /** - *

Code of color black.

+ *

Get value of the iterator is pointing.

* - *
    - *
  • Those are clearly black: root, leaf nodes or children nodes of red.
  • - *
  • Every path from a given nodes containes the same number of black nodes exclude NIL(s).
  • - *
- */ - Color[Color["BLACK"] = 0] = "BLACK"; - /** - *

Code of color red.

+ * @return A value of the iterator. */ - Color[Color["RED"] = 1] = "RED"; - })(base.Color || (base.Color = {})); - var Color = base.Color; - })(base = std.base || (std.base = {})); + get: function () { + throw new std.LogicError("Have to be overriden."); + }, + enumerable: true, + configurable: true + }); + return Iterator; + }()); + std.Iterator = Iterator; +})(std || (std = {})); +var std; +(function (std) { + /** + *

This class reverses the direction in which a bidirectional or random-access iterator iterates through a range. + *

+ * + *

A copy of the original iterator (the {@link Iterator base iterator}) is kept internally and used to reflect + * the operations performed on the {@link ReverseIterator}: whenever the {@link ReverseIterator} is incremented, its + * {@link Iterator base iterator} is decreased, and vice versa. A copy of the {@link Iterator base iterator} with the + * current state can be obtained at any time by calling member {@link base}.

+ * + *

Notice however that when an iterator is reversed, the reversed version does not point to the same element in + * the range, but to the one preceding it. This is so, in order to arrange for the past-the-end element of a + * range: An iterator pointing to a past-the-end element in a range, when reversed, is pointing to the last element + * (not past it) of the range (this would be the first element of the reversed range). And if an iterator to the + * first element in a range is reversed, the reversed iterator points to the element before the first element (this + * would be the past-the-end element of the reversed range).

+ * + *

+ * + *

+ * + * @reference http://www.cplusplus.com/reference/iterator/reverse_iterator + * @author Jeongho Nam + */ + var ReverseIterator = (function (_super) { + __extends(ReverseIterator, _super); + /* --------------------------------------------------------- + CONSTRUCTORS + --------------------------------------------------------- */ + function ReverseIterator(base) { + if (base == null) + _super.call(this, null); + else { + _super.call(this, base.get_source()); + this.base_ = base.prev(); + } + } + ReverseIterator.prototype.base = function () { + return this.base_.next(); + }; + Object.defineProperty(ReverseIterator.prototype, "value", { + /* --------------------------------------------------------- + ACCESSORS + --------------------------------------------------------- */ + get: function () { + return this.base_.value; + }, + enumerable: true, + configurable: true + }); + /* --------------------------------------------------------- + MOVERS + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + ReverseIterator.prototype.prev = function () { + var ret = this.create_neighbor(); + ret.source_ = this.source_; + ret.base_ = this.base_.next(); + return ret; + }; + /** + * @inheritdoc + */ + ReverseIterator.prototype.next = function () { + var ret = this.create_neighbor(); + ret.source_ = this.source_; + ret.base_ = this.base_.next(); + return ret; + }; + /** + * @inheritdoc + */ + ReverseIterator.prototype.advance = function (n) { + var ret = this.create_neighbor(); + ret.source_ = this.source_; + ret.base_ = this.base_.advance(-n); + return ret; + }; + /* --------------------------------------------------------- + COMPARES + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + ReverseIterator.prototype.equal_to = function (obj) { + return this.base_.equal_to(obj.base_); + }; + /** + * @inheritdoc + */ + ReverseIterator.prototype.swap = function (obj) { + this.base_.swap(obj.base_); + }; + return ReverseIterator; + }(std.Iterator)); + std.ReverseIterator = ReverseIterator; + /* ========================================================= + GLOBAL FUNCTIONS + - MOVERS + - BEGIN + - END + ============================================================ + MOVERS + --------------------------------------------------------- */ + /** + *

Return distance between {@link Iterator iterators}.

+ * + *

Calculates the number of elements between first and last.

+ * + *

If it is a {@link IArrayIterator random-access iterator}, the function uses operator- to calculate this. + * Otherwise, the function uses the increase operator {@link Iterator.next next()} repeatedly.

+ * + * @param first Iterator pointing to the initial element. + * @param last Iterator pointing to the final element. This must be reachable from first. + * + * @return The number of elements between first and last. + */ + function distance(first, last) { + if (first.index != undefined) { + // WHEN IARRAY_ITERATOR + // ABS FOR REVERSE_ITERATOR + return Math.abs(last.index - first.index); + } + var length = 0; + for (; !first.equal_to(last); first = first.next()) + length++; + return length; + } + std.distance = distance; + /** + *

Advance iterator.

+ * + *

Advances the iterator it by n elements positions.

+ * + * @param it Iterator to be advanced. + * @param n Number of element positions to advance. + * + * @return An iterator to the element n positions before it. + */ + function advance(it, n) { + return it.advance(n); + } + std.advance = advance; + /** + *

Get iterator to previous element.

+ * + *

Returns an iterator pointing to the element that it would be pointing to if advanced -n positions.

+ * + * @param it Iterator to base position. + * @param n Number of element positions offset (1 by default). + * + * @return An iterator to the element n positions before it. + */ + function prev(it, n) { + if (n === void 0) { n = 1; } + return it.advance(n); + } + std.prev = prev; + /** + *

Get iterator to next element.

+ * + *

Returns an iterator pointing to the element that it would be pointing to if advanced n positions.

+ * + * @param it Iterator to base position. + * @param n Number of element positions offset (1 by default). + * + * @return An iterator to the element n positions away from it. + */ + function next(it, n) { + if (n === void 0) { n = 1; } + return it.advance(n); + } + std.next = next; + // typedef is not specified in TypeScript yet. + // Instead, I listed all the containers and its iterators as overloaded functions + function begin(container) { + return container.begin(); + } + std.begin = begin; + // typedef is not specified in TypeScript yet. + // Instead, I listed all the containers and its iterators as overloaded functions + function end(container) { + return container.end(); + } + std.end = end; })(std || (std = {})); /// +/// +/// var std; (function (std) { var base; (function (base) { /** - *

An abstract container.

+ *

An abstract map.

+ * + *

{@link MapContainer MapContainers} are associative containers that store elements formed by a combination + * of a key value (Key) and a mapped value (T), and which allows for fast retrieval + * of individual elements based on their keys.

* - *

- * - *

+ *

In a {@link MapContainer}, the key values are generally used to identify the elements, while the + * mapped values store the content associated to this key. The types of key and + * mapped value may differ, and are grouped together in member type value_type, which is a + * {@link Pair} type combining both:

+ * + *

typedef pair value_type;

+ * + *

{@link MapContainer} stores elements, keeps sequence and enables indexing by inserting elements into a + * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index + * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

+ * + *

+ *

* *

Container properties

*
- *
Sequence
- *
Elements in sequence containers are ordered in a strict linear sequence. Individual elements are - * accessed by their position in this sequence.
+ *
Associative
+ *
+ * Elements in associative containers are referenced by their key and not by their absolute position + * in the container. + *
* - *
Doubly-linked list
- *
Each element keeps information on how to locate the next and the previous elements, allowing - * constant time insert and erase operations before or after a specific element (even of entire ranges), - * but no direct random access.
+ *
Map
+ *
+ * Each element associates a key to a mapped value: + * Keys are meant to identify the elements whose main content is the mapped value. + *
*
* - * @param Type of elements. + * @param Type of the keys. Each element in a map is identified by its key value. + * @param Type of the mapped value. Each element in a map stores some data as its mapped value. * * @author Jeongho Nam */ - var Container = (function () { - function Container() { + var MapContainer = (function (_super) { + __extends(MapContainer, _super); + function MapContainer() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i - 0] = arguments[_i]; } - // THIS IS ABSTRACT CLASS - // NOTHING TO DO ESPECIALLY + _super.call(this); + // INITIALIZATION + this.init(); + // BRANCH - OVERLOADINGS + if (args.length == 0) { } // DO NOTHING + else if (args.length == 1 && (args[0] instanceof base.Container || args[0] instanceof std.Vector)) { + this.construct_from_container(args[0]); + } + else if (args.length == 1 && args[0] instanceof Array) { + this.construct_from_array(args[0]); + } + else if (args.length == 2 && args[0] instanceof std.Iterator && args[1] instanceof std.Iterator) { + this.construct_from_range(args[0], args[1]); + } } /** - * @inheritdoc + * @hidden */ - Container.prototype.clear = function () { - this.erase(this.begin(), this.end()); + MapContainer.prototype.init = function () { + this.data_ = new std.List(); }; /** - * @inheritdoc + * @hidden */ - Container.prototype.empty = function () { - return this.size() == 0; + MapContainer.prototype.construct_from_array = function (items) { + for (var i = 0; i < items.length; i++) + if (items[i] instanceof std.Pair) + this.insert_by_pair(items[i]); + else + this.insert_by_tuple(items[i]); }; - /* --------------------------------------------------------------- - UTILITIES - --------------------------------------------------------------- */ /** - * @inheritdoc + * @hidden */ - Container.prototype.swap = function (obj) { - var supplement = new std.Vector(this.begin(), this.end()); - this.assign(obj.begin(), obj.end()); - obj.assign(supplement.begin(), supplement.end()); + MapContainer.prototype.construct_from_container = function (container) { + this.construct_from_range(container.begin(), container.end()); }; - return Container; - }()); - base.Container = Container; - })(base = std.base || (std.base = {})); -})(std || (std = {})); -/// -var std; -(function (std) { - var base; - (function (base) { - /** - *

An abstract error instance.

- * - *

{@link ErrorInstance} is an abstract class of {@link ErrorCode} and {@link ErrorCondition} - * holding an error instance's identifier {@link value}, associated with a {@link category}.

- * - *

The operating system and other low-level applications and libraries generate numerical error codes to - * represent possible results. These numerical values may carry essential information for a specific platform, - * but be non-portable from one platform to another.

- * - *

Objects of this class associate such numerical codes to {@link ErrorCategory error categories}, - * so that they can be interpreted when needed as more abstract (and portable) - * {@link ErrorCondition error conditions}.

- * - *

- *

- * - * @author Jeongho Nam - */ - var ErrorInstance = (function () { - function ErrorInstance(val, category) { - if (val === void 0) { val = 0; } - if (category === void 0) { category = null; } - this.assign(val, category); - } /** - *

Assign error instance.

- * - *

Assigns the {@link ErrorCode} object a value of val associated with the {@link ErrorCategory}.

- * - * @param val A numerical value identifying an error instance. - * @param category A reference to an {@link ErrorCategory} object. + * @hidden */ - ErrorInstance.prototype.assign = function (val, category) { - this.category_ = category; - this.value_ = val; + MapContainer.prototype.construct_from_range = function (begin, end) { + this.assign(begin, end); }; + /* --------------------------------------------------------- + ASSIGN & CLEAR + --------------------------------------------------------- */ /** - *

Clear error instance.

- * - *

Clears the value in the {@link ErrorCode} object so that it is set to a value of 0 of the - * {@link ErrorCategory.systemCategory ErrorCategory.systemCategory()} (indicating no error).

+ * @inheritdoc */ - ErrorInstance.prototype.clear = function () { - this.value_ = 0; + MapContainer.prototype.assign = function (first, last) { + // INSERT + this.clear(); + this.insert(first, last); }; - /* --------------------------------------------------------- - ACCESSORS - --------------------------------------------------------- */ /** - *

Get category.

- * - *

Returns a reference to the {@link ErrorCategory} associated with the {@link ErrorCode} object.

- * - * @return A reference to a non-copyable object of a type derived from {@link ErrorCategory}. + * @inheritdoc */ - ErrorInstance.prototype.category = function () { - return this.category_; + MapContainer.prototype.clear = function () { + // TO BE ABSTRACT + this.data_.clear(); }; /** - *

Error value.

+ *

Return iterator to beginning.

* - *

Returns the error value associated with the {@link ErrorCode} object.

+ *

Returns an iterator referring the first element in the

* - * @return The error value. + *

Note

+ *

If the container is {@link empty}, the returned iterator is same with {@link end end()}.

+ * + * @return An iterator to the first element in the The iterator containes the first element's value. */ - ErrorInstance.prototype.value = function () { - return this.value_; + MapContainer.prototype.begin = function () { + return new std.MapIterator(this, this.data_.begin()); }; /** - *

Get message.

+ *

Return iterator to end.

+ *

Returns an iterator referring to the past-the-end element in the

* - *

Returns the message associated with the error instance.

+ *

The past-the-end element is the theoretical element that would follow the last element in the + * It does not point to any element, and thus shall not be dereferenced.

* - *

Error messages are defined by the {@link category} the error instance belongs to.

+ *

Because the ranges used by functions of the container do not include the element reference by their + * closing iterator, this function is often used in combination with {@link MapContainer}.{@link begin} to + * specify a range including all the elements in the

* - *

This function returns the same as if the following member was called:

+ *

Note

+ *

Returned iterator from {@link MapContainer}.{@link end} does not refer any element. Trying to accessing + * element by the iterator will cause throwing exception ({@link OutOfRange}).

* - *

category().message(value())

+ *

If the container is {@link empty}, this function returns the same as {@link begin}.

* - * @return A string object with the message associated with the {@link ErrorCode}. + * @return An iterator to the end element in the */ - ErrorInstance.prototype.message = function () { - if (this.category_ == null || this.value_ == 0) - return ""; - else - return this.category_.message(this.value_); + MapContainer.prototype.end = function () { + return new std.MapIterator(this, this.data_.end()); }; /** - *

Default error condition.

+ *

Return {@link MapReverseIterator reverse iterator} to reverse beginning.

* - *

Returns the default {@link ErrorCondition}object associated with the {@link ErrorCode} object.

+ *

Returns a {@link MapReverseIterator reverse iterator} pointing to the last element in the container + * (i.e., its reverse beginning).

* - *

This function returns the same as if the following member was called:

+ * {@link MapReverseIterator Reverse iterators} iterate backwards: increasing them moves them towards the + * beginning of the container.

* - *

category().default_error_condition(value())

+ *

{@link rbegin} points to the element preceding the one that would be pointed to by member {@link end}. + *

* - *

{@link ErrorCategory.default_error_condition ErrorCategory.default_error_condition()} - * is a virtual member function, that can operate differently for each category.

+ * @return A {@link MapReverseIterator reverse iterator} to the reverse beginning of the sequence * - * @return An {@link ErrorCondition}object that corresponds to the {@link ErrorCode} object. */ - ErrorInstance.prototype.default_error_condition = function () { - if (this.category_ == null || this.value_ == 0) - return null; - else - return this.category_.default_error_condition(this.value_); + MapContainer.prototype.rbegin = function () { + return new std.MapReverseIterator(this.end()); }; - /* --------------------------------------------------------- - OPERATORS - --------------------------------------------------------- */ /** - *

Convert to bool.

+ *

Return {@link MapReverseIterator reverse iterator} to reverse end.

* - *

Returns whether the error instance has a numerical {@link value} other than 0.

+ *

Returns a {@link MapReverseIterator reverse iterator} pointing to the theoretical element right before + * the first element in the {@link MapContainer map container} (which is considered its reverse end). + *

* - *

If it is zero (which is generally used to represent no error), the function returns false, otherwise it returns true.

+ *

The range between {@link MapContainer}.{@link rbegin} and {@link MapContainer}.{@link rend} contains + * all the elements of the container (in reverse order).

* - * @return true if the error's numerical value is not zero. - * false otherwise. + * @return A {@link MapReverseIterator reverse iterator} to the reverse end of the sequence */ - ErrorInstance.prototype.to_bool = function () { - return this.value_ != 0; - }; - return ErrorInstance; - }()); - base.ErrorInstance = ErrorInstance; - })(base = std.base || (std.base = {})); -})(std || (std = {})); -/// -var std; -(function (std) { - var base; - (function (base) { - (function (Hash) { - Hash[Hash["MIN_SIZE"] = 10] = "MIN_SIZE"; - Hash[Hash["RATIO"] = 1] = "RATIO"; - Hash[Hash["MAX_RATIO"] = 2] = "MAX_RATIO"; - })(base.Hash || (base.Hash = {})); - var Hash = base.Hash; - /** - *

Hask buckets.

- * - * @author Jeongho Nam - */ - var HashBuckets = (function () { + MapContainer.prototype.rend = function () { + return new std.MapReverseIterator(this.begin()); + }; /* --------------------------------------------------------- - CONSTRUCTORS + ELEMENTS --------------------------------------------------------- */ /** - * Default Constructor. - */ - function HashBuckets() { - this.clear(); - } - /** - *

Reconstruction of hash table.

+ *

Whether have the item or not.

* - *

All the elements in the hash buckets are rearranged according to their hash value into the new set of - * buckets. This may alter the order of iteration of elements within the container.

+ *

Indicates whether a map has an item having the specified identifier.

* - *

Notice that {@link rehash rehashes} are automatically performed whenever its number of elements is going - * to greater than its own {@link capacity}.

+ * @param key Key value of the element whose mapped value is accessed. * - * @param size Number of bucket size to rehash. + * @return Whether the map has an item having the specified identifier. */ - HashBuckets.prototype.rehash = function (size) { - if (size < Hash.MIN_SIZE) - size = Hash.MIN_SIZE; - var prev_matrix = this.buckets_; - this.buckets_ = new std.Vector(); - for (var i = 0; i < size; i++) - this.buckets_.push_back(new std.Vector()); - for (var i = 0; i < prev_matrix.size(); i++) - for (var j = 0; j < prev_matrix.at(i).size(); j++) { - var val = prev_matrix.at(i).at(j); - var bucket = this.buckets_.at(this.hash_index(val)); - bucket.push_back(val); - this.item_size_++; - } - }; - HashBuckets.prototype.clear = function () { - this.buckets_ = new std.Vector(); - this.item_size_ = 0; - for (var i = 0; i < Hash.MIN_SIZE; i++) - this.buckets_.push_back(new std.Vector()); + MapContainer.prototype.has = function (key) { + return !this.find(key).equal_to(this.end()); }; - /* --------------------------------------------------------- - ACCESSORS - --------------------------------------------------------- */ - HashBuckets.prototype.size = function () { - return this.buckets_.size(); + /** + * Return the number of elements in the map. + */ + MapContainer.prototype.size = function () { + return this.data_.size(); }; - HashBuckets.prototype.item_size = function () { - return this.item_size_; + MapContainer.prototype.push = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i - 0] = arguments[_i]; + } + // TO BE ABSTRACT + for (var i = 0; i < args.length; i++) + if (args[i] instanceof std.Pair) + this.insert_by_pair(args[i]); + else if (args[i] instanceof Array) + this.insert_by_tuple(args[i]); + return this.size(); }; - HashBuckets.prototype.capacity = function () { - return this.buckets_.size() * Hash.MAX_RATIO; + MapContainer.prototype.insert = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i - 0] = arguments[_i]; + } + if (args.length == 1 && args[0] instanceof std.Pair) { + return this.insert_by_pair(args[0]); + } + else if (args.length == 1 && args[0] instanceof Array) { + return this.insert_by_tuple(args[0]); + } + else if (args.length == 2 && args[0] instanceof std.Iterator && args[1] instanceof std.Iterator) { + return this.insert_by_range(args[0], args[1]); + } + else { + var ret = void 0; + var is_reverse_iterator = false; + // REVERSE_ITERATOR TO ITERATOR + if (args[0] instanceof std.MapReverseIterator) { + is_reverse_iterator = true; + args[0] = args[0].base().prev(); + } + // INSERT AN ELEMENT + if (args[1] instanceof std.Pair) + ret = this.insert_by_hint(args[0], args[1]); + else + ret = this.insert_by_hint_with_tuple(args[0], args[1]); + // RETURN BRANCHES + if (is_reverse_iterator == true) + return new std.MapReverseIterator(ret.next()); + else + return ret; + } }; - HashBuckets.prototype.at = function (index) { - return this.buckets_.at(index); + /** + * @hidden + */ + MapContainer.prototype.insert_by_tuple = function (tuple) { + return this.insert_by_pair(new std.Pair(tuple[0], tuple[1])); }; - HashBuckets.prototype.hash_index = function (val) { - return std.hash(val) % this.buckets_.size(); + /** + * @hidden + */ + MapContainer.prototype.insert_by_hint_with_tuple = function (hint, tuple) { + return this.insert_by_hint(hint, std.make_pair(tuple[0], tuple[1])); }; - /* --------------------------------------------------------- - ELEMENTS I/O - --------------------------------------------------------- */ - HashBuckets.prototype.insert = function (val) { - this.buckets_.at(this.hash_index(val)).push_back(val); - if (++this.item_size_ > this.capacity()) - this.rehash(this.item_size_ * Hash.RATIO); + MapContainer.prototype.erase = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i - 0] = arguments[_i]; + } + if (args.length == 1 && (args[0] instanceof std.Iterator == false || args[0].get_source() != this)) + return this.erase_by_key(args[0]); + else if (args.length == 1) + return this.erase_by_iterator(args[0]); + else + return this.erase_by_iterator(args[0], args[1]); }; - HashBuckets.prototype.erase = function (val) { - var bucket = this.buckets_.at(this.hash_index(val)); - for (var i = 0; i < bucket.size(); i++) - if (bucket.at(i) == val) { - bucket.splice(i, 1); - this.item_size_--; - break; - } + /** + * @hidden + */ + MapContainer.prototype.erase_by_key = function (key) { + var it = this.find(key); + if (it.equal_to(this.end()) == true) + return 0; + this.erase_by_iterator(it); + return 1; + }; + /** + * @hidden + */ + MapContainer.prototype.erase_by_iterator = function (first, last) { + if (last === void 0) { last = first.next(); } + var ret; + var is_reverse_iterator = false; + // REVERSE ITERATOR TO ITERATOR + if (first instanceof std.MapReverseIterator) { + is_reverse_iterator = true; + var first_it = last.base(); + var last_it = first.base(); + first = first_it; + last = last_it; + } + // ERASE ELEMENTS + ret = this.erase_by_range(first, last); + // RETURN BRANCHES + if (is_reverse_iterator == true) + return new std.MapReverseIterator(ret.next()); + else + return ret; }; - return HashBuckets; - }()); - base.HashBuckets = HashBuckets; - })(base = std.base || (std.base = {})); -})(std || (std = {})); -/// -/// -/// -/// -/// -/// -// Iterator definitions. -// -// @reference http://www.cplusplus.com/reference/iterator -// @author Jeongho Nam -var std; -(function (std) { - /** - *

Bi-directional iterator.

- * - *

{@link Iterator Bidirectional iterators} are iterators that can be used to access the sequence of elements - * in a range in both directions (towards the end and towards the beginning).

- * - *

All {@link IArrayIterator random-access iterators} are also valid {@link Iterrator bidirectional iterators}. - *

- * - *

There is not a single type of {@link Iterator bidirectional iterator}: {@link IContainer Each container} - * may define its own specific iterator type able to iterate through it and access its elements.

- * - *

- * - *

- * - * @reference http://www.cplusplus.com/reference/iterator/BidirectionalIterator - * @author Jeongho Nam - */ - var Iterator = (function () { - /* --------------------------------------------------------- - CONSTRUCTORS - --------------------------------------------------------- */ - /** - * Construct from the source {@link IContainer container}. - * - * @param source The source - */ - function Iterator(source) { - this.source_ = source; - } - /** - * Advances the {@link Iterator} by n element positions. - * - * @param n Number of element positions to advance. - * @return An advanced iterator. - */ - Iterator.prototype.advance = function (n) { - var it = this; - var i; - if (n >= 0) { - for (i = 0; i < n; i++) - if (it.equal_to(this.source_.end())) - return this.source_.end(); - else - it = it.next(); - } - else { - n = n * -1; - for (i = 0; i < n; i++) - if (it.equal_to(this.source_.end())) - return this.source_.end(); - else - it = it.prev(); - } - return it; - }; - /* --------------------------------------------------------- - ACCESSORS - --------------------------------------------------------- */ - /** - * Get source - */ - Iterator.prototype.get_source = function () { - return this.source_; - }; - /** - *

Whether an iterator is equal with the iterator.

- * - *

Compare two iterators and returns whether they are equal or not.

- * - *

Note

- *

Iterator's equal_to() only compare souce container and index number.

- * - *

Although elements in a pair, key and value are equal_to, if the source map or - * index number is different, then the {@link equal_to equal_to()} will return false. If you want to - * compare the elements of a pair, compare them directly by yourself.

- * - * @param obj An iterator to compare - * @return Indicates whether equal or not. - */ - Iterator.prototype.equal_to = function (obj) { - return this.source_ == obj.source_; - }; - Object.defineProperty(Iterator.prototype, "value", { /** - *

Get value of the iterator is pointing.

- * - * @return A value of the iterator. + * @hidden */ - get: function () { - throw new std.LogicError("Have to be overriden."); - }, - enumerable: true, - configurable: true - }); - return Iterator; - }()); - std.Iterator = Iterator; + MapContainer.prototype.erase_by_range = function (begin, end) { + // ERASE + var listIterator = this.data_.erase(begin.get_list_iterator(), end.get_list_iterator()); + // POST-PROCESS + this.handle_erase(begin, end); + return new std.MapIterator(this, listIterator); + }; + return MapContainer; + }(base.Container)); + base.MapContainer = MapContainer; + })(base = std.base || (std.base = {})); })(std || (std = {})); var std; (function (std) { /** - *

This class reverses the direction in which a bidirectional or random-access iterator iterates through a range. - *

- * - *

A copy of the original iterator (the {@link Iterator base iterator}) is kept internally and used to reflect - * the operations performed on the {@link ReverseIterator}: whenever the {@link ReverseIterator} is incremented, its - * {@link Iterator base iterator} is decreased, and vice versa. A copy of the {@link Iterator base iterator} with the - * current state can be obtained at any time by calling member {@link base}.

- * - *

Notice however that when an iterator is reversed, the reversed version does not point to the same element in - * the range, but to the one preceding it. This is so, in order to arrange for the past-the-end element of a - * range: An iterator pointing to a past-the-end element in a range, when reversed, is pointing to the last element - * (not past it) of the range (this would be the first element of the reversed range). And if an iterator to the - * first element in a range is reversed, the reversed iterator points to the element before the first element (this - * would be the past-the-end element of the reversed range).

+ *

An iterator of {@link MapContainer map container}.

* - *

- * - *

+ *

+ *

* - * @reference http://www.cplusplus.com/reference/iterator/reverse_iterator * @author Jeongho Nam */ - var ReverseIterator = (function (_super) { - __extends(ReverseIterator, _super); + var MapIterator = (function (_super) { + __extends(MapIterator, _super); /* --------------------------------------------------------- CONSTRUCTORS --------------------------------------------------------- */ - function ReverseIterator(base) { - if (base == null) - _super.call(this, null); - else { - _super.call(this, base.get_source()); - this.base_ = base.prev(); - } + /** + * Construct from the {@link MapContainer source map} and {@link ListIterator list iterator}. + * + * @param source The source {@link MapContainer}. + * @param list_iterator A {@link ListIterator} pointing {@link Pair} of key and value. + */ + function MapIterator(source, list_iterator) { + _super.call(this, source); + this.list_iterator_ = list_iterator; } - ReverseIterator.prototype.base = function () { - return this.base_.next(); - }; - Object.defineProperty(ReverseIterator.prototype, "value", { - /* --------------------------------------------------------- - ACCESSORS - --------------------------------------------------------- */ - get: function () { - return this.base_.value; - }, - enumerable: true, - configurable: true - }); /* --------------------------------------------------------- MOVERS --------------------------------------------------------- */ /** - * @inheritdoc + * Get iterator to previous element. */ - ReverseIterator.prototype.prev = function () { - var ret = this.create_neighbor(); - ret.source_ = this.source_; - ret.base_ = this.base_.next(); - return ret; + MapIterator.prototype.prev = function () { + return new MapIterator(this.map, this.list_iterator_.prev()); }; /** - * @inheritdoc + * Get iterator to next element. */ - ReverseIterator.prototype.next = function () { - var ret = this.create_neighbor(); - ret.source_ = this.source_; - ret.base_ = this.base_.next(); - return ret; + MapIterator.prototype.next = function () { + return new MapIterator(this.map, this.list_iterator_.next()); }; /** - * @inheritdoc + * Advances the Iterator by n element positions. + * + * @param step Number of element positions to advance. + * @return An advanced Iterator. */ - ReverseIterator.prototype.advance = function (n) { - var ret = this.create_neighbor(); - ret.source_ = this.source_; - ret.base_ = this.base_.advance(-n); - return ret; + MapIterator.prototype.advance = function (step) { + return new MapIterator(this.map, this.list_iterator_.advance(step)); }; - /* --------------------------------------------------------- - COMPARES - --------------------------------------------------------- */ + Object.defineProperty(MapIterator.prototype, "map", { + /* --------------------------------------------------------- + ACCESSORS + --------------------------------------------------------- */ + /** + * @hidden + */ + get: function () { + return this.source_; + }, + enumerable: true, + configurable: true + }); /** - * @inheritdoc + * Get ListIterator. */ - ReverseIterator.prototype.equal_to = function (obj) { - return this.base_.equal_to(obj.base_); + MapIterator.prototype.get_list_iterator = function () { + return this.list_iterator_; }; + Object.defineProperty(MapIterator.prototype, "value", { + /** + * @inheritdoc + */ + get: function () { + return this.list_iterator_.value; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(MapIterator.prototype, "first", { + /** + * Get first, key element. + */ + get: function () { + return this.list_iterator_.value.first; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(MapIterator.prototype, "second", { + /** + * Get second, value element. + */ + get: function () { + return this.list_iterator_.value.second; + }, + /** + * Set second value. + */ + set: function (val) { + this.list_iterator_.value.second = val; + }, + enumerable: true, + configurable: true + }); + /* --------------------------------------------------------- + COMPARISONS + --------------------------------------------------------- */ /** - * @inheritdoc - */ - ReverseIterator.prototype.swap = function (obj) { - this.base_.swap(obj.base_); - }; - return ReverseIterator; - }(std.Iterator)); - std.ReverseIterator = ReverseIterator; - /* ========================================================= - GLOBAL FUNCTIONS - - MOVERS - - BEGIN - - END - ============================================================ - MOVERS - --------------------------------------------------------- */ - /** - *

Return distance between {@link Iterator iterators}.

- * - *

Calculates the number of elements between first and last.

- * - *

If it is a {@link IArrayIterator random-access iterator}, the function uses operator- to calculate this. - * Otherwise, the function uses the increase operator {@link Iterator.next next()} repeatedly.

- * - * @param first Iterator pointing to the initial element. - * @param last Iterator pointing to the final element. This must be reachable from first. - * - * @return The number of elements between first and last. - */ - function distance(first, last) { - if (first.index != undefined) { - // WHEN IARRAY_ITERATOR - // ABS FOR REVERSE_ITERATOR - return Math.abs(last.index - first.index); - } - var length = 0; - for (; !first.equal_to(last); first = first.next()) - length++; - return length; - } - std.distance = distance; - /** - *

Advance iterator.

- * - *

Advances the iterator it by n elements positions.

- * - * @param it Iterator to be advanced. - * @param n Number of element positions to advance. - * - * @return An iterator to the element n positions before it. - */ - function advance(it, n) { - return it.advance(n); - } - std.advance = advance; - /** - *

Get iterator to previous element.

- * - *

Returns an iterator pointing to the element that it would be pointing to if advanced -n positions.

- * - * @param it Iterator to base position. - * @param n Number of element positions offset (1 by default). - * - * @return An iterator to the element n positions before it. - */ - function prev(it, n) { - if (n === void 0) { n = 1; } - return it.advance(n); - } - std.prev = prev; + *

Whether an iterator is equal with the iterator.

+ * + *

Compare two iterators and returns whether they are equal or not.

+ * + * @param obj An iterator to compare + * @return Indicates whether equal or not. + */ + MapIterator.prototype.equal_to = function (obj) { + return this.source_ == obj.source_ && this.list_iterator_.equal_to(obj.list_iterator_); + }; + MapIterator.prototype.less = function (obj) { + return std.less(this.first, obj.first); + }; + MapIterator.prototype.hash = function () { + return std.hash(this.first); + }; + MapIterator.prototype.swap = function (obj) { + this.list_iterator_.swap(obj.list_iterator_); + }; + return MapIterator; + }(std.Iterator)); + std.MapIterator = MapIterator; /** - *

Get iterator to next element.

- * - *

Returns an iterator pointing to the element that it would be pointing to if advanced n positions.

+ *

A reverse-iterator of {@link MapContainer map container}.

* - * @param it Iterator to base position. - * @param n Number of element positions offset (1 by default). + *

+ *

* - * @return An iterator to the element n positions away from it. + * @author Jeongho Nam */ - function next(it, n) { - if (n === void 0) { n = 1; } - return it.advance(n); - } - std.next = next; - // typedef is not specified in TypeScript yet. - // Instead, I listed all the containers and its iterators as overloaded functions - function begin(container) { - return container.begin(); - } - std.begin = begin; - // typedef is not specified in TypeScript yet. - // Instead, I listed all the containers and its iterators as overloaded functions - function end(container) { - return container.end(); - } - std.end = end; + var MapReverseIterator = (function (_super) { + __extends(MapReverseIterator, _super); + /* --------------------------------------------------------- + CONSTRUCTORS + --------------------------------------------------------- */ + function MapReverseIterator(base) { + _super.call(this, base); + } + MapReverseIterator.prototype.create_neighbor = function () { + return new MapReverseIterator(null); + }; + Object.defineProperty(MapReverseIterator.prototype, "first", { + /* --------------------------------------------------------- + ACCESSORS + --------------------------------------------------------- */ + /** + * Get first, key element. + */ + get: function () { + return this.base_.first; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(MapReverseIterator.prototype, "second", { + /** + * Get second, value element. + */ + get: function () { + return this.base_.second; + }, + /** + * Set second value. + */ + set: function (val) { + this.base_.second = val; + }, + enumerable: true, + configurable: true + }); + return MapReverseIterator; + }(std.ReverseIterator)); + std.MapReverseIterator = MapReverseIterator; })(std || (std = {})); /// -/// -/// +/// var std; (function (std) { var base; (function (base) { /** - *

An abstract map.

+ *

An abstract multi-map.

* - *

{@link MapContainer MapContainers} are associative containers that store elements formed by a combination - * of a key value (Key) and a mapped value (T), and which allows for fast retrieval - * of individual elements based on their keys.

+ *

{@link MultiMap MultiMaps} are associative containers that store elements formed by a combination of a + * key value (Key) and a mapped value (T), and which allows for fast retrieval of + * individual elements based on their keys.

* *

In a {@link MapContainer}, the key values are generally used to identify the elements, while the - * mapped values store the content associated to this key. The types of key and + * mapped values store the content associated to this key. The types of key and * mapped value may differ, and are grouped together in member type value_type, which is a * {@link Pair} type combining both:

* *

typedef pair value_type;

* - *

{@link MapContainer} stores elements, keeps sequence and enables indexing by inserting elements into a + *

{@link UniqueMap} stores elements, keeps sequence and enables indexing by inserting elements into a * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -3597,6 +3107,9 @@ var std; * Each element associates a key to a mapped value: * Keys are meant to identify the elements whose main content is the mapped value. * + * + *
Multiple equivalent keys
+ *
Multiple elements in the container can have equivalent keys.
*
* * @param Type of the keys. Each element in a map is identified by its key value. @@ -3604,9 +3117,89 @@ var std; * * @author Jeongho Nam */ - var MapContainer = (function (_super) { - __extends(MapContainer, _super); - function MapContainer() { + var MultiMap = (function (_super) { + __extends(MultiMap, _super); + function MultiMap() { + _super.apply(this, arguments); + } + MultiMap.prototype.insert = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i - 0] = arguments[_i]; + } + return _super.prototype.insert.apply(this, args); + }; + /** + *

Swap content.

+ * + *

Exchanges the content of the container by the content of obj, which is another + * {@link UniqueMap map} of the same type. Sizes abd container type may differ.

+ * + *

After the call to this member function, the elements in this container are those which were + * in obj before the call, and the elements of obj are those which were in this. All + * iterators, references and pointers remain valid for the swapped objects.

+ * + *

Notice that a non-member function exists with the same name, {@link std.swap swap}, overloading that + * algorithm with an optimization that behaves like this member function.

+ * + * @param obj Another {@link MultiMap map container} of the same type of elements as this (i.e., + * with the same template parameters, Key and T) whose content is swapped + * with that of this {@link MultiMap container}. + */ + MultiMap.prototype.swap = function (obj) { + var vec = new std.Vector(this.begin(), this.end()); + this.assign(obj.begin(), obj.end()); + obj.assign(vec.begin(), vec.end()); + }; + return MultiMap; + }(base.MapContainer)); + base.MultiMap = MultiMap; + })(base = std.base || (std.base = {})); +})(std || (std = {})); +/// +/// +/// +var std; +(function (std) { + var base; + (function (base) { + /** + *

An abstract set.

+ * + *

{@link SetContainer SetContainers} are containers that store elements allowing fast retrieval of + * individual elements based on their value.

+ * + *

In an {@link SetContainer}, the value of an element is at the same time its key, used to + * identify it. Keys are immutable, therefore, the elements in an {@link SetContainer} cannot be + * modified once in the container - they can be inserted and removed, though.

+ * + *

{@link SetContainer} stores elements, keeps sequence and enables indexing by inserting elements into a + * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index + * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

+ * + *

+ *

+ * + *

Container properties

+ *
+ *
Associative
+ *
+ * Elements in associative containers are referenced by their key and not by their absolute + * position in the container. + *
+ * + *
Set
+ *
The value of an element is also the key used to identify it.
+ *
+ * + * @param Type of the elements. Each element in a {@link SetContainer} container is also identified + * by this value (each value is itself also the element's key). + * + * @author Jeongho Nam + */ + var SetContainer = (function (_super) { + __extends(SetContainer, _super); + function SetContainer() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i - 0] = arguments[_i]; @@ -3629,29 +3222,26 @@ var std; /** * @hidden */ - MapContainer.prototype.init = function () { + SetContainer.prototype.init = function () { this.data_ = new std.List(); }; /** * @hidden */ - MapContainer.prototype.construct_from_array = function (items) { + SetContainer.prototype.construct_from_array = function (items) { for (var i = 0; i < items.length; i++) - if (items[i] instanceof std.Pair) - this.insert_by_pair(items[i]); - else - this.insert_by_tuple(items[i]); + this.insert_by_val(items[i]); }; /** * @hidden */ - MapContainer.prototype.construct_from_container = function (container) { + SetContainer.prototype.construct_from_container = function (container) { this.construct_from_range(container.begin(), container.end()); }; /** * @hidden */ - MapContainer.prototype.construct_from_range = function (begin, end) { + SetContainer.prototype.construct_from_range = function (begin, end) { this.assign(begin, end); }; /* --------------------------------------------------------- @@ -3660,85 +3250,41 @@ var std; /** * @inheritdoc */ - MapContainer.prototype.assign = function (first, last) { + SetContainer.prototype.assign = function (begin, end) { // INSERT this.clear(); - this.insert(first, last); + this.insert(begin, end); }; /** * @inheritdoc */ - MapContainer.prototype.clear = function () { + SetContainer.prototype.clear = function () { // TO BE ABSTRACT this.data_.clear(); }; /** - *

Return iterator to beginning.

- * - *

Returns an iterator referring the first element in the

- * - *

Note

- *

If the container is {@link empty}, the returned iterator is same with {@link end end()}.

- * - * @return An iterator to the first element in the The iterator containes the first element's value. + * @inheritdoc */ - MapContainer.prototype.begin = function () { - return new std.MapIterator(this, this.data_.begin()); + SetContainer.prototype.begin = function () { + return new std.SetIterator(this, this.data_.begin()); }; /** - *

Return iterator to end.

- *

Returns an iterator referring to the past-the-end element in the

- * - *

The past-the-end element is the theoretical element that would follow the last element in the - * It does not point to any element, and thus shall not be dereferenced.

- * - *

Because the ranges used by functions of the container do not include the element reference by their - * closing iterator, this function is often used in combination with {@link MapContainer}.{@link begin} to - * specify a range including all the elements in the

- * - *

Note

- *

Returned iterator from {@link MapContainer}.{@link end} does not refer any element. Trying to accessing - * element by the iterator will cause throwing exception ({@link OutOfRange}).

- * - *

If the container is {@link empty}, this function returns the same as {@link begin}.

- * - * @return An iterator to the end element in the + * @inheritdoc */ - MapContainer.prototype.end = function () { - return new std.MapIterator(this, this.data_.end()); - }; - /** - *

Return {@link MapReverseIterator reverse iterator} to reverse beginning.

- * - *

Returns a {@link MapReverseIterator reverse iterator} pointing to the last element in the container - * (i.e., its reverse beginning).

- * - * {@link MapReverseIterator Reverse iterators} iterate backwards: increasing them moves them towards the - * beginning of the container.

- * - *

{@link rbegin} points to the element preceding the one that would be pointed to by member {@link end}. - *

- * - * @return A {@link MapReverseIterator reverse iterator} to the reverse beginning of the sequence - * + SetContainer.prototype.end = function () { + return new std.SetIterator(this, this.data_.end()); + }; + /** + * @inheritdoc */ - MapContainer.prototype.rbegin = function () { - return new std.MapReverseIterator(this.end()); + SetContainer.prototype.rbegin = function () { + return new std.SetReverseIterator(this.end()); }; /** - *

Return {@link MapReverseIterator reverse iterator} to reverse end.

- * - *

Returns a {@link MapReverseIterator reverse iterator} pointing to the theoretical element right before - * the first element in the {@link MapContainer map container} (which is considered its reverse end). - *

- * - *

The range between {@link MapContainer}.{@link rbegin} and {@link MapContainer}.{@link rend} contains - * all the elements of the container (in reverse order).

- * - * @return A {@link MapReverseIterator reverse iterator} to the reverse end of the sequence + * @inheritdoc */ - MapContainer.prototype.rend = function () { - return new std.MapReverseIterator(this.begin()); + SetContainer.prototype.rend = function () { + return new std.SetReverseIterator(this.begin()); }; /* --------------------------------------------------------- ELEMENTS @@ -3746,87 +3292,80 @@ var std; /** *

Whether have the item or not.

* - *

Indicates whether a map has an item having the specified identifier.

+ *

Indicates whether a set has an item having the specified identifier.

* * @param key Key value of the element whose mapped value is accessed. * - * @return Whether the map has an item having the specified identifier. + * @return Whether the set has an item having the specified identifier. */ - MapContainer.prototype.has = function (key) { - return !this.find(key).equal_to(this.end()); + SetContainer.prototype.has = function (val) { + return !this.find(val).equal_to(this.end()); }; /** - * Return the number of elements in the map. + * @inheritdoc */ - MapContainer.prototype.size = function () { + SetContainer.prototype.size = function () { return this.data_.size(); }; - MapContainer.prototype.push = function () { + /* ========================================================= + ELEMENTS I/O + - INSERT + - ERASE + - POST-PROCESS + ============================================================ + INSERT + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + SetContainer.prototype.push = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i - 0] = arguments[_i]; } // TO BE ABSTRACT for (var i = 0; i < args.length; i++) - if (args[i] instanceof std.Pair) - this.insert_by_pair(args[i]); - else if (args[i] instanceof Array) - this.insert_by_tuple(args[i]); + this.insert_by_val(args[i]); return this.size(); }; - MapContainer.prototype.insert = function () { + SetContainer.prototype.insert = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i - 0] = arguments[_i]; } - if (args.length == 1 && args[0] instanceof std.Pair) { - return this.insert_by_pair(args[0]); - } - else if (args.length == 1 && args[0] instanceof Array) { - return this.insert_by_tuple(args[0]); - } - else if (args.length == 2 && args[0] instanceof std.Iterator && args[1] instanceof std.Iterator) { - return this.insert_by_range(args[0], args[1]); - } - else { - var ret = void 0; - var is_reverse_iterator = false; - // REVERSE_ITERATOR TO ITERATOR - if (args[0] instanceof std.MapReverseIterator) { - is_reverse_iterator = true; - args[0] = args[0].base().prev(); + if (args.length == 1) + return this.insert_by_val(args[0]); + else if (args.length == 2 && args[0] instanceof std.Iterator) { + if (args[1] instanceof std.Iterator && args[0].get_source() != this && args[1].get_source() != this) { + // IT DOESN'T CONTAIN POSITION + // RANGES TO INSERT ONLY + return this.insert_by_range(args[0], args[1]); } - // INSERT AN ELEMENT - if (args[1] instanceof std.Pair) + else { + var ret = void 0; + var is_reverse_iterator = false; + // REVERSE_ITERATOR TO ITERATOR + if (args[0] instanceof std.SetReverseIterator) { + is_reverse_iterator = true; + args[0] = args[0].base().prev(); + } + // INSERT AN ELEMENT ret = this.insert_by_hint(args[0], args[1]); - else - ret = this.insert_by_hint_with_tuple(args[0], args[1]); - // RETURN BRANCHES - if (is_reverse_iterator == true) - return new std.MapReverseIterator(ret.next()); - else - return ret; + // RETURN BRANCHES + if (is_reverse_iterator == true) + return new std.SetReverseIterator(ret.next()); + else + return ret; + } } }; - /** - * @hidden - */ - MapContainer.prototype.insert_by_tuple = function (tuple) { - return this.insert_by_pair(new std.Pair(tuple[0], tuple[1])); - }; - /** - * @hidden - */ - MapContainer.prototype.insert_by_hint_with_tuple = function (hint, tuple) { - return this.insert_by_hint(hint, std.make_pair(tuple[0], tuple[1])); - }; - MapContainer.prototype.erase = function () { + SetContainer.prototype.erase = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i - 0] = arguments[_i]; } if (args.length == 1 && (args[0] instanceof std.Iterator == false || args[0].get_source() != this)) - return this.erase_by_key(args[0]); + return this.erase_by_val(args[0]); else if (args.length == 1) return this.erase_by_iterator(args[0]); else @@ -3835,22 +3374,12 @@ var std; /** * @hidden */ - MapContainer.prototype.erase_by_key = function (key) { - var it = this.find(key); - if (it.equal_to(this.end()) == true) - return 0; - this.erase_by_iterator(it); - return 1; - }; - /** - * @hidden - */ - MapContainer.prototype.erase_by_iterator = function (first, last) { + SetContainer.prototype.erase_by_iterator = function (first, last) { if (last === void 0) { last = first.next(); } var ret; var is_reverse_iterator = false; // REVERSE ITERATOR TO ITERATOR - if (first instanceof std.MapReverseIterator) { + if (first instanceof std.SetReverseIterator) { is_reverse_iterator = true; var first_it = last.base(); var last_it = first.base(); @@ -3861,75 +3390,85 @@ var std; ret = this.erase_by_range(first, last); // RETURN BRANCHES if (is_reverse_iterator == true) - return new std.MapReverseIterator(ret.next()); + return new std.SetReverseIterator(ret.next()); else return ret; }; /** * @hidden */ - MapContainer.prototype.erase_by_range = function (begin, end) { + SetContainer.prototype.erase_by_val = function (val) { + // TEST WHETHER EXISTS + var it = this.find(val); + if (it.equal_to(this.end()) == true) + return 0; // ERASE - var listIterator = this.data_.erase(begin.get_list_iterator(), end.get_list_iterator()); + this.erase_by_iterator(it); + return 1; + }; + /** + * @hidden + */ + SetContainer.prototype.erase_by_range = function (begin, end) { + // ERASE + var list_iterator = this.data_.erase(begin.get_list_iterator(), end.get_list_iterator()); // POST-PROCESS this.handle_erase(begin, end); - return new std.MapIterator(this, listIterator); + return new std.SetIterator(this, list_iterator); //begin.prev(); }; - return MapContainer; + return SetContainer; }(base.Container)); - base.MapContainer = MapContainer; + base.SetContainer = SetContainer; })(base = std.base || (std.base = {})); })(std || (std = {})); var std; (function (std) { /** - *

An iterator of {@link MapContainer map container}.

+ *

An iterator of a Set.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ - var MapIterator = (function (_super) { - __extends(MapIterator, _super); - /* --------------------------------------------------------- - CONSTRUCTORS - --------------------------------------------------------- */ + var SetIterator = (function (_super) { + __extends(SetIterator, _super); /** - * Construct from the {@link MapContainer source map} and {@link ListIterator list iterator}. + *

Construct from source and index number.

* - * @param source The source {@link MapContainer}. - * @param list_iterator A {@link ListIterator} pointing {@link Pair} of key and value. + *

Note

+ *

Do not create iterator directly.

+ *

Use begin(), find() or end() in Map instead.

+ * + * @param map The source Set to reference. + * @param index Sequence number of the element in the source Set. */ - function MapIterator(source, list_iterator) { + function SetIterator(source, it) { _super.call(this, source); - this.list_iterator_ = list_iterator; + this.list_iterator_ = it; } /* --------------------------------------------------------- MOVERS --------------------------------------------------------- */ /** - * Get iterator to previous element. + * @inheritdoc */ - MapIterator.prototype.prev = function () { - return new MapIterator(this.map, this.list_iterator_.prev()); + SetIterator.prototype.prev = function () { + return new SetIterator(this.set, this.list_iterator_.prev()); }; /** - * Get iterator to next element. + * @inheritdoc */ - MapIterator.prototype.next = function () { - return new MapIterator(this.map, this.list_iterator_.next()); + SetIterator.prototype.next = function () { + return new SetIterator(this.set, this.list_iterator_.next()); }; /** - * Advances the Iterator by n element positions. - * - * @param step Number of element positions to advance. - * @return An advanced Iterator. + * @inheritdoc */ - MapIterator.prototype.advance = function (step) { - return new MapIterator(this.map, this.list_iterator_.advance(step)); + SetIterator.prototype.advance = function (size) { + return new SetIterator(this.set, this.list_iterator_.advance(size)); }; - Object.defineProperty(MapIterator.prototype, "map", { + Object.defineProperty(SetIterator.prototype, "set", { /* --------------------------------------------------------- ACCESSORS --------------------------------------------------------- */ @@ -3942,13 +3481,10 @@ var std; enumerable: true, configurable: true }); - /** - * Get ListIterator. - */ - MapIterator.prototype.get_list_iterator = function () { + SetIterator.prototype.get_list_iterator = function () { return this.list_iterator_; }; - Object.defineProperty(MapIterator.prototype, "value", { + Object.defineProperty(SetIterator.prototype, "value", { /** * @inheritdoc */ @@ -3958,698 +3494,980 @@ var std; enumerable: true, configurable: true }); - Object.defineProperty(MapIterator.prototype, "first", { - /** - * Get first, key element. - */ - get: function () { - return this.list_iterator_.value.first; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(MapIterator.prototype, "second", { - /** - * Get second, value element. - */ - get: function () { - return this.list_iterator_.value.second; - }, - /** - * Set second value. - */ - set: function (val) { - this.list_iterator_.value.second = val; - }, - enumerable: true, - configurable: true - }); /* --------------------------------------------------------- COMPARISONS --------------------------------------------------------- */ /** - *

Whether an iterator is equal with the iterator.

- * - *

Compare two iterators and returns whether they are equal or not.

- * - * @param obj An iterator to compare - * @return Indicates whether equal or not. + * @inheritdoc */ - MapIterator.prototype.equal_to = function (obj) { - return this.source_ == obj.source_ && this.list_iterator_.equal_to(obj.list_iterator_); + SetIterator.prototype.equal_to = function (obj) { + return _super.prototype.equal_to.call(this, obj) && this.list_iterator_ == obj.list_iterator_; }; - MapIterator.prototype.less = function (obj) { - return std.less(this.first, obj.first); + /** + * @inheritdoc + */ + SetIterator.prototype.less = function (obj) { + return std.less(this.value, obj.value); }; - MapIterator.prototype.hash = function () { - return std.hash(this.first); + /** + * @inheritdoc + */ + SetIterator.prototype.hash = function () { + return std.hash(this.value); }; - MapIterator.prototype.swap = function (obj) { + /** + * @inheritdoc + */ + SetIterator.prototype.swap = function (obj) { this.list_iterator_.swap(obj.list_iterator_); }; - return MapIterator; + return SetIterator; }(std.Iterator)); - std.MapIterator = MapIterator; + std.SetIterator = SetIterator; /** - *

A reverse-iterator of {@link MapContainer map container}.

+ *

A reverse-iterator of Set.

* - *

- *

+ *

+ *

+ * + * @param Type of the elements. * * @author Jeongho Nam */ - var MapReverseIterator = (function (_super) { - __extends(MapReverseIterator, _super); + var SetReverseIterator = (function (_super) { + __extends(SetReverseIterator, _super); /* --------------------------------------------------------- CONSTRUCTORS --------------------------------------------------------- */ - function MapReverseIterator(base) { + function SetReverseIterator(base) { _super.call(this, base); } - MapReverseIterator.prototype.create_neighbor = function () { - return new MapReverseIterator(null); - }; - Object.defineProperty(MapReverseIterator.prototype, "first", { - /* --------------------------------------------------------- - ACCESSORS - --------------------------------------------------------- */ - /** - * Get first, key element. - */ - get: function () { - return this.base_.first; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(MapReverseIterator.prototype, "second", { - /** - * Get second, value element. - */ - get: function () { - return this.base_.second; - }, - /** - * Set second value. - */ - set: function (val) { - this.base_.second = val; - }, - enumerable: true, - configurable: true - }); - return MapReverseIterator; - }(std.ReverseIterator)); - std.MapReverseIterator = MapReverseIterator; -})(std || (std = {})); -/// -/// -var std; -(function (std) { - var base; - (function (base) { /** - *

Hash buckets storing {@link MapIterator MapIterators}.

- * - *

- * - *

- * - * @author Jeongho Nam + * @inheritdoc */ - var MapHashBuckets = (function (_super) { - __extends(MapHashBuckets, _super); - function MapHashBuckets(map) { - _super.call(this); - this.map = map; - } - MapHashBuckets.prototype.find = function (key) { - var index = std.hash(key) % this.size(); - var bucket = this.at(index); - for (var i = 0; i < bucket.size(); i++) - if (std.equal_to(bucket.at(i).first, key)) - return bucket.at(i); - return this.map.end(); - }; - return MapHashBuckets; - }(base.HashBuckets)); - base.MapHashBuckets = MapHashBuckets; - })(base = std.base || (std.base = {})); + SetReverseIterator.prototype.create_neighbor = function () { + return new SetReverseIterator(null); + }; + return SetReverseIterator; + }(std.ReverseIterator)); + std.SetReverseIterator = SetReverseIterator; })(std || (std = {})); /// -/// +/// var std; (function (std) { var base; (function (base) { /** - *

An abstract multi-map.

- * - *

{@link MultiMap MultiMaps} are associative containers that store elements formed by a combination of a - * key value (Key) and a mapped value (T), and which allows for fast retrieval of - * individual elements based on their keys.

+ *

An abstract set.

* - *

In a {@link MapContainer}, the key values are generally used to identify the elements, while the - * mapped values store the content associated to this key. The types of key and - * mapped value may differ, and are grouped together in member type value_type, which is a - * {@link Pair} type combining both:

+ *

{@link SetContainer SetContainers} are containers that store elements allowing fast retrieval of + * individual elements based on their value.

* - *

typedef pair value_type;

+ *

In an {@link SetContainer}, the value of an element is at the same time its key, used to + * identify it. Keys are immutable, therefore, the elements in an {@link SetContainer} cannot be + * modified once in the container - they can be inserted and removed, though.

* - *

{@link UniqueMap} stores elements, keeps sequence and enables indexing by inserting elements into a + *

{@link SetContainer} stores elements, keeps sequence and enables indexing by inserting elements into a * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
*
Associative
*
- * Elements in associative containers are referenced by their key and not by their absolute position - * in the container. + * Elements in associative containers are referenced by their key and not by their absolute + * position in the container. *
* - *
Map
- *
- * Each element associates a key to a mapped value: - * Keys are meant to identify the elements whose main content is the mapped value. - *
+ *
Set
+ *
The value of an element is also the key used to identify it.
* *
Multiple equivalent keys
*
Multiple elements in the container can have equivalent keys.
*
* - * @param Type of the keys. Each element in a map is identified by its key value. - * @param Type of the mapped value. Each element in a map stores some data as its mapped value. + * @param Type of the elements. Each element in a {@link SetContainer} container is also identified + * by this value (each value is itself also the element's key). * * @author Jeongho Nam */ - var MultiMap = (function (_super) { - __extends(MultiMap, _super); - function MultiMap() { + var MultiSet = (function (_super) { + __extends(MultiSet, _super); + function MultiSet() { _super.apply(this, arguments); } - MultiMap.prototype.insert = function () { + MultiSet.prototype.insert = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i - 0] = arguments[_i]; } return _super.prototype.insert.apply(this, args); }; + /* --------------------------------------------------------- + UTILITIES + --------------------------------------------------------- */ /** - *

Swap content.

- * - *

Exchanges the content of the container by the content of obj, which is another - * {@link UniqueMap map} of the same type. Sizes abd container type may differ.

- * - *

After the call to this member function, the elements in this container are those which were - * in obj before the call, and the elements of obj are those which were in this. All - * iterators, references and pointers remain valid for the swapped objects.

- * - *

Notice that a non-member function exists with the same name, {@link std.swap swap}, overloading that - * algorithm with an optimization that behaves like this member function.

- * - * @param obj Another {@link MultiMap map container} of the same type of elements as this (i.e., - * with the same template parameters, Key and T) whose content is swapped - * with that of this {@link MultiMap container}. + * @inheritdoc */ - MultiMap.prototype.swap = function (obj) { + MultiSet.prototype.swap = function (obj) { var vec = new std.Vector(this.begin(), this.end()); this.assign(obj.begin(), obj.end()); obj.assign(vec.begin(), vec.end()); }; - return MultiMap; - }(base.MapContainer)); - base.MultiMap = MultiMap; + return MultiSet; + }(base.SetContainer)); + base.MultiSet = MultiSet; })(base = std.base || (std.base = {})); })(std || (std = {})); /// -/// -/// var std; (function (std) { var base; (function (base) { /** - *

An abstract set.

+ *

Red-black Tree.

* - *

{@link SetContainer SetContainers} are containers that store elements allowing fast retrieval of - * individual elements based on their value.

+ *

A red-black tree is a kind of self-balancing + * binary search tree. Each node of the binary tree has an extra bit, and that bit is often interpreted as the + * color (red or black) of the node. These color bits + * are used to ensure the tree remains approximately balanced during insertions and deletions.

* - *

In an {@link SetContainer}, the value of an element is at the same time its key, used to - * identify it. Keys are immutable, therefore, the elements in an {@link SetContainer} cannot be - * modified once in the container - they can be inserted and removed, though.

+ *

Balance is preserved by painting each node of the tree with one of two colors (typically called + * 'red' and 'black') in a way that satisfies certain + * properties, which collectively constrain how unbalanced the tree can become in the worst case. When the tree + * is modified, the new tree is subsequently rearranged and repainted to restore the coloring properties. The + * properties are designed in such a way that this rearranging and recoloring can be performed efficiently.

* - *

{@link SetContainer} stores elements, keeps sequence and enables indexing by inserting elements into a - * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index - * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

+ *

The balancing of the tree is not perfect but it is good enough to allow it to guarantee searching in + * O(log n) time, where n is the total number of elements in the tree. The insertion and deletion operations, + * along with the tree rearrangement and recoloring, are also performed in O(log n) time.

+ * + *

Tracking the color of each node requires only 1 bit of information per node because there are only two + * colors. The tree does not contain any other data specific to its being a + * red-black tree so its memory footprint is almost + * identical to a classic (uncolored) binary search tree. In many cases the additional bit of information can + * be stored at no additional memory cost.

* - *

- *

+ *

Properties

+ *

In addition to the requirements imposed on a binary search tree the following must be satisfied by a + * red-black tree:

* - *

Container properties

- *
- *
Associative
- *
- * Elements in associative containers are referenced by their key and not by their absolute - * position in the container. - *
+ *
    + *
  1. A node is either red or black.
  2. + *
  3. + * The root is black. This rule is sometimes omitted. Since the root can + * always be changed from red to black, but not + * necessarily vice versa, this rule has little effect on analysis. + *
  4. + *
  5. All leaves (NIL; null) are black.
  6. + *
  7. + * If a node is red, then both its children are + * black. + *
  8. + *
  9. + * Every path from a given node to any of its descendant NIL nodes contains the same number of + * black nodes. Some definitions: the number of + * black nodes from the root to a node is the node's + * black depth; the uniform number of black + * nodes in all paths from root to the leaves is called the black-height of + * the red-black tree. + *
  10. + *
* - *
Set
- *
The value of an element is also the key used to identify it.
- *
+ *

* - * @param Type of the elements. Each element in a {@link SetContainer} container is also identified - * by this value (each value is itself also the element's key). + *

These constraints enforce a critical property of red-black trees: the path from the root to the farthest + * leaf is no more than twice as long as the path from the root to the nearest leaf. The result is that the tree + * is roughly height-balanced. Since operations such as inserting, deleting, and finding values require + * worst-case time proportional to the height of the tree, this theoretical upper bound on the height allows + * red-black trees to be efficient in the worst case, unlike ordinary binary search trees.

* - * @author Jeongho Nam + *

To see why this is guaranteed, it suffices to consider the effect of properties 4 and 5 together. For a + * red-black tree T, let B be the number of black nodes in property 5. Let the + * shortest possible path from the root of T to any leaf consist of B black nodes. + * Longer possible paths may be constructed by inserting red nodes. However, property 4 + * makes it impossible to insert more than one consecutive red node. Therefore, + * ignoring any black NIL leaves, the longest possible path consists of 2*B nodes, + * alternating black and red (this is the worst case). + * Counting the black NIL leaves, the longest possible path consists of 2*B-1 + * nodes.

+ * + *

The shortest possible path has all black nodes, and the longest possible + * path alternates between red and black nodes. Since all + * maximal paths have the same number of black nodes, by property 5, this shows + * that no path is more than twice as long as any other path.

+ * + * @param Type of elements. + * + * @reference https://en.wikipedia.org/w/index.php?title=Red%E2%80%93black_tree + * @inventor Rudolf Bayer + * @author Migrated by Jeongho Nam */ - var SetContainer = (function (_super) { - __extends(SetContainer, _super); - function SetContainer() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i - 0] = arguments[_i]; - } - _super.call(this); - // INITIALIZATION - this.init(); - // BRANCH - OVERLOADINGS - if (args.length == 0) { } // DO NOTHING - else if (args.length == 1 && (args[0] instanceof base.Container || args[0] instanceof std.Vector)) { - this.construct_from_container(args[0]); - } - else if (args.length == 1 && args[0] instanceof Array) { - this.construct_from_array(args[0]); - } - else if (args.length == 2 && args[0] instanceof std.Iterator && args[1] instanceof std.Iterator) { - this.construct_from_range(args[0], args[1]); - } + var XTree = (function () { + /* ========================================================= + CONSTRUCTOR + ========================================================= */ + /** + * Default Constructor. + */ + function XTree() { + this.root_ = null; } + XTree.prototype.clear = function () { + this.root_ = null; + }; + /* ========================================================= + ACCESSORS + - GETTERS + - COMPARISON + ============================================================ + GETTERS + --------------------------------------------------------- */ /** - * @hidden + * Find a node from its contained value. + * + * @param val Value to find. */ - SetContainer.prototype.init = function () { - this.data_ = new std.List(); + XTree.prototype.find = function (val) { + if (this.root_ == null) + return null; + var node = this.root_; + while (true) { + var newNode = null; + if (this.is_equal_to(val, node.value)) + break; // EQUALS, MEANS MATCHED, THEN TERMINATE + else if (this.is_less(val, node.value)) + newNode = node.left; // LESS, THEN TO THE LEFT + else + newNode = node.right; // GREATER, THEN TO THE RIGHT + // ULTIL CHILD NODE EXISTS + if (newNode == null) + break; + // SHIFT A NEW NODE TO THE NODE TO BE RETURNED + node = newNode; + } + return node; }; /** - * @hidden + * Fetch maximum (the rightes?) node from one. + * + * @param node A node to fetch its maximum node. + * @return The maximum node. */ - SetContainer.prototype.construct_from_array = function (items) { - for (var i = 0; i < items.length; i++) - this.insert_by_val(items[i]); + XTree.prototype.fetch_maximum = function (node) { + while (node.right != null) + node = node.right; + return node; }; + /* ========================================================= + ELEMENTS I/O + - INSERT + - ERASE + - COLOR + - ROTATION + ============================================================ + INSERT + --------------------------------------------------------- */ /** - * @hidden + *

Insert an element with a new node.

+ * + *

Insertion begins by adding the node as any binary search tree insertion does and by coloring it + * red. Whereas in the binary search tree, we always add a leaf, in the red-black + * tree, leaves contain no information, so instead we add a red interior node, with + * two black leaves, in place of an existing + * black leaf.

+ * + *

What happens next depends on the color of other nearby nodes. The term uncle node will be used to + * refer to the sibling of a node's parent, as in human family trees. Note that:

+ * + *
    + *
  • property 3 (all leaves are black) always holds.
  • + *
  • + * property 4 (both children of every red node are + * black) is threatened only by adding a red + * node, repainting a black node red, or a + * rotation. + *
  • + *
  • + * property 5 (all paths from any given node to its leaf nodes contain the same number of + * black nodes) is threatened only by adding a + * black node, repainting a red node + * black (or vice versa), or a rotation. + *
  • + *
+ * + *

Notes

+ *
    + *
  1. + * The label N will be used to denote the current node (colored + * red). In the diagrams N carries a blue contour. At the + * beginning, this is the new node being inserted, but the entire procedure may also be applied + * recursively to other nodes (see case 3). {@link XTreeNode.parent P} will denote + * N's parent node, {@link XTreeNode.grand_parent G} will denote N's + * grandparent, and {@link XTreeNode.uncle U} will denote N's uncle. In between + * some cases, the roles and labels of the nodes are exchanged, but in each case, every label continues + * to represent the same node it represented at the beginning of the case. + *
  2. + *
  3. + * If a node in the right (target) half of a diagram carries a blue contour it will become the current + * node in the next iteration and there the other nodes will be newly assigned relative to it. Any + * color shown in the diagram is either assumed in its case or implied by those assumptions. + *
  4. + *
  5. + * A numbered triangle represents a subtree of unspecified depth. A black + * circle atop a triangle means that black-height of subtree is greater + * by one compared to subtree without this circle.
  6. + *
+ * + *

There are several cases of red-black tree insertion to handle:

+ * + *
    + *
  • N is the root node, i.e., first node of red-black tree.
  • + *
  • + * N's parent ({@link XTreeNode.parent P}) is black. + *
  • + *
  • + * N's parent ({@link XTreeNode.parent P}) and uncle + * ({@link XTreeNode.uncle U}) are red. + *
  • + *
  • + * N is added to right of left child of grandparent, or N is added to left + * of right child of grandparent ({@link XTreeNode.parent P} is red and + * {@link XTreeNode.uncle U} is black). + *
  • + *
  • + * N is added to left of left child of grandparent, or N is added to right + * of right child of grandparent ({@link XTreeNode.parent P} is red and + * {@link XTreeNode.uncle U} is black). + *
  • + *
+ * + *

Note

+ *

Note that inserting is actually in-place, since all the calls above use tail recursion.

+ * + *

In the algorithm above, all cases are chained in order, except in insert case 3 where it can recurse + * to case 1 back to the grandparent node: this is the only case where an iterative implementation will + * effectively loop. Because the problem of repair is escalated to the next higher level but one, it takes + * maximally h⁄2 iterations to repair the tree (where h is the height of the tree). Because the probability + * for escalation decreases exponentially with each iteration the average insertion cost is constant.

+ * + * @param val An element to insert. */ - SetContainer.prototype.construct_from_container = function (container) { - this.construct_from_range(container.begin(), container.end()); + XTree.prototype.insert = function (val) { + var parent = this.find(val); + var node = new base.XTreeNode(val, base.Color.RED); + if (parent == null) + this.root_ = node; + else { + node.parent = parent; + if (this.is_less(node.value, parent.value)) + parent.left = node; + else + parent.right = node; + } + this.insert_case1(node); }; /** - * @hidden + *

N is the root node, i.e., first node of red-black tree.

+ * + *

The current node N is at the {@link root_ root} of the tree.

+ * + *

In this case, it is repainted black to satisfy property 2 (the root is + * black). Since this adds one black node to + * every path at once, property 5 (all paths from any given node to its leaf nodes contain the same number + * of black nodes) is not violated.

+ * + * @param N A node to be inserted or swapped. */ - SetContainer.prototype.construct_from_range = function (begin, end) { - this.assign(begin, end); + XTree.prototype.insert_case1 = function (N) { + if (N.parent == null) + N.color = base.Color.BLACK; + else + this.insert_case2(N); }; - /* --------------------------------------------------------- - ASSIGN & CLEAR - --------------------------------------------------------- */ /** - * @inheritdoc + *

N's parent ({@link XTreeNode.parent P}) is black.

+ * + *

The current node's parent {@link XTreeNode.parent P} is black, + * so property 4 (both children of every red node are + * black) is not invalidated.

+ * + *

In this case, the tree is still valid. Property 5 (all paths from any given node to its leaf nodes + * contain the same number of black nodes) is not threatened, because the + * current node N has two black leaf children, but because + * N is red, the paths through each of its children have the same + * number of black nodes as the path through the leaf it replaced, which was + * black, and so this property remains satisfied.

+ * + * @param N A node to be inserted or swapped. + */ + XTree.prototype.insert_case2 = function (N) { + if (this.fetch_color(N.parent) == base.Color.BLACK) + return; + else + this.insert_case3(N); + }; + /** + *

N's parent ({@link XTreeNode.parent P}) and uncle + * ({@link XTreeNode.uncle U}) are red.

+ * + *

If both the parent {@link XTreeNode.parent P} and the uncle {@link XTreeNode.uncle U} + * are red, then both of them can be repainted black + * and the grandparent {@link XTreeNode.grand_parent G} becomes red (to + * maintain property 5 (all paths from any given node to its leaf nodes contain the same number of + * black nodes)).

+ * + *

Now, the current red node N has a + * black parent. Since any path through the parent or uncle must pass through + * the grandparent, the number of black nodes on these paths has not changed. + * + *

However, the grandparent {@link XTreeNode.grand_parent G} may now violate properties 2 (The + * root is black) or 4 (Both children of every red + * node are black) (property 4 possibly being violated since + * {@link XTreeNode.grand_parent G} may have a red parent).

+ * + *

To fix this, the entire procedure is recursively performed on {@link XTreeNode.grand_parent G} + * from case 1. Note that this is a tail-recursive call, so it could be rewritten as a loop; since this is + * the only loop, and any rotations occur after this loop, this proves that a constant number of rotations + * occur.

+ * + *

+ * + * @param N A node to be inserted or swapped. */ - SetContainer.prototype.assign = function (begin, end) { - // INSERT - this.clear(); - this.insert(begin, end); + XTree.prototype.insert_case3 = function (N) { + if (this.fetch_color(N.uncle) == base.Color.RED) { + N.parent.color = base.Color.BLACK; + N.uncle.color = base.Color.BLACK; + N.grand_parent.color = base.Color.RED; + this.insert_case1(N.grand_parent); + } + else { + this.insert_case4(N); + } }; /** - * @inheritdoc + *

N is added to right of left child of grandparent, or N is added to left + * of right child of grandparent ({@link XTreeNode.parent P} is red and + * {@link XTreeNode.uncle U} is black).

+ * + *

The parent {@link XTreeNode.parent P} is red but the uncle + * {@link XTreeNode.uncle U} is black; also, the current node + * N is the right child of {@link XTreeNode.parent P}, and + * {@link XTreeNode.parent P} in turn is the left child of its parent + * {@link XTreeNode.grand_parent G}.

+ * + *

In this case, a left rotation on {@link XTreeNode.parent P} that switches the roles of the + * current node N and its parent {@link XTreeNode.parent P} can be performed; then, + * the former parent node {@link XTreeNode.parent P} is dealt with using case 5 + * (relabeling N and {@link XTreeNode.parent P}) because property 4 (both children of + * every red node are black) is still violated.

+ * + *

The rotation causes some paths (those in the sub-tree labelled "1") to pass through the node + * N where they did not before. It also causes some paths (those in the sub-tree labelled "3") + * not to pass through the node {@link XTreeNode.parent P} where they did before. However, both of + * these nodes are red, so property 5 (all paths from any given node to its leaf + * nodes contain the same number of black nodes) is not violated by the + * rotation.

+ * + *

After this case has been completed, property 4 (both children of every red + * node are black) is still violated, but now we can resolve this by + * continuing to case 5.

+ * + *

+ * + * @param N A node to be inserted or swapped. */ - SetContainer.prototype.clear = function () { - // TO BE ABSTRACT - this.data_.clear(); + XTree.prototype.insert_case4 = function (node) { + if (node == node.parent.right && node.parent == node.grand_parent.left) { + this.rotate_left(node.parent); + node = node.left; + } + else if (node == node.parent.left && node.parent == node.grand_parent.right) { + this.rotate_right(node.parent); + node = node.right; + } + this.insert_case5(node); }; /** - * @inheritdoc + *

N is added to left of left child of grandparent, or N is added to right + * of right child of grandparent ({@link XTreeNode.parent P} is red and + * {@link XTreeNode.uncle U} is black).

+ * + *

The parent {@link XTreeNode.parent P} is red but the uncle + * {@link XTreeNode.uncle U} is black, the current node N + * is the left child of {@link XTreeNode.parent P}, and {@link XTreeNode.parent P} is the left + * child of its parent {@link XTreeNode.grand_parent G}.

+ * + *

In this case, a right rotation on {@link XTreeNode.grand_parent G} is performed; the result is a + * tree where the former parent {@link XTreeNode.parent P} is now the parent of both the current node + * N and the former grandparent {@link XTreeNode.grand_parent G}.

+ * + *

{@link XTreeNode.grand_parent G} is known to be black, since its + * former child {@link XTreeNode.parent P} could not have been red otherwise + * (without violating property 4). Then, the colors of {@link XTreeNode.parent P} and + * {@link XTreeNode.grand_parent G} are switched, and the resulting tree satisfies property 4 (both + * children of every red node are black). Property 5 + * (all paths from any given node to its leaf nodes contain the same number of + * black nodes) also remains satisfied, since all paths that went through any + * of these three nodes went through {@link XTreeNode.grand_parent G} before, and now they all go + * through {@link XTreeNode.parent P}. In each case, this is the only + * black node of the three.

+ * + *

+ * + * @param N A node to be inserted or swapped. */ - SetContainer.prototype.begin = function () { - return new std.SetIterator(this, this.data_.begin()); + XTree.prototype.insert_case5 = function (node) { + node.parent.color = base.Color.BLACK; + node.grand_parent.color = base.Color.RED; + if (node == node.parent.left && node.parent == node.grand_parent.left) + this.rotate_right(node.grand_parent); + else + this.rotate_left(node.grand_parent); }; + /* --------------------------------------------------------- + ERASE + --------------------------------------------------------- */ /** - * @inheritdoc + *

Erase an element with its node.

+ * + *

In a regular binary search tree when deleting a node with two non-leaf children, we find either the + * maximum element in its left subtree (which is the in-order predecessor) or the minimum element in its + * right subtree (which is the in-order successor) and move its value into the node being deleted (as shown + * here). We then delete the node we copied the value from, which must have fewer than two non-leaf children. + * (Non-leaf children, rather than all children, are specified here because unlike normal binary search + * trees, red-black trees can have leaf nodes anywhere, so that all nodes are either internal nodes with + * two children or leaf nodes with, by definition, zero children. In effect, internal nodes having two leaf + * children in a red-black tree are like the leaf nodes in a regular binary search tree.) Because merely + * copying a value does not violate any red-black properties, this reduces to the problem of deleting a node + * with at most one non-leaf child. Once we have solved that problem, the solution applies equally to the + * case where the node we originally want to delete has at most one non-leaf child as to the case just + * considered where it has two non-leaf children.

+ * + *

Therefore, for the remainder of this discussion we address the deletion of a node with at most one + * non-leaf child. We use the label M to denote the node to be deleted; C will denote a + * selected child of M, which we will also call "its child". If M does have a non-leaf child, + * call that its child, C; otherwise, choose either leaf as its child, C.

+ * + *

If M is a red node, we simply replace it with its child C, + * which must be black by property 4. (This can only occur when M has + * two leaf children, because if the red node M had a + * black non-leaf child on one side but just a leaf child on the other side, + * then the count of black nodes on both sides would be different, thus the + * tree would violate property 5.) All paths through the deleted node will simply pass through one fewer + * red node, and both the deleted node's parent and child must be + * black, so property 3 (all leaves are black) + * and property 4 (both children of every red node are + * black) still hold.

+ * + *

Another simple case is when M is black and C is + * red. Simply removing a black node could break + * Properties 4 (“Both children of every red node are + * black”) and 5 (“All paths from any given node to its leaf nodes contain the + * same number of black nodes”), but if we repaint C + * black, both of these properties are preserved.

+ * + *

The complex case is when both M and C are black. (This + * can only occur when deleting a black node which has two leaf children, + * because if the black node M had a black + * non-leaf child on one side but just a leaf child on the other side, then the count of + * black nodes on both sides would be different, thus the tree would have been + * an invalid red-black tree by violation of property 5.) We begin by replacing M with its child + * C. We will relabel this child C (in its new position) N, and its sibling (its + * new parent's other child) {@link XTreeNode.sibling S}. ({@link XTreeNode.sibling S} was + * previously the sibling of M.)

+ * + *

In the diagrams below, we will also use {@link XTreeNode.parent P} for N's new + * parent (M's old parent), SL for {@link XTreeNode.sibling S}'s left child, and + * SR for {@link XTreeNode.sibling S}'s right child ({@link XTreeNode.sibling S} cannot + * be a leaf because if M and C were black, then + * {@link XTreeNode.parent P}'s one subtree which included M counted two + * black-height and thus {@link XTreeNode.parent P}'s other subtree + * which includes {@link XTreeNode.sibling S} must also count two + * black-height, which cannot be the case if {@link XTreeNode.sibling S} + * is a leaf node).

+ * + *

Notes

+ *
    + *
  1. + * The label N will be used to denote the current node (colored + * black). In the diagrams N carries a blue contour. At the + * beginning, this is the replacement node and a leaf, but the entire procedure may also be applied + * recursively to other nodes (see case 3). In between some cases, the roles and labels of the nodes + * are exchanged, but in each case, every label continues to represent the same node it represented at + * the beginning of the case. + *
  2. + *
  3. + * If a node in the right (target) half of a diagram carries a blue contour it will become the current + * node in the next iteration and there the other nodes will be newly assigned relative to it. Any + * color shown in the diagram is either assumed in its case or implied by those assumptions. + * White represents an arbitrary color (either red or + * black), but the same in both halves of the diagram. + *
  4. + *
  5. + * A numbered triangle represents a subtree of unspecified depth. A black + * circle atop a triangle means that black-height of subtree is greater + * by one compared to subtree without this circle. + *
  6. + *
+ * + *

If both N and its original parent are black, then + * deleting this original parent causes paths which proceed through N to have one fewer + * black node than paths that do not. As this violates property 5 (all paths + * from any given node to its leaf nodes contain the same number of black + * nodes), the tree must be rebalanced. There are several cases to consider:

+ * + *
    + *
  1. N is the new root.
  2. + *
  3. {@link XTreeNode.sibling S} is red.
  4. + *
  5. + * {@link XTreeNode.parent P}, {@link XTreeNode.sibling S}, and + * {@link XTreeNode.sibling S}'s children are black.
  6. + *
  7. + * {@link XTreeNode.sibling S} and {@link XTreeNode.sibling S}'s children are + * black, but {@link XTreeNode.parent P} is + * red. + *
  8. + *
  9. + * {@link XTreeNode.sibling S} is black, + * {@link XTreeNode.sibling S}'s left child is red, + * {@link XTreeNode.sibling S}'s right child is black, and + * N is the left child of its parent. + *
  10. + *
  11. + * {@link XTreeNode.sibling S} is black, + * {@link XTreeNode.sibling S}'s right child is red, and + * N is the left child of its parent {@link XTreeNode.parent P}. + *
  12. + *
+ * + *

Again, the function calls all use tail recursion, so the algorithm is in-place.

+ * + *

In the algorithm above, all cases are chained in order, except in delete case 3 where it can recurse + * to case 1 back to the parent node: this is the only case where an iterative implementation will + * effectively loop. No more than h loops back to case 1 will occur (where h is the height of the tree). + * And because the probability for escalation decreases exponentially with each iteration the average + * removal cost is constant.

+ * + *

Additionally, no tail recursion ever occurs on a child node, so the tail recursion loop can only + * move from a child back to its successive ancestors. If a rotation occurs in case 2 (which is the only + * possibility of rotation within the loop of cases 1–3), then the parent of the node N + * becomes red after the rotation and we will exit the loop. Therefore, at most one + * rotation will occur within this loop. Since no more than two additional rotations will occur after + * exiting the loop, at most three rotations occur in total.

+ * + * @param val An element to erase. */ - SetContainer.prototype.end = function () { - return new std.SetIterator(this, this.data_.end()); + XTree.prototype.erase = function (val) { + var node = this.find(val); + if (node == null || this.is_equal_to(val, node.value) == false) + return; + if (node.left != null && node.right != null) { + var pred = this.fetch_maximum(node.left); + node.value = pred.value; + node = pred; + } + var child = (node.right == null) ? node.left : node.right; + if (this.fetch_color(node) == base.Color.BLACK) { + node.color = this.fetch_color(child); + this.erase_case1(node); + } + this.replace_node(node, child); }; /** - * @inheritdoc + *

N is the new root.

+ * + *

In this case, we are done. We removed one black node from every path, + * and the new root is black, so the properties are preserved.

+ * + *

Note

+ *

In cases 2, 5, and 6, we assume N is the left child of its parent + * {@link XTreeNode.parent P}. If it is the right child, left and right should be reversed throughout + * these three cases. Again, the code examples take both cases into account.

+ * + * @param N A node to be erased or swapped. */ - SetContainer.prototype.rbegin = function () { - return new std.SetReverseIterator(this.end()); + XTree.prototype.erase_case1 = function (N) { + if (N.parent == null) + return; + else + this.erase_case2(N); }; /** - * @inheritdoc + *

{@link XTreeNode.sibling S} is red.

+ * + *

+ * + *

In this case we reverse the colors of {@link XTreeNode.parent P} and + * {@link XTreeNode.sibling S}, and then rotate left at {@link XTreeNode.parent P}, turning + * {@link XTreeNode.sibling S} into N's grandparent.

+ * + *

Note that {@link XTreeNode.parent P} has to be black as it had a + * red child. The resulting subtree has a path short one + * black node so we are not done. Now N has a + * black sibling and a red parent, so we can proceed + * to step 4, 5, or 6. (Its new sibling is black because it was once the child + * of the red {@link XTreeNode.sibling S}.) In later cases, we will re-label + * N's new sibling as {@link XTreeNode.sibling S}.

+ * + * @param N A node to be erased or swapped. */ - SetContainer.prototype.rend = function () { - return new std.SetReverseIterator(this.begin()); + XTree.prototype.erase_case2 = function (N) { + if (this.fetch_color(N.sibling) == base.Color.RED) { + N.parent.color = base.Color.RED; + N.sibling.color = base.Color.BLACK; + if (N == N.parent.left) + this.rotate_left(N.parent); + else + this.rotate_right(N.parent); + } + this.erase_case3(N); }; - /* --------------------------------------------------------- - ELEMENTS - --------------------------------------------------------- */ /** - *

Whether have the item or not.

+ *

{@link XTreeNode.parent P}, {@link XTreeNode.sibling S}, and {@link XTreeNode.sibling + * S}'s children are black.

* - *

Indicates whether a set has an item having the specified identifier.

+ *

* - * @param key Key value of the element whose mapped value is accessed. + *

In this case, we simply repaint {@link XTreeNode.sibling S} red. The + * result is that all paths passing through {@link XTreeNode.sibling S}, which are precisely those + * paths not passing through N, have one less black node. + * Because deleting N's original parent made all paths passing through N have + * one less black node, this evens things up.

* - * @return Whether the set has an item having the specified identifier. + *

However, all paths through {@link XTreeNode.parent P} now have one fewer + * black node than paths that do not pass through + * {@link XTreeNode.parent P}, so property 5 (all paths from any given node to its leaf nodes contain + * the same number of black nodes) is still violated.

+ * + *

To correct this, we perform the rebalancing procedure on {@link XTreeNode.parent P}, starting + * at case 1.

+ * + * @param N A node to be erased or swapped. */ - SetContainer.prototype.has = function (val) { - return !this.find(val).equal_to(this.end()); + XTree.prototype.erase_case3 = function (N) { + if (this.fetch_color(N.parent) == base.Color.BLACK && + this.fetch_color(N.sibling) == base.Color.BLACK && + this.fetch_color(N.sibling.left) == base.Color.BLACK && + this.fetch_color(N.sibling.right) == base.Color.BLACK) { + N.sibling.color = base.Color.RED; + this.erase_case1(N.parent); + } + else + this.erase_case4(N); }; /** - * @inheritdoc + *

{@link XTreeNode.sibling S} and {@link XTreeNode.sibling S}'s children are + * black, but {@link XTreeNode.parent P} is red.

+ * + *

+ * + *

In this case, we simply exchange the colors of {@link XTreeNode.sibling S} and + * {@link XTreeNode.parent P}. This does not affect the number of black + * nodes on paths going through {@link XTreeNode.sibling S}, but it does add one to the number of + * black nodes on paths going through N, making up for the + * deleted black node on those paths.

+ * + * @param N A node to be erased or swapped. */ - SetContainer.prototype.size = function () { - return this.data_.size(); + XTree.prototype.erase_case4 = function (N) { + if (this.fetch_color(N.parent) == base.Color.RED && + N.sibling != null && + this.fetch_color(N.sibling) == base.Color.BLACK && + this.fetch_color(N.sibling.left) == base.Color.BLACK && + this.fetch_color(N.sibling.right) == base.Color.BLACK) { + N.sibling.color = base.Color.RED; + N.parent.color = base.Color.BLACK; + } + else + this.erase_case5(N); }; - /* ========================================================= - ELEMENTS I/O - - INSERT - - ERASE - - POST-PROCESS - ============================================================ - INSERT - --------------------------------------------------------- */ /** - * @inheritdoc + *

{@link XTreeNode.sibling S} is black, {@link XTreeNode.sibling S}'s + * left child is red, {@link XTreeNode.sibling S}'s right child is + * black, and N is the left child of its parent.

+ * + *

+ * + *

In this case we rotate right at {@link XTreeNode.sibling S}, so that + * {@link XTreeNode.sibling S}'s left child becomes {@link XTreeNode.sibling S}'s parent and + * N's new sibling. We then exchange the colors of {@link XTreeNode.sibling S} and its + * new parent.

+ * + *

All paths still have the same number of black nodes, but now + * N has a black sibling whose right child is + * red, so we fall into case 6. Neither N nor its parent are affected + * by this transformation. (Again, for case 6, we relabel N's new sibling as + * {@link XTreeNode.sibling S}.)

+ * + * @param N A node to be erased or swapped. */ - SetContainer.prototype.push = function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i - 0] = arguments[_i]; - } - // TO BE ABSTRACT - for (var i = 0; i < args.length; i++) - this.insert_by_val(args[i]); - return this.size(); - }; - SetContainer.prototype.insert = function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i - 0] = arguments[_i]; - } - if (args.length == 1) - return this.insert_by_val(args[0]); - else if (args.length == 2 && args[0] instanceof std.Iterator) { - if (args[1] instanceof std.Iterator && args[0].get_source() != this && args[1].get_source() != this) { - // IT DOESN'T CONTAIN POSITION - // RANGES TO INSERT ONLY - return this.insert_by_range(args[0], args[1]); - } - else { - var ret = void 0; - var is_reverse_iterator = false; - // REVERSE_ITERATOR TO ITERATOR - if (args[0] instanceof std.SetReverseIterator) { - is_reverse_iterator = true; - args[0] = args[0].base().prev(); - } - // INSERT AN ELEMENT - ret = this.insert_by_hint(args[0], args[1]); - // RETURN BRANCHES - if (is_reverse_iterator == true) - return new std.SetReverseIterator(ret.next()); - else - return ret; - } + XTree.prototype.erase_case5 = function (N) { + if (N == N.parent.left && + N.sibling != null && + this.fetch_color(N.sibling) == base.Color.BLACK && + this.fetch_color(N.sibling.left) == base.Color.RED && + this.fetch_color(N.sibling.right) == base.Color.BLACK) { + N.sibling.color = base.Color.RED; + N.sibling.left.color = base.Color.BLACK; + this.rotate_right(N.sibling); } - }; - SetContainer.prototype.erase = function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i - 0] = arguments[_i]; + else if (N == N.parent.right && + N.sibling != null && + this.fetch_color(N.sibling) == base.Color.BLACK && + this.fetch_color(N.sibling.left) == base.Color.BLACK && + this.fetch_color(N.sibling.right) == base.Color.RED) { + N.sibling.color = base.Color.RED; + N.sibling.right.color = base.Color.BLACK; + this.rotate_left(N.sibling); } - if (args.length == 1 && (args[0] instanceof std.Iterator == false || args[0].get_source() != this)) - return this.erase_by_val(args[0]); - else if (args.length == 1) - return this.erase_by_iterator(args[0]); - else - return this.erase_by_iterator(args[0], args[1]); }; /** - * @hidden - */ - SetContainer.prototype.erase_by_iterator = function (first, last) { - if (last === void 0) { last = first.next(); } - var ret; - var is_reverse_iterator = false; - // REVERSE ITERATOR TO ITERATOR - if (first instanceof std.SetReverseIterator) { - is_reverse_iterator = true; - var first_it = last.base(); - var last_it = first.base(); - first = first_it; - last = last_it; + *

{@link XTreeNode.sibling S} is black, + * {@link XTreeNode.sibling S}'s right child is red, and N is + * the left child of its parent {@link XTreeNode.parent P}.

+ * + *

In this case we rotate left at {@link XTreeNode.parent P}, so that + * {@link XTreeNode.sibling S} becomes the parent of {@link XTreeNode.parent P} and + * {@link XTreeNode.sibling S}'s right child. We then exchange the colors of + * {@link XTreeNode.parent P} and {@link XTreeNode.sibling S}, and make + * {@link XTreeNode.sibling S}'s right child black.

+ * + *

The subtree still has the same color at its root, so Properties 4 (Both children of every + * red node are black) and 5 (All paths from any + * given node to its leaf nodes contain the same number of black nodes) are + * not violated. However, N now has one additional black + * ancestor: either {@link XTreeNode.parent P} has become black, or it + * was black and {@link XTreeNode.sibling S} was added as a + * black grandparent.

+ * + *

Thus, the paths passing through N pass through one additional + * black node.

+ * + *

+ * + *

Meanwhile, if a path does not go through N, then there are two possibilities:

+ *
    + *
  1. + * It goes through N's new sibling SL, a node with arbitrary color and the root of + * the subtree labeled 3 (s. diagram). Then, it must go through {@link XTreeNode.sibling S} and + * {@link XTreeNode.parent P}, both formerly and currently, as they have only exchanged colors + * and places. Thus the path contains the same number of black nodes. + *
  2. + *
  3. + * It goes through N's new uncle, {@link XTreeNode.sibling S}'s right child. Then, + * it formerly went through {@link XTreeNode.sibling S}, {@link XTreeNode.sibling S}'s + * parent, and {@link XTreeNode.sibling S}'s right child SR (which was + * red), but now only goes through {@link XTreeNode.sibling S}, which + * has assumed the color of its former parent, and {@link XTreeNode.sibling S}'s right child, + * which has changed from red to black (assuming + * {@link XTreeNode.sibling S}'s color: black). The net effect is + * that this path goes through the same number of black nodes. + *
  4. + *
+ * + *

Either way, the number of black nodes on these paths does not change. + * Thus, we have restored Properties 4 (Both children of every red node are + * black) and 5 (All paths from any given node to its leaf nodes contain the + * same number of black nodes). The white node in the diagram can be either + * red or black, but must refer to the same color + * both before and after the transformation.

+ * + * @param N A node to be erased or swapped. + */ + XTree.prototype.erase_case6 = function (node) { + node.sibling.color = this.fetch_color(node.parent); + node.parent.color = base.Color.BLACK; + if (node == node.parent.left) { + node.sibling.right.color = base.Color.BLACK; + this.rotate_left(node.parent); + } + else { + node.sibling.left.color = base.Color.BLACK; + this.rotate_right(node.parent); } - // ERASE ELEMENTS - ret = this.erase_by_range(first, last); - // RETURN BRANCHES - if (is_reverse_iterator == true) - return new std.SetReverseIterator(ret.next()); - else - return ret; }; + /* --------------------------------------------------------- + ROTATION + --------------------------------------------------------- */ /** - * @hidden + * Rotate a node left. + * + * @param node Node to rotate left. */ - SetContainer.prototype.erase_by_val = function (val) { - // TEST WHETHER EXISTS - var it = this.find(val); - if (it.equal_to(this.end()) == true) - return 0; - // ERASE - this.erase_by_iterator(it); - return 1; + XTree.prototype.rotate_left = function (node) { + var right = node.right; + this.replace_node(node, right); + node.right = right.left; + if (right.left != null) + right.left.parent = node; + right.left = node; + node.parent = right; }; /** - * @hidden + * Rotate a node to right. + * + * @param node A node to rotate right. */ - SetContainer.prototype.erase_by_range = function (begin, end) { - // ERASE - var list_iterator = this.data_.erase(begin.get_list_iterator(), end.get_list_iterator()); - // POST-PROCESS - this.handle_erase(begin, end); - return new std.SetIterator(this, list_iterator); //begin.prev(); + XTree.prototype.rotate_right = function (node) { + var left = node.left; + this.replace_node(node, left); + node.left = left.right; + if (left.right != null) + left.right.parent = node; + left.right = node; + node.parent = left; }; - return SetContainer; - }(base.Container)); - base.SetContainer = SetContainer; - })(base = std.base || (std.base = {})); -})(std || (std = {})); -var std; -(function (std) { - /** - *

An iterator of a Set.

- * - *

- *

- * - * @author Jeongho Nam - */ - var SetIterator = (function (_super) { - __extends(SetIterator, _super); - /** - *

Construct from source and index number.

- * - *

Note

- *

Do not create iterator directly.

- *

Use begin(), find() or end() in Map instead.

- * - * @param map The source Set to reference. - * @param index Sequence number of the element in the source Set. - */ - function SetIterator(source, it) { - _super.call(this, source); - this.list_iterator_ = it; - } - /* --------------------------------------------------------- - MOVERS - --------------------------------------------------------- */ - /** - * @inheritdoc - */ - SetIterator.prototype.prev = function () { - return new SetIterator(this.set, this.list_iterator_.prev()); - }; - /** - * @inheritdoc - */ - SetIterator.prototype.next = function () { - return new SetIterator(this.set, this.list_iterator_.next()); - }; - /** - * @inheritdoc - */ - SetIterator.prototype.advance = function (size) { - return new SetIterator(this.set, this.list_iterator_.advance(size)); - }; - Object.defineProperty(SetIterator.prototype, "set", { - /* --------------------------------------------------------- - ACCESSORS - --------------------------------------------------------- */ - /** - * @hidden - */ - get: function () { - return this.source_; - }, - enumerable: true, - configurable: true - }); - SetIterator.prototype.get_list_iterator = function () { - return this.list_iterator_; - }; - Object.defineProperty(SetIterator.prototype, "value", { /** - * @inheritdoc + * Replace a node. + * + * @param oldNode Ordinary node to be replaced. + * @param newNode Target node to replace. */ - get: function () { - return this.list_iterator_.value; - }, - enumerable: true, - configurable: true - }); - /* --------------------------------------------------------- - COMPARISONS - --------------------------------------------------------- */ - /** - * @inheritdoc - */ - SetIterator.prototype.equal_to = function (obj) { - return _super.prototype.equal_to.call(this, obj) && this.list_iterator_ == obj.list_iterator_; - }; - /** - * @inheritdoc - */ - SetIterator.prototype.less = function (obj) { - return std.less(this.value, obj.value); - }; - /** - * @inheritdoc - */ - SetIterator.prototype.hash = function () { - return std.hash(this.value); - }; - /** - * @inheritdoc - */ - SetIterator.prototype.swap = function (obj) { - this.list_iterator_.swap(obj.list_iterator_); - }; - return SetIterator; - }(std.Iterator)); - std.SetIterator = SetIterator; - /** - *

A reverse-iterator of Set.

- * - *

- *

- * - * @param Type of the elements. - * - * @author Jeongho Nam - */ - var SetReverseIterator = (function (_super) { - __extends(SetReverseIterator, _super); - /* --------------------------------------------------------- - CONSTRUCTORS - --------------------------------------------------------- */ - function SetReverseIterator(base) { - _super.call(this, base); - } - /** - * @inheritdoc - */ - SetReverseIterator.prototype.create_neighbor = function () { - return new SetReverseIterator(null); - }; - return SetReverseIterator; - }(std.ReverseIterator)); - std.SetReverseIterator = SetReverseIterator; -})(std || (std = {})); -/// -/// -var std; -(function (std) { - var base; - (function (base) { - /** - *

An abstract set.

- * - *

{@link SetContainer SetContainers} are containers that store elements allowing fast retrieval of - * individual elements based on their value.

- * - *

In an {@link SetContainer}, the value of an element is at the same time its key, used to - * identify it. Keys are immutable, therefore, the elements in an {@link SetContainer} cannot be - * modified once in the container - they can be inserted and removed, though.

- * - *

{@link SetContainer} stores elements, keeps sequence and enables indexing by inserting elements into a - * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index - * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

- * - *

- *

- * - *

Container properties

- *
- *
Associative
- *
- * Elements in associative containers are referenced by their key and not by their absolute - * position in the container. - *
- * - *
Set
- *
The value of an element is also the key used to identify it.
- * - *
Multiple equivalent keys
- *
Multiple elements in the container can have equivalent keys.
- *
- * - * @param Type of the elements. Each element in a {@link SetContainer} container is also identified - * by this value (each value is itself also the element's key). - * - * @author Jeongho Nam - */ - var MultiSet = (function (_super) { - __extends(MultiSet, _super); - function MultiSet() { - _super.apply(this, arguments); - } - MultiSet.prototype.insert = function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i - 0] = arguments[_i]; + XTree.prototype.replace_node = function (oldNode, newNode) { + if (oldNode.parent == null) + this.root_ = newNode; + else { + if (oldNode == oldNode.parent.left) + oldNode.parent.left = newNode; + else + oldNode.parent.right = newNode; } - return _super.prototype.insert.apply(this, args); + if (newNode != null) + newNode.parent = oldNode.parent; }; /* --------------------------------------------------------- - UTILITIES + COLOR --------------------------------------------------------- */ /** - * @inheritdoc + * Fetch color from a node. + * + * @param node A node to fetch color. + * @retur color. */ - MultiSet.prototype.swap = function (obj) { - var vec = new std.Vector(this.begin(), this.end()); - this.assign(obj.begin(), obj.end()); - obj.assign(vec.begin(), vec.end()); + XTree.prototype.fetch_color = function (node) { + if (node == null) + return base.Color.BLACK; + else + return node.color; }; - return MultiSet; - }(base.SetContainer)); - base.MultiSet = MultiSet; + return XTree; + }()); + base.XTree = XTree; })(base = std.base || (std.base = {})); })(std || (std = {})); /// @@ -4661,8 +4479,8 @@ var std; /** *

A red-black tree storing {@link MapIterator MapIterators}.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ @@ -4869,37 +4687,219 @@ var std; })(base = std.base || (std.base = {})); })(std || (std = {})); /// -/// +/// var std; (function (std) { var base; (function (base) { /** - *

Hash buckets storing {@link SetIterator SetIterators}.

+ *

A red-black Tree storing {@link SetIterator SetIterators}.

* - *

- * - *

+ *

+ *

* * @author Jeongho Nam */ - var SetHashBuckets = (function (_super) { - __extends(SetHashBuckets, _super); - function SetHashBuckets(set) { + var AtomicTree = (function (_super) { + __extends(AtomicTree, _super); + /* --------------------------------------------------------- + CONSTRUCTOR + --------------------------------------------------------- */ + /** + * Default Constructor. + */ + function AtomicTree(set, compare) { + if (compare === void 0) { compare = std.less; } _super.call(this); - this.set = set; + this.set_ = set; + this.compare_ = compare; } - SetHashBuckets.prototype.find = function (val) { - var index = std.hash(val) % this.size(); - var bucket = this.at(index); - for (var i = 0; i < bucket.size(); i++) - if (std.equal_to(bucket.at(i).value, val)) - return bucket.at(i); - return this.set.end(); + AtomicTree.prototype.find = function (val) { + if (val instanceof std.SetIterator && val.value instanceof std.SetIterator == false) + return _super.prototype.find.call(this, val); + else + return this.find_by_val(val); }; - return SetHashBuckets; - }(base.HashBuckets)); - base.SetHashBuckets = SetHashBuckets; + /** + * @hidden + */ + AtomicTree.prototype.find_by_val = function (val) { + if (this.root_ == null) + return null; + var node = this.root_; + while (true) { + var newNode = null; + if (std.equal_to(val, node.value.value)) + break; // EQUALS, MEANS MATCHED, THEN TERMINATE + else if (this.compare_(val, node.value.value)) + newNode = node.left; // LESS, THEN TO THE LEFT + else + newNode = node.right; // GREATER, THEN TO THE RIGHT + // ULTIL CHILD NODE EXISTS + if (newNode == null) + break; + // SHIFT A NEW NODE TO THE NODE TO BE RETURNED + node = newNode; + } + return node; + }; + /* --------------------------------------------------------- + BOUNDS + --------------------------------------------------------- */ + /** + *

Return iterator to lower bound.

+ * + *

Returns an iterator pointing to the first element in the container which is not considered to + * go before val (i.e., either it is equivalent or goes after).

+ * + *

The function uses its internal comparison object (key_comp) to determine this, returning an + * iterator to the first element for which key_comp(element,val) would return false.

+ * + *

If the {@link ITreeSet} class is instantiated with the default comparison type ({@link less}), + * the function returns an iterator to the first element that is not less than val.

+ + *

A similar member function, {@link upper_bound}, has the same behavior as {@link lower_bound}, except + * in the case that the {@link ITreeSet} contains elements equivalent to val: In this case + * {@link lower_bound} returns an iterator pointing to the first of such elements, whereas + * {@link upper_bound} returns an iterator pointing to the element following the last.

+ * + * @param val Value to compare. + * + * @return An iterator to the the first element in the container which is not considered to go before + * val, or {@link ITreeSet.end} if all elements are considered to go before val. + */ + AtomicTree.prototype.lower_bound = function (val) { + var node = this.find(val); + if (node == null) + return this.set_.end(); + else if (std.equal_to(node.value.value, val)) + return node.value; + else { + var it = node.value; + while (!std.equal_to(it, this.set_.end()) && std.less(it.value, val)) + it = it.next(); + return it; + } + }; + /** + *

Return iterator to upper bound.

+ * + *

Returns an iterator pointing to the first element in the container which is considered to go after + * val.

+ + *

The function uses its internal comparison object (key_comp) to determine this, returning an + * iterator to the first element for which key_comp(val,element) would return true.

+ + *

If the {@code ITreeSet} class is instantiated with the default comparison type (less), the + * function returns an iterator to the first element that is greater than val.

+ * + *

A similar member function, {@link lower_bound}, has the same behavior as {@link upper_bound}, except + * in the case that the {@ITreeSet} contains elements equivalent to val: In this case + * {@link lower_bound} returns an iterator pointing to the first of such elements, whereas + * {@link upper_bound} returns an iterator pointing to the element following the last.

+ * + * @param val Value to compare. + * + * @return An iterator to the the first element in the container which is considered to go after + * val, or {@link TreeSet.end end} if no elements are considered to go after val. + */ + AtomicTree.prototype.upper_bound = function (val) { + var node = this.find(val); + if (node == null) + return this.set_.end(); + else { + var it = node.value; + while (!std.equal_to(it, this.set_.end()) && (std.equal_to(it.value, val) || std.less(it.value, val))) + it = it.next(); + return it; + } + }; + /** + *

Get range of equal elements.

+ * + *

Returns the bounds of a range that includes all the elements in the container that are equivalent + * to val.

+ * + *

If no matches are found, the range returned has a length of zero, with both iterators pointing to + * the first element that is considered to go after val according to the container's + * internal comparison object (key_comp).

+ * + *

Two elements of a multiset are considered equivalent if the container's comparison object returns + * false reflexively (i.e., no matter the order in which the elements are passed as arguments).

+ * + * @param key Value to search for. + * + * @return The function returns a {@link Pair}, whose member {@link Pair.first} is the lower bound of + * the range (the same as {@link lower_bound}), and {@link Pair.second} is the upper bound + * (the same as {@link upper_bound}). + */ + AtomicTree.prototype.equal_range = function (val) { + return std.make_pair(this.lower_bound(val), this.upper_bound(val)); + }; + /* --------------------------------------------------------- + COMPARISON + --------------------------------------------------------- */ + /** + *

Return comparison function.

+ * + *

Returns a copy of the comparison function used by the container.

+ * + *

By default, this is a {@link less} object, which returns the same as operator<.

+ * + *

This object determines the order of the elements in the container: it is a function pointer or a function + * object that takes two arguments of the same type as the container elements, and returns true if + * the first argument is considered to go before the second in the strict weak ordering it + * defines, and false otherwise.

+ * + *

Two elements of a {@link ITreeSet} are considered equivalent if {@link key_comp} returns false + * reflexively (i.e., no matter the order in which the elements are passed as arguments).

+ * + *

In {@link ITreeSet} containers, the keys to sort the elements are the values (T) themselves, + * therefore {@link key_comp} and its sibling member function {@link value_comp} are equivalent.

+ * + * @return The comparison function. + */ + AtomicTree.prototype.key_comp = function () { + return this.compare_; + }; + /** + *

Return comparison function.

+ * + *

Returns a copy of the comparison function used by the container.

+ * + *

By default, this is a {@link less} object, which returns the same as operator<.

+ * + *

This object determines the order of the elements in the container: it is a function pointer or a function + * object that takes two arguments of the same type as the container elements, and returns true if + * the first argument is considered to go before the second in the strict weak ordering it + * defines, and false otherwise.

+ * + *

Two elements of a {@link ITreeSet} are considered equivalent if {@link key_comp} returns false + * reflexively (i.e., no matter the order in which the elements are passed as arguments).

+ * + *

In {@link ITreeSet} containers, the keys to sort the elements are the values (T) themselves, + * therefore {@link key_comp} and its sibling member function {@link value_comp} are equivalent.

+ * + * @return The comparison function. + */ + AtomicTree.prototype.value_comp = function () { + return this.compare_; + }; + /** + * @inheritdoc + */ + AtomicTree.prototype.is_equal_to = function (left, right) { + return std.equal_to(left, right); + }; + /** + * @inheritdoc + */ + AtomicTree.prototype.is_less = function (left, right) { + return this.compare_(left.value, right.value); + }; + return AtomicTree; + }(base.XTree)); + base.AtomicTree = AtomicTree; })(base = std.base || (std.base = {})); })(std || (std = {})); /// @@ -4926,8 +4926,8 @@ var std; * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -5128,8 +5128,8 @@ var std; * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -5323,8 +5323,8 @@ var std; * the end, {@link Deque Deques} perform worse and have less consistent iterators and references than * {@link List Lists}.

* - *

- * + *

+ * *

* *

Container properties

@@ -5372,34 +5372,39 @@ var std; } } Object.defineProperty(Deque, "ROW", { + /// + // Row size of the {@link matrix_ matrix} which contains elements. + // + // Note that the {@link ROW} affects on time complexity of accessing and inserting element. + // Accessing element is {@link ROW} times slower than ordinary {@link Vector} and inserting element + // in middle position is {@link ROW} times faster than ordinary {@link Vector}. + // + // When the {@link ROW} returns 8, time complexity of accessing element is O(8) and inserting + // element in middle position is O(N/8). ({@link Vector}'s time complexity of accessement is O(1) + // and inserting element is O(N)). /** - *

Row size of the {@link matrix_ matrix} which contains elements.

- * - *

Note that the {@link ROW} affects on time complexity of accessing and inserting element. - * Accessing element is {@link ROW} times slower than ordinary {@link Vector} and inserting element - * in middle position is {@link ROW} times faster than ordinary {@link Vector}.

- * - *

When the {@link ROW} returns 8, time complexity of accessing element is O(8) and inserting - * element in middle position is O(N/8). ({@link Vector}'s time complexity of accessement is O(1) - * and inserting element is O(N)).

+ * @hidden */ get: function () { return 8; }, enumerable: true, configurable: true }); Object.defineProperty(Deque, "MIN_CAPACITY", { + /// + // Minimum {@link capacity}. + // + // Although a {@link Deque} has few elements, even no element is belonged to, the {@link Deque} + // keeps the minimum {@link capacity} at least. /** - *

Minimum {@link capacity}.

- * - *

Although a {@link Deque} has few elements, even no element is belonged to, the {@link Deque} - * keeps the minimum {@link capacity} at least.

+ * @hidden */ get: function () { return 100; }, enumerable: true, configurable: true }); + // Get column size; {@link capacity_ capacity} / {@link ROW row}. /** - * Get column size; {@link capacity_ capacity} / {@link ROW row}. + * @hidden */ Deque.prototype.get_col_size = function () { return Math.floor(this.capacity_ / Deque.ROW); @@ -5836,8 +5841,8 @@ var std; /** *

An iterator of {@link Deque}.

* - *

- * + *

+ * *

* * @author Jeongho Nam @@ -5967,8 +5972,8 @@ var std; /** *

A reverse-iterator of Deque.

* - *

- * + *

+ * *

* * @param Type of the elements. @@ -6177,8 +6182,8 @@ var std; * distance between these. They also consume some extra memory to keep the linking information associated to each * element (which may be an important factor for large lists of small-sized elements).

* - *

- * + *

+ * *

* *

Container properties

@@ -6616,8 +6621,8 @@ var std; /** *

An iterator, node of a List.

* - *

- * + *

+ * *

* * @author Jeongho Nam @@ -6746,8 +6751,8 @@ var std; /** *

A reverse-iterator of List.

* - *

- * + *

+ * *

* * @param Type of the elements. @@ -6999,8 +7004,8 @@ var std; *

All objects thrown by components of the standard library are derived from this class. * Therefore, all standard exceptions can be caught by catching this type by reference.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/exception/exception * @author Jeongho Nam @@ -7063,8 +7068,8 @@ var std; * *

It is used as a base class for several logical error exceptions.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/logic_error * @author Jeongho Nam @@ -7094,8 +7099,8 @@ var std; *

No component of the standard library throws exceptions of this type. It is designed as a standard * exception to be thrown by programs.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/domain_error * @author Jeongho Nam @@ -7121,8 +7126,8 @@ var std; *

It is a standard exception that can be thrown by programs. Some components of the standard library * also throw exceptions of this type to signal invalid arguments.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/invalid_argument * @author Jeongho Nam @@ -7148,8 +7153,8 @@ var std; *

It is a standard exception that can be thrown by programs. Some components of the standard library, * such as vector and string also throw exceptions of this type to signal errors resizing.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/length_error * @author Jeongho Nam @@ -7176,8 +7181,8 @@ var std; * such as vector, deque, string and bitset also throw exceptions of this type to signal arguments * out of range.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/out_of_range * @author Jeongho Nam @@ -7210,8 +7215,8 @@ var std; * *

It is used as a base class for several runtime error exceptions.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/runtime_error * @author Jeongho Nam @@ -7237,8 +7242,8 @@ var std; *

It is a standard exception that can be thrown by programs. Some components of the standard library * also throw exceptions of this type to signal range errors.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/overflow_error * @author Jeongho Nam @@ -7264,8 +7269,8 @@ var std; *

No component of the standard library throws exceptions of this type. It is designed as a standard * exception to be thrown by programs.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/underflow_error * @author Jeongho Nam @@ -7292,8 +7297,8 @@ var std; *

It is a standard exception that can be thrown by programs. Some components of the standard library * also throw exceptions of this type to signal range errors.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/range_error * @author Jeongho Nam @@ -7801,8 +7806,8 @@ var std; *

{@link HashMap} containers are faster than {@link TreeMap} containers to access individual elements by their * key, although they are generally less efficient for range iteration through a subset of their elements.

* - *

- * + *

+ * *

* *

Container properties

@@ -8047,6 +8052,8 @@ var std; }(std.base.UniqueMap)); std.HashMap = HashMap; })(std || (std = {})); +/// +/// var std; (function (std) { /** @@ -8068,8 +8075,8 @@ var std; *

Elements with equivalent keys are grouped together in the same bucket and in such a way that * an iterator can iterate through all of them. Iterators in the container are doubly linked iterators.

* - *

- * + *

+ * *

* *

Container properties

@@ -8305,30 +8312,29 @@ var std; std.HashMultiMap = HashMultiMap; })(std || (std = {})); /// -/// /// var std; (function (std) { /** - *

Hashed, unordered set.

- * - *

{@link HashSet}s are containers that store unique elements in no particular order, and which - * allow for fast retrieval of individual elements based on their value.

+ *

Hashed, unordered Multiset.

* - *

In an {@link HashSet}, the value of an element is at the same time its key, that - * identifies it uniquely. Keys are immutable, therefore, the elements in an {@link HashSet} cannot be + *

{@link HashMultiSet HashMultiSets} are containers that store elements in no particular order, allowing fast + * retrieval of individual elements based on their value, much like {@link HashSet} containers, + * but allowing different elements to have equivalent values.

+ * + *

In an {@link HashMultiSet}, the value of an element is at the same time its key, used to + * identify it. Keys are immutable, therefore, the elements in an {@link HashMultiSet} cannot be * modified once in the container - they can be inserted and removed, though.

* - *

Internally, the elements in the {@link HashSet} are not sorted in any particular order, but - * organized into buckets depending on their hash values to allow for fast access to individual elements - * directly by their values (with a constant average time complexity on average).

+ *

Internally, the elements in the {@link HashMultiSet} are not sorted in any particular, but + * organized into buckets depending on their hash values to allow for fast access to individual + * elements directly by their values (with a constant average time complexity on average).

* - *

{@link HashSet} containers are faster than {@link TreeSet} containers to access individual - * elements by their key, although they are generally less efficient for range iteration through a - * subset of their elements.

+ *

Elements with equivalent values are grouped together in the same bucket and in such a way that an + * iterator can iterate through all of them. Iterators in the container are doubly linked iterators.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -8343,20 +8349,23 @@ var std; *
Set
*
The value of an element is also the key used to identify it.
* - *
Unique keys
- *
No two elements in the container can have equivalent keys.
+ *
Multiple equivalent keys
+ *
The container can hold multiple elements with equivalent keys.
*
* * @param Type of the elements. - * Each element in an {@link HashSet} is also uniquely identified by this value. + * Each element in an {@link UnorderedMultiSet} is also identified by this value.. * - * @reference http://www.cplusplus.com/reference/unordered_set/unordered_set + * @reference http://www.cplusplus.com/reference/unordered_set/unordered_multiset * @author Jeongho Nam */ - var HashSet = (function (_super) { - __extends(HashSet, _super); - function HashSet() { + var HashMultiSet = (function (_super) { + __extends(HashMultiSet, _super); + function HashMultiSet() { _super.apply(this, arguments); + /** + * @hidden + */ this.hash_buckets_ = new std.base.SetHashBuckets(this); } /* ========================================================= @@ -8372,14 +8381,14 @@ var std; /** * @hidden */ - HashSet.prototype.init = function () { + HashMultiSet.prototype.init = function () { _super.prototype.init.call(this); this.hash_buckets_ = new std.base.SetHashBuckets(this); }; /** * @hidden */ - HashSet.prototype.construct_from_array = function (items) { + HashMultiSet.prototype.construct_from_array = function (items) { this.hash_buckets_.rehash(items.length * std.base.Hash.RATIO); _super.prototype.construct_from_array.call(this, items); }; @@ -8389,7 +8398,7 @@ var std; /** * @inheritdoc */ - HashSet.prototype.clear = function () { + HashMultiSet.prototype.clear = function () { this.hash_buckets_.clear(); _super.prototype.clear.call(this); }; @@ -8403,28 +8412,42 @@ var std; /** * @inheritdoc */ - HashSet.prototype.find = function (key) { + HashMultiSet.prototype.find = function (key) { return this.hash_buckets_.find(key); }; - HashSet.prototype.begin = function (index) { + /** + * @inheritdoc + */ + HashMultiSet.prototype.count = function (key) { + // FIND MATCHED BUCKET + var index = std.hash(key) % this.hash_buckets_.item_size(); + var bucket = this.hash_buckets_.at(index); + // ITERATE THE BUCKET + var cnt = 0; + for (var i = 0; i < bucket.length; i++) + if (std.equal_to(bucket[i].value, key)) + cnt++; + return cnt; + }; + HashMultiSet.prototype.begin = function (index) { if (index == undefined) return _super.prototype.begin.call(this); else return this.hash_buckets_.at(index).front(); }; - HashSet.prototype.end = function (index) { + HashMultiSet.prototype.end = function (index) { if (index == undefined) return _super.prototype.end.call(this); else return this.hash_buckets_.at(index).back().next(); }; - HashSet.prototype.rbegin = function (index) { + HashMultiSet.prototype.rbegin = function (index) { if (index == undefined) return _super.prototype.rbegin.call(this); else return new std.SetReverseIterator(this.end(index)); }; - HashSet.prototype.rend = function (index) { + HashMultiSet.prototype.rend = function (index) { if (index == undefined) return _super.prototype.rend.call(this); else @@ -8436,16 +8459,16 @@ var std; /** * @inheritdoc */ - HashSet.prototype.bucket_count = function () { + HashMultiSet.prototype.bucket_count = function () { return this.hash_buckets_.size(); }; /** * @inheritdoc */ - HashSet.prototype.bucket_size = function (n) { + HashMultiSet.prototype.bucket_size = function (n) { return this.hash_buckets_.at(n).size(); }; - HashSet.prototype.max_load_factor = function (z) { + HashMultiSet.prototype.max_load_factor = function (z) { if (z == undefined) return this.size() / this.bucket_count(); else @@ -8454,19 +8477,19 @@ var std; /** * @inheritdoc */ - HashSet.prototype.bucket = function (key) { + HashMultiSet.prototype.bucket = function (key) { return std.hash(key) % this.hash_buckets_.size(); }; /** * @inheritdoc */ - HashSet.prototype.reserve = function (n) { + HashMultiSet.prototype.reserve = function (n) { this.hash_buckets_.rehash(Math.ceil(n * this.max_load_factor())); }; /** * @inheritdoc */ - HashSet.prototype.rehash = function (n) { + HashMultiSet.prototype.rehash = function (n) { if (n <= this.bucket_count()) return; this.hash_buckets_.rehash(n); @@ -8481,25 +8504,16 @@ var std; /** * @hidden */ - HashSet.prototype.insert_by_val = function (val) { - // TEST WHETHER EXIST - var it = this.find(val); - if (it.equal_to(this.end()) == false) - return std.make_pair(it, false); + HashMultiSet.prototype.insert_by_val = function (val) { // INSERT - this.data_.push_back(val); - it = it.prev(); - // POST-PROCESS - this.handle_insert(it, it.next()); - return std.make_pair(it, true); + var it = new std.SetIterator(this, this.data_.insert(this.data_.end(), val)); + this.handle_insert(it, it.next()); // POST-PROCESS + return it; }; /** * @hidden */ - HashSet.prototype.insert_by_hint = function (hint, val) { - // FIND KEY - if (this.has(val) == true) - return this.end(); + HashMultiSet.prototype.insert_by_hint = function (hint, val) { // INSERT var list_iterator = this.data_.insert(hint.get_list_iterator(), val); // POST-PROCESS @@ -8510,22 +8524,14 @@ var std; /** * @hidden */ - HashSet.prototype.insert_by_range = function (first, last) { - var my_first = this.end().prev(); - var size = 0; - for (; !first.equal_to(last); first = first.next()) { - // TEST WHETER EXIST - if (this.has(first.value)) - continue; - // INSERTS - this.data_.push_back(first.value); - size++; - } - my_first = my_first.next(); + HashMultiSet.prototype.insert_by_range = function (first, last) { + // INSERT ELEMENTS + var list_iterator = this.data_.insert(this.data_.end(), first, last); + var my_first = new std.SetIterator(this, list_iterator); // IF NEEDED, HASH_BUCKET TO HAVE SUITABLE SIZE - if (this.size() + size > this.hash_buckets_.size() * std.base.Hash.MAX_RATIO) - this.hash_buckets_.rehash((this.size() + size) * std.base.Hash.RATIO); - // INSERTS + if (this.size() > this.hash_buckets_.item_size() * std.base.Hash.MAX_RATIO) + this.hash_buckets_.rehash(this.size() * std.base.Hash.RATIO); + // POST-PROCESS this.handle_insert(my_first, this.end()); }; /* --------------------------------------------------------- @@ -8534,14 +8540,14 @@ var std; /** * @inheritdoc */ - HashSet.prototype.handle_insert = function (first, last) { + HashMultiSet.prototype.handle_insert = function (first, last) { for (; !first.equal_to(last); first = first.next()) this.hash_buckets_.insert(first); }; /** * @inheritdoc */ - HashSet.prototype.handle_erase = function (first, last) { + HashMultiSet.prototype.handle_erase = function (first, last) { for (; !first.equal_to(last); first = first.next()) this.hash_buckets_.erase(first); }; @@ -8551,8 +8557,8 @@ var std; /** * @inheritdoc */ - HashSet.prototype.swap = function (obj) { - if (obj instanceof HashSet) + HashMultiSet.prototype.swap = function (obj) { + if (obj instanceof HashMultiSet) this.swap_tree_set(obj); else _super.prototype.swap.call(this, obj); @@ -8560,37 +8566,39 @@ var std; /** * @hidden */ - HashSet.prototype.swap_tree_set = function (obj) { + HashMultiSet.prototype.swap_tree_set = function (obj) { _a = [obj.data_, this.data_], this.data_ = _a[0], obj.data_ = _a[1]; _b = [obj.hash_buckets_, this.hash_buckets_], this.hash_buckets_ = _b[0], obj.hash_buckets_ = _b[1]; var _a, _b; }; - return HashSet; - }(std.base.UniqueSet)); - std.HashSet = HashSet; + return HashMultiSet; + }(std.base.MultiSet)); + std.HashMultiSet = HashMultiSet; })(std || (std = {})); +/// +/// var std; (function (std) { /** - *

Hashed, unordered Multiset.

+ *

Hashed, unordered set.

* - *

{@link HashMultiSet HashMultiSets} are containers that store elements in no particular order, allowing fast - * retrieval of individual elements based on their value, much like {@link HashSet} containers, - * but allowing different elements to have equivalent values.

+ *

{@link HashSet}s are containers that store unique elements in no particular order, and which + * allow for fast retrieval of individual elements based on their value.

* - *

In an {@link HashMultiSet}, the value of an element is at the same time its key, used to - * identify it. Keys are immutable, therefore, the elements in an {@link HashMultiSet} cannot be + *

In an {@link HashSet}, the value of an element is at the same time its key, that + * identifies it uniquely. Keys are immutable, therefore, the elements in an {@link HashSet} cannot be * modified once in the container - they can be inserted and removed, though.

* - *

Internally, the elements in the {@link HashMultiSet} are not sorted in any particular, but - * organized into buckets depending on their hash values to allow for fast access to individual - * elements directly by their values (with a constant average time complexity on average).

+ *

Internally, the elements in the {@link HashSet} are not sorted in any particular order, but + * organized into buckets depending on their hash values to allow for fast access to individual elements + * directly by their values (with a constant average time complexity on average).

* - *

Elements with equivalent values are grouped together in the same bucket and in such a way that an - * iterator can iterate through all of them. Iterators in the container are doubly linked iterators.

+ *

{@link HashSet} containers are faster than {@link TreeSet} containers to access individual + * elements by their key, although they are generally less efficient for range iteration through a + * subset of their elements.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -8605,20 +8613,23 @@ var std; *
Set
*
The value of an element is also the key used to identify it.
* - *
Multiple equivalent keys
- *
The container can hold multiple elements with equivalent keys.
+ *
Unique keys
+ *
No two elements in the container can have equivalent keys.
*
* * @param Type of the elements. - * Each element in an {@link UnorderedMultiSet} is also identified by this value.. + * Each element in an {@link HashSet} is also uniquely identified by this value. * - * @reference http://www.cplusplus.com/reference/unordered_set/unordered_multiset + * @reference http://www.cplusplus.com/reference/unordered_set/unordered_set * @author Jeongho Nam */ - var HashMultiSet = (function (_super) { - __extends(HashMultiSet, _super); - function HashMultiSet() { + var HashSet = (function (_super) { + __extends(HashSet, _super); + function HashSet() { _super.apply(this, arguments); + /** + * @hidden + */ this.hash_buckets_ = new std.base.SetHashBuckets(this); } /* ========================================================= @@ -8634,14 +8645,14 @@ var std; /** * @hidden */ - HashMultiSet.prototype.init = function () { + HashSet.prototype.init = function () { _super.prototype.init.call(this); this.hash_buckets_ = new std.base.SetHashBuckets(this); }; /** * @hidden */ - HashMultiSet.prototype.construct_from_array = function (items) { + HashSet.prototype.construct_from_array = function (items) { this.hash_buckets_.rehash(items.length * std.base.Hash.RATIO); _super.prototype.construct_from_array.call(this, items); }; @@ -8651,7 +8662,7 @@ var std; /** * @inheritdoc */ - HashMultiSet.prototype.clear = function () { + HashSet.prototype.clear = function () { this.hash_buckets_.clear(); _super.prototype.clear.call(this); }; @@ -8665,42 +8676,28 @@ var std; /** * @inheritdoc */ - HashMultiSet.prototype.find = function (key) { + HashSet.prototype.find = function (key) { return this.hash_buckets_.find(key); }; - /** - * @inheritdoc - */ - HashMultiSet.prototype.count = function (key) { - // FIND MATCHED BUCKET - var index = std.hash(key) % this.hash_buckets_.item_size(); - var bucket = this.hash_buckets_.at(index); - // ITERATE THE BUCKET - var cnt = 0; - for (var i = 0; i < bucket.length; i++) - if (std.equal_to(bucket[i].value, key)) - cnt++; - return cnt; - }; - HashMultiSet.prototype.begin = function (index) { + HashSet.prototype.begin = function (index) { if (index == undefined) return _super.prototype.begin.call(this); else return this.hash_buckets_.at(index).front(); }; - HashMultiSet.prototype.end = function (index) { + HashSet.prototype.end = function (index) { if (index == undefined) return _super.prototype.end.call(this); else return this.hash_buckets_.at(index).back().next(); }; - HashMultiSet.prototype.rbegin = function (index) { + HashSet.prototype.rbegin = function (index) { if (index == undefined) return _super.prototype.rbegin.call(this); else return new std.SetReverseIterator(this.end(index)); }; - HashMultiSet.prototype.rend = function (index) { + HashSet.prototype.rend = function (index) { if (index == undefined) return _super.prototype.rend.call(this); else @@ -8712,16 +8709,16 @@ var std; /** * @inheritdoc */ - HashMultiSet.prototype.bucket_count = function () { + HashSet.prototype.bucket_count = function () { return this.hash_buckets_.size(); }; /** * @inheritdoc */ - HashMultiSet.prototype.bucket_size = function (n) { + HashSet.prototype.bucket_size = function (n) { return this.hash_buckets_.at(n).size(); }; - HashMultiSet.prototype.max_load_factor = function (z) { + HashSet.prototype.max_load_factor = function (z) { if (z == undefined) return this.size() / this.bucket_count(); else @@ -8730,19 +8727,19 @@ var std; /** * @inheritdoc */ - HashMultiSet.prototype.bucket = function (key) { + HashSet.prototype.bucket = function (key) { return std.hash(key) % this.hash_buckets_.size(); }; /** * @inheritdoc */ - HashMultiSet.prototype.reserve = function (n) { + HashSet.prototype.reserve = function (n) { this.hash_buckets_.rehash(Math.ceil(n * this.max_load_factor())); }; /** * @inheritdoc */ - HashMultiSet.prototype.rehash = function (n) { + HashSet.prototype.rehash = function (n) { if (n <= this.bucket_count()) return; this.hash_buckets_.rehash(n); @@ -8757,16 +8754,25 @@ var std; /** * @hidden */ - HashMultiSet.prototype.insert_by_val = function (val) { + HashSet.prototype.insert_by_val = function (val) { + // TEST WHETHER EXIST + var it = this.find(val); + if (it.equal_to(this.end()) == false) + return std.make_pair(it, false); // INSERT - var it = new std.SetIterator(this, this.data_.insert(this.data_.end(), val)); - this.handle_insert(it, it.next()); // POST-PROCESS - return it; + this.data_.push_back(val); + it = it.prev(); + // POST-PROCESS + this.handle_insert(it, it.next()); + return std.make_pair(it, true); }; /** * @hidden */ - HashMultiSet.prototype.insert_by_hint = function (hint, val) { + HashSet.prototype.insert_by_hint = function (hint, val) { + // FIND KEY + if (this.has(val) == true) + return this.end(); // INSERT var list_iterator = this.data_.insert(hint.get_list_iterator(), val); // POST-PROCESS @@ -8777,14 +8783,22 @@ var std; /** * @hidden */ - HashMultiSet.prototype.insert_by_range = function (first, last) { - // INSERT ELEMENTS - var list_iterator = this.data_.insert(this.data_.end(), first, last); - var my_first = new std.SetIterator(this, list_iterator); + HashSet.prototype.insert_by_range = function (first, last) { + var my_first = this.end().prev(); + var size = 0; + for (; !first.equal_to(last); first = first.next()) { + // TEST WHETER EXIST + if (this.has(first.value)) + continue; + // INSERTS + this.data_.push_back(first.value); + size++; + } + my_first = my_first.next(); // IF NEEDED, HASH_BUCKET TO HAVE SUITABLE SIZE - if (this.size() > this.hash_buckets_.item_size() * std.base.Hash.MAX_RATIO) - this.hash_buckets_.rehash(this.size() * std.base.Hash.RATIO); - // POST-PROCESS + if (this.size() + size > this.hash_buckets_.size() * std.base.Hash.MAX_RATIO) + this.hash_buckets_.rehash((this.size() + size) * std.base.Hash.RATIO); + // INSERTS this.handle_insert(my_first, this.end()); }; /* --------------------------------------------------------- @@ -8793,14 +8807,14 @@ var std; /** * @inheritdoc */ - HashMultiSet.prototype.handle_insert = function (first, last) { + HashSet.prototype.handle_insert = function (first, last) { for (; !first.equal_to(last); first = first.next()) this.hash_buckets_.insert(first); }; /** * @inheritdoc */ - HashMultiSet.prototype.handle_erase = function (first, last) { + HashSet.prototype.handle_erase = function (first, last) { for (; !first.equal_to(last); first = first.next()) this.hash_buckets_.erase(first); }; @@ -8810,8 +8824,8 @@ var std; /** * @inheritdoc */ - HashMultiSet.prototype.swap = function (obj) { - if (obj instanceof HashMultiSet) + HashSet.prototype.swap = function (obj) { + if (obj instanceof HashSet) this.swap_tree_set(obj); else _super.prototype.swap.call(this, obj); @@ -8819,14 +8833,14 @@ var std; /** * @hidden */ - HashMultiSet.prototype.swap_tree_set = function (obj) { + HashSet.prototype.swap_tree_set = function (obj) { _a = [obj.data_, this.data_], this.data_ = _a[0], obj.data_ = _a[1]; _b = [obj.hash_buckets_, this.hash_buckets_], this.hash_buckets_ = _b[0], obj.hash_buckets_ = _b[1]; var _a, _b; }; - return HashMultiSet; - }(std.base.MultiSet)); - std.HashMultiSet = HashMultiSet; + return HashSet; + }(std.base.UniqueSet)); + std.HashSet = HashSet; })(std || (std = {})); /// /// @@ -8863,8 +8877,8 @@ var std; * end, they perform worse than the others, and have less consistent iterators and references than {@link List}s. *

* - *

- * + *

+ * *

* *

Container properties

@@ -9180,8 +9194,8 @@ var std; /** *

An iterator of Vector.

* - *

- * + *

+ * *

* * @param Type of the elements. @@ -9316,8 +9330,8 @@ var std; /** *

A reverse-iterator of Vector.

* - *

- * + *

+ * *

* * @param Type of the elements. @@ -9397,8 +9411,8 @@ var std; * By default, if no container class is specified for a particular {@link Queue} class instantiation, the standard * container {@link List} is used.

* - *

- * + *

+ * *

* * @param Type of elements. @@ -9733,8 +9747,8 @@ var std; * By default, if no container class is specified for a particular {@link Stack} class instantiation, the standard * container {@link List} is used.

* - *

- * + *

+ * *

* * @param Type of elements. @@ -9845,7 +9859,6 @@ var std; })(std || (std = {})); /// /// -/// var std; (function (std) { /** @@ -9867,8 +9880,8 @@ var std; * *

{@link TreeSet}s are typically implemented as binary search trees.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -10081,15 +10094,263 @@ var std; /** * @hidden */ - TreeSet.prototype.swap_tree_set = function (obj) { + TreeSet.prototype.swap_tree_set = function (obj) { + _a = [obj.data_, this.data_], this.data_ = _a[0], obj.data_ = _a[1]; + _b = [obj.tree_, this.tree_], this.tree_ = _b[0], obj.tree_ = _b[1]; + var _a, _b; + }; + return TreeSet; + }(std.base.UniqueSet)); + std.TreeSet = TreeSet; +})(std || (std = {})); +/// +/// +var std; +(function (std) { + /** + *

Tree-structured map, std::map of STL.

+ * + *

{@link TreeMap TreeMaps} are associative containers that store elements formed by a combination of a + * key value (Key) and a mapped value (T), following order.

+ * + *

In a {@link TreeMap}, the key values are generally used to sort and uniquely identify the elements, + * while the mapped values store the content associated to this key. The types of key and + * mapped value may differ, and are grouped together in member type value_type, which is a {@link Pair} + * type combining both:

+ * + *

typedef Pair value_type;

+ * + *

Internally, the elements in a {@link TreeMap} are always sorted by its key following a + * strict weak ordering criterion indicated by its internal comparison method {@link less}. + * + *

{@link TreeMap} containers are generally slower than {@link HashMap HashMap} containers to access individual + * elements by their key, but they allow the direct iteration on subsets based on their order.

+ * + *

{@link TreeMap}s are typically implemented as binary search trees.

+ * + *

+ *

+ * + *

Container properties

+ *
+ *
Associative
+ *
Elements in associative containers are referenced by their key and not by their absolute + * position in the container.
+ * + *
Ordered
+ *
The elements in the container follow a strict order at all times. All inserted elements are + * given a position in this order.
+ * + *
Map
+ *
Each element associates a key to a mapped value: + * Keys are meant to identify the elements whose main content is the mapped value.
+ * + *
Unique keys
+ *
No two elements in the container can have equivalent keys.
+ *
+ * + * @param Type of the keys. Each element in a map is uniquely identified by its key value. + * @param Type of the mapped value. Each element in a map stores some data as its mapped value. + * + * @reference http://www.cplusplus.com/reference/map/map + * @author Jeongho Nam + */ + var TreeMap = (function (_super) { + __extends(TreeMap, _super); + function TreeMap() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i - 0] = arguments[_i]; + } + _super.call(this); + // CONSTRUCT TREE WITH COMPARE + var compare = std.less; + var fn = null; + // OVERLOADINGS + if (args.length == 0) { } // DO NOTHING + else if (args.length >= 1 && (args[0] instanceof std.base.Container || args[0] instanceof std.Vector)) { + fn = this.construct_from_container; + if (args.length == 2) + compare = args[1]; + } + else if (args.length >= 1 && args[0] instanceof Array) { + fn = this.construct_from_array; + if (args.length == 2) + compare = args[1]; + } + else if (args.length >= 2 && args[0] instanceof std.Iterator && args[1] instanceof std.Iterator) { + fn = this.construct_from_range; + if (args.length == 3) + compare = args[2]; + } + else if (args.length == 1) + compare = args[0]; + // CONSTRUCT TREE + this.tree_ = new std.base.PairTree(this, compare); + // BRANCH - CALL OVERLOADED CONSTRUCTORS + if (fn != null) + fn.apply(this, args); + } + /* --------------------------------------------------------- + ASSIGN & CLEAR + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + TreeMap.prototype.clear = function () { + _super.prototype.clear.call(this); + this.tree_.clear(); + }; + /* ========================================================= + ACCESSORS + ========================================================= */ + /** + * @inheritdoc + */ + TreeMap.prototype.find = function (key) { + var node = this.tree_.find(key); + if (node == null || std.equal_to(node.value.first, key) == false) + return this.end(); + else + return node.value; + }; + /** + * @inheritdoc + */ + TreeMap.prototype.key_comp = function () { + return this.tree_.key_comp(); + }; + /** + * @inheritdoc + */ + TreeMap.prototype.value_comp = function () { + return this.tree_.value_comp(); + }; + /** + * @inheritdoc + */ + TreeMap.prototype.lower_bound = function (key) { + return this.tree_.lower_bound(key); + }; + /** + * @inheritdoc + */ + TreeMap.prototype.upper_bound = function (key) { + return this.tree_.upper_bound(key); + }; + /** + * @inheritdoc + */ + TreeMap.prototype.equal_range = function (key) { + return this.tree_.equal_range(key); + }; + /* ========================================================= + ELEMENTS I/O + - INSERT + - POST-PROCESS + ============================================================ + INSERT + --------------------------------------------------------- */ + /** + * @hidden + */ + TreeMap.prototype.insert_by_pair = function (pair) { + var node = this.tree_.find(pair.first); + // IF EQUALS, THEN RETURN FALSE + if (node != null && std.equal_to(node.value.first, pair.first) == true) + return std.make_pair(node.value, false); + // INSERTS + var it; + if (node == null) + it = this.end(); + else if (this.tree_.key_comp()(node.value.first, pair.first) == true) + it = node.value.next(); + else + it = node.value; + // ITERATOR TO RETURN + it = new std.MapIterator(this, this.data_.insert(it.get_list_iterator(), pair)); + this.handle_insert(it, it.next()); // POST-PROCESS + return std.make_pair(it, true); + }; + /** + * @hidden + */ + TreeMap.prototype.insert_by_hint = function (hint, pair) { + // FIND KEY + if (this.has(pair.first) == true) + return this.end(); + // VALIDATE HINT + var ret; + var compare = this.tree_.key_comp(); + // hint < current && current < next + if (compare(hint.first, pair.first) == true + && (hint.next().equal_to(this.end()) || compare(pair.first, hint.next().first) == true)) { + /////// + // RIGHT HINT + /////// + // INSERT + ret = new std.MapIterator(this, this.data_.insert(hint.get_list_iterator(), pair)); + // POST-PROCESS + this.handle_insert(ret, ret.next()); + } + else { + /////// + // WRONG HINT + /////// + // INSERT BY AUTOMATIC NODE FINDING + ret = this.insert_by_pair(pair).first; + } + return ret; + }; + /** + * @hidden + */ + TreeMap.prototype.insert_by_range = function (first, last) { + for (; !first.equal_to(last); first = first.next()) + this.insert_by_pair(std.make_pair(first.value.first, first.value.second)); + }; + /* --------------------------------------------------------- + POST-PROCESS + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + TreeMap.prototype.handle_insert = function (first, last) { + this.tree_.insert(first); + }; + /** + * @inheritdoc + */ + TreeMap.prototype.handle_erase = function (first, last) { + for (; !first.equal_to(last); first = first.next()) + this.tree_.erase(last); + }; + /* =============================================================== + UTILITIES + =============================================================== */ + /** + * @inheritdoc + */ + TreeMap.prototype.swap = function (obj) { + if (obj instanceof TreeMap) + this.swap_tree_map(obj); + else + _super.prototype.swap.call(this, obj); + }; + /** + * @hidden + */ + TreeMap.prototype.swap_tree_map = function (obj) { _a = [obj.data_, this.data_], this.data_ = _a[0], obj.data_ = _a[1]; _b = [obj.tree_, this.tree_], this.tree_ = _b[0], obj.tree_ = _b[1]; var _a, _b; }; - return TreeSet; - }(std.base.UniqueSet)); - std.TreeSet = TreeSet; + return TreeMap; + }(std.base.UniqueMap)); + std.TreeMap = TreeMap; })(std || (std = {})); +/// +/// var std; (function (std) { /** @@ -10112,8 +10373,8 @@ var std; * *

{@link TreeMultiSet TreeMultiSets} are typically implemented as binary search trees.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -10351,253 +10612,8 @@ var std; std.TreeMultiSet = TreeMultiSet; })(std || (std = {})); /// -/// /// var std; -(function (std) { - /** - *

Tree-structured map, std::map of STL.

- * - *

{@link TreeMap TreeMaps} are associative containers that store elements formed by a combination of a - * key value (Key) and a mapped value (T), following order.

- * - *

In a {@link TreeMap}, the key values are generally used to sort and uniquely identify the elements, - * while the mapped values store the content associated to this key. The types of key and - * mapped value may differ, and are grouped together in member type value_type, which is a {@link Pair} - * type combining both:

- * - *

typedef Pair value_type;

- * - *

Internally, the elements in a {@link TreeMap} are always sorted by its key following a - * strict weak ordering criterion indicated by its internal comparison method {@link less}. - * - *

{@link TreeMap} containers are generally slower than {@link HashMap HashMap} containers to access individual - * elements by their key, but they allow the direct iteration on subsets based on their order.

- * - *

{@link TreeMap}s are typically implemented as binary search trees.

- * - *

- *

- * - *

Container properties

- *
- *
Associative
- *
Elements in associative containers are referenced by their key and not by their absolute - * position in the container.
- * - *
Ordered
- *
The elements in the container follow a strict order at all times. All inserted elements are - * given a position in this order.
- * - *
Map
- *
Each element associates a key to a mapped value: - * Keys are meant to identify the elements whose main content is the mapped value.
- * - *
Unique keys
- *
No two elements in the container can have equivalent keys.
- *
- * - * @param Type of the keys. Each element in a map is uniquely identified by its key value. - * @param Type of the mapped value. Each element in a map stores some data as its mapped value. - * - * @reference http://www.cplusplus.com/reference/map/map - * @author Jeongho Nam - */ - var TreeMap = (function (_super) { - __extends(TreeMap, _super); - function TreeMap() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i - 0] = arguments[_i]; - } - _super.call(this); - // CONSTRUCT TREE WITH COMPARE - var compare = std.less; - var fn = null; - // OVERLOADINGS - if (args.length == 0) { } // DO NOTHING - else if (args.length >= 1 && (args[0] instanceof std.base.Container || args[0] instanceof std.Vector)) { - fn = this.construct_from_container; - if (args.length == 2) - compare = args[1]; - } - else if (args.length >= 1 && args[0] instanceof Array) { - fn = this.construct_from_array; - if (args.length == 2) - compare = args[1]; - } - else if (args.length >= 2 && args[0] instanceof std.Iterator && args[1] instanceof std.Iterator) { - fn = this.construct_from_range; - if (args.length == 3) - compare = args[2]; - } - else if (args.length == 1) - compare = args[0]; - // CONSTRUCT TREE - this.tree_ = new std.base.PairTree(this, compare); - // BRANCH - CALL OVERLOADED CONSTRUCTORS - if (fn != null) - fn.apply(this, args); - } - /* --------------------------------------------------------- - ASSIGN & CLEAR - --------------------------------------------------------- */ - /** - * @inheritdoc - */ - TreeMap.prototype.clear = function () { - _super.prototype.clear.call(this); - this.tree_.clear(); - }; - /* ========================================================= - ACCESSORS - ========================================================= */ - /** - * @inheritdoc - */ - TreeMap.prototype.find = function (key) { - var node = this.tree_.find(key); - if (node == null || std.equal_to(node.value.first, key) == false) - return this.end(); - else - return node.value; - }; - /** - * @inheritdoc - */ - TreeMap.prototype.key_comp = function () { - return this.tree_.key_comp(); - }; - /** - * @inheritdoc - */ - TreeMap.prototype.value_comp = function () { - return this.tree_.value_comp(); - }; - /** - * @inheritdoc - */ - TreeMap.prototype.lower_bound = function (key) { - return this.tree_.lower_bound(key); - }; - /** - * @inheritdoc - */ - TreeMap.prototype.upper_bound = function (key) { - return this.tree_.upper_bound(key); - }; - /** - * @inheritdoc - */ - TreeMap.prototype.equal_range = function (key) { - return this.tree_.equal_range(key); - }; - /* ========================================================= - ELEMENTS I/O - - INSERT - - POST-PROCESS - ============================================================ - INSERT - --------------------------------------------------------- */ - /** - * @hidden - */ - TreeMap.prototype.insert_by_pair = function (pair) { - var node = this.tree_.find(pair.first); - // IF EQUALS, THEN RETURN FALSE - if (node != null && std.equal_to(node.value.first, pair.first) == true) - return std.make_pair(node.value, false); - // INSERTS - var it; - if (node == null) - it = this.end(); - else if (this.tree_.key_comp()(node.value.first, pair.first) == true) - it = node.value.next(); - else - it = node.value; - // ITERATOR TO RETURN - it = new std.MapIterator(this, this.data_.insert(it.get_list_iterator(), pair)); - this.handle_insert(it, it.next()); // POST-PROCESS - return std.make_pair(it, true); - }; - /** - * @hidden - */ - TreeMap.prototype.insert_by_hint = function (hint, pair) { - // FIND KEY - if (this.has(pair.first) == true) - return this.end(); - // VALIDATE HINT - var ret; - var compare = this.tree_.key_comp(); - // hint < current && current < next - if (compare(hint.first, pair.first) == true - && (hint.next().equal_to(this.end()) || compare(pair.first, hint.next().first) == true)) { - /////// - // RIGHT HINT - /////// - // INSERT - ret = new std.MapIterator(this, this.data_.insert(hint.get_list_iterator(), pair)); - // POST-PROCESS - this.handle_insert(ret, ret.next()); - } - else { - /////// - // WRONG HINT - /////// - // INSERT BY AUTOMATIC NODE FINDING - ret = this.insert_by_pair(pair).first; - } - return ret; - }; - /** - * @hidden - */ - TreeMap.prototype.insert_by_range = function (first, last) { - for (; !first.equal_to(last); first = first.next()) - this.insert_by_pair(std.make_pair(first.value.first, first.value.second)); - }; - /* --------------------------------------------------------- - POST-PROCESS - --------------------------------------------------------- */ - /** - * @inheritdoc - */ - TreeMap.prototype.handle_insert = function (first, last) { - this.tree_.insert(first); - }; - /** - * @inheritdoc - */ - TreeMap.prototype.handle_erase = function (first, last) { - for (; !first.equal_to(last); first = first.next()) - this.tree_.erase(last); - }; - /* =============================================================== - UTILITIES - =============================================================== */ - /** - * @inheritdoc - */ - TreeMap.prototype.swap = function (obj) { - if (obj instanceof TreeMap) - this.swap_tree_map(obj); - else - _super.prototype.swap.call(this, obj); - }; - /** - * @hidden - */ - TreeMap.prototype.swap_tree_map = function (obj) { - _a = [obj.data_, this.data_], this.data_ = _a[0], obj.data_ = _a[1]; - _b = [obj.tree_, this.tree_], this.tree_ = _b[0], obj.tree_ = _b[1]; - var _a, _b; - }; - return TreeMap; - }(std.base.UniqueMap)); - std.TreeMap = TreeMap; -})(std || (std = {})); -var std; (function (std) { /** *

Tree-structured multiple-key map.

@@ -10622,8 +10638,8 @@ var std; * *

{@link TreeMultiMap TreeMultiMaps} are typically implemented as binary search trees.

* - *

< - * img src="http://samchon.github.io/typescript-stl/api/assets/images/design/map_containers.png" style="max-width: 100%" />

+ *

< + * img src="http://samchon.github.io/typescript-stl/images/design/class_diagram/map_containers.png" style="max-width: 100%" />

* *

Container properties

*
@@ -10877,8 +10893,8 @@ var std; *

The class inherits from {@link RuntimeError}, to which it adds an {@link ErrorCode} as * member code (and defines a specialized what member).

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/system_error/system_error * @author Jeongho Nam @@ -10927,8 +10943,8 @@ var std; * passed by reference. As such, only one object of each of these types shall exist, each uniquely identifying its own * category: all error codes and conditions of a same category shall return a reference to same object.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/system_error/error_category * @author Jeongho Nam @@ -11007,8 +11023,8 @@ var std; *

The {@link ErrorCategory categories} associated with the {@link ErrorCondition} and the * {@link ErrorCode} define the equivalences between them.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/system_error/error_condition * @author Jeongho Nam @@ -11038,8 +11054,8 @@ var std; *

Objects of this class associate such numerical codes to {@link ErrorCategory error categories}, so that they * can be interpreted when needed as more abstract (and portable) {@link ErrorCondition error conditions}.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/system_error/error_code * @author Jeongho Nam @@ -11155,15 +11171,18 @@ var std; /// /// /// +/// +/// /// /// +/// +/// /// /// /// /// /// /// -/// try { module.exports = std; } diff --git a/ts/include/typescript-stl.js.map b/ts/include/typescript-stl.js.map index 2eedc02d..e210ea99 100644 --- a/ts/include/typescript-stl.js.map +++ b/ts/include/typescript-stl.js.map @@ -1 +1 @@ -{"version":3,"file":"typescript-stl.js","sourceRoot":"","sources":["../src/std/API.ts","../src/std/Algorithm.ts","../src/std/base/XTree.ts","../src/std/base/TreeSetBase.ts","../src/std/base/Color.ts","../src/std/base/Container.ts","../src/std/base/ErrorInstance.ts","../src/std/base/HashBuckets.ts","../src/std/base/IArrayContainer.ts","../src/std/base/IArrayIterator.ts","../src/std/base/IContainer.ts","../src/std/base/IDequeContainer.ts","../src/std/base/ILinearContainer.ts","../src/std/Iterator.ts","../src/std/base/MapContainer.ts","../src/std/base/HashMapBase.ts","../src/std/base/MultiMap.ts","../src/std/base/SetContainer.ts","../src/std/base/MultiSet.ts","../src/std/base/TreeMapBase.ts","../src/std/base/HashSetBase.ts","../src/std/base/UniqueMap.ts","../src/std/base/UniqueSet.ts","../src/std/base/XTreeNode.ts","../src/std/Deque.ts","../src/std/example/test_all.ts","../src/std/example/test_anything.ts","../src/std/example/test_bind.ts","../src/std/example/test_deque.ts","../src/std/example/test_for_each.ts","../src/std/example/test_hash_map.ts","../src/std/List.ts","../src/std/example/test_list.ts","../src/std/example/test_sorting.ts","../src/std/example/test_tree_set.ts","../src/std/Exception.ts","../src/std/Functional.ts","../src/std/HashMap.ts","../src/std/HashSet.ts","../src/std/Vector.ts","../src/std/Queue.ts","../src/std/Stack.ts","../src/std/TreeSet.ts","../src/std/TreeMap.ts","../src/std/SystemError.ts","../src/std/Utility.ts","../src/std/miscellaneous/exports.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"typescript-stl.js","sourceRoot":"","sources":["../src/std/API.ts","../src/std/Algorithm.ts","../src/std/base/Color.ts","../src/std/base/Container.ts","../src/std/base/ErrorInstance.ts","../src/std/base/HashBuckets.ts","../src/std/base/HashMapBase.ts","../src/std/base/HashSetBase.ts","../src/std/base/IArrayContainer.ts","../src/std/base/IArrayIterator.ts","../src/std/base/IContainer.ts","../src/std/base/IDequeContainer.ts","../src/std/base/ILinearContainer.ts","../src/std/Iterator.ts","../src/std/base/MapContainer.ts","../src/std/base/MultiMap.ts","../src/std/base/SetContainer.ts","../src/std/base/MultiSet.ts","../src/std/base/XTree.ts","../src/std/base/TreeMapBase.ts","../src/std/base/TreeSetBase.ts","../src/std/base/UniqueMap.ts","../src/std/base/UniqueSet.ts","../src/std/base/XTreeNode.ts","../src/std/Deque.ts","../src/std/example/test_all.ts","../src/std/example/test_anything.ts","../src/std/example/test_bind.ts","../src/std/example/test_deque.ts","../src/std/example/test_for_each.ts","../src/std/example/test_hash_map.ts","../src/std/List.ts","../src/std/example/test_list.ts","../src/std/example/test_sorting.ts","../src/std/example/test_tree_set.ts","../src/std/Exception.ts","../src/std/Functional.ts","../src/std/HashMap.ts","../src/std/HashMultiMap.ts","../src/std/HashMultiSet.ts","../src/std/HashSet.ts","../src/std/Vector.ts","../src/std/Queue.ts","../src/std/Stack.ts","../src/std/TreeSet.ts","../src/std/TreeMap.ts","../src/std/TreeMultiSet.ts","../src/std/TreeMultiMap.ts","../src/std/SystemError.ts","../src/std/Utility.ts","../src/std/miscellaneous/exports.ts"],"names":[],"mappings":";;;;;AAAA;;;;;;;;;;;;GAYG;AACH,IAAU,GAAG,CA+HZ;AA/HD,WAAU,GAAG,EACb,CAAC;IACA;;;;;;;;;gEAS4D;IAC5D;;OAEG;IACW,UAAM,GAAG,UAAM,CAAC;IAE9B;;OAEG;IACW,QAAI,GAAG,QAAI,CAAC;IAE1B;;OAEG;IACW,SAAK,GAAG,SAAK,CAAC;IAoBjB,SAAK,GAAG,SAAK,CAAC;IACd,SAAK,GAAG,SAAK,CAAC;IACd,kBAAc,GAAG,iBAAa,CAAC;IAE1C;;gEAE4D;IAC5D;;OAEG;IACW,OAAG,GAAG,WAAO,CAAC;IAE5B;;OAEG;IACW,YAAQ,GAAG,gBAAY,CAAC;IAEtC;;OAEG;IACW,iBAAa,GAAG,WAAO,CAAC;IAEtC;;OAEG;IACW,sBAAkB,GAAG,gBAAY,CAAC;IAEhD;;gEAE4D;IAC5D;;OAEG;IACW,OAAG,GAAG,WAAO,CAAC;IAE5B;;OAEG;IACW,YAAQ,GAAG,gBAAY,CAAC;IAEtC;;OAEG;IACW,iBAAa,GAAG,WAAO,CAAC;IAEtC;;OAEG;IACW,sBAAkB,GAAG,gBAAY,CAAC;IAoBrC,aAAS,GAAG,aAAS,CAAC;IACrB,eAAW,GAAG,cAAU,CAAC;IACxB,gBAAY,GAAG,eAAW,CAAC;IAC3B,oBAAgB,GAAG,mBAAe,CAAC;IACnC,gBAAY,GAAG,eAAW,CAAC;IAC3B,gBAAY,GAAG,cAAU,CAAC;IAC3B,iBAAa,GAAG,gBAAY,CAAC;IAC5B,kBAAc,GAAG,iBAAa,CAAC;IAC/B,mBAAe,GAAG,kBAAc,CAAC;IACjC,eAAW,GAAG,cAAU,CAAC;IACzB,gBAAY,GAAG,eAAW,CAAC;IAC1B,kBAAc,GAAG,iBAAa,CAAC;IAC/B,mBAAe,GAAG,kBAAc,CAAC;IACjC,cAAU,GAAG,aAAS,CAAC;AACtC,CAAC,EA/HS,GAAG,KAAH,GAAG,QA+HZ;AC5ID,+BAA+B;AAE/B,wCAAwC;AACxC,iHAAiH;AACjH,EAAE;AACF,iHAAiH;AACjH,oHAAoH;AACpH,kHAAkH;AAClH,gCAAgC;AAChC,EAAE;AACF,0DAA0D;AAC1D,2CAA2C;AAE3C,IAAU,GAAG,CAg8BZ;AAh8BD,WAAU,GAAG,EACb,CAAC;IACA;;;;;;;;gEAQ4D;IAC5D;;;;;;;;;;;;;OAaG;IACH,kBACE,KAAoB,EAAE,IAAmB,EAAE,EAAQ;QAEpD,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAmB;YACvE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QAEd,MAAM,CAAC,EAAE,CAAC;IACX,CAAC;IAPe,YAAQ,WAOvB,CAAA;IAED;;gEAE4D;IAC5D;;;;;;;;;;;;;;;;;OAiBG;IACH,gBACE,KAAoB,EAAE,IAAmB,EAAE,IAAyB;QAErE,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAmB;YACvE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;gBAC3B,MAAM,CAAC,KAAK,CAAC;QAEf,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IARe,UAAM,SAQrB,CAAA;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,gBACE,KAAoB,EAAE,IAAmB,EAAE,IAAyB;QAErE,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAmB;YACvE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;gBAC1B,MAAM,CAAC,IAAI,CAAC;QAEd,MAAM,CAAC,KAAK,CAAC;IACd,CAAC;IARe,UAAM,SAQrB,CAAA;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,iBACE,KAAoB,EAAE,IAAmB,EAAE,IAAyB;QAErE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAJe,WAAO,UAItB,CAAA;IA8CD,eAEE,MAAiB,EAAE,KAAgB,EAAE,MAAmB,EACxD,IAA4C;QAA5C,oBAA4C,GAA5C,OAAgC,GAAG,CAAC,QAAQ;QAG7C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC7B,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;gBACnF,MAAM,CAAC,KAAK,CAAC;YACd,IAAI,CACJ,CAAC;gBACA,MAAM,GAAG,MAAM,CAAC,IAAI,EAAe,CAAC;gBACpC,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;YACxB,CAAC;QACF,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IAfe,SAAK,QAepB,CAAA;IAkDD,wBAGE,MAAiB,EAAE,KAAgB,EAAE,MAAiB,EACtD,IAA4C;QAA5C,oBAA4C,GAA5C,OAAgC,GAAG,CAAC,QAAQ;QAG7C,sBAAsB;QACtB,IAAI,IAAI,GAA+B,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACvE,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;QACpB,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAErB,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC;QAEb,IAAI,KAAK,GAAc,MAAM,CAAC,OAAO,CAAC,YAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAc,CAAC;QAE5E,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAe;YACrE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAC5C,CAAC;gBACA,IAAI,CAAC,GAAW,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;gBAC/C,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC7C,MAAM,CAAC,KAAK,CAAC;YACf,CAAC;QACF,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IAzBe,kBAAc,iBAyB7B,CAAA;IAoED,iCAIE,MAAiB,EAAE,KAAgB,EAAE,MAAiB,EAAE,KAAgB,EACxE,OAA2C;QAA3C,uBAA2C,GAA3C,UAAmC,GAAG,CAAC,IAAI;QAG5C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC7B,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClE,MAAM,CAAC,KAAK,CAAC;YACd,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC5C,MAAM,CAAC,IAAI,CAAC;YACb,IAAI,CACJ,CAAC;gBACA,MAAM,GAAG,MAAM,CAAC,IAAI,EAAe,CAAC;gBACpC,MAAM,GAAG,MAAM,CAAC,IAAI,EAAe,CAAC;YACrC,CAAC;QAEF,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACnG,CAAC;IApBe,2BAAuB,0BAoBtC,CAAA;IAED;;gEAE4D;IAC5D;;;;;;;;;;;;;;;;OAgBG;IACH,cACE,KAAoB,EAAE,IAAmB,EAAE,GAAM;QAElD,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAmB;YACvE,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC/B,MAAM,CAAC,EAAE,CAAC;QAEZ,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IARe,QAAI,OAQnB,CAAA;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,iBACE,KAAoB,EAAE,IAAmB,EAAE,IAAyB;QAErE,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAmB;YACvE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;gBAClB,MAAM,CAAC,EAAE,CAAC;QAEZ,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IARe,WAAO,UAQtB,CAAA;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,qBACE,KAAoB,EAAE,IAAmB,EAAE,IAAyB;QAErE,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAmB;YACvE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;gBAC3B,MAAM,CAAC,EAAE,CAAC;QAEZ,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IARe,eAAW,cAQ1B,CAAA;IAuED,kBAGE,MAAiB,EAAE,KAAgB,EAAE,MAAiB,EAAE,KAAgB,EACxE,OAA+C;QAA/C,uBAA+C,GAA/C,UAAmC,GAAG,CAAC,QAAQ;QAGhD,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC1B,MAAM,CAAC,KAAK,CAAC;QAEd,IAAI,GAAG,GAAc,KAAK,CAAC;QAE3B,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,IAAI,EAAe,EACnE,CAAC;YACA,IAAI,GAAG,GAAc,MAAM,CAAC;YAC5B,IAAI,GAAG,GAAc,MAAM,CAAC;YAE5B,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,EACzC,CAAC;gBACA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAe,CAAC;gBAC9B,GAAG,GAAG,GAAG,CAAC,IAAI,EAAe,CAAC;gBAE9B,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CACxB,CAAC;oBACA,GAAG,GAAG,MAAM,CAAC;oBACb,KAAK,CAAC;gBACP,CAAC;gBACD,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;oBAC5B,MAAM,CAAC,GAAG,CAAC;YACb,CAAC;QACF,CAAC;QACD,MAAM,CAAC,GAAG,CAAC;IACZ,CAAC;IAhCe,YAAQ,WAgCvB,CAAA;IAwDD,uBAGE,MAAiB,EAAE,KAAgB,EAAE,MAAiB,EAAE,KAAgB,EACxE,IAA4C;QAA5C,oBAA4C,GAA5C,OAAgC,GAAG,CAAC,QAAQ;QAG7C,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,IAAI,EAAe;YAClE,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAe;gBACrE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;oBAChC,MAAM,CAAC,MAAM,CAAC;QAEjB,MAAM,CAAC,KAAK,CAAC;IACd,CAAC;IAbe,iBAAa,gBAa5B,CAAA;IA2CD,uBACE,KAAoB,EAAE,IAAmB,EAAE,IAA4C;QAA5C,oBAA4C,GAA5C,OAAgC,GAAG,CAAC,QAAQ;QAExF,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAC1B,CAAC;YACA,IAAI,MAAI,GAAkB,KAAK,CAAC,IAAI,EAAmB,CAAC;YAExD,OAAO,CAAC,MAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC3B,CAAC;gBACA,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;oBACzC,MAAM,CAAC,KAAK,CAAC;gBAEd,KAAK,GAAG,KAAK,CAAC,IAAI,EAAmB,CAAC;gBACtC,MAAI,GAAG,MAAI,CAAC,IAAI,EAAmB,CAAC;YACrC,CAAC;QACF,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IAjBe,iBAAa,gBAiB5B,CAAA;IAmED,gBAEE,MAAwB,EAAE,KAAuB,EAAE,MAAwB,EAAE,KAAuB,EACpG,IAA4C;QAA5C,oBAA4C,GAA5C,OAAgC,GAAG,CAAC,QAAQ;QAG7C,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC1B,MAAM,CAAC,MAAM,CAAC;QAEf,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,IAAI,EAAsB,EAC1E,CAAC;YACA,IAAI,GAAG,GAAqB,MAAM,CAAC;YACnC,IAAI,GAAG,GAAqB,MAAM,CAAC;YAEnC,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,EACzC,CAAC;gBACA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAsB,CAAC;gBACrC,GAAG,GAAG,GAAG,CAAC,IAAI,EAAsB,CAAC;gBAErC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;oBACvB,MAAM,CAAC,MAAM,CAAC;gBACf,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;oBAC5B,MAAM,CAAC,KAAK,CAAC;YACf,CAAC;QACF,CAAC;QACD,MAAM,CAAC,KAAK,CAAC;IACd,CAAC;IA1Be,UAAM,SA0BrB,CAAA;IAqDD,kBAEE,KAAsB,EAAE,IAAqB,EAAE,KAAa,EAAE,GAAM,EACpE,IAA4C;QAA5C,oBAA4C,GAA5C,OAAgC,GAAG,CAAC,QAAQ;QAG7C,IAAI,KAAK,GAAoB,KAAK,CAAC,OAAO,CAAC,YAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,KAAK,CAAoB,CAAC;QAE7F,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAqB,EACtE,CAAC;YACA,IAAI,EAAE,GAAoB,KAAK,CAAC;YAChC,IAAI,CAAC,GAAW,CAAC,CAAC;YAElB,OAAO,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,EAClC,CAAC;gBACA,EAAE,GAAG,EAAE,CAAC,IAAI,EAAqB,CAAC;gBAElC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC;oBAChB,MAAM,CAAC,KAAK,CAAC;YACf,CAAC;QACF,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IAtBe,YAAQ,WAsBvB,CAAA;IA4DD,kBAGE,MAAiB,EAAE,KAAgB,EAAE,MAAiB,EACtD,OAA+C;QAA/C,uBAA+C,GAA/C,UAAmC,GAAG,CAAC,QAAQ;QAGhD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC;eACzE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAC5C,CAAC;YACA,MAAM,GAAG,MAAM,CAAC,IAAI,EAAe,CAAC;YACpC,MAAM,GAAG,MAAM,CAAC,IAAI,EAAe,CAAC;QACrC,CAAC;QACD,MAAM,CAAC,aAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;IAde,YAAQ,WAcvB,CAAA;IAED;;gEAE4D;IAC5D;;;;;;;;;;;;;;OAcG;IACH,eACE,KAAoB,EAAE,IAAmB,EAAE,GAAM;QAElD,IAAI,GAAG,GAAW,CAAC,CAAC;QAEpB,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAmB;YACvE,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC/B,GAAG,EAAE,CAAC;QAER,MAAM,CAAC,GAAG,CAAC;IACZ,CAAC;IAVe,SAAK,QAUpB,CAAA;IAED;;;;;;;;;;;;;;OAcG;IACH,kBACE,KAAoB,EAAE,IAAmB,EAAE,IAAyB;QAErE,IAAI,GAAG,GAAW,CAAC,CAAC;QAEpB,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAmB;YACvE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;gBAClB,GAAG,EAAE,CAAC;QAER,MAAM,CAAC,GAAG,CAAC;IACZ,CAAC;IAVe,YAAQ,WAUvB,CAAA;AACF,CAAC,EAh8BS,GAAG,KAAH,GAAG,QAg8BZ;AAED,IAAU,GAAG,CA+8BZ;AA/8BD,WAAU,GAAG,EACb,CAAC;IACA;;;;;;;;gEAQ4D;IAC5D;;;;;;;;;;;;;;;;;;;OAmBG;IACH,cAEE,KAAoB,EAAE,IAAmB,EAAE,MAAsB;QAElE,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAmB,EACnE,CAAC;YACA,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAC3B,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;QAC1C,CAAC;QACD,MAAM,CAAC,MAAM,CAAC;IACf,CAAC;IAVe,QAAI,OAUnB,CAAA;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,gBAEE,KAAoB,EAAE,CAAS,EAAE,MAAsB;QAExD,GAAG,CAAC,CAAC,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAClC,CAAC;YACA,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAE3B,KAAK,GAAG,KAAK,CAAC,IAAI,EAAmB,CAAC;YACtC,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;QAC1C,CAAC;QACD,MAAM,CAAC,MAAM,CAAC;IACf,CAAC;IAZe,UAAM,SAYrB,CAAA;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,iBAEE,KAAoB,EAAE,IAAmB,EAAE,MAAsB,EAAE,IAAuB;QAE3F,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAmB,EACnE,CAAC;YACA,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACtB,QAAQ,CAAC;YAEV,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAC3B,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;QAC1C,CAAC;QACD,MAAM,CAAC,MAAM,CAAC;IACf,CAAC;IAbe,WAAO,UAatB,CAAA;IAED;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,uBAEE,KAA6B,EAAE,IAA4B,EAAE,MAA8B;QAE5F,IAAI,GAAG,IAAI,CAAC,IAAI,EAA4B,CAAA;QAE5C,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,EAA4B,EAC1E,CAAC;YACA,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YAC1B,MAAM,GAAG,MAAM,CAAC,IAAI,EAA4B,CAAC;QAClD,CAAC;QACD,MAAM,CAAC,MAAM,CAAC;IACf,CAAC;IAZe,iBAAa,gBAY5B,CAAA;IAED;;;;;;;;;;;;OAYG;IACH,cACE,KAAsB,EAAE,IAAqB,EAAE,GAAM;QAEtD,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAqB;YACpE,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;IACpB,CAAC;IALe,QAAI,OAKnB,CAAA;IAED;;;;;;;;;;;OAWG;IACH,gBACE,KAAqB,EAAE,CAAS,EAAE,GAAM;QAEzC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAClC,CAAC;YACA,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;YAClB,KAAK,GAAG,KAAK,CAAC,IAAI,EAAoB,CAAC;QACxC,CAAC;QACD,MAAM,CAAC,KAAK,CAAC;IACd,CAAC;IATe,UAAM,SASrB,CAAA;IAmDD;QACE,cAAc;aAAd,WAAc,CAAd,sBAAc,CAAd,IAAc;YAAd,6BAAc;;QAEf,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;YACpB,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1C,IAAI;YACH,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IAPe,aAAS,YAOxB,CAAA;IAED;;OAEG;IACH,yBACE,KAAoB,EAAE,IAAmB,EAAE,MAAsB,EAAE,EAAiB;QAErF,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAmB,EACnE,CAAC;YACA,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC/B,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;QAC1C,CAAC;QACD,MAAM,CAAC,MAAM,CAAC;IACf,CAAC;IAED;;OAEG;IACH,0BAKE,MAAsB,EAAE,KAAqB,EAAE,MAAsB,EACrE,MAAsB,EAAE,SAA4B;QAGrD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAC9B,CAAC;YACA,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAErD,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;YACzC,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;YACzC,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;QAC1C,CAAC;QACD,MAAM,CAAC,MAAM,CAAC;IACf,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,kBACE,KAAsB,EAAE,IAAqB,EAAE,GAAY;QAE5D,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAqB;YACpE,KAAK,CAAC,KAAK,GAAG,GAAG,EAAE,CAAC;IACtB,CAAC;IALe,YAAQ,WAKvB,CAAA;IAED;;;;;;;;;;;;;OAaG;IACH,oBACE,KAAsB,EAAE,CAAS,EAAE,GAAY;QAEhD,GAAG,CAAC,CAAC,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAClC,CAAC;YACA,KAAK,CAAC,KAAK,GAAG,GAAG,EAAE,CAAC;YACpB,KAAK,GAAG,KAAK,CAAC,IAAI,EAAqB,CAAC;QACzC,CAAC;QACD,MAAM,CAAC,KAAK,CAAC;IACd,CAAC;IATe,cAAU,aASzB,CAAA;IA2DD,gBACE,KAAoB,EAAE,IAAmB,EAAE,IAAmD;QAAnD,oBAAmD,GAAnD,OAAuC,GAAG,CAAC,QAAQ;QAE/F,IAAI,GAAG,GAAkB,KAAK,CAAC;QAE/B,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAC9C,CAAC;YACA,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;gBACnD,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAkB,CAAC;YACjD,IAAI,CACJ,CAAC;gBACA,GAAG,GAAG,EAAmB,CAAC;gBAC1B,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;YAChB,CAAC;QACF,CAAC;QACD,MAAM,CAAC,GAAG,CAAC;IACZ,CAAC;IAhBe,UAAM,SAgBrB,CAAA;IAyDD,qBAEE,KAAoB,EAAE,IAAmB,EAAE,MAAsB,EACjE,IAA4C;QAA5C,oBAA4C,GAA5C,OAAgC,GAAG,CAAC,QAAQ;QAG7C,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACxB,MAAM,CAAC,MAAM,CAAC;QAEf,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC3B,KAAK,GAAG,KAAK,CAAC,IAAI,EAAmB,CAAC;QAEtC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAmB;YAClE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CACrC,CAAC;gBACA,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;gBACzC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAC5B,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC;IACf,CAAC;IApBe,eAAW,cAoB1B,CAAA;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,gBACE,KAAoB,EAAE,IAAmB,EAAE,GAAM;QAElD,IAAI,GAAG,GAAkB,IAAI,CAAC;QAE9B,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GACvC,CAAC;YACA,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC;gBACvC,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAkB,CAAC;YACjD,IAAI,CACJ,CAAC;gBACA,GAAG,GAAG,EAAE,CAAC;gBACT,EAAE,GAAG,EAAE,CAAC,IAAI,EAAmB,CAAC;YACjC,CAAC;QACF,CAAC;QACD,MAAM,CAAC,GAAG,CAAC;IACZ,CAAC;IAhBe,UAAM,SAgBrB,CAAA;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,mBACE,KAAoB,EAAE,IAAmB,EAAE,IAA0B;QAEtE,IAAI,GAAG,GAAkB,IAAI,CAAC;QAE9B,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GACvC,CAAC;YACA,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;gBAC1B,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAkB,CAAC;YACjD,IAAI,CACJ,CAAC;gBACA,GAAG,GAAG,EAAE,CAAC;gBACT,EAAE,GAAG,EAAE,CAAC,IAAI,EAAmB,CAAC;YACjC,CAAC;QACF,CAAC;QACD,MAAM,CAAC,GAAG,CAAC;IACZ,CAAC;IAhBe,aAAS,YAgBxB,CAAA;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,qBACE,KAAoB,EAAE,IAAmB,EAAE,MAAsB,EAAE,GAAM;QAE1E,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAmB,EACnE,CAAC;YACA,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAClC,QAAQ,CAAC;YAEV,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAC3B,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;QAC1C,CAAC;QAED,MAAM,CAAC,MAAM,CAAC;IACf,CAAC;IAbe,eAAW,cAa1B,CAAA;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,wBACE,KAAoB,EAAE,IAAmB,EAAE,MAAsB,EAAE,IAAyB;QAE7F,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAmB,EACnE,CAAC;YACA,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACrB,QAAQ,CAAC;YAEV,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAC3B,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;QAC1C,CAAC;QAED,MAAM,CAAC,MAAM,CAAC;IACf,CAAC;IAbe,kBAAc,iBAa7B,CAAA;IAED;;gEAE4D;IAC5D;;;;;;;;;;;;;;OAcG;IACH,iBACE,KAAoB,EAAE,IAAmB,EAAE,OAAU,EAAE,OAAU;QAElE,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAmB;YACvE,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBACnC,EAAE,CAAC,KAAK,GAAG,OAAO,CAAC;IACtB,CAAC;IANe,WAAO,UAMtB,CAAA;IAED;;;;;;;;;;;;;;OAcG;IACH,oBACE,KAAoB,EAAE,IAAmB,EAAE,IAAyB,EAAE,OAAU;QAEjF,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAmB;YACvE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;gBAC1B,EAAE,CAAC,KAAK,GAAG,OAAO,CAAC;IACtB,CAAC;IANe,cAAU,aAMzB,CAAA;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,sBACE,KAAoB,EAAE,IAAmB,EAAE,MAAsB,EAAE,OAAU,EAAE,OAAU;QAE1F,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAmB,EACnE,CAAC;YACA,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBACtC,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC;YACxB,IAAI;gBACH,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAE5B,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;QAC1C,CAAC;QAED,MAAM,CAAC,MAAM,CAAC;IACf,CAAC;IAde,gBAAY,eAc3B,CAAA;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,yBACE,KAAoB,EAAE,IAAmB,EAAE,MAAsB,EAAE,IAAyB,EAAE,OAAU;QAEzG,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAmB,EACnE,CAAC;YACA,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACrB,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC;YACxB,IAAI;gBACH,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAE5B,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;QAC1C,CAAC;QAED,MAAM,CAAC,MAAM,CAAC;IACf,CAAC;IAde,mBAAe,kBAc9B,CAAA;IAED;;;;;;;;;OASG;IACH,mBAA6B,CAAc,EAAE,CAAc;QAE1D,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACX,CAAC;IAHe,aAAS,YAGxB,CAAA;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,qBACE,MAAwB,EAAE,KAAuB,EAAE,MAAwB;QAE5E,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,IAAI,EAAsB,EAC1E,CAAC;YACA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpB,MAAM,GAAG,MAAM,CAAC,IAAI,EAAsB,CAAC;QAC5C,CAAC;QACD,MAAM,CAAC,MAAM,CAAC;IACf,CAAC;IATe,eAAW,cAS1B,CAAA;IAED;;gEAE4D;IAC5D;;;;;;;;;;;OAWG;IACH,iBACE,KAAoB,EAAE,IAAmB;QAE1C,mCAAmC;QACnC,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAmB,CAAC,CAAC,IAAI,KAAK,EACvG,CAAC;YACA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,KAAK,GAAG,KAAK,CAAC,IAAI,EAAmB,CAAC;QACvC,CAAC;IACF,CAAC;IATe,WAAO,UAStB,CAAA;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,sBACE,KAA4B,EAAE,IAA2B,EAAE,MAAsB;QAElF,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAC5B,CAAC;YACA,IAAI,GAAG,IAAI,CAAC,IAAI,EAA2B,CAAC;YAE5C,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YAC1B,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;QAC1C,CAAC;QACD,MAAM,CAAC,MAAM,CAAC;IACf,CAAC;IAXe,gBAAY,eAW3B,CAAA;IAED;;;;;;;;;;;;;;OAcG;IACH,gBACE,KAAoB,EAAE,MAAqB,EAAE,IAAmB;QAEjE,IAAI,IAAI,GAAkB,MAAM,CAAC;QAEjC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,EACnC,CAAC;YACA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEjB,KAAK,GAAG,KAAK,CAAC,IAAI,EAAmB,CAAC;YACtC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAmB,CAAC;YAEpC,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC1B,KAAK,CAAC;QACR,CAAC;QAED,MAAM,CAAC,KAAK,CAAC;IACd,CAAC;IAjBe,UAAM,SAiBrB,CAAA;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,qBACE,KAAsB,EAAE,MAAuB,EAAE,IAAqB,EAAE,MAAsB;QAE/F,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IALe,eAAW,cAK1B,CAAA;IAED;;;;;;;;;;;;;;;OAeG;IACH,wBACE,KAA2B,EAAE,IAA0B;QAExD,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IAJe,kBAAc,iBAI7B,CAAA;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,iBACE,KAA2B,EAAE,IAA0B;QAExD,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAA0B,EAC/E,CAAC;YACA,IAAI,UAAU,GAAW,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YAChF,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QACpC,CAAC;IACF,CAAC;IARe,WAAO,UAQtB,CAAA;AACF,CAAC,EA/8BS,GAAG,KAAH,GAAG,QA+8BZ;AAED,IAAU,GAAG,CA2dZ;AA3dD,WAAU,GAAG,EACb,CAAC;IA8CA,cACE,KAA2B,EAAE,IAA0B,EAAE,OAAkD;QAAlD,uBAAkD,GAAlD,UAA0C,GAAG,CAAC,IAAI;QAE5G,KAAK,CAAC,KAAK,CAAC,UAAU,EAA6B,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IAC5F,CAAC;IAJe,QAAI,OAInB,CAAA;IA+CD,sBAEE,KAA2B,EAAE,MAA4B,EAAE,IAA0B,EACrF,OAA2C;QAA3C,uBAA2C,GAA3C,UAAmC,GAAG,CAAC,IAAI;QAG5C,cAAc,CAAC,KAAK,CAAC,UAAU,EAA6B,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC/G,CAAC;IAPe,gBAAY,eAO3B,CAAA;IAwED,2BAGE,KAAoB,EAAE,IAAmB,EACzC,YAAkC,EAAE,WAAiC,EACrE,OAA2C;QAA3C,uBAA2C,GAA3C,UAAmC,GAAG,CAAC,IAAI;QAG5C,IAAI,UAAU,GAAW,YAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC/C,IAAI,WAAW,GAAW,YAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAE9D,IAAI,MAAM,GAAc,IAAI,UAAM,CAAI,KAAK,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QAEnC,EAAE,CAAC,CAAC,UAAU,GAAG,WAAW,CAAC;YAC5B,YAAY,GAAG,QAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,YAAY,CAAC,CAAC;QACxF,IAAI;YACH,YAAY,GAAG,QAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,CAAC;QAEjE,MAAM,CAAC,YAAY,CAAC;IACrB,CAAC;IApBe,qBAAiB,oBAoBhC,CAAA;IA+CD,mBACE,KAAsB,EAAE,IAAqB,EAAE,OAA+C;QAA/C,uBAA+C,GAA/C,UAAmC,GAAG,CAAC,QAAQ;QAE/F,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC;QAEb,GAAG,CAAC,CAAC,IAAI,MAAI,GAAG,KAAK,CAAC,IAAI,EAAqB,EAAE,CAAC,MAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAI,GAAG,MAAI,CAAC,IAAI,EAAqB,EAC5G,CAAC;YACA,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAI,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;gBACrC,MAAM,CAAC,KAAK,CAAC;YAEd,KAAK,GAAG,KAAK,CAAC,IAAI,EAAqB,CAAC;QACzC,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IAde,aAAS,YAcxB,CAAA;IAwDD,yBACE,KAAsB,EAAE,IAAqB,EAAE,OAA+C;QAA/C,uBAA+C,GAA/C,UAAmC,GAAG,CAAC,QAAQ;QAE/F,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACxB,MAAM,CAAC,KAAK,CAAC;QAEd,GAAG,CAAC,CAAC,IAAI,MAAI,GAAG,KAAK,CAAC,IAAI,EAAqB,EAAE,CAAC,MAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAI,GAAG,MAAI,CAAC,IAAI,EAAqB,EAC5G,CAAC;YACA,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAI,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;gBACrC,MAAM,CAAC,MAAI,CAAC;YAEb,KAAK,GAAG,KAAK,CAAC,IAAI,EAAqB,CAAC;QACzC,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IAde,mBAAe,kBAc9B,CAAA;IAED;;gEAE4D;IAC5D;;OAEG;IACH,eACE,SAAkC,EAAE,KAAa,EAAE,IAAY,EAAE,OAAuC;QAEzG,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;YACd,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC7B,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC;YACjB,MAAM,CAAC;QAER,IAAI,KAAK,GAAW,eAAe,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACrE,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;QAC5C,KAAK,CAAC,SAAS,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,yBAEE,SAAkC,EAAE,KAAa,EAAE,IAAY,EAC/D,OAAuC;QAGxC,IAAI,GAAG,GAAM,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,GAAW,KAAK,CAAC;QACtB,IAAI,CAAC,GAAW,IAAI,GAAG,CAAC,CAAC;QAEzB,OAAO,IAAI,EACX,CAAC;YACA,OAAO,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;gBACrC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;oBACb,KAAK,CAAC;YACR,OAAO,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBACrC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;oBACd,KAAK,CAAC;YAER,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACV,KAAK,CAAC;YAEP,yBAAyB;YACzB,IAAI,YAAU,GAAM,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACpC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,YAAU,CAAC,CAAC;QAC9B,CAAC;QAED,6BAA6B;QAC7B,IAAI,UAAU,GAAK,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACvC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QAE7B,MAAM,CAAC,CAAC,CAAC;IACV,CAAC;IAED;;OAEG;IACH,sBAEE,SAAkC,EAAE,KAAa,EAAE,IAAY,EAC/D,OAAuC;QAGxC,aAAa;QACb,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;YACd,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC;YACtB,MAAM,CAAC;QAER,IAAI,KAAK,GAAW,sBAAsB,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5E,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;QACnD,YAAY,CAAC,SAAS,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,gCAEE,SAAkC,EAAE,KAAa,EAAE,IAAY,EAC/D,OAAuC;QAGxC,IAAI,GAAG,GAAM,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,GAAW,KAAK,CAAC;QACtB,IAAI,CAAC,GAAW,IAAI,GAAG,CAAC,CAAC;QAEzB,OAAO,IAAI,EACX,CAAC;YACA,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;gBAC5E,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;oBACjB,KAAK,CAAC;YACR,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC5E,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;oBACd,KAAK,CAAC;YAER,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACV,KAAK,CAAC;YAEP,yBAAyB;YACzB,IAAI,YAAU,GAAM,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACpC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,YAAU,CAAC,CAAC;QAC9B,CAAC;QAED,6BAA6B;QAC7B,IAAI,UAAU,GAAK,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACvC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QAE7B,MAAM,CAAC,CAAC,CAAC;IACV,CAAC;IAED;;OAEG;IACH,wBAEE,SAAkC,EAAE,KAAa,EAAE,MAAc,EAAE,IAAY,EAC/E,OAAgC;QAGjC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;YACd,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;QAEzB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAW,KAAK,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAC3C,CAAC;YACA,IAAI,SAAS,GAAW,CAAC,CAAC;YAE1B,GAAG,CAAC,CAAC,IAAI,CAAC,GAAW,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE;gBACxC,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;oBACrD,SAAS,GAAG,CAAC,CAAC;YAEhB,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CACnB,CAAC;gBACA,IAAI,UAAU,GAAM,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACpC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC1C,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YACtC,CAAC;QACF,CAAC;IACF,CAAC;AACF,CAAC,EA3dS,GAAG,KAAH,GAAG,QA2dZ;AAED,IAAU,GAAG,CA+XZ;AA/XD,WAAU,GAAG,EACb,CAAC;IAmEA,mBACE,KAA2B,EAAE,IAA0B,EAAE,OAA2C;QAA3C,uBAA2C,GAA3C,UAAmC,GAAG,CAAC,IAAI;QAErG,IAAI,YAAY,GACf,UAAU,CAAI,EAAE,CAAI;YAEnB,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvB,CAAC,CAAA;QAEF,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACrC,CAAC;IAVe,aAAS,YAUxB,CAAA;IAmDD,mBACE,KAA2B,EAAE,IAA0B,EAAE,OAA2C;QAA3C,uBAA2C,GAA3C,UAAmC,GAAG,CAAC,IAAI;QAErG,IAAI,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,OAAO,GAAyB,IAAI,CAAC;QAEzC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAA0B,EACvF,CAAC;YACA,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAC1C,CAAC;gBACA,OAAO,GAAG,EAAE,CAAC;gBACb,KAAK,CAAC;YACP,CAAC;QACF,CAAC;QAED,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,CACpB,CAAC;YACA,IAAI,SAAS,GAAG,YAAY,CAAC,UAAU,EAAE,CAAC;YAE1C,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;YAC9C,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC/B,CAAC;IACF,CAAC;IAtBe,aAAS,YAsBxB,CAAA;IAuDD,kBACE,KAA2B,EAAE,IAA0B,EAAE,OAA2C;QAA3C,uBAA2C,GAA3C,UAAmC,GAAG,CAAC,IAAI;QAErG,IAAI,SAAS,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;QAEnC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QACpC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAPe,YAAQ,WAOvB,CAAA;IAmDD,iBACE,KAA2B,EAAE,IAA0B,EAAE,OAA2C;QAA3C,uBAA2C,GAA3C,UAAmC,GAAG,CAAC,IAAI;QAErG,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAEjD,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IANe,WAAO,UAMtB,CAAA;IAmDD,uBACE,KAA2B,EAAE,IAA0B,EAAE,OAA2C;QAA3C,uBAA2C,GAA3C,UAAmC,GAAG,CAAC,IAAI;QAErG,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,EAA0B,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAA0B,EAC9G,CAAC;YACA,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;gBACzC,MAAM,CAAC,EAAE,CAAC;YAEX,IAAI,GAAG,EAAE,CAAC;QACX,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IAZe,iBAAa,gBAY5B,CAAA;IA6CD,mBACE,KAA2B,EAAE,IAA0B,EAAE,OAA2C;QAA3C,uBAA2C,GAA3C,UAAmC,GAAG,CAAC,IAAI;QAErG,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;IAJe,aAAS,YAIxB,CAAA;AACF,CAAC,EA/XS,GAAG,KAAH,GAAG,QA+XZ;AAED,IAAU,GAAG,CA0VZ;AA1VD,WAAU,GAAG,EACb,CAAC;IAwEA,qBAEE,KAAsB,EAAE,IAAqB,EAAE,GAAM,EACrD,OAA2C;QAA3C,uBAA2C,GAA3C,UAAmC,GAAG,CAAC,IAAI;QAG5C,IAAI,KAAK,GAAW,YAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAE1C,OAAO,KAAK,GAAG,CAAC,EAChB,CAAC;YACA,IAAI,IAAI,GAAW,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACzC,IAAI,EAAE,GAAoB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAoB,CAAC;YAEjE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAC5B,CAAC;gBACA,KAAK,GAAG,EAAE,CAAC,IAAI,EAAqB,CAAC;gBACrC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC;YACnB,CAAC;YACD,IAAI;gBACH,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;QACD,MAAM,CAAC,KAAK,CAAC;IACd,CAAC;IAtBe,eAAW,cAsB1B,CAAA;IAsED,qBAEE,KAAsB,EAAE,IAAqB,EAAE,GAAM,EACrD,OAA2C;QAA3C,uBAA2C,GAA3C,UAAmC,GAAG,CAAC,IAAI;QAG5C,IAAI,KAAK,GAAW,YAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAE1C,OAAO,KAAK,GAAG,CAAC,EAChB,CAAC;YACA,IAAI,IAAI,GAAW,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACzC,IAAI,EAAE,GAAoB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAoB,CAAC;YAEjE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAC5B,CAAC;gBACA,KAAK,GAAG,EAAE,CAAC,IAAI,EAAqB,CAAC;gBACrC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC;YACnB,CAAC;YACD,IAAI;gBACH,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;QACD,MAAM,CAAC,KAAK,CAAC;IACd,CAAC;IAtBe,eAAW,cAsB1B,CAAA;IAwED,qBAEE,KAAsB,EAAE,IAAqB,EAAE,GAAM,EACrD,OAA2C;QAA3C,uBAA2C,GAA3C,UAAmC,GAAG,CAAC,IAAI;QAG5C,IAAI,EAAE,GAAoB,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAEjE,MAAM,CAAC,aAAS,CAAC,EAAE,EAAE,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3D,CAAC;IATe,eAAW,cAS1B,CAAA;IAoED,uBAEE,KAAsB,EAAE,IAAqB,EAAE,GAAM,EACrD,OAA2C;QAA3C,uBAA2C,GAA3C,UAAmC,GAAG,CAAC,IAAI;QAG5C,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAE/C,MAAM,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC;IATe,iBAAa,gBAS5B,CAAA;AACF,CAAC,EA1VS,GAAG,KAAH,GAAG,QA0VZ;AAED,IAAU,GAAG,CA+MZ;AA/MD,WAAU,GAAG,EACb,CAAC;IACA;;gEAE4D;IAC5D;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,wBACE,KAAoB,EAAE,IAAmB,EAAE,IAAuB;QAEnE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YAChD,KAAK,GAAG,KAAK,CAAC,IAAI,EAAmB,CAAC;QAEvC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAmB;YAClE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACrB,MAAM,CAAC,KAAK,CAAC;QAEf,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IAXe,kBAAc,iBAW7B,CAAA;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,mBACE,KAA4B,EAAE,IAA2B,EAAE,IAAuB;QAEnF,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC5B,CAAC;YACA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EACxB,CAAC;gBACA,KAAK,GAAG,KAAK,CAAC,IAAI,EAA2B,CAAC;gBAC9C,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACxB,MAAM,CAAC,KAAK,CAAC;YACf,CAAC;YAED,GACA,CAAC;gBACA,IAAI,GAAG,IAAI,CAAC,IAAI,EAA2B,CAAC;gBAC5C,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACxB,MAAM,CAAC,KAAK,CAAC;YACf,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAE5B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,KAAK,GAAG,KAAK,CAAC,IAAI,EAA2B,CAAC;QAC/C,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IAxBe,aAAS,YAwBxB,CAAA;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,0BACE,KAA4B,EAAE,IAA2B,EAAE,IAAuB;QAEnF,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IAJe,oBAAgB,mBAI/B,CAAA;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,wBAIE,KAAoB,EAAE,IAAmB,EACzC,WAA4B,EAAE,YAA6B,EAAE,IAAmB;QAGjF,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAmB;YAClE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CACtB,CAAC;gBACA,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBAChC,WAAW,GAAG,WAAW,CAAC,IAAI,EAAqB,CAAC;YACrD,CAAC;YACD,IAAI,CACJ,CAAC;gBACA,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBACjC,YAAY,GAAG,YAAY,CAAC,IAAI,EAAqB,CAAC;YACvD,CAAC;QAEF,MAAM,CAAC,aAAS,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAC7C,CAAC;IArBe,kBAAc,iBAqB7B,CAAA;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,yBACE,KAAsB,EAAE,IAAqB,EAAE,IAAuB;QAEvE,IAAI,CAAC,GAAW,YAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAEtC,OAAO,CAAC,GAAG,CAAC,EACZ,CAAC;YACA,IAAI,IAAI,GAAW,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACrC,IAAI,EAAE,GAAoB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAoB,CAAC;YAEjE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CACnB,CAAC;gBACA,KAAK,GAAG,EAAE,CAAC,IAAI,EAAqB,CAAC;gBACrC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;YACf,CAAC;YACD,IAAI;gBACH,CAAC,GAAG,IAAI,CAAC;QACX,CAAC;QAED,MAAM,CAAC,KAAK,CAAC;IACd,CAAC;IApBe,mBAAe,kBAoB9B,CAAA;AACF,CAAC,EA/MS,GAAG,KAAH,GAAG,QA+MZ;AAED,IAAU,GAAG,CAysBZ;AAzsBD,WAAU,GAAG,EACb,CAAC;IAsEA,eAIE,MAAsB,EAAE,KAAqB,EAAE,MAAsB,EAAE,KAAqB,EAC5F,MAAsB,EAAE,OAA2C;QAA3C,uBAA2C,GAA3C,UAAmC,GAAG,CAAC,IAAI;QAGpE,OAAO,IAAI,EACX,CAAC;YACA,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC1B,MAAM,CAAC,QAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACpC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC/B,MAAM,CAAC,QAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YAEpC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CACxC,CAAC;gBACA,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBAC5B,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;YAC1C,CAAC;YACD,IAAI,CACJ,CAAC;gBACA,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBAC5B,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;YAC1C,CAAC;YAED,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;QAC1C,CAAC;IACF,CAAC;IA5Be,SAAK,QA4BpB,CAAA;IAyDD,uBAEE,KAA4B,EAAE,MAA6B,EAAE,IAA2B,EACxF,OAA2C;QAA3C,uBAA2C,GAA3C,UAAmC,GAAG,CAAC,IAAI;QAG5C,IAAI,MAAM,GAAc,IAAI,UAAM,CAAI,YAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QACnE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAEnD,QAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IAVe,iBAAa,gBAU5B,CAAA;IAkED,kBAEE,MAAsB,EAAE,KAAqB,EAAE,MAAsB,EAAE,KAAqB,EAC5F,OAA2C;QAA3C,uBAA2C,GAA3C,UAAmC,GAAG,CAAC,IAAI;QAG5C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAC9B,CAAC;YACA,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;gBACjE,MAAM,CAAC,KAAK,CAAC;YACd,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC7C,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;YAE1C,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;QAC1C,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IAjBe,YAAQ,WAiBvB,CAAA;IAgFD,mBAKE,MAAsB,EAAE,KAAqB,EAAE,MAAsB,EAAE,KAAqB,EAC5F,MAAsB,EAAE,OAA2C;QAA3C,uBAA2C,GAA3C,UAAmC,GAAG,CAAC,IAAI;QAGpE,OAAO,IAAI,EACX,CAAC;YACA,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC1B,MAAM,CAAC,QAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACpC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC/B,MAAM,CAAC,QAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YAEpC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CACxC,CAAC;gBACA,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBAE5B,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;YAC1C,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAC7C,CAAC;gBACA,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBAE5B,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;YAC1C,CAAC;YACD,IAAI,CACJ,CAAC;gBACA,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBAE5B,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;gBACzC,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;YAC1C,CAAC;YAED,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;QAC1C,CAAC;IACF,CAAC;IAtCe,aAAS,YAsCxB,CAAA;IA8ED,0BAKE,MAAsB,EAAE,KAAqB,EAAE,MAAsB,EAAE,KAAqB,EAC5F,MAAsB,EAAE,OAA2C;QAA3C,uBAA2C,GAA3C,UAAmC,GAAG,CAAC,IAAI;QAGpE,OAAO,IAAI,EACX,CAAC;YACA,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC1B,MAAM,CAAC,QAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACpC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC/B,MAAM,CAAC,QAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YAEpC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;gBACvC,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;YAC1C,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC5C,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;YAC1C,IAAI,CACJ,CAAC;gBACA,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBAE5B,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;gBACzC,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;gBACzC,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;YAC1C,CAAC;QACF,CAAC;IACF,CAAC;IA7Be,oBAAgB,mBA6B/B,CAAA;IA0FD,wBAKE,MAAsB,EAAE,KAAqB,EAAE,MAAsB,EAAE,KAAqB,EAC5F,MAAsB,EAAE,OAA2C;QAA3C,uBAA2C,GAA3C,UAAmC,GAAG,CAAC,IAAI;QAGpE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YACxD,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CACzC,CAAC;gBACA,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBAE5B,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;gBACzC,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;YAC1C,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC7C,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;YAC1C,IAAI,CACJ,CAAC;gBACA,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;gBACzC,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;YAC1C,CAAC;QAEF,MAAM,CAAC,QAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IA1Be,kBAAc,iBA0B7B,CAAA;IAsFD,kCAKE,MAAsB,EAAE,KAAqB,EAAE,MAAsB,EAAE,KAAqB,EAC5F,MAAsB,EAAE,OAA2C;QAA3C,uBAA2C,GAA3C,UAAmC,GAAG,CAAC,IAAI;QAGpE,OAAO,IAAI,EACX,CAAC;YACA,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC1B,MAAM,CAAC,QAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACpC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC/B,MAAM,CAAC,QAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YAEpC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CACxC,CAAC;gBACA,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBAE5B,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;gBACzC,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;YAC1C,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAC7C,CAAC;gBACA,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBAE5B,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;gBACzC,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;YAC1C,CAAC;YACD,IAAI,CACJ,CAAC;gBACA,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;gBACzC,MAAM,GAAG,MAAM,CAAC,IAAI,EAAoB,CAAC;YAC1C,CAAC;QACF,CAAC;IACF,CAAC;IApCe,4BAAwB,2BAoCvC,CAAA;AACF,CAAC,EAzsBS,GAAG,KAAH,GAAG,QAysBZ;AAED,IAAU,GAAG,CA2QZ;AA3QD,WAAU,GAAG,EACb,CAAC;IACA;;;;;;gEAM4D;IAC5D;;;;;;;;OAQG;IACH;QAAuB,cAAY;aAAZ,WAAY,CAAZ,sBAAY,CAAZ,IAAY;YAAZ,6BAAY;;QAElC,IAAI,OAAO,GAAM,IAAI,CAAC,CAAC,CAAC,CAAC;QAEzB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;YAC3C,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBAC9B,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEpB,MAAM,CAAC,OAAO,CAAC;IAChB,CAAC;IATe,OAAG,MASlB,CAAA;IAED;;;;;;;;OAQG;IACH;QAAuB,cAAY;aAAZ,WAAY,CAAZ,sBAAY,CAAZ,IAAY;YAAZ,6BAAY;;QAElC,IAAI,OAAO,GAAM,IAAI,CAAC,CAAC,CAAC,CAAC;QAEzB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;YAC3C,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBACjC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEpB,MAAM,CAAC,OAAO,CAAC;IAChB,CAAC;IATe,OAAG,MASlB,CAAA;IAED;;;;;;;;;OASG;IACH;QAA0B,cAAY;aAAZ,WAAY,CAAZ,sBAAY,CAAZ,IAAY;YAAZ,6BAAY;;QAErC,IAAI,OAAO,GAAM,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,OAAO,GAAM,IAAI,CAAC,CAAC,CAAC,CAAC;QAEzB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAC5C,CAAC;YACA,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBAC9B,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACnB,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBACjC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QAED,MAAM,CAAC,aAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;IAde,UAAM,SAcrB,CAAA;IAgDD,qBACE,KAAsB,EAAE,IAAqB,EAAE,OAA2C;QAA3C,uBAA2C,GAA3C,UAAmC,GAAG,CAAC,IAAI;QAE3F,IAAI,QAAQ,GAAoB,KAAK,CAAC;QACtC,KAAK,GAAG,KAAK,CAAC,IAAI,EAAqB,CAAC;QAExC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAqB;YACpE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACxC,QAAQ,GAAG,KAAK,CAAC;QAEnB,MAAM,CAAC,QAAQ,CAAC;IACjB,CAAC;IAXe,eAAW,cAW1B,CAAA;IA6CD,qBACE,KAAsB,EAAE,IAAqB,EAAE,OAA8C;QAA9C,uBAA8C,GAA9C,UAAmC,GAAG,CAAC,OAAO;QAE9F,IAAI,OAAO,GAAoB,KAAK,CAAC;QACrC,KAAK,GAAG,KAAK,CAAC,IAAI,EAAqB,CAAC;QAExC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAqB;YACpE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;gBACvC,OAAO,GAAG,KAAK,CAAC;QAElB,MAAM,CAAC,OAAO,CAAC;IAChB,CAAC;IAXe,eAAW,cAW1B,CAAA;IA4DD,wBAEE,KAAsB,EAAE,IAAqB,EAAE,OAA8C;QAA9C,uBAA8C,GAA9C,UAAmC,GAAG,CAAC,OAAO;QAG9F,IAAI,QAAQ,GAAoB,KAAK,CAAC;QACtC,IAAI,OAAO,GAAoB,KAAK,CAAC;QAErC,KAAK,GAAG,KAAK,CAAC,IAAI,EAAqB,CAAC;QACxC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAqB,EACrE,CAAC;YACA,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACxC,QAAQ,GAAG,KAAK,CAAC;YAClB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;gBACxC,OAAO,GAAG,KAAK,CAAC;QAClB,CAAC;QAED,MAAM,CAAC,aAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAlBe,kBAAc,iBAkB7B,CAAA;AACF,CAAC,EA3QS,GAAG,KAAH,GAAG,QA2QZ;ACjwID,kCAAkC;AAElC,IAAU,GAAG,CA0CZ;AA1CD,WAAU,GAAG;IAAC,IAAA,IAAI,CA0CjB;IA1Ca,WAAA,IAAI,EAClB,CAAC;QACA;;;;;;;;;;;;;;;;;;;;;;WAsBG;QACH,WAAY,KAAK;YAEhB;;;;;;;eAOG;YACH,mCAAK,CAAA;YAEL;;eAEG;YACH,+BAAG,CAAA;QACJ,CAAC,EAhBW,UAAK,KAAL,UAAK,QAgBhB;QAhBD,IAAY,KAAK,GAAL,UAgBX,CAAA;IACF,CAAC,EA1Ca,IAAI,GAAJ,QAAI,KAAJ,QAAI,QA0CjB;AAAD,CAAC,EA1CS,GAAG,KAAH,GAAG,QA0CZ;AC5CD,kCAAkC;AAElC,IAAU,GAAG,CA+KZ;AA/KD,WAAU,GAAG;IAAC,IAAA,IAAI,CA+KjB;IA/Ka,WAAA,IAAI,EAClB,CAAC;QACA;;;;;;;;;;;;;;;;;;;;;;WAsBG;QACH;YA+CC;gBAAmB,cAAc;qBAAd,WAAc,CAAd,sBAAc,CAAd,IAAc;oBAAd,6BAAc;;gBAEhC,yBAAyB;gBACzB,2BAA2B;YAC5B,CAAC;YAWD;;eAEG;YACI,yBAAK,GAAZ;gBAEC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YACtC,CAAC;YA8BD;;eAEG;YACI,yBAAK,GAAZ;gBAEC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACzB,CAAC;YAgCD;;8EAEkE;YAClE;;eAEG;YACI,wBAAI,GAAX,UAAY,GAAkB;gBAE7B,IAAI,UAAU,GAAc,IAAI,UAAM,CAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBAEpE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;gBACpC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;YAClD,CAAC;YACF,gBAAC;QAAD,CAAC,AArJD,IAqJC;QArJqB,cAAS,YAqJ9B,CAAA;IACF,CAAC,EA/Ka,IAAI,GAAJ,QAAI,KAAJ,QAAI,QA+KjB;AAAD,CAAC,EA/KS,GAAG,KAAH,GAAG,QA+KZ;ACjLD,kCAAkC;AAElC,IAAU,GAAG,CAuKZ;AAvKD,WAAU,GAAG;IAAC,IAAA,IAAI,CAuKjB;IAvKa,WAAA,IAAI,EAClB,CAAC;QACA;;;;;;;;;;;;;;;;;;WAkBG;QACH;YA4BC,uBAAmB,GAAe,EAAE,QAA8B;gBAA/C,mBAAe,GAAf,OAAe;gBAAE,wBAA8B,GAA9B,eAA8B;gBAEjE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC5B,CAAC;YAED;;;;;;;eAOG;YACI,8BAAM,GAAb,UAAc,GAAW,EAAE,QAAuB;gBAEjD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;gBAC1B,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;YACnB,CAAC;YAED;;;;;eAKG;YACI,6BAAK,GAAZ;gBAEC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YACjB,CAAC;YAED;;wEAE4D;YAC5D;;;;;;eAMG;YACI,gCAAQ,GAAf;gBAEC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;YACvB,CAAC;YAED;;;;;;eAMG;YACI,6BAAK,GAAZ;gBAEC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YACpB,CAAC;YAED;;;;;;;;;;;;eAYG;YACI,+BAAO,GAAd;gBAEC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;oBAC9C,MAAM,CAAC,EAAE,CAAC;gBACX,IAAI;oBACH,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7C,CAAC;YAED;;;;;;;;;;;;;eAaG;YACI,+CAAuB,GAA9B;gBAEC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;oBAC9C,MAAM,CAAC,IAAI,CAAC;gBACb,IAAI;oBACH,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7D,CAAC;YAED;;wEAE4D;YAC5D;;;;;;;;;eASG;YACI,+BAAO,GAAd;gBAEC,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;YACzB,CAAC;YACF,oBAAC;QAAD,CAAC,AAjJD,IAiJC;QAjJqB,kBAAa,gBAiJlC,CAAA;IACF,CAAC,EAvKa,IAAI,GAAJ,QAAI,KAAJ,QAAI,QAuKjB;AAAD,CAAC,EAvKS,GAAG,KAAH,GAAG,QAuKZ;ACzKD,kCAAkC;AAElC,IAAU,GAAG,CAqIZ;AArID,WAAU,GAAG;IAAC,IAAA,IAAI,CAqIjB;IArIa,WAAA,IAAI,EAClB,CAAC;QACA,WAAY,IAAI;YAEf,wCAAa,CAAA;YACb,iCAAW,CAAA;YACX,yCAAe,CAAA;QAChB,CAAC,EALW,SAAI,KAAJ,SAAI,QAKf;QALD,IAAY,IAAI,GAAJ,SAKX,CAAA;QAED;;;;WAIG;QACH;YAYC;;wEAE4D;YAC5D;;eAEG;YACH;gBAEC,IAAI,CAAC,KAAK,EAAE,CAAC;YACd,CAAC;YAED;;;;;;;;;;eAUG;YACI,4BAAM,GAAb,UAAc,IAAY;gBAEzB,EAAE,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACxB,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;gBAEtB,IAAI,WAAW,GAAsB,IAAI,CAAC,QAAQ,CAAC;gBACnD,IAAI,CAAC,QAAQ,GAAG,IAAI,UAAM,EAAa,CAAC;gBAExC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE;oBACpC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,UAAM,EAAK,CAAC,CAAC;gBAE1C,GAAG,CAAC,CAAC,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE;oBAClD,GAAG,CAAC,CAAC,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EACzD,CAAC;wBACA,IAAI,GAAG,GAAM,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;wBACrC,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;wBAEpD,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wBACtB,IAAI,CAAC,UAAU,EAAE,CAAC;oBACnB,CAAC;YACH,CAAC;YAEM,2BAAK,GAAZ;gBAEC,IAAI,CAAC,QAAQ,GAAG,IAAI,UAAM,EAAa,CAAC;gBACxC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;gBAEpB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE;oBAC7C,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,UAAM,EAAK,CAAC,CAAC;YAC3C,CAAC;YAED;;wEAE4D;YACrD,0BAAI,GAAX;gBAEC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC7B,CAAC;YAEM,+BAAS,GAAhB;gBAEC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;YACxB,CAAC;YAEM,8BAAQ,GAAf;gBAEC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;YAC9C,CAAC;YAGM,wBAAE,GAAT,UAAU,KAAa;gBAEtB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC;YAEM,gCAAU,GAAjB,UAAkB,GAAM;gBAEvB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC7C,CAAC;YAED;;wEAE4D;YACrD,4BAAM,GAAb,UAAc,GAAM;gBAEnB,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBAEtD,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACvC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5C,CAAC;YAEM,2BAAK,GAAZ,UAAa,GAAM;gBAElB,IAAI,MAAM,GAAc,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;gBAE/D,GAAG,CAAC,CAAC,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE;oBAC7C,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CACxB,CAAC;wBACA,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wBACpB,IAAI,CAAC,UAAU,EAAE,CAAC;wBAElB,KAAK,CAAC;oBACP,CAAC;YACH,CAAC;YACF,kBAAC;QAAD,CAAC,AAtHD,IAsHC;QAtHY,gBAAW,cAsHvB,CAAA;IACF,CAAC,EArIa,IAAI,GAAJ,QAAI,KAAJ,QAAI,QAqIjB;AAAD,CAAC,EArIS,GAAG,KAAH,GAAG,QAqIZ;ACvID,kCAAkC;AAIlC,AAFA,uCAAuC;AAoVvC,IAAU,GAAG,CAmCZ;AAnCD,WAAU,GAAG;IAAC,IAAA,IAAI,CAmCjB;IAnCa,WAAA,IAAI,EAClB,CAAC;QACA;;;;;;;;WAQG;QACH;YACS,kCAA8B;YAItC,wBAAmB,GAAuB;gBAEzC,iBAAO,CAAC;gBAER,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;YAChB,CAAC;YAEM,6BAAI,GAAX,UAAY,GAAM;gBAEjB,IAAI,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBACxC,IAAI,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;gBAE5B,GAAG,CAAC,CAAC,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE;oBAC7C,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;wBACzC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAEtB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACvB,CAAC;YACF,qBAAC;QAAD,CAAC,AAvBD,CACS,gBAAW,GAsBnB;QAvBY,mBAAc,iBAuB1B,CAAA;IACF,CAAC,EAnCa,IAAI,GAAJ,QAAI,KAAJ,QAAI,QAmCjB;AAAD,CAAC,EAnCS,GAAG,KAAH,GAAG,QAmCZ;ACzXD,kCAAkC;AAIlC,AAFA,uCAAuC;AA4QvC,IAAU,GAAG,CAmCZ;AAnCD,WAAU,GAAG;IAAC,IAAA,IAAI,CAmCjB;IAnCa,WAAA,IAAI,EAClB,CAAC;QACA;;;;;;;;WAQG;QACH;YACS,kCAA2B;YAInC,wBAAmB,GAAoB;gBAEtC,iBAAO,CAAC;gBAER,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;YAChB,CAAC;YAEM,6BAAI,GAAX,UAAY,GAAM;gBAEjB,IAAI,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBACxC,IAAI,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;gBAE5B,GAAG,CAAC,CAAC,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE;oBAC7C,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;wBACzC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAEtB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACvB,CAAC;YACF,qBAAC;QAAD,CAAC,AAvBD,CACS,gBAAW,GAsBnB;QAvBY,mBAAc,iBAuB1B,CAAA;IACF,CAAC,EAnCa,IAAI,GAAJ,QAAI,KAAJ,QAAI,QAmCjB;AAAD,CAAC,EAnCS,GAAG,KAAH,GAAG,QAmCZ;ACjTD,kCAAkC;ACAlC,kCAAkC;ACAlC,kCAAkC;ACAlC,kCAAkC;ACAlC,kCAAkC;ACAlC,+BAA+B;AAE/B,wBAAwB;AACxB,EAAE;AACF,yDAAyD;AACzD,2CAA2C;AAE3C,IAAU,GAAG,CAyIZ;AAzID,WAAU,GAAG,EACb,CAAC;IACA;;;;;;;;;;;;;;;;;;OAkBG;IACH;QAOC;;oEAE4D;QAC5D;;;;WAIG;QACH,kBAAmB,MAA0B;YAE5C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,CAAC;QAsBD;;;;;WAKG;QACI,0BAAO,GAAd,UAAe,CAAS;YAEvB,IAAI,EAAE,GAAgB,IAAI,CAAC;YAC3B,IAAI,CAAS,CAAC;YAEd,EAAE,CAAC,CAAC,CAAC,IAAI,CAAE,CAAC,CACZ,CAAC;gBACA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;oBACrB,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;wBACnC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;oBAC3B,IAAI;wBACH,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;YAClB,CAAC;YACD,IAAI,CACJ,CAAC;gBACA,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBAEX,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;oBACrB,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;wBACnC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;oBAC3B,IAAI;wBACH,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;YAClB,CAAC;YAED,MAAM,CAAC,EAAE,CAAC;QACX,CAAC;QAED;;oEAE4D;QAC5D;;WAEG;QACI,6BAAU,GAAjB;YAEC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;QAED;;;;;;;;;;;;;;WAcG;QACI,2BAAQ,GAAf,UAA6B,GAAgB;YAE5C,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC;QACpC,CAAC;QAOD,sBAAW,2BAAK;YALhB;;;;eAIG;iBACH;gBAEC,MAAM,IAAI,cAAU,CAAC,uBAAuB,CAAC,CAAC;YAC/C,CAAC;;;WAAA;QAGF,eAAC;IAAD,CAAC,AAnHD,IAmHC;IAnHqB,YAAQ,WAmH7B,CAAA;AACF,CAAC,EAzIS,GAAG,KAAH,GAAG,QAyIZ;AAED,IAAU,GAAG,CAkWZ;AAlWD,WAAU,GAAG,EACb,CAAC;IACA;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH;QACS,mCAAW;QAInB;;oEAE4D;QAC5D,yBAAmB,IAAU;YAE5B,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC;gBAChB,kBAAM,IAAI,CAAC,CAAC;YACb,IAAI,CACJ,CAAC;gBACA,kBAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;gBACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAU,CAAC;YAClC,CAAC;QACF,CAAC;QAEM,8BAAI,GAAX;YAEC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAU,CAAC;QAClC,CAAC;QAOD,sBAAW,kCAAK;YAHhB;;wEAE4D;iBAC5D;gBAEC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YACzB,CAAC;;;WAAA;QAED;;oEAE4D;QAC5D;;WAEG;QACI,8BAAI,GAAX;YAEC,IAAI,GAAG,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YACjC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAC3B,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAU,CAAC;YAEtC,MAAM,CAAC,GAAG,CAAC;QACZ,CAAC;QAED;;WAEG;QACI,8BAAI,GAAX;YAEC,IAAI,GAAG,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YACjC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAC3B,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAU,CAAC;YAEtC,MAAM,CAAC,GAAG,CAAC;QACZ,CAAC;QAED;;WAEG;QACI,iCAAO,GAAd,UAAe,CAAS;YAEvB,IAAI,GAAG,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YACjC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAC3B,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAS,CAAC;YAE3C,MAAM,CAAC,GAAG,CAAC;QACZ,CAAC;QAED;;oEAE4D;QAC5D;;WAEG;QACI,kCAAQ,GAAf,UAAgB,GAAS;YAExB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;QAED;;WAEG;QACI,8BAAI,GAAX,UAAY,GAAS;YAEpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QACF,sBAAC;IAAD,CAAC,AA3FD,CACS,YAAQ,GA0FhB;IA3FqB,mBAAe,kBA2FpC,CAAA;IAED;;;;;;;gEAO4D;IAC5D;;;;;;;;;;;;OAYG;IACH,kBACE,KAAoB,EAAE,IAAmB;QAE1C,EAAE,CAAC,CAAO,KAAM,CAAC,KAAK,IAAI,SAAS,CAAC,CACpC,CAAC;YACA,uBAAuB;YACvB,2BAA2B;YAC3B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAO,IAAK,CAAC,KAAK,GAAS,KAAM,CAAC,KAAK,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,MAAM,GAAW,CAAC,CAAC;QACvB,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAmB;YAClE,MAAM,EAAE,CAAC;QAEV,MAAM,CAAC,MAAM,CAAC;IACf,CAAC;IAfe,YAAQ,WAevB,CAAA;IAED;;;;;;;;;OASG;IACH,iBACE,EAAiB,EAAE,CAAS;QAE7B,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAkB,CAAC;IACvC,CAAC;IAJe,WAAO,UAItB,CAAA;IAED;;;;;;;;;OASG;IACH,cACE,EAAyB,EAAE,CAAa;QAAb,iBAAa,GAAb,KAAa;QAEzC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAA0B,CAAC;IAC/C,CAAC;IAJe,QAAI,OAInB,CAAA;IAED;;;;;;;;;OASG;IACH,cACE,EAAmB,EAAE,CAAa;QAAb,iBAAa,GAAb,KAAa;QAEnC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAoB,CAAC;IACzC,CAAC;IAJe,QAAI,OAInB,CAAA;IAsED,8CAA8C;IAC9C,iFAAiF;IACjF,eAAyB,SAA6B;QAErD,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;IAHe,SAAK,QAGpB,CAAA;IAuED,8CAA8C;IAC9C,iFAAiF;IACjF,aAAuB,SAA6B;QAEnD,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;IACxB,CAAC;IAHe,OAAG,MAGlB,CAAA;AACF,CAAC,EAlWS,GAAG,KAAH,GAAG,QAkWZ;ACpfD,kCAAkC;AAElC,qCAAqC;AACrC,uCAAuC;AAEvC,IAAU,GAAG,CAiqBZ;AAjqBD,WAAU,GAAG;IAAC,IAAA,IAAI,CAiqBjB;IAjqBa,WAAA,IAAI,EAClB,CAAC;QACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAwCG;QACH;YACS,gCAA4B;YA8CpC;gBAAmB,cAAc;qBAAd,WAAc,CAAd,sBAAc,CAAd,IAAc;oBAAd,6BAAc;;gBAEhC,iBAAO,CAAC;gBAER,iBAAiB;gBACjB,IAAI,CAAC,IAAI,EAAE,CAAC;gBAEZ,wBAAwB;gBACxB,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa;gBACvC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,cAAS,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,UAAM,CAAC,CAAC,CACzF,CAAC;oBACA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxC,CAAC;gBACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,CACtD,CAAC;oBACA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpC,CAAC;gBACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,YAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,YAAQ,CAAC,CACxF,CAAC;oBACA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7C,CAAC;YACF,CAAC;YAED;;eAEG;YACO,2BAAI,GAAd;gBAEC,IAAI,CAAC,KAAK,GAAG,IAAI,QAAI,EAAgB,CAAC;YACvC,CAAC;YAED;;eAEG;YACO,2CAAoB,GAA9B,UAA+B,KAAqC;gBAEnE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;oBAC5C,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,QAAI,CAAC;wBAC5B,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAiB,CAAC,CAAC;oBAC/C,IAAI;wBACH,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAa,CAAC,CAAC;YAC9C,CAAC;YAED;;eAEG;YACO,+CAAwB,GAAlC,UAAmC,SAAmC;gBAErE,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;YAC/D,CAAC;YAED;;eAEG;YACO,2CAAoB,GAA9B,UACE,KAAoB,EAAE,GAAkB;gBAEzC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACzB,CAAC;YAED;;wEAE4D;YAC5D;;eAEG;YACI,6BAAM,GAAb,UACE,KAAoB,EAAE,IAAmB;gBAE1C,SAAS;gBACT,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC1B,CAAC;YAED;;eAEG;YACI,4BAAK,GAAZ;gBAEC,iBAAiB;gBACjB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACpB,CAAC;YA2BD;;;;;;;;;eASG;YACI,4BAAK,GAAZ;gBAEC,MAAM,CAAC,IAAI,eAAW,CAAS,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAC1D,CAAC;YAED;;;;;;;;;;;;;;;;;;eAkBG;YACI,0BAAG,GAAV;gBAEC,MAAM,CAAC,IAAI,eAAW,CAAS,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;YACxD,CAAC;YAED;;;;;;;;;;;;;;eAcG;YACI,6BAAM,GAAb;gBAEC,MAAM,CAAC,IAAI,sBAAkB,CAAS,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YACnD,CAAC;YAED;;;;;;;;;;;eAWG;YACI,2BAAI,GAAX;gBAEC,MAAM,CAAC,IAAI,sBAAkB,CAAS,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACrD,CAAC;YAED;;wEAE4D;YAC5D;;;;;;;;eAQG;YACI,0BAAG,GAAV,UAAW,GAAQ;gBAElB,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YAC7C,CAAC;YAaD;;eAEG;YACI,2BAAI,GAAX;gBAEC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAC1B,CAAC;YAoBM,2BAAI,GAAX;gBAAwC,cAAc;qBAAd,WAAc,CAAd,sBAAc,CAAd,IAAc;oBAAd,6BAAc;;gBAErD,iBAAiB;gBACjB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;oBAC3C,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,QAAI,CAAC;wBAC3B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC9B,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC;wBACjC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEhC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACpB,CAAC;YA0EM,6BAAM,GAAb;gBAAc,cAAc;qBAAd,WAAc,CAAd,sBAAc,CAAd,IAAc;oBAAd,6BAAc;;gBAE3B,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,QAAI,CAAC,CAChD,CAAC;oBACA,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrC,CAAC;gBACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,CACtD,CAAC;oBACA,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtC,CAAC;gBACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,YAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,YAAQ,CAAC,CACxF,CAAC;oBACA,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/C,CAAC;gBACD,IAAI,CACJ,CAAC;oBACA,IAAI,GAAG,SAAqB,CAAC;oBAC7B,IAAI,mBAAmB,GAAY,KAAK,CAAC;oBAEzC,+BAA+B;oBAC/B,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,sBAAkB,CAAC,CAC1C,CAAC;wBACA,mBAAmB,GAAG,IAAI,CAAC;wBAC3B,IAAI,CAAC,CAAC,CAAC,GAAI,IAAI,CAAC,CAAC,CAAgC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;oBACjE,CAAC;oBAED,oBAAoB;oBACpB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,QAAI,CAAC;wBAC3B,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC7C,IAAI;wBACH,GAAG,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;oBAExD,kBAAkB;oBAClB,EAAE,CAAC,CAAC,mBAAmB,IAAI,IAAI,CAAC;wBAC/B,MAAM,CAAC,IAAI,sBAAkB,CAAS,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;oBACnD,IAAI;wBACH,MAAM,CAAC,GAAG,CAAC;gBACb,CAAC;YACF,CAAC;YAOD;;eAEG;YACK,sCAAe,GAAvB,UAAoD,KAAa;gBAEhE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,QAAI,CAAO,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAChE,CAAC;YAOD;;eAEG;YACK,gDAAyB,GAAjC,UAAkC,IAAyB,EAAE,KAAe;gBAE3E,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,aAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjE,CAAC;YAiFM,4BAAK,GAAZ;gBAAa,cAAc;qBAAd,WAAc,CAAd,sBAAc,CAAd,IAAc;oBAAd,6BAAc;;gBAE1B,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,YAAQ,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,CAAC;oBAC9F,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,IAAI,CACH,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;oBACpB,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxC,IAAI;oBACH,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACnD,CAAC;YAED;;eAEG;YACK,mCAAY,GAApB,UAAqB,GAAQ;gBAE5B,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACxB,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC;oBACnC,MAAM,CAAC,CAAC,CAAC;gBAEV,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;gBAC3B,MAAM,CAAC,CAAC,CAAC;YACV,CAAC;YAED;;eAEG;YACK,wCAAiB,GAAzB,UAA0B,KAAU,EAAE,IAAwB;gBAAxB,oBAAwB,GAAxB,OAAY,KAAK,CAAC,IAAI,EAAE;gBAE7D,IAAI,GAAwB,CAAC;gBAC7B,IAAI,mBAAmB,GAAY,KAAK,CAAC;gBAEzC,+BAA+B;gBAC/B,EAAE,CAAC,CAAC,KAAK,YAAY,sBAAkB,CAAC,CACxC,CAAC;oBACA,mBAAmB,GAAG,IAAI,CAAC;oBAE3B,IAAI,QAAQ,GAAI,IAAmC,CAAC,IAAI,EAAE,CAAC;oBAC3D,IAAI,OAAO,GAAI,KAAoC,CAAC,IAAI,EAAE,CAAC;oBAE3D,KAAK,GAAG,QAAQ,CAAC;oBACjB,IAAI,GAAG,OAAO,CAAC;gBAChB,CAAC;gBAED,iBAAiB;gBACjB,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBAEvC,kBAAkB;gBAClB,EAAE,CAAC,CAAC,mBAAmB,IAAI,IAAI,CAAC;oBAC/B,MAAM,CAAC,IAAI,sBAAkB,CAAS,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;gBACnD,IAAI;oBACH,MAAM,CAAC,GAAG,CAAC;YACb,CAAC;YAED;;eAEG;YACK,qCAAc,GAAtB,UAAuB,KAA0B,EAAE,GAAwB;gBAE1E,QAAQ;gBACR,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC;gBAExF,eAAe;gBACf,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAE9B,MAAM,CAAC,IAAI,eAAW,CAAS,IAAI,EAAE,YAAY,CAAC,CAAC;YACpD,CAAC;YAiDF,mBAAC;QAAD,CAAC,AArnBD,CACS,IAAI,CAAC,SAAS,GAonBtB;QArnBqB,iBAAY,eAqnBjC,CAAA;IACF,CAAC,EAjqBa,IAAI,GAAJ,QAAI,KAAJ,QAAI,QAiqBjB;AAAD,CAAC,EAjqBS,GAAG,KAAH,GAAG,QAiqBZ;AAED,IAAU,GAAG,CAuMZ;AAvMD,WAAU,GAAG,EACb,CAAC;IACA;;;;;;;OAOG;IACH;QACS,+BAAsB;QAQ9B;;oEAE4D;QAC5D;;;;;WAKG;QACH,qBAAmB,MAAiC,EAAE,aAAyC;YAE9F,kBAAM,MAAM,CAAC,CAAC;YAEd,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACrC,CAAC;QAED;;oEAE4D;QAC5D;;WAEG;QACI,0BAAI,GAAX;YAEC,MAAM,CAAC,IAAI,WAAW,CAAS,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;QACtE,CAAC;QAED;;WAEG;QACI,0BAAI,GAAX;YAEC,MAAM,CAAC,IAAI,WAAW,CAAS,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;QACtE,CAAC;QAED;;;;;WAKG;QACI,6BAAO,GAAd,UAAe,IAAY;YAE1B,MAAM,CAAC,IAAI,WAAW,CAAS,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7E,CAAC;QAQD,sBAAY,4BAAG;YANf;;wEAE4D;YAC5D;;eAEG;iBACH;gBAEC,MAAM,CAAC,IAAI,CAAC,OAAoC,CAAC;YAClD,CAAC;;;WAAA;QAED;;WAEG;QACI,uCAAiB,GAAxB;YAEC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;QAC5B,CAAC;QAKD,sBAAW,8BAAK;YAHhB;;eAEG;iBACH;gBAEC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;YAClC,CAAC;;;WAAA;QAKD,sBAAW,8BAAK;YAHhB;;eAEG;iBACH;gBAEC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC;YACxC,CAAC;;;WAAA;QAKD,sBAAW,+BAAM;YAHjB;;eAEG;iBACH;gBAEC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC;YACzC,CAAC;YAED;;eAEG;iBACH,UAAkB,GAAM;gBAEvB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;YACxC,CAAC;;;WARA;QAUD;;oEAE4D;QAC5D;;;;;;;WAOG;QACI,8BAAQ,GAAf,UAA4C,GAAsB;YAEjE,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACxF,CAAC;QAEM,0BAAI,GAAX,UAAwC,GAAsB;YAE7D,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;QAEM,0BAAI,GAAX;YAEC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QAEM,0BAAI,GAAX,UAAY,GAAwB;YAEnC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC9C,CAAC;QACF,kBAAC;IAAD,CAAC,AAxID,CACS,YAAQ,GAuIhB;IAxIY,eAAW,cAwIvB,CAAA;IAED;;;;;;;OAOG;IACH;QACS,sCAA8E;QAEtF;;oEAE4D;QAC5D,4BAAmB,IAAyB;YAE3C,kBAAM,IAAI,CAAC,CAAC;QACb,CAAC;QAES,4CAAe,GAAzB;YAEC,MAAM,CAAC,IAAI,kBAAkB,CAAS,IAAI,CAAC,CAAC;QAC7C,CAAC;QAQD,sBAAW,qCAAK;YANhB;;wEAE4D;YAC5D;;eAEG;iBACH;gBAEC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YACzB,CAAC;;;WAAA;QAKD,sBAAW,sCAAM;YAHjB;;eAEG;iBACH;gBAEC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAC1B,CAAC;YAED;;eAEG;iBACH,UAAkB,GAAM;gBAEvB,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;YACzB,CAAC;;;WARA;QASF,yBAAC;IAAD,CAAC,AA1CD,CACS,mBAAe,GAyCvB;IA1CY,sBAAkB,qBA0C9B,CAAA;AACF,CAAC,EAvMS,GAAG,KAAH,GAAG,QAuMZ;AC/2BD,kCAAkC;AAElC,wCAAwC;AAExC,IAAU,GAAG,CAsIZ;AAtID,WAAU,GAAG;IAAC,IAAA,IAAI,CAsIjB;IAtIa,WAAA,IAAI,EAClB,CAAC;QACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA2CG;QACH;YACS,4BAAoB;YAD7B;gBACS,8BAAoB;YAsF7B,CAAC;YA7BO,yBAAM,GAAb;gBAAc,cAAc;qBAAd,WAAc,CAAd,sBAAc,CAAd,IAAc;oBAAd,6BAAc;;gBAE3B,MAAM,CAAC,gBAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACvC,CAAC;YAED;;;;;;;;;;;;;;;;eAgBG;YACI,uBAAI,GAAX,UAAY,GAAqB;gBAEhC,IAAI,GAAG,GAAG,IAAI,UAAM,CAAe,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBAE7D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;gBACpC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;YACpC,CAAC;YACF,eAAC;QAAD,CAAC,AAvFD,CACS,iBAAY,GAsFpB;QAvFqB,aAAQ,WAuF7B,CAAA;IACF,CAAC,EAtIa,IAAI,GAAJ,QAAI,KAAJ,QAAI,QAsIjB;AAAD,CAAC,EAtIS,GAAG,KAAH,GAAG,QAsIZ;AC1ID,kCAAkC;AAElC,qCAAqC;AACrC,uCAAuC;AAEvC,IAAU,GAAG,CA4gBZ;AA5gBD,WAAU,GAAG;IAAC,IAAA,IAAI,CA4gBjB;IA5gBa,WAAA,IAAI,EAClB,CAAC;QACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAiCG;QACH;YACS,gCAAY;YAuCpB;gBAAmB,cAAc;qBAAd,WAAc,CAAd,sBAAc,CAAd,IAAc;oBAAd,6BAAc;;gBAEhC,iBAAO,CAAC;gBAER,iBAAiB;gBACjB,IAAI,CAAC,IAAI,EAAE,CAAC;gBAEZ,wBAAwB;gBACxB,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa;gBACvC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,cAAS,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,UAAM,CAAC,CAAC,CACzF,CAAC;oBACA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxC,CAAC;gBACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,CACtD,CAAC;oBACA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpC,CAAC;gBACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,YAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,YAAQ,CAAC,CACxF,CAAC;oBACA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7C,CAAC;YACF,CAAC;YAED;;eAEG;YACO,2BAAI,GAAd;gBAEC,IAAI,CAAC,KAAK,GAAG,IAAI,QAAI,EAAK,CAAC;YAC5B,CAAC;YAED;;eAEG;YACO,2CAAoB,GAA9B,UAA+B,KAAe;gBAE7C,GAAG,CAAC,CAAC,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;oBAC5C,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC;YAED;;eAEG;YACO,+CAAwB,GAAlC,UAAmC,SAAwB;gBAE1D,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;YAC/D,CAAC;YAED;;eAEG;YACO,2CAAoB,GAA9B,UACE,KAAoB,EAAE,GAAkB;gBAEzC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACzB,CAAC;YAED;;wEAE4D;YAC5D;;eAEG;YACI,6BAAM,GAAb,UACE,KAAkB,EAAE,GAAgB;gBAErC,SAAS;gBACT,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACzB,CAAC;YAED;;eAEG;YACI,4BAAK,GAAZ;gBAEC,iBAAiB;gBACjB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACpB,CAAC;YAyBD;;eAEG;YACI,4BAAK,GAAZ;gBAEC,MAAM,CAAC,IAAI,eAAW,CAAI,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YACrD,CAAC;YAED;;eAEG;YACI,0BAAG,GAAV;gBAEC,MAAM,CAAC,IAAI,eAAW,CAAI,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;YACnD,CAAC;YAED;;eAEG;YACI,6BAAM,GAAb;gBAEC,MAAM,CAAC,IAAI,sBAAkB,CAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YAC9C,CAAC;YAED;;eAEG;YACI,2BAAI,GAAX;gBAEC,MAAM,CAAC,IAAI,sBAAkB,CAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAChD,CAAC;YAED;;wEAE4D;YAC5D;;;;;;;;eAQG;YACI,0BAAG,GAAV,UAAW,GAAM;gBAEhB,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YAC7C,CAAC;YAaD;;eAEG;YACI,2BAAI,GAAX;gBAEC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAC1B,CAAC;YAED;;;;;;;wEAO4D;YAC5D;;eAEG;YACI,2BAAI,GAAX;gBAAyB,cAAY;qBAAZ,WAAY,CAAZ,sBAAY,CAAZ,IAAY;oBAAZ,6BAAY;;gBAEpC,iBAAiB;gBACjB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;oBAC3C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAE7B,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACpB,CAAC;YA0CM,6BAAM,GAAb;gBAAc,cAAc;qBAAd,WAAc,CAAd,sBAAc,CAAd,IAAc;oBAAd,6BAAc;;gBAE3B,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;oBACpB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,YAAQ,CAAC,CACzD,CAAC;oBACA,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,YAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,CAChG,CAAC;wBACA,8BAA8B;wBAC9B,wBAAwB;wBACxB,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC/C,CAAC;oBACD,IAAI,CACJ,CAAC;wBACA,IAAI,GAAG,SAAgB,CAAC;wBACxB,IAAI,mBAAmB,GAAY,KAAK,CAAC;wBAEzC,+BAA+B;wBAC/B,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,sBAAkB,CAAC,CAC1C,CAAC;4BACA,mBAAmB,GAAG,IAAI,CAAC;4BAC3B,IAAI,CAAC,CAAC,CAAC,GAAI,IAAI,CAAC,CAAC,CAA2B,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;wBAC5D,CAAC;wBAED,oBAAoB;wBACpB,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;wBAE5C,kBAAkB;wBAClB,EAAE,CAAC,CAAC,mBAAmB,IAAI,IAAI,CAAC;4BAC/B,MAAM,CAAC,IAAI,sBAAkB,CAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;wBAC9C,IAAI;4BACH,MAAM,CAAC,GAAG,CAAC;oBACb,CAAC;gBACF,CAAC;YACF,CAAC;YAiEM,4BAAK,GAAZ;gBAAa,cAAc;qBAAd,WAAc,CAAd,sBAAc,CAAd,IAAc;oBAAd,6BAAc;;gBAE1B,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,YAAQ,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,CAAC;oBAC9F,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,IAAI,CACH,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;oBACpB,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxC,IAAI;oBACH,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACnD,CAAC;YAED;;eAEG;YACK,wCAAiB,GAAzB,UAA0B,KAAU,EAAE,IAAwB;gBAAxB,oBAAwB,GAAxB,OAAY,KAAK,CAAC,IAAI,EAAE;gBAE7D,IAAI,GAAmB,CAAC;gBACxB,IAAI,mBAAmB,GAAY,KAAK,CAAC;gBAEzC,+BAA+B;gBAC/B,EAAE,CAAC,CAAC,KAAK,YAAY,sBAAkB,CAAC,CACxC,CAAC;oBACA,mBAAmB,GAAG,IAAI,CAAC;oBAE3B,IAAI,QAAQ,GAAI,IAA8B,CAAC,IAAI,EAAE,CAAC;oBACtD,IAAI,OAAO,GAAI,KAA+B,CAAC,IAAI,EAAE,CAAC;oBAEtD,KAAK,GAAG,QAAQ,CAAC;oBACjB,IAAI,GAAG,OAAO,CAAC;gBAChB,CAAC;gBAED,iBAAiB;gBACjB,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBAEvC,kBAAkB;gBAClB,EAAE,CAAC,CAAC,mBAAmB,IAAI,IAAI,CAAC;oBAC/B,MAAM,CAAC,IAAI,sBAAkB,CAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC9C,IAAI;oBACH,MAAM,CAAC,GAAG,CAAC;YACb,CAAC;YAED;;eAEG;YACK,mCAAY,GAApB,UAAqB,GAAM;gBAE1B,sBAAsB;gBACtB,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACxB,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC;oBACnC,MAAM,CAAC,CAAC,CAAC;gBAEV,QAAQ;gBACR,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;gBAC3B,MAAM,CAAC,CAAC,CAAC;YACV,CAAC;YAED;;eAEG;YACK,qCAAc,GAAtB,UAAuB,KAAqB,EAAE,GAAmB;gBAEhE,QAAQ;gBACR,IAAI,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC;gBAEzF,eAAe;gBACf,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAE9B,MAAM,CAAC,IAAI,eAAW,CAAI,IAAI,EAAE,aAAa,CAAC,CAAC,CAAA,eAAe;YAC/D,CAAC;YAiDF,mBAAC;QAAD,CAAC,AAveD,CACS,cAAS,GAsejB;QAveqB,iBAAY,eAuejC,CAAA;IACF,CAAC,EA5gBa,IAAI,GAAJ,QAAI,KAAJ,QAAI,QA4gBjB;AAAD,CAAC,EA5gBS,GAAG,KAAH,GAAG,QA4gBZ;AAED,IAAU,GAAG,CAqJZ;AArJD,WAAU,GAAG,EACb,CAAC;IACA;;;;;;;OAOG;IACH;QACS,+BAAW;QAKnB;;;;;;;;;WASG;QACH,qBAAmB,MAA4B,EAAE,EAAmB;YAEnE,kBAAM,MAAM,CAAC,CAAC;YAEd,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QAC1B,CAAC;QAED;;oEAE4D;QAC5D;;WAEG;QACI,0BAAI,GAAX;YAEC,MAAM,CAAC,IAAI,WAAW,CAAI,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;QACjE,CAAC;QAED;;WAEG;QACI,0BAAI,GAAX;YAEC,MAAM,CAAC,IAAI,WAAW,CAAI,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;QACjE,CAAC;QAED;;WAEG;QACI,6BAAO,GAAd,UAAe,IAAY;YAE1B,MAAM,CAAC,IAAI,WAAW,CAAI,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACxE,CAAC;QAQD,sBAAY,4BAAG;YANf;;wEAE4D;YAC5D;;eAEG;iBACH;gBAEC,MAAM,CAAC,IAAI,CAAC,OAA+B,CAAC;YAC7C,CAAC;;;WAAA;QAEM,uCAAiB,GAAxB;YAEC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;QAC5B,CAAC;QAKD,sBAAW,8BAAK;YAHhB;;eAEG;iBACH;gBAEC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;YAClC,CAAC;;;WAAA;QAED;;oEAE4D;QAC5D;;WAEG;QACI,8BAAQ,GAAf,UAA6B,GAAmB;YAE/C,MAAM,CAAC,gBAAK,CAAC,QAAQ,YAAC,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,IAAI,GAAG,CAAC,cAAc,CAAC;QACzE,CAAC;QAED;;WAEG;QACI,0BAAI,GAAX,UAAyB,GAAmB;YAE3C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;QAED;;WAEG;QACI,0BAAI,GAAX;YAEC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QAED;;WAEG;QACI,0BAAI,GAAX,UAAY,GAAmB;YAE9B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC9C,CAAC;QACF,kBAAC;IAAD,CAAC,AA5GD,CACS,YAAQ,GA2GhB;IA5GY,eAAW,cA4GvB,CAAA;IAED;;;;;;;;;OASG;IACH;QACS,sCAAyD;QAEjE;;oEAE4D;QAC5D,4BAAmB,IAAoB;YAEtC,kBAAM,IAAI,CAAC,CAAC;QACb,CAAC;QAED;;WAEG;QACO,4CAAe,GAAzB;YAEC,MAAM,CAAC,IAAI,kBAAkB,CAAI,IAAI,CAAC,CAAC;QACxC,CAAC;QACF,yBAAC;IAAD,CAAC,AAlBD,CACS,mBAAe,GAiBvB;IAlBY,sBAAkB,qBAkB9B,CAAA;AACF,CAAC,EArJS,GAAG,KAAH,GAAG,QAqJZ;ACxqBD,kCAAkC;AAElC,wCAAwC;AAExC,IAAU,GAAG,CA4FZ;AA5FD,WAAU,GAAG;IAAC,IAAA,IAAI,CA4FjB;IA5Fa,WAAA,IAAI,EAClB,CAAC;QACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAoCG;QACH;YACS,4BAAe;YADxB;gBACS,8BAAe;YAmDxB,CAAC;YAlBO,yBAAM,GAAb;gBAAc,cAAc;qBAAd,WAAc,CAAd,sBAAc,CAAd,IAAc;oBAAd,6BAAc;;gBAE3B,MAAM,CAAC,gBAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACvC,CAAC;YAED;;wEAE4D;YAC5D;;eAEG;YACI,uBAAI,GAAX,UAAY,GAAgB;gBAE3B,IAAI,GAAG,GAAG,IAAI,UAAM,CAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBAElD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;gBACpC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;YACpC,CAAC;YACF,eAAC;QAAD,CAAC,AApDD,CACS,iBAAY,GAmDpB;QApDqB,aAAQ,WAoD7B,CAAA;IACF,CAAC,EA5Fa,IAAI,GAAJ,QAAI,KAAJ,QAAI,QA4FjB;AAAD,CAAC,EA5FS,GAAG,KAAH,GAAG,QA4FZ;AChGD,kCAAkC;AAElC,IAAU,GAAG,CA66BZ;AA76BD,WAAU,GAAG;IAAC,IAAA,IAAI,CA66BjB;IA76Ba,WAAA,IAAI,EAClB,CAAC;QACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA+EG;QACH;YAOC;;wEAE4D;YAC5D;;eAEG;YACH;gBAEC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YACnB,CAAC;YAEM,qBAAK,GAAZ;gBAEC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YACnB,CAAC;YAED;;;;;;wEAM4D;YAC5D;;;;eAIG;YACI,oBAAI,GAAX,UAAY,GAAM;gBAEjB,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC;oBACtB,MAAM,CAAC,IAAI,CAAC;gBAEb,IAAI,IAAI,GAAiB,IAAI,CAAC,KAAK,CAAC;gBAEpC,OAAO,IAAI,EACX,CAAC;oBACA,IAAI,OAAO,GAAiB,IAAI,CAAC;oBAEjC,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;wBACrC,KAAK,CAAC,CAAC,wCAAwC;oBAChD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;wBACtC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,yBAAyB;oBAC/C,IAAI;wBACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,6BAA6B;oBAEpD,0BAA0B;oBAC1B,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC;wBACnB,KAAK,CAAC;oBAEP,8CAA8C;oBAC9C,IAAI,GAAG,OAAO,CAAC;gBAChB,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC;YACb,CAAC;YAED;;;;;eAKG;YACO,6BAAa,GAAvB,UAAwB,IAAkB;gBAEzC,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI;oBACxB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;gBAEnB,MAAM,CAAC,IAAI,CAAC;YACb,CAAC;YASD;;;;;;;;wEAQ4D;YAC5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAoFG;YACI,sBAAM,GAAb,UAAc,GAAM;gBAEnB,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC5B,IAAI,IAAI,GAAG,IAAI,cAAS,CAAI,GAAG,EAAE,UAAK,CAAC,GAAG,CAAC,CAAC;gBAE5C,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC;oBAClB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;gBACnB,IAAI,CACJ,CAAC;oBACA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;oBAErB,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;wBAC1C,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;oBACpB,IAAI;wBACH,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;gBACtB,CAAC;gBAED,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;YAED;;;;;;;;;;;eAWG;YACK,4BAAY,GAApB,UAAqB,CAAe;gBAEnC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC;oBACpB,CAAC,CAAC,KAAK,GAAG,UAAK,CAAC,KAAK,CAAC;gBACvB,IAAI;oBACH,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACvB,CAAC;YAED;;;;;;;;;;;;;;;eAeG;YACK,4BAAY,GAApB,UAAqB,CAAe;gBAEnC,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,UAAK,CAAC,KAAK,CAAC;oBAC7C,MAAM,CAAC;gBACR,IAAI;oBACH,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACvB,CAAC;YAGD;;;;;;;;;;;;;;;;;;;;;;;;;;;;eA4BG;YACK,4BAAY,GAApB,UAAqB,CAAe;gBAEnC,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,UAAK,CAAC,GAAG,CAAC,CAC3C,CAAC;oBACA,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,UAAK,CAAC,KAAK,CAAC;oBAC7B,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,UAAK,CAAC,KAAK,CAAC;oBAC5B,CAAC,CAAC,YAAY,CAAC,KAAK,GAAG,UAAK,CAAC,GAAG,CAAC;oBAEjC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;gBACnC,CAAC;gBACD,IAAI,CACJ,CAAC;oBACA,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACtB,CAAC;YACF,CAAC;YAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAgCG;YACK,4BAAY,GAApB,UAAqB,IAAkB;gBAEtC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CACvE,CAAC;oBACA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC9B,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;gBAClB,CAAC;gBACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAC5E,CAAC;oBACA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC/B,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;gBACnB,CAAC;gBAED,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;YAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eA6BG;YACK,4BAAY,GAApB,UAAqB,IAAkB;gBAEtC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,UAAK,CAAC,KAAK,CAAC;gBAChC,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,UAAK,CAAC,GAAG,CAAC;gBAEpC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;oBACrE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACtC,IAAI;oBACH,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACtC,CAAC;YAED;;wEAE4D;YAC5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAiIG;YACI,qBAAK,GAAZ,UAAa,GAAM;gBAElB,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC1B,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;oBAC9D,MAAM,CAAC;gBAER,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAC5C,CAAC;oBACA,IAAI,IAAI,GAAiB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAEvD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;oBACxB,IAAI,GAAG,IAAI,CAAC;gBACb,CAAC;gBAED,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;gBAE1D,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,UAAK,CAAC,KAAK,CAAC,CAC1C,CAAC;oBACA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;oBACrC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACxB,CAAC;gBAED,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAChC,CAAC;YAED;;;;;;;;;;;;eAYG;YACK,2BAAW,GAAnB,UAAoB,CAAe;gBAElC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC;oBACpB,MAAM,CAAC;gBACR,IAAI;oBACH,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACtB,CAAC;YAED;;;;;;;;;;;;;;;;;;;eAmBG;YACK,2BAAW,GAAnB,UAAoB,CAAe;gBAElC,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,UAAK,CAAC,GAAG,CAAC,CAC7C,CAAC;oBACA,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,UAAK,CAAC,GAAG,CAAC;oBAC3B,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,UAAK,CAAC,KAAK,CAAC;oBAE9B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;wBACtB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;oBAC5B,IAAI;wBACH,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC9B,CAAC;gBAED,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACrB,CAAC;YAED;;;;;;;;;;;;;;;;;;;;;;eAsBG;YACK,2BAAW,GAAnB,UAAoB,CAAe;gBAElC,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,UAAK,CAAC,KAAK;oBAC5C,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,UAAK,CAAC,KAAK;oBAC1C,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,UAAK,CAAC,KAAK;oBAC/C,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,UAAK,CAAC,KAAK,CAAC,CAClD,CAAC;oBACA,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,UAAK,CAAC,GAAG,CAAC;oBAE5B,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC5B,CAAC;gBACD,IAAI;oBACH,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACtB,CAAC;YAED;;;;;;;;;;;;;;eAcG;YACK,2BAAW,GAAnB,UAAoB,CAAe;gBAElC,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,UAAK,CAAC,GAAG;oBAC1C,CAAC,CAAC,OAAO,IAAI,IAAI;oBACjB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,UAAK,CAAC,KAAK;oBAC1C,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,UAAK,CAAC,KAAK;oBAC/C,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,UAAK,CAAC,KAAK,CAAC,CAClD,CAAC;oBACA,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,UAAK,CAAC,GAAG,CAAC;oBAC5B,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,UAAK,CAAC,KAAK,CAAC;gBAC9B,CAAC;gBACD,IAAI;oBACH,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACtB,CAAC;YAED;;;;;;;;;;;;;;;;;;;;eAoBG;YACK,2BAAW,GAAnB,UAAoB,CAAe;gBAElC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI;oBACrB,CAAC,CAAC,OAAO,IAAI,IAAI;oBACjB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,UAAK,CAAC,KAAK;oBAC1C,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,UAAK,CAAC,GAAG;oBAC7C,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,UAAK,CAAC,KAAK,CAAC,CAClD,CAAC;oBACA,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,UAAK,CAAC,GAAG,CAAC;oBAC5B,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,UAAK,CAAC,KAAK,CAAC;oBAEnC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBAC9B,CAAC;gBACD,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK;oBAC3B,CAAC,CAAC,OAAO,IAAI,IAAI;oBACjB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,UAAK,CAAC,KAAK;oBAC1C,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,UAAK,CAAC,KAAK;oBAC/C,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,UAAK,CAAC,GAAG,CAAC,CAChD,CAAC;oBACA,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,UAAK,CAAC,GAAG,CAAC;oBAC5B,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,UAAK,CAAC,KAAK,CAAC;oBAEpC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBAC7B,CAAC;YACF,CAAC;YAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAqDG;YACK,2BAAW,GAAnB,UAAoB,IAAkB;gBAErC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACnD,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,UAAK,CAAC,KAAK,CAAC;gBAEhC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAC7B,CAAC;oBACA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,UAAK,CAAC,KAAK,CAAC;oBAEvC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC/B,CAAC;gBACD,IAAI,CACJ,CAAC;oBACA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,UAAK,CAAC,KAAK,CAAC;oBAEtC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAChC,CAAC;YACF,CAAC;YAED;;wEAE4D;YAC5D;;;;eAIG;YACO,2BAAW,GAArB,UAAsB,IAAkB;gBAEvC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;gBACvB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAE/B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;gBACxB,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC;oBACtB,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBAE1B,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;gBAClB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACrB,CAAC;YAED;;;;eAIG;YACO,4BAAY,GAAtB,UAAuB,IAAkB;gBAExC,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;gBACrB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAE9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;gBACvB,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC;oBACtB,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;gBAE1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;gBAClB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACpB,CAAC;YAED;;;;;eAKG;YACO,4BAAY,GAAtB,UAAuB,OAAqB,EAAE,OAAqB;gBAElE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC;oBAC1B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;gBACtB,IAAI,CACJ,CAAC;oBACA,EAAE,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;wBAClC,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC;oBAC/B,IAAI;wBACH,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC;gBACjC,CAAC;gBAED,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC;oBACnB,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAClC,CAAC;YAED;;wEAE4D;YAC5D;;;;;eAKG;YACK,2BAAW,GAAnB,UAAoB,IAAkB;gBAErC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC;oBAChB,MAAM,CAAC,UAAK,CAAC,KAAK,CAAC;gBACpB,IAAI;oBACH,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;YACpB,CAAC;YACF,YAAC;QAAD,CAAC,AA11BD,IA01BC;QA11BqB,UAAK,QA01B1B,CAAA;IACF,CAAC,EA76Ba,IAAI,GAAJ,QAAI,KAAJ,QAAI,QA66BjB;AAAD,CAAC,EA76BS,GAAG,KAAH,GAAG,QA66BZ;AC/6BD,kCAAkC;AAIlC,AAFA,iCAAiC;AAmKjC,IAAU,GAAG,CAoQZ;AApQD,WAAU,GAAG;IAAC,IAAA,IAAI,CAoQjB;IApQa,WAAA,IAAI,EAClB,CAAC;QACA;;;;;;;WAOG;QACH;YACS,4BAA0B;YAYlC;;wEAE4D;YAC5D;;eAEG;YACH,kBAAmB,GAA2C,EAAE,OAA+C;gBAA/C,uBAA+C,GAA/C,UAAuC,GAAG,CAAC,IAAI;gBAE9G,iBAAO,CAAC;gBAER,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;gBAChB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YACzB,CAAC;YASM,uBAAI,GAAX,UAAY,GAAQ;gBAEnB,EAAE,CAAC,CAAC,GAAG,YAAY,eAAW,IAA0B,GAAI,CAAC,KAAK,YAAY,eAAW,IAAI,KAAK,CAAC;oBAClG,MAAM,CAAC,gBAAK,CAAC,IAAI,YAAC,GAAG,CAAC,CAAC;gBACxB,IAAI;oBACH,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAC/B,CAAC;YAED;;eAEG;YACK,8BAAW,GAAnB,UAAoB,GAAQ;gBAE3B,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC;oBACtB,MAAM,CAAC,IAAI,CAAC;gBAEb,IAAI,IAAI,GAAmC,IAAI,CAAC,KAAK,CAAC;gBAEtD,OAAO,IAAI,EACX,CAAC;oBACA,IAAI,OAAO,GAAmC,IAAI,CAAC;oBAEnD,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBACvC,KAAK,CAAC,CAAC,wCAAwC;oBAChD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBAC7C,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,yBAAyB;oBAC/C,IAAI;wBACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,6BAA6B;oBAEpD,0BAA0B;oBAC1B,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC;wBACnB,KAAK,CAAC;oBAEP,8CAA8C;oBAC9C,IAAI,GAAG,OAAO,CAAC;gBAChB,CAAC;gBAED,MAAM,CAAC,IAAI,CAAC;YACb,CAAC;YAED;;wEAE4D;YAC5D;;;;;;;;;;;;;;;;;;;;;eAqBG;YACI,8BAAW,GAAlB,UAAmB,GAAQ;gBAE1B,IAAI,IAAI,GAAwC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAE/D,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC;oBAChB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACxB,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBAC7C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC1B,IAAI,CACJ,CAAC;oBACA,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;oBACpB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC;wBACnE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;oBAEhB,MAAM,CAAC,EAAE,CAAC;gBACX,CAAC;YACF,CAAC;YAED;;;;;;;;;;;;;;;;;;;;;eAqBG;YACI,8BAAW,GAAlB,UAAmB,GAAQ;gBAE1B,IAAI,IAAI,GAAwC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAE/D,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC;oBAChB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACxB,IAAI,CACJ,CAAC;oBACA,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;oBACpB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;wBACpG,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;oBAEhB,MAAM,CAAC,EAAE,CAAC;gBACX,CAAC;YACF,CAAC;YAED;;;;;;;;;;;;;;;;;;eAkBG;YACI,8BAAW,GAAlB,UAAmB,GAAQ;gBAE1B,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;YACpE,CAAC;YAED;;wEAE4D;YAC5D;;;;;;;;;;;;;;;;;;;eAmBG;YACI,2BAAQ,GAAf;gBAEC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;YACtB,CAAC;YAED;;;;;;;;;;;;;;;eAeG;YACI,6BAAU,GAAjB;gBAEC,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;gBAE5B,IAAI,EAAE,GAAG,UAAU,CAAe,EAAE,CAAe;oBAElD,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;gBAClC,CAAC,CAAA;gBACD,MAAM,CAAC,EAAE,CAAC;YACX,CAAC;YAED;;eAEG;YACI,8BAAW,GAAlB,UAAmB,IAAyB,EAAE,KAA0B;gBAEvE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YAC9C,CAAC;YAED;;eAEG;YACI,0BAAO,GAAd,UAAe,IAAyB,EAAE,KAA0B;gBAEnE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YAC/C,CAAC;YACF,eAAC;QAAD,CAAC,AAzPD,CACS,UAAK,GAwPb;QAzPY,aAAQ,WAyPpB,CAAA;IACF,CAAC,EApQa,IAAI,GAAJ,QAAI,KAAJ,QAAI,QAoQjB;AAAD,CAAC,EApQS,GAAG,KAAH,GAAG,QAoQZ;ACzaD,kCAAkC;AAIlC,AAFA,iCAAiC;AAuKjC,IAAU,GAAG,CAkQZ;AAlQD,WAAU,GAAG;IAAC,IAAA,IAAI,CAkQjB;IAlQa,WAAA,IAAI,EAClB,CAAC;QACA;;;;;;;WAOG;QACH;YACS,8BAAqB;YAY7B;;wEAE4D;YAC5D;;eAEG;YACH,oBAAmB,GAAiC,EAAE,OAA2C;gBAA3C,uBAA2C,GAA3C,UAAmC,GAAG,CAAC,IAAI;gBAEhG,iBAAO,CAAC;gBAER,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;gBAChB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YACzB,CAAC;YASM,yBAAI,GAAX,UAAY,GAAQ;gBAEnB,EAAE,CAAC,CAAC,GAAG,YAAY,eAAW,IAAqB,GAAI,CAAC,KAAK,YAAY,eAAW,IAAI,KAAK,CAAC;oBAC7F,MAAM,CAAC,gBAAK,CAAC,IAAI,YAAC,GAAG,CAAC,CAAC;gBACxB,IAAI;oBACH,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAC/B,CAAC;YAED;;eAEG;YACK,gCAAW,GAAnB,UAAoB,GAAM;gBAEzB,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC;oBACtB,MAAM,CAAC,IAAI,CAAC;gBAEb,IAAI,IAAI,GAA8B,IAAI,CAAC,KAAK,CAAC;gBAEjD,OAAO,IAAI,EACX,CAAC;oBACA,IAAI,OAAO,GAA8B,IAAI,CAAC;oBAE9C,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBACvC,KAAK,CAAC,CAAC,wCAAwC;oBAChD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBAC7C,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,yBAAyB;oBAC/C,IAAI;wBACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,6BAA6B;oBAEpD,0BAA0B;oBAC1B,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC;wBACnB,KAAK,CAAC;oBAEP,8CAA8C;oBAC9C,IAAI,GAAG,OAAO,CAAC;gBAChB,CAAC;gBAED,MAAM,CAAC,IAAI,CAAC;YACb,CAAC;YAED;;wEAE4D;YAC5D;;;;;;;;;;;;;;;;;;;;;eAqBG;YACI,gCAAW,GAAlB,UAAmB,GAAM;gBAExB,IAAI,IAAI,GAAmC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAE1D,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC;oBAChB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACxB,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBAC5C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;gBACnB,IAAI,CACJ,CAAC;oBACA,IAAI,EAAE,GAAmB,IAAI,CAAC,KAAK,CAAC;oBACpC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC;wBACnE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;oBAEhB,MAAM,CAAC,EAAE,CAAC;gBACX,CAAC;YACF,CAAC;YAED;;;;;;;;;;;;;;;;;;;;;eAqBG;YACI,gCAAW,GAAlB,UAAmB,GAAM;gBAExB,IAAI,IAAI,GAAmC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAE1D,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC;oBAChB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACxB,IAAI,CACJ,CAAC;oBACA,IAAI,EAAE,GAAmB,IAAI,CAAC,KAAK,CAAC;oBACpC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;wBACpG,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;oBAEhB,MAAM,CAAC,EAAE,CAAC;gBACX,CAAC;YACF,CAAC;YAED;;;;;;;;;;;;;;;;;;eAkBG;YACI,gCAAW,GAAlB,UAAmB,GAAM;gBAExB,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;YACpE,CAAC;YAED;;wEAE4D;YAC5D;;;;;;;;;;;;;;;;;;;eAmBG;YACI,6BAAQ,GAAf;gBAEC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;YACtB,CAAC;YAED;;;;;;;;;;;;;;;;;;;eAmBG;YACI,+BAAU,GAAjB;gBAEC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;YACtB,CAAC;YAED;;eAEG;YACI,gCAAW,GAAlB,UAAmB,IAAoB,EAAE,KAAqB;gBAE7D,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAClC,CAAC;YAED;;eAEG;YACI,4BAAO,GAAd,UAAe,IAAoB,EAAE,KAAqB;gBAEzD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YAC/C,CAAC;YACF,iBAAC;QAAD,CAAC,AAvPD,CACS,UAAK,GAsPb;QAvPY,eAAU,aAuPtB,CAAA;IACF,CAAC,EAlQa,IAAI,GAAJ,QAAI,KAAJ,QAAI,QAkQjB;AAAD,CAAC,EAlQS,GAAG,KAAH,GAAG,QAkQZ;AC3aD,kCAAkC;AAElC,wCAAwC;AAExC,IAAU,GAAG,CA8YZ;AA9YD,WAAU,GAAG;IAAC,IAAA,IAAI,CA8YjB;IA9Ya,WAAA,IAAI,EAClB,CAAC;QACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA2CG;QACH;YACS,6BAAoB;YAD7B;gBACS,8BAAoB;YA8V7B,CAAC;YA5VA;;wEAE4D;YAC5D;;eAEG;YACI,yBAAK,GAAZ,UAAa,GAAQ;gBAEpB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpD,CAAC;YAED;;;;;;;;;;eAUG;YACI,uBAAG,GAAV,UAAW,GAAQ;gBAElB,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACxB,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC;oBACnC,MAAM,IAAI,cAAU,CAAC,iCAAiC,CAAC,CAAC;gBAEzD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC;YAClB,CAAC;YAED;;;;;;;;eAQG;YACI,uBAAG,GAAV,UAAW,GAAQ,EAAE,GAAM;gBAE1B,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACjC,CAAC;YAqCM,2BAAO,GAAd,UAAe,KAA6D;gBAE3E,EAAE,CAAC,CAAC,KAAK,YAAY,eAAW,CAAC;oBAChC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;gBACxC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,YAAY,sBAAkB,CAAC;oBAC5C,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;gBAChD,IAAI;oBACH,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC;YAED;;eAEG;YACK,kCAAc,GAAtB,UAAuB,GAAQ;gBAE9B,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACxB,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC;oBACnC,MAAM,IAAI,cAAU,CAAC,qBAAqB,CAAC,CAAC;gBAE7C,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC;YACjB,CAAC;YAED;;eAEG;YACK,uCAAmB,GAA3B,UAA4B,EAAuB;gBAElD,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;oBAClE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBAEnB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACf,MAAM,CAAC,EAAE,CAAC;YACX,CAAC;YAED;;eAEG;YACK,+CAA2B,GAAnC,UAAoC,EAA8B;gBAEjE,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC3C,MAAM,CAAC,EAAE,CAAC;YACX,CAAC;YA8EM,0BAAM,GAAb;gBAAc,cAAc;qBAAd,WAAc,CAAd,sBAAc,CAAd,IAAc;oBAAd,6BAAc;;gBAE3B,MAAM,CAAC,gBAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACvC,CAAC;YAkEM,oCAAgB,GAAvB;gBAAwB,cAAc;qBAAd,WAAc,CAAd,sBAAc,CAAd,IAAc;oBAAd,6BAAc;;gBAErC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CACrB,CAAC;oBACA,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/D,CAAC;gBACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAC1B,CAAC;oBACA,IAAI,GAAG,SAAqB,CAAC;oBAC7B,IAAI,mBAAmB,GAAY,KAAK,CAAC;oBAEzC,+BAA+B;oBAC/B,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,sBAAkB,CAAC,CAC1C,CAAC;wBACA,mBAAmB,GAAG,IAAI,CAAC;wBAC3B,IAAI,CAAC,CAAC,CAAC,GAAI,IAAI,CAAC,CAAC,CAAgC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;oBACjE,CAAC;oBAED,8BAA8B;oBAC9B,GAAG,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;oBAEjE,kBAAkB;oBAClB,EAAE,CAAC,CAAC,mBAAmB,IAAI,IAAI,CAAC;wBAC/B,MAAM,CAAC,IAAI,sBAAkB,CAAS,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;oBACnD,IAAI;wBACH,MAAM,CAAC,GAAG,CAAC;gBACb,CAAC;YACF,CAAC;YAED;;eAEG;YACK,mDAA+B,GAAvC,UAAwC,GAAQ,EAAE,KAAQ;gBAEzD,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAExB,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC;oBACnC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;gBACvD,IAAI,CACJ,CAAC;oBACA,EAAE,CAAC,MAAM,GAAG,KAAK,CAAC;oBAClB,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;gBACjC,CAAC;YACF,CAAC;YAED;;eAEG;YACK,8CAA0B,GAAlC,UAAmC,IAAyB,EAAE,GAAQ,EAAE,KAAQ;gBAE/E,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC;YAC/D,CAAC;YAED;;wEAE4D;YAC5D;;;;;;;;;;;;;;;;eAgBG;YACI,wBAAI,GAAX,UAAY,GAAsB;gBAEjC,IAAI,GAAG,GAAG,IAAI,UAAM,CAAe,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBAE7D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;gBACpC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;YACpC,CAAC;YACF,gBAAC;QAAD,CAAC,AA/VD,CACS,iBAAY,GA8VpB;QA/VqB,cAAS,YA+V9B,CAAA;IACF,CAAC,EA9Ya,IAAI,GAAJ,QAAI,KAAJ,QAAI,QA8YjB;AAAD,CAAC,EA9YS,GAAG,KAAH,GAAG,QA8YZ;AClZD,kCAAkC;AAElC,wCAAwC;AAExC,IAAU,GAAG,CA8LZ;AA9LD,WAAU,GAAG;IAAC,IAAA,IAAI,CA8LjB;IA9La,WAAA,IAAI,EAClB,CAAC;QACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAoCG;QACH;YACS,6BAAe;YADxB;gBACS,8BAAe;YAqJxB,CAAC;YAnJA;;wEAE4D;YAC5D;;eAEG;YACI,yBAAK,GAAZ,UAAa,GAAM;gBAElB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpD,CAAC;YAqCM,2BAAO,GAAd,UAAe,KAAiD;gBAE/D,EAAE,CAAC,CAAC,KAAK,YAAY,eAAW,CAAC;oBAChC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;gBACxC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,YAAY,sBAAkB,CAAC;oBAC5C,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;gBAChD,IAAI;oBACH,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC;YAED;;eAEG;YACK,kCAAc,GAAtB,UAAuB,GAAM;gBAE5B,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACxB,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC;oBACnC,MAAM,IAAI,cAAU,CAAC,qBAAqB,CAAC,CAAC;gBAE7C,MAAM,CAAC,GAAG,CAAC;YACZ,CAAC;YAED;;eAEG;YACK,uCAAmB,GAA3B,UAA4B,EAAkB;gBAE7C,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;oBAClE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBAEnB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACf,MAAM,CAAC,EAAE,CAAC;YACX,CAAC;YAED;;eAEG;YACK,+CAA2B,GAAnC,UAAoC,EAAyB;gBAE5D,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC3C,MAAM,CAAC,EAAE,CAAC;YACX,CAAC;YA0CM,0BAAM,GAAb;gBAAc,cAAc;qBAAd,WAAc,CAAd,sBAAc,CAAd,IAAc;oBAAd,6BAAc;;gBAE3B,MAAM,CAAC,gBAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACvC,CAAC;YAED;;wEAE4D;YAC5D;;eAEG;YACI,wBAAI,GAAX,UAAY,GAAiB;gBAE5B,IAAI,GAAG,GAAG,IAAI,UAAM,CAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBAElD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;gBACpC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;YACpC,CAAC;YACF,gBAAC;QAAD,CAAC,AAtJD,CACS,iBAAY,GAqJpB;QAtJqB,cAAS,YAsJ9B,CAAA;IACF,CAAC,EA9La,IAAI,GAAJ,QAAI,KAAJ,QAAI,QA8LjB;AAAD,CAAC,EA9LS,GAAG,KAAH,GAAG,QA8LZ;AClMD,kCAAkC;AAElC,IAAU,GAAG,CAmFZ;AAnFD,WAAU,GAAG;IAAC,IAAA,IAAI,CAmFjB;IAnFa,WAAA,IAAI,EAClB,CAAC;QACA;;;;;;;WAOG;QACH;YA2BC;;wEAE4D;YAC5D;;;;;eAKG;YACH,mBAAmB,KAAQ,EAAE,KAAY;gBAExC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;gBACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;gBAEnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;gBACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YACnB,CAAC;YAKD,sBAAW,mCAAY;gBAHvB;;mBAEG;qBACH;oBAEC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;gBAC3B,CAAC;;;eAAA;YAKD,sBAAW,8BAAO;gBAHlB;;mBAEG;qBACH;oBAEC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;wBAC5B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;oBAC1B,IAAI;wBACH,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC1B,CAAC;;;eAAA;YAKD,sBAAW,4BAAK;gBAHhB;;mBAEG;qBACH;oBAEC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;gBAC5B,CAAC;;;eAAA;YACF,gBAAC;QAAD,CAAC,AAxED,IAwEC;QAxEY,cAAS,YAwErB,CAAA;IACF,CAAC,EAnFa,IAAI,GAAJ,QAAI,KAAJ,QAAI,QAmFjB;AAAD,CAAC,EAnFS,GAAG,KAAH,GAAG,QAmFZ;ACrFD,+BAA+B;AAK/B,AAHA,0CAA0C;AAC1C,oCAAoC;AAQpC,IAAU,GAAG,CA+zBZ;AA/zBD,WAAU,GAAG,EACb,CAAC;IACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiDG;IACH;QACS,yBAAiB;QA2HzB;YAAmB,cAAc;iBAAd,WAAc,CAAd,sBAAc,CAAd,IAAc;gBAAd,6BAAc;;YAEhC,iBAAO,CAAC;YAER,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CACrB,CAAC;gBACA,IAAI,CAAC,KAAK,EAAE,CAAC;YACd,CAAC;YACD,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,CACjD,CAAC;gBACA,IAAI,KAAK,GAAa,IAAI,CAAC,CAAC,CAAC,CAAC;gBAE9B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,IAAI,OAAT,IAAI,EAAS,KAAK,CAAC,CAAC;YACrB,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,QAAI,CAAC,SAAS,CAAC,CAC/D,CAAC;gBACA,IAAI,SAAS,GAAsB,IAAI,CAAC,CAAC,CAAC,CAAC;gBAE3C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;YACjD,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC;gBACxB,IAAI,CAAC,CAAC,CAAC,YAAY,YAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,YAAQ,CAAC,CAC5D,CAAC;gBACA,IAAI,OAAK,GAAgB,IAAI,CAAC,CAAC,CAAC,CAAC;gBACjC,IAAI,KAAG,GAAgB,IAAI,CAAC,CAAC,CAAC,CAAC;gBAE/B,IAAI,CAAC,MAAM,CAAC,OAAK,EAAE,KAAG,CAAC,CAAC;YACzB,CAAC;QACF,CAAC;QAxID,sBAAmB,YAAG;YAbtB,GAAG;YACH,kEAAkE;YAClE,GAAG;YACH,4FAA4F;YAC5F,oGAAoG;YACpG,+EAA+E;YAC/E,GAAG;YACH,8FAA8F;YAC9F,iGAAiG;YACjG,kCAAkC;YAClC;;eAEG;iBACH,cAAmC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;;;WAAA;QAU9C,sBAAmB,qBAAY;YAR/B,GAAG;YACH,4BAA4B;YAC5B,GAAG;YACH,gGAAgG;YAChG,+CAA+C;YAC/C;;eAEG;iBACH,cAA4C,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;;;WAAA;QAgCzD,iEAAiE;QACjE;;WAEG;QACK,4BAAY,GAApB;YAEC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/C,CAAC;QAuGM,sBAAM,GAAb,UAAc,KAAU,EAAE,MAAW;YAEpC,0BAA0B;YAC1B,IAAI,CAAC,KAAK,EAAE,CAAC;YAEb,EAAE,CAAC,CAAC,KAAK,YAAY,YAAQ,IAAI,MAAM,YAAY,YAAQ,CAAC,CAC5D,CAAC;gBACA,IAAI,OAAK,GAAgB,KAAK,CAAC;gBAC/B,IAAI,KAAG,GAAgB,MAAM,CAAC;gBAE9B,IAAI,IAAI,GAAW,CAAC,CAAC;gBACrB,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,OAAK,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE;oBACrD,IAAI,EAAE,CAAC;gBAER,UAAU;gBACV,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;gBAElB,kBAAkB;gBAClB,IAAI,KAAK,GAAa,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAEtC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,OAAK,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EACtD,CAAC;oBACA,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,CACxC,CAAC;wBACA,KAAK,GAAG,IAAI,KAAK,EAAK,CAAC;wBACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC1B,CAAC;oBACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;gBACtB,CAAC;YACF,CAAC;YACD,IAAI,CACJ,CAAC;gBACA,IAAI,IAAI,GAAW,KAAK,CAAC;gBACzB,IAAI,GAAG,GAAM,MAAM,CAAC;gBAEpB,UAAU;gBACV,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;gBAElB,kBAAkB;gBAClB,IAAI,KAAK,GAAa,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAEtC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAC7B,CAAC;oBACA,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,CACxC,CAAC;wBACA,KAAK,GAAG,IAAI,KAAK,EAAK,CAAC;wBACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC1B,CAAC;oBACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACjB,CAAC;YACF,CAAC;QACF,CAAC;QAED;;WAEG;QACI,uBAAO,GAAd,UAAe,QAAgB;YAE9B,WAAW;YACX,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC;YAC9B,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;YAE1B,UAAU;YACV,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,EAAY,CAAC;YACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,EAAK,CAAC,CAAC;YAElC,KAAK;YACL,UAAU;YACV,KAAK;YACL,IAAI,KAAK,GAAa,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAEtC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE;gBACzC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAC7C,CAAC;oBACA,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,CACxC,CAAC;wBACA,KAAK,GAAG,IAAI,KAAK,EAAK,CAAC;wBACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC1B,CAAC;oBACD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9B,CAAC;QACH,CAAC;QAED;;WAEG;QACI,qBAAK,GAAZ;YAEC,iBAAiB;YACjB,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,EAAY,CAAC;YACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,EAAK,CAAC,CAAC;YAElC,WAAW;YACX,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;YACf,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC;QACrC,CAAC;QAED;;;;oEAI4D;QAC5D;;WAEG;QACI,qBAAK,GAAZ;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACnB,IAAI;gBACH,MAAM,CAAC,IAAI,iBAAa,CAAI,IAAI,EAAE,CAAC,CAAC,CAAC;QACvC,CAAC;QAED;;WAEG;QACI,mBAAG,GAAV;YAEC,MAAM,CAAC,IAAI,iBAAa,CAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC;QAED;;WAEG;QACI,sBAAM,GAAb;YAEC,MAAM,CAAC,IAAI,wBAAoB,CAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAChD,CAAC;QAED;;WAEG;QACI,oBAAI,GAAX;YAEC,MAAM,CAAC,IAAI,wBAAoB,CAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAClD,CAAC;QAED;;WAEG;QACI,oBAAI,GAAX;YAEC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACnB,CAAC;QAED;;WAEG;QACI,wBAAQ,GAAf;YAEC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACvB,CAAC;QAED;;WAEG;QACI,kBAAE,GAAT,UAAU,KAAa;YAEtB,EAAE,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBACvB,MAAM,IAAI,cAAU,CAAC,4CAA4C,CAAC,CAAC;YAEpE,IAAI,SAAS,GAAyB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC9D,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACxD,CAAC;QAED;;WAEG;QACI,mBAAG,GAAV,UAAW,KAAa,EAAE,GAAM;YAE/B,EAAE,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBACvB,MAAM,IAAI,cAAU,CAAC,4CAA4C,CAAC,CAAC;YAEpE,IAAI,SAAS,GAAyB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC9D,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;QACvD,CAAC;QAED;;WAEG;QACI,qBAAK,GAAZ;YAEC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;QAED;;WAEG;QACI,oBAAI,GAAX;YAEC,IAAI,SAAS,GAAa,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAEhE,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACxC,CAAC;QAED;;;;;;WAMG;QACK,2BAAW,GAAnB,UAAoB,KAAa;YAEhC,IAAI,GAAW,CAAC;YAEhB,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,EAC9C,CAAC;gBACA,IAAI,KAAK,GAAa,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACxC,EAAE,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;oBACxB,KAAK,CAAC;gBAEP,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC;YACvB,CAAC;YAED,EAAE,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;gBAC9B,GAAG,EAAE,CAAC;YAEP,MAAM,CAAC,aAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC9B,CAAC;QAED;;;;;;;;oEAQ4D;QAC5D;;WAEG;QACI,oBAAI,GAAX;YAAY,eAAa;iBAAb,WAAa,CAAb,sBAAa,CAAb,IAAa;gBAAb,8BAAa;;YAExB,UAAU;YACV,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;gBAC9C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;YAEzC,UAAU;YACV,IAAI,KAAK,GAAa,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAE5D,GAAG,CAAC,CAAC,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAC7C,CAAC;gBACA,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,CACxC,CAAC;oBACA,KAAK,GAAG,IAAI,KAAK,EAAK,CAAC;oBACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC1B,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACtB,CAAC;YAED,WAAW;YACX,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC;YAE3B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACnB,CAAC;QAED;;WAEG;QACI,0BAAU,GAAjB,UAAkB,GAAM;YAEvB,sBAAsB;YACtB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;YAEb,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;gBAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC/B,CAAC;QAED;;WAEG;QACI,yBAAS,GAAhB,UAAiB,GAAM;YAEtB,IAAI,SAAS,GAAa,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAChE,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAC/E,CAAC;gBACA,SAAS,GAAG,IAAI,KAAK,EAAK,CAAC;gBAC3B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9B,CAAC;YAED,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpB,IAAI,CAAC,KAAK,EAAE,CAAC;YAEb,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;gBAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC/B,CAAC;QAED;;WAEG;QACI,yBAAS,GAAhB;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC;gBACxB,MAAM,CAAC,CAAC,qCAAqC;YAE9C,uBAAuB;YACvB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,EAAE,CAAC;YAEb,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;gBAC/B,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;QAED;;WAEG;QACI,wBAAQ,GAAf;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC;gBACxB,MAAM,CAAC,CAAC,qCAAqC;YAE9C,qBAAqB;YACrB,IAAI,SAAS,GAAa,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAChE,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;YAEb,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC;gBACzB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAClD,CAAC;QAqCM,sBAAM,GAAb;YACE,cAAc;iBAAd,WAAc,CAAd,sBAAc,CAAd,IAAc;gBAAd,6BAAc;;YAEf,+BAA+B;YAC/B,IAAI,GAAqB,CAAC;YAC1B,IAAI,mBAAmB,GAAY,KAAK,CAAC;YAEzC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,wBAAoB,CAAC,CAC5C,CAAC;gBACA,mBAAmB,GAAG,IAAI,CAAC;gBAC3B,IAAI,CAAC,CAAC,CAAC,GAAI,IAAI,CAAC,CAAC,CAA6B,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;YAC9D,CAAC;YAED,WAAW;YACX,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;gBACpB,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;gBACvD,GAAG,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/D,IAAI;gBACH,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAEvD,UAAU;YACV,EAAE,CAAC,CAAC,mBAAmB,IAAI,IAAI,CAAC;gBAC/B,MAAM,CAAC,IAAI,wBAAoB,CAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YAChD,IAAI;gBACH,MAAM,CAAC,GAAG,CAAC;QACb,CAAC;QAED;;WAEG;QACK,6BAAa,GAArB,UAAsB,QAA0B,EAAE,GAAM;YAEvD,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QACvD,CAAC;QAED;;WAEG;QACO,uCAAuB,GAAjC,UAAkC,QAA0B,EAAE,CAAS,EAAE,GAAM;YAE9E,kBAAkB;YAClB,IAAI,KAAK,GAAQ,EAAE,CAAC;YACpB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YAEjB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;gBACzB,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YAEhB,kBAAkB;YAClB,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAClC,CAAC;gBACA,IAAI,CAAC,IAAI,OAAT,IAAI,EAAS,KAAK,CAAC,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACrB,CAAC;YACD,IAAI;gBACH,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC/C,CAAC;QAED;;WAEG;QACO,+BAAe,GAAzB,UACE,QAA0B,EAAE,KAAoB,EAAE,GAAkB;YAErE,kBAAkB;YAClB,IAAI,KAAK,GAAQ,EAAE,CAAC;YAEpB,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAmB;gBACtE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YAEtB,kBAAkB;YAClB,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAClC,CAAC;gBACA,IAAI,CAAC,IAAI,OAAT,IAAI,EAAS,KAAK,CAAC,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACrB,CAAC;YACD,IAAI;gBACH,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC/C,CAAC;QAED;;WAEG;QACK,+BAAe,GAAvB,UAAwB,QAA0B,EAAE,KAAe;YAElE,IAAI,SAAS,GAAW,KAAK,CAAC,MAAM,CAAC;YACrC,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC;YAExB,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,CACjC,CAAC;gBACA,yDAAyD;gBACzD,kDAAkD;gBAClD,yDAAyD;gBACzD,6CAA6C;gBAC7C,IAAI,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAClD,IAAI,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;gBAE7B,IAAI,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBACnE,EAAE,CAAC,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,CAAC;oBAC9B,KAAK,GAAG,KAAK,CAAC,MAAM,OAAZ,KAAK,EAAW,cAAc,CAAC,CAAC;gBAEzC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAC3C,CAAC;oBACA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,MAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAC,MAAM,WAE3C,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAC1D,CAAC;gBACJ,CAAC;gBAED,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBAElD,UAAU;gBACV,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC;oBACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAEvE,oBAAoB;gBACpB,IAAI,CAAC,OAAO,GAAG,MAAA,IAAI,CAAC,OAAO,EAAC,MAAM,WAAI,YAAY,CAAC,CAAC;YACrD,CAAC;YACD,IAAI,CACJ,CAAC;gBACA,wDAAwD;gBACxD,gDAAgD;gBAChD,wDAAwD;gBACxD,yBAAyB;gBACzB,2CAA2C;gBAC3C,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC,CAC1C,CAAC;oBACA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB;gBAC7C,CAAC;gBACD,IAAI,CACJ,CAAC;oBACA,IAAI,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;oBACjD,IAAI,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;oBAE5B,IAAI,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oBACjE,EAAE,CAAC,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,CAAC;wBAC7B,KAAK,GAAG,KAAK,CAAC,MAAM,OAAZ,KAAK,EAAW,aAAa,CAAC,CAAC;oBAExC,oBAAoB;oBACpB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,MAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAC,MAAM,WAAI,KAAK,CAAC,CAAC;gBAC5D,CAAC;gBAED,gCAAgC;gBAChC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;YAED,MAAM,CAAC,QAAQ,CAAC;;QACjB,CAAC;QAyBM,qBAAK,GAAZ,UAAa,KAAU,EAAE,IAAwB;YAAxB,oBAAwB,GAAxB,OAAY,KAAK,CAAC,IAAI,EAAE;YAEhD,IAAI,GAAqB,CAAC;YAC1B,IAAI,mBAAmB,GAAY,KAAK,CAAC;YAEzC,+BAA+B;YAC/B,EAAE,CAAC,CAAC,KAAK,YAAY,wBAAoB,CAAC,CAC1C,CAAC;gBACA,mBAAmB,GAAG,IAAI,CAAC;gBAE3B,IAAI,QAAQ,GAAI,IAAgC,CAAC,IAAI,EAAE,CAAC;gBACxD,IAAI,OAAO,GAAI,KAAiC,CAAC,IAAI,EAAE,CAAC;gBAExD,KAAK,GAAG,QAAQ,CAAC;gBACjB,IAAI,GAAG,OAAO,CAAC;YAChB,CAAC;YAED,iBAAiB;YACjB,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAEvC,kBAAkB;YAClB,EAAE,CAAC,CAAC,mBAAmB,IAAI,IAAI,CAAC;gBAC/B,MAAM,CAAC,IAAI,wBAAoB,CAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YAChD,IAAI;gBACH,MAAM,CAAC,GAAG,CAAC;QACb,CAAC;QAED;;WAEG;QACO,8BAAc,GAAxB,UAAyB,KAAuB,EAAE,IAAsB;YAEvE,WAAW;YACX,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YACpC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC;YAEnB,UAAU;YACV,OAAO,IAAI,IAAI,CAAC,EAChB,CAAC;gBACA,IAAI,SAAS,GAAyB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACpE,IAAI,KAAK,GAAa,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAEpD,IAAI,YAAY,GAAW,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC3E,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;gBAE7C,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;oBACrB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAEzC,IAAI,IAAI,YAAY,CAAC;YACtB,CAAC;YAED,MAAM,CAAC,KAAK,CAAC;QACd,CAAC;QAED;;0EAEkE;QAClE;;WAEG;QACI,oBAAI,GAAX,UAAY,GAAuB;YAElC,EAAE,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC;gBACxB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACtB,IAAI;gBACH,gBAAK,CAAC,IAAI,YAAC,GAAwB,CAAC,CAAC;QACvC,CAAC;QAED;;WAEG;QACK,0BAAU,GAAlB,UAAmB,GAAa;YAE/B,gCAAiE,EAAhE,oBAAY,EAAG,mBAAW,CAAuC;YAClE,4BAAiE,EAAhE,kBAAU,EAAK,iBAAS,CAAyC;YAClE,oCAAiE,EAAhE,sBAAc,EAAE,qBAAa,CAAoC;;QACnE,CAAC;QACF,YAAC;IAAD,CAAC,AA1wBD,CACS,QAAI,CAAC,SAAS,GAywBtB;IA1wBY,SAAK,QA0wBjB,CAAA;AACF,CAAC,EA/zBS,GAAG,KAAH,GAAG,QA+zBZ;AAED,IAAU,GAAG,CA+IZ;AA/ID,WAAU,GAAG,EACb,CAAC;IACA;;;;;;;;OAQG;IACH;QACS,iCAAW;QAQnB;;oEAE4D;QAC5D;;;;;;;;;WASG;QACH,uBAAmB,MAAgB,EAAE,KAAa;YAEjD,kBAAM,MAAM,CAAC,CAAC;YAEd,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACrB,CAAC;QAQD,sBAAY,gCAAK;YANjB;;wEAE4D;YAC5D;;eAEG;iBACH;gBAEC,MAAM,CAAC,IAAI,CAAC,OAAmB,CAAC;YACjC,CAAC;;;WAAA;QAKD,sBAAW,gCAAK;YAHhB;;eAEG;iBACH;gBAEC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACnC,CAAC;iBAED,UAAiB,GAAM;gBAEtB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAClC,CAAC;;;WALA;QAUD,sBAAW,gCAAK;YAHhB;;eAEG;iBACH;gBAEC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YACpB,CAAC;;;WAAA;QAED;;oEAE4D;QAC5D;;WAEG;QACI,4BAAI,GAAX;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;gBACrB,MAAM,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;YAC7D,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC5B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YACzB,IAAI;gBACH,MAAM,CAAC,IAAI,aAAa,CAAI,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC3D,CAAC;QAED;;WAEG;QACI,4BAAI,GAAX;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBAC1C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YACzB,IAAI;gBACH,MAAM,CAAC,IAAI,aAAa,CAAI,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC3D,CAAC;QAED;;WAEG;QACI,+BAAO,GAAd,UAAe,CAAS;YAEvB,IAAI,SAAS,GAAW,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YAExC,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,IAAI,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACnD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YACzB,IAAI;gBACH,MAAM,CAAC,IAAI,aAAa,CAAI,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACrD,CAAC;QAED;;oEAE4D;QAC5D;;;;;;;;;;;;;;WAcG;QACI,gCAAQ,GAAf,UAA6B,GAAqB;YAEjD,MAAM,CAAC,gBAAK,CAAC,QAAQ,YAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC;QACzD,CAAC;QAED;;WAEG;QACI,4BAAI,GAAX,UAAY,GAAqB;YAEhC,4BAAiD,EAAhD,kBAAU,EAAE,iBAAS,CAA4B;;QACnD,CAAC;QACF,oBAAC;IAAD,CAAC,AAnID,CACS,YAAQ,GAkIhB;IAnIY,iBAAa,gBAmIzB,CAAA;AACF,CAAC,EA/IS,GAAG,KAAH,GAAG,QA+IZ;AAED,IAAU,GAAG,CAoDZ;AApDD,WAAU,GAAG,EACb,CAAC;IACA;;;;;;;;;;OAUG;IACH;QACS,wCAA6D;QAGrE;;oEAE4D;QAC5D,8BAAmB,IAAsB;YAExC,kBAAM,IAAI,CAAC,CAAC;QACb,CAAC;QAED;;WAEG;QACO,8CAAe,GAAzB;YAEC,MAAM,CAAC,IAAI,oBAAoB,CAAI,IAAI,CAAC,CAAC;QAC1C,CAAC;QAQD,sBAAW,uCAAK;YANhB;;wEAE4D;YAC5D;;eAEG;iBACH,UAAiB,GAAM;gBAEtB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;YACxB,CAAC;;;WAAA;QAKD,sBAAW,uCAAK;YAHhB;;eAEG;iBACH;gBAEC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YACzB,CAAC;;;WAAA;QACF,2BAAC;IAAD,CAAC,AAtCD,CACS,mBAAe,GAqCvB;IAtCY,wBAAoB,uBAsChC,CAAA;AACF,CAAC,EApDS,GAAG,KAAH,GAAG,QAoDZ;ACjhCD,kCAAkC;AAElC,IAAU,GAAG,CAQZ;AARD,WAAU,GAAG;IAAC,IAAA,OAAO,CAQpB;IARa,WAAA,OAAO,EACrB,CAAC;QACA;YAEC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;gBAC3B,EAAE,CAAC,CAAC,GAAG,IAAI,UAAU,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,QAAQ,CAAC;oBAC7D,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,CAAC;QALe,gBAAQ,WAKvB,CAAA;IACF,CAAC,EARa,OAAO,GAAP,WAAO,KAAP,WAAO,QAQpB;AAAD,CAAC,EARS,GAAG,KAAH,GAAG,QAQZ;ACVD,kCAAkC;AAElC,IAAU,GAAG,CAkCZ;AAlCD,WAAU,GAAG;IAAC,IAAA,OAAO,CAkCpB;IAlCa,WAAA,OAAO,EACrB,CAAC;QACA;YAEC,IAAI,GAAG,GAAgC,IAAI,GAAG,CAAC,OAAO,EAAkB,CAAC;YACzE,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3B,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;YAE3B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YAClD,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE;gBACjE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YAEvB,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YAClD,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE;gBACjE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YAEvB,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC;YAE7C,+DAA+D;YAE/D,sDAAsD;YACtD,4BAA4B;YAC5B,4BAA4B;YAE5B,iCAAiC;YAEjC,2BAA2B;YAC3B,iCAAiC;YAEjC,uEAAuE;YACvE,yBAAyB;QAC1B,CAAC;QA/Be,qBAAa,gBA+B5B,CAAA;IACF,CAAC,EAlCa,OAAO,GAAP,WAAO,KAAP,WAAO,QAkCpB;AAAD,CAAC,EAlCS,GAAG,KAAH,GAAG,QAkCZ;ACpCD,kCAAkC;AAElC,IAAU,GAAG,CA8BZ;AA9BD,WAAU,GAAG;IAAC,IAAA,OAAO,CA8BpB;IA9Ba,WAAA,OAAO,EACrB,CAAC;QACA;YAEC,IAAI,IAAI,GAAqB,IAAI,GAAG,CAAC,IAAI,EAAU,CAAC;YAEpD,wBAAwB;YACxB,gCAAgC;YAChC,IAAI,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC7C,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3B,UAAU,EAAE,CAAC;YAEb,IAAI,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC7C,GAAG,CAAC,IAAI,CAAC,CAAC;YACV,UAAU,EAAE,CAAC;YAEb,kCAAkC;YAClC,gCAAgC;YAChC,IAAI,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,YAAY,CAAC,EAAE,EAAE,GAAG,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAClG,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;YACzB,UAAU,EAAE,CAAC;YAEb;gBAEC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC/B,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE;oBACnE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;YAC3E,CAAC;QACF,CAAC;QA3Be,iBAAS,YA2BxB,CAAA;IACF,CAAC,EA9Ba,OAAO,GAAP,WAAO,KAAP,WAAO,QA8BpB;AAAD,CAAC,EA9BS,GAAG,KAAH,GAAG,QA8BZ;AChCD,kCAAkC;AAElC,IAAU,GAAG,CAyBZ;AAzBD,WAAU,GAAG;IAAC,IAAA,OAAO,CAyBpB;IAzBa,WAAA,OAAO,EACrB,CAAC;QACA;YAEC,IAAI,KAAK,GAAsB,IAAI,GAAG,CAAC,KAAK,EAAU,CAAC;YACvD,GAAG,CAAC,CAAC,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;gBAClC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAEpB,IAAI,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAClC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU;YAChC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU;YAEjC,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC9B,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY;YACvC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU;YAExC,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC9B,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB;YACzD,mCAAmC;YACnC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAEtC,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;YACrD,GAAG,CAAC,CAAC,IAAI,IAAE,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,IAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,IAAE,GAAG,IAAE,CAAC,IAAI,EAAE;gBACrE,OAAO,CAAC,GAAG,CAAC,IAAE,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;QAtBe,kBAAU,aAsBzB,CAAA;IACF,CAAC,EAzBa,OAAO,GAAP,WAAO,KAAP,WAAO,QAyBpB;AAAD,CAAC,EAzBS,GAAG,KAAH,GAAG,QAyBZ;AC3BD,kCAAkC;AAElC,IAAU,GAAG,CAWZ;AAXD,WAAU,GAAG;IAAC,IAAA,OAAO,CAWpB;IAXa,WAAA,OAAO,EACrB,CAAC;QACA;YAEC,IAAI,KAAK,GAAuB,IAAI,GAAG,CAAC,MAAM,EAAU,CAAC;YAEzD,GAAG,CAAC,CAAC,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;gBAClC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAEpB,IAAI,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,EAAE,UAAU,GAAW,IAAU,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvG,CAAC;QARe,qBAAa,gBAQ5B,CAAA;IACF,CAAC,EAXa,OAAO,GAAP,WAAO,KAAP,WAAO,QAWpB;AAAD,CAAC,EAXS,GAAG,KAAH,GAAG,QAWZ;ACbD,kCAAkC;AAElC,IAAU,GAAG,CAiBZ;AAjBD,WAAU,GAAG;IAAC,IAAA,OAAO,CAiBpB;IAjBa,WAAA,OAAO,EACrB,CAAC;QACA;YAEC,IAAI,GAAG,GAA4B,IAAI,GAAG,CAAC,OAAO,EAAkB,CAAC;YACrE,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;YACzB,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;YAE1B,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE;gBACjE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;YAElC,IAAI,KAAK,GAAe,IAAI,KAAK,EAAO,CAAC;YACzC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAElB,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC;gBACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,CAAC;QAde,qBAAa,gBAc5B,CAAA;IACF,CAAC,EAjBa,OAAO,GAAP,WAAO,KAAP,WAAO,QAiBpB;AAAD,CAAC,EAjBS,GAAG,KAAH,GAAG,QAiBZ;ACnBD,+BAA+B;AAK/B,AAHA,0CAA0C;AAC1C,oCAAoC;AAQpC,IAAU,GAAG,CAojCZ;AApjCD,WAAU,GAAG,EACb,CAAC;IACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2CG;IACH;QACS,wBAAiB;QA4EzB;YAAmB,cAAc;iBAAd,WAAc,CAAd,sBAAc,CAAd,IAAc;gBAAd,6BAAc;;YAEhC,iBAAO,CAAC;YAER,eAAe;YACf,IAAI,CAAC,IAAI,GAAG,IAAI,gBAAY,CAAI,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACxD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE9B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;YACxB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;YAEf,WAAW;YACX,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CACrB,CAAC;YAED,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,CACtD,CAAC;gBACA,IAAI,KAAK,GAAa,IAAI,CAAC,CAAC,CAAC,CAAC;gBAE9B,IAAI,CAAC,IAAI,OAAT,IAAI,EAAS,KAAK,CAAC,CAAC;YACrB,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,UAAM,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,QAAI,CAAC,SAAS,CAAC,CAAC,CAC9F,CAAC;gBACA,IAAI,SAAS,GAAuB,IAAI,CAAC,CAAC,CAAC,CAAC;gBAE5C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;YACjD,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,YAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,YAAQ,CAAC,CACxF,CAAC;gBACA,IAAI,OAAK,GAAgB,IAAI,CAAC,CAAC,CAAC,CAAC;gBACjC,IAAI,KAAG,GAAgB,IAAI,CAAC,CAAC,CAAC,CAAC;gBAE/B,IAAI,CAAC,MAAM,CAAC,OAAK,EAAE,KAAG,CAAC,CAAC;YACzB,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CACxD,CAAC;gBACA,IAAI,IAAI,GAAW,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC3B,IAAI,GAAG,GAAS,IAAI,CAAC,CAAC,CAAC,CAAC;gBAExB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACxB,CAAC;QACF,CAAC;QAgBM,qBAAM,GAAb,UACE,IAAS,EAAE,IAAS;YAErB,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,CAAC;QAED;;WAEG;QACI,oBAAK,GAAZ;YAEC,mBAAmB;YACnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE9B,eAAe;YACf,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QAChB,CAAC;QAED;;oEAE4D;QAC5D;;WAEG;QACI,oBAAK,GAAZ;YAEC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACpB,CAAC;QAED;;WAEG;QACI,kBAAG,GAAV;YAEC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QAClB,CAAC;QAED;;WAEG;QACI,qBAAM,GAAb;YAEC,MAAM,CAAC,IAAI,uBAAmB,CAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED;;WAEG;QACI,mBAAI,GAAX;YAEC,MAAM,CAAC,IAAI,uBAAmB,CAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACjD,CAAC;QAED;;WAEG;QACI,mBAAI,GAAX;YAEC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACnB,CAAC;QAED;;WAEG;QACI,oBAAK,GAAZ;YAEC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QAC1B,CAAC;QAED;;WAEG;QACI,mBAAI,GAAX;YAEC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QAC/B,CAAC;QAED;;;;;;;;oEAQ4D;QAC5D;;WAEG;QACI,mBAAI,GAAX;YAAyB,eAAa;iBAAb,WAAa,CAAb,sBAAa,CAAb,IAAa;gBAAb,8BAAa;;YAErC,IAAI,IAAI,GAAoB,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;YAC9C,IAAI,KAAK,GAAoB,IAAI,CAAC;YAElC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAC7C,CAAC;gBACA,kCAAkC;gBAClC,IAAI,IAAI,GAAoB,IAAI,gBAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;oBACV,KAAK,GAAG,IAAI,CAAC;gBAEd,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACpB,IAAI,GAAG,IAAI,CAAC;YACb,CAAC;YAED,iCAAiC;YACjC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC;gBACrE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YAErB,kDAAkD;YAClD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAEzB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC;QAED;;WAEG;QACI,yBAAU,GAAjB,UAAkB,GAAM;YAEvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC;QAChC,CAAC;QAED;;WAEG;QACI,wBAAS,GAAhB,UAAiB,GAAM;YAEtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;QAC9B,CAAC;QAED;;WAEG;QACI,wBAAS,GAAhB;YAEC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;QAED;;WAEG;QACI,uBAAQ,GAAf;YAEC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9B,CAAC;QA6HM,qBAAM,GAAb;YAAc,cAAc;iBAAd,WAAc,CAAd,sBAAc,CAAd,IAAc;gBAAd,6BAAc;;YAE3B,+BAA+B;YAC/B,IAAI,GAAoB,CAAC;YACzB,IAAI,mBAAmB,GAAY,KAAK,CAAC;YAEzC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,uBAAmB,CAAC,CAC3C,CAAC;gBACA,mBAAmB,GAAG,IAAI,CAAC;gBAC3B,IAAI,CAAC,CAAC,CAAC,GAAI,IAAI,CAAC,CAAC,CAA4B,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;YAC7D,CAAC;YAED,WAAW;YACX,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;gBACpB,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;gBACvD,GAAG,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/D,IAAI;gBACH,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAEvD,UAAU;YACV,EAAE,CAAC,CAAC,mBAAmB,IAAI,IAAI,CAAC;gBAC/B,MAAM,CAAC,IAAI,uBAAmB,CAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/C,IAAI;gBACH,MAAM,CAAC,GAAG,CAAC;QACb,CAAC;QAED;;WAEG;QACK,4BAAa,GAArB,UAAsB,QAAyB,EAAE,GAAM;YAEtD,uCAAuC;YACvC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QACvD,CAAC;QAED;;WAEG;QACO,sCAAuB,GAAjC,UAAkC,QAAyB,EAAE,IAAY,EAAE,GAAM;YAEhF,mBAAmB;YACnB,EAAE,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACjC,MAAM,IAAI,mBAAe,CAAC,kDAAkD,CAAC,CAAC;YAE/E,IAAI,IAAI,GAAqC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC7D,IAAI,KAAK,GAAoB,IAAI,CAAC;YAElC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EACrC,CAAC;gBACA,kCAAkC;gBAClC,IAAI,IAAI,GAAoB,IAAI,gBAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;gBACpE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;oBACV,KAAK,GAAG,IAAI,CAAC;gBAEd,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAEpB,6BAA6B;gBAC7B,IAAI,GAAG,IAAI,CAAC;YACb,CAAC;YAED,iCAAiC;YACjC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC;gBACrE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YAErB,kDAAkD;YAClD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACxB,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAExB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC;YAEnB,MAAM,CAAC,KAAK,CAAC;QACd,CAAC;QAED;;WAEG;QACO,8BAAe,GAAzB,UACE,QAAyB,EAAE,KAAoB,EAAE,GAAkB;YAEpE,mBAAmB;YACnB,EAAE,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACjC,MAAM,IAAI,mBAAe,CAAC,kDAAkD,CAAC,CAAC;YAE/E,IAAI,IAAI,GAAqC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC7D,IAAI,KAAK,GAAoB,IAAI,CAAC;YAElC,IAAI,IAAI,GAAW,CAAC,CAAC;YAErB,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAmB,EAC/E,CAAC;gBACA,kCAAkC;gBAClC,IAAI,IAAI,GAAoB,IAAI,gBAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;gBAEzE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;oBAAC,KAAK,GAAG,IAAI,CAAC;gBAC5B,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC;oBAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAEtC,iCAAiC;gBACjC,IAAI,GAAG,IAAI,CAAC;gBACZ,IAAI,EAAE,CAAC;YACR,CAAC;YAED,2CAA2C;YAC3C,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC;gBACxB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YAErB,oCAAoC;YACpC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACxB,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAExB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC;YAEnB,MAAM,CAAC,KAAK,CAAC;QACd,CAAC;QA2EM,oBAAK,GAAZ,UAAa,KAAU,EAAE,IAAwB;YAAxB,oBAAwB,GAAxB,OAAY,KAAK,CAAC,IAAI,EAAE;YAEhD,IAAI,GAAoB,CAAC;YACzB,IAAI,mBAAmB,GAAY,KAAK,CAAC;YAEzC,+BAA+B;YAC/B,EAAE,CAAC,CAAC,KAAK,YAAY,uBAAmB,CAAC,CACzC,CAAC;gBACA,mBAAmB,GAAG,IAAI,CAAC;gBAE3B,IAAI,QAAQ,GAAI,IAA+B,CAAC,IAAI,EAAE,CAAC;gBACvD,IAAI,OAAO,GAAI,KAAgC,CAAC,IAAI,EAAE,CAAC;gBAEvD,KAAK,GAAG,QAAQ,CAAC;gBACjB,IAAI,GAAG,OAAO,CAAC;YAChB,CAAC;YAED,iBAAiB;YACjB,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAEvC,kBAAkB;YAClB,EAAE,CAAC,CAAC,mBAAmB,IAAI,IAAI,CAAC;gBAC/B,MAAM,CAAC,IAAI,uBAAmB,CAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/C,IAAI;gBACH,MAAM,CAAC,GAAG,CAAC;QACb,CAAC;QAED;;WAEG;QACO,6BAAc,GAAxB,UAAyB,KAAsB,EAAE,IAAqB;YAErE,qBAAqB;YACrB,IAAI,IAAI,GAAqC,KAAK,CAAC,IAAI,EAAE,CAAC;YAE1D,qBAAqB;YACrB,IAAI,IAAI,GAAW,YAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAEzC,SAAS;YACT,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAEpB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC;YACnB,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC;gBACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YAEpB,MAAM,CAAC,IAAI,CAAC;QACb,CAAC;QA0CM,qBAAM,GAAb,UAAc,WAA0D;YAA1D,2BAA0D,GAA1D,cAA8C,GAAG,CAAC,QAAQ;YAEvE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;YAE7B,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAC/B,CAAC;gBACA,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;oBACnD,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACrB,IAAI;oBACH,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;YACjB,CAAC;QACF,CAAC;QAED;;;;;;;;;;;;;WAaG;QACI,qBAAM,GAAb,UAAc,GAAM;YAEnB,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAEtB,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAC/B,CAAC;gBACA,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC;oBACvC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACrB,IAAI;oBACH,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;YACjB,CAAC;QACF,CAAC;QAED;;;;;;;;;;;;;;;WAeG;QACI,wBAAS,GAAhB,UAAiB,IAAyB;YAEzC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAEtB,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAC/B,CAAC;gBACA,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;oBAC1B,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACrB,IAAI;oBACH,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;YACjB,CAAC;QACF,CAAC;QAyEM,oBAAK,GAAZ,UAA0B,GAAY,EAAE,OAAkD;YAAlD,uBAAkD,GAAlD,UAA0C,GAAG,CAAC,IAAI;YAEzF,EAAE,CAAC,CAAC,IAAI,IAAa,GAAG,CAAC;gBACxB,MAAM,CAAC;YAER,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAEtB,OAAO,GAAG,CAAC,KAAK,EAAE,IAAI,KAAK,EAC3B,CAAC;gBACA,IAAI,OAAK,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;gBACxB,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAK,CAAC,KAAK,CAAC,IAAI,IAAI;oBACxE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;gBAEhB,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,OAAK,CAAC,CAAC;YAC7B,CAAC;QACF,CAAC;QAsEM,qBAAM,GAAb,UAEE,QAAyB,EAAE,GAAY,EACvC,KAA6B,EAAE,GAA2B;YAA1D,qBAA6B,GAA7B,YAA6B;YAAE,mBAA2B,GAA3B,UAA2B;YAE3D,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAClB,CAAC;gBACA,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;gBACpB,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;YACjB,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CACrB,CAAC;gBACA,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YACpB,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAClC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACvB,CAAC;QA4CM,mBAAI,GAAX,UAAY,OAAkD;YAAlD,uBAAkD,GAAlD,UAA0C,GAAG,CAAC,IAAI;YAE7D,IAAI,MAAM,GAAc,IAAI,UAAM,CAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YAChE,QAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;YAEnC,yBAAyB;YACzB,6CAA6C;YAE7C,OAAO;YACP,oBAAoB;YACpB,OAAO;YACP,IAAI,IAAI,GAAoB,IAAI,CAAC,IAAI,CAAC;YACtC,IAAI,KAAK,GAAoB,IAAI,CAAC;YAElC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAC9C,CAAC;gBACA,kCAAkC;gBAClC,IAAI,IAAI,GAAoB,IAAI,gBAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1E,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;oBACV,KAAK,GAAG,IAAI,CAAC;gBAEd,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACpB,IAAI,GAAG,IAAI,CAAC;YACb,CAAC;YAED,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YAEpB,kDAAkD;YAClD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAED;;oEAE4D;QAC5D;;WAEG;QACI,mBAAI,GAAX,UAAY,GAAuB;YAElC,EAAE,CAAC,CAAC,GAAG,YAAY,IAAI,CAAC;gBACvB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACrB,IAAI;gBACH,gBAAK,CAAC,IAAI,YAAC,GAAG,CAAC,CAAC;QAClB,CAAC;QAED;;WAEG;QACK,wBAAS,GAAjB,UAAkB,GAAY;YAE7B,8BAAqD,EAApD,mBAAW,EAAE,kBAAU,CAA8B;YACtD,0BAAoD,EAAnD,iBAAS,EAAI,gBAAQ,CAA+B;YACrD,4BAAqD,EAApD,kBAAU,EAAG,iBAAS,CAA+B;;QACvD,CAAC;QACF,WAAC;IAAD,CAAC,AArgCD,CACS,QAAI,CAAC,SAAS,GAogCtB;IArgCY,QAAI,OAqgChB,CAAA;AACF,CAAC,EApjCS,GAAG,KAAH,GAAG,QAojCZ;AAED,IAAU,GAAG,CAmKZ;AAnKD,WAAU,GAAG,EACb,CAAC;IACA;;;;;;;;OAQG;IACH;QACS,gCAAW;QAOnB;;0EAEkE;QAClE;;;;;;;;;;;WAWG;QACH,sBAAmB,MAAe,EAAE,IAAqB,EAAE,IAAqB,EAAE,KAAQ;YAEzF,kBAAM,MAAM,CAAC,CAAC;YAEd,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAElB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACrB,CAAC;QAED;;WAEG;QACI,+BAAQ,GAAf,UAAgB,EAAmB;YAElC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QACjB,CAAC;QAED;;WAEG;QACI,+BAAQ,GAAf,UAAgB,IAAqB;YAEpC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACnB,CAAC;QAED;;0EAEkE;QAC1D,2BAAI,GAAZ;YAEC,MAAM,CAAC,IAAI,CAAC,OAAkB,CAAC;QAChC,CAAC;QAED;;WAEG;QACI,2BAAI,GAAX;YAEC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACnB,CAAC;QAED;;WAEG;QACI,2BAAI,GAAX;YAEC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACnB,CAAC;QAEA;;WAEG;QACG,8BAAO,GAAd,UAAe,IAAY;YAE1B,IAAI,EAAE,GAAoB,IAAI,CAAC;YAE/B,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CACd,CAAC;gBACA,GAAG,CAAC,CAAC,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EACrC,CAAC;oBACA,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;oBAEf,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAqB,CAAC,CAAC;wBACtD,MAAM,CAAC,EAAE,CAAC;gBACZ,CAAC;YACF,CAAC;YACD,IAAI,CACJ,CAAC;gBACA,GAAG,CAAC,CAAC,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EACrC,CAAC;oBACA,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;oBAEf,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAqB,CAAC,CAAC;wBACtD,MAAM,CAAC,EAAE,CAAC;gBACZ,CAAC;YACF,CAAC;YAED,MAAM,CAAC,EAAE,CAAC;QACX,CAAC;QAKD,sBAAW,+BAAK;YAHhB;;eAEG;iBACH;gBAEC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YACpB,CAAC;iBAED,UAAiB,GAAM;gBAEtB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;YACnB,CAAC;;;WALA;QAOD;;0EAEkE;QAClE;;WAEG;QACI,+BAAQ,GAAf,UAAgB,GAAoB;YAEnC,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC;QACpB,CAAC;QAED;;WAEG;QACI,2BAAI,GAAX,UAAY,GAAoB;YAE/B,IAAI,SAAS,GAAoB,IAAI,CAAC,KAAK,CAAC;YAC5C,IAAI,SAAS,GAAoB,IAAI,CAAC,KAAK,CAAC;YAE5C,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;YACvB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;YACvB,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC;YACtB,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC;YAEtB,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC;gBACxB,IAAI,CAAC,OAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;YAChC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC;gBAC5B,IAAI,CAAC,OAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;YAEjC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC;gBAC1B,IAAI,CAAC,OAAQ,CAAC,MAAM,GAAG,GAAG,CAAC;YAClC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC;gBAC9B,IAAI,CAAC,OAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;QACpC,CAAC;QACF,mBAAC;IAAD,CAAC,AAvJD,CACS,YAAQ,GAsJhB;IAvJY,gBAAY,eAuJxB,CAAA;AACF,CAAC,EAnKS,GAAG,KAAH,GAAG,QAmKZ;AAED,IAAU,GAAG,CA2CZ;AA3CD,WAAU,GAAG,EACb,CAAC;IACA;;;;;;;;;;OAUG;IACH;QACS,uCAA2D;QAEnE;;0EAEkE;QAClE,6BAAmB,IAAqB;YAEvC,kBAAM,IAAI,CAAC,CAAC;QACb,CAAC;QAED;;WAEG;QACO,6CAAe,GAAzB;YAEC,MAAM,CAAC,IAAI,mBAAmB,CAAI,IAAI,CAAC,CAAC;QACzC,CAAC;QAQD,sBAAW,sCAAK;YANhB;;wEAE4D;YAC5D;;eAEG;iBACH,UAAiB,GAAM;gBAEtB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;YACxB,CAAC;;;WAAA;QACF,0BAAC;IAAD,CAAC,AA7BD,CACS,mBAAe,GA4BvB;IA7BY,uBAAmB,sBA6B/B,CAAA;AACF,CAAC,EA3CS,GAAG,KAAH,GAAG,QA2CZ;ACjxCD,kCAAkC;AAElC,mCAAmC;AAEnC,IAAU,GAAG,CAyBZ;AAzBD,WAAU,GAAG;IAAC,IAAA,OAAO,CAyBpB;IAzBa,WAAA,OAAO,EACrB,CAAC;QACA;YAEC,IAAI,IAAI,GAAqB,IAAI,GAAG,CAAC,IAAI,EAAU,CAAC;YACpD,GAAG,CAAC,CAAC,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;gBAClC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAEnB,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACjC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU;YAC/B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU;YAEjC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC7B,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY;YACtC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU;YAExC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC7B,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB;YACxD,mCAAmC;YACnC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAErC,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;YACrD,GAAG,CAAC,CAAC,IAAI,IAAE,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,IAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,IAAE,GAAG,IAAE,CAAC,IAAI,EAAE;gBACnE,OAAO,CAAC,GAAG,CAAC,IAAE,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;QAtBe,iBAAS,YAsBxB,CAAA;IACF,CAAC,EAzBa,OAAO,GAAP,WAAO,KAAP,WAAO,QAyBpB;AAAD,CAAC,EAzBS,GAAG,KAAH,GAAG,QAyBZ;AC7BD,kCAAkC;AAElC,IAAU,GAAG,CAuEZ;AAvED,WAAU,GAAG;IAAC,IAAA,OAAO,CAuEpB;IAvEa,WAAA,OAAO,EACrB,CAAC;QACA;YAEC,IAAI,KAAK,GAAoB,IAAI,GAAG,CAAC,KAAK,EAAQ,CAAC;YACnD,GAAG,CAAC,CAAC,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;gBACjC,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YAE7B,+BAA+B;YAC/B,sBAAsB;YACtB,+BAA+B;YAC/B,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;YAErC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE;gBACrE,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YAEvB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;YAE9C,+BAA+B;YAC/B,0BAA0B;YAC1B,+BAA+B;YAC/B,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,EAClC,UAAU,IAAU,EAAE,KAAW;gBAEhC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;oBAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;gBAC/C,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;oBAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;gBACpD,IAAI;oBAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;YAC9B,CAAC,CACD,CAAC;YAEF,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE;gBACrE,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QAC5B,CAAC;QA9Be,eAAO,UA8BtB,CAAA;QAED;YASC;gBAEC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC;gBAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC;gBACjC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC;gBACjC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;gBAClC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;gBAClC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;YACnC,CAAC;YACD,sBAAW,wBAAM;qBAAjB;oBAEC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;gBAC/C,CAAC;;;eAAA;YAEM,mBAAI,GAAX,UAAY,GAAS;gBAEpB,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;YACjC,CAAC;YAEM,yBAAU,GAAjB;gBAEC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1E,CAAC;YACM,6BAAc,GAArB;gBAEC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;YACrC,CAAC;YACF,WAAC;QAAD,CAAC,AApCD,IAoCC;IACF,CAAC,EAvEa,OAAO,GAAP,WAAO,KAAP,WAAO,QAuEpB;AAAD,CAAC,EAvES,GAAG,KAAH,GAAG,QAuEZ;ACzED,kCAAkC;AAElC,IAAU,GAAG,CA0BZ;AA1BD,WAAU,GAAG;IAAC,IAAA,OAAO,CA0BpB;IA1Ba,WAAA,OAAO,EACrB,CAAC;QACA;YAEC,IAAI,GAAG,GAA6B,IAAI,GAAG,CAAC,YAAY,EAAU,CAAC;YAEnE,uBAAuB;YACvB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC;gBAC9B,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;oBACzB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAEhB,gBAAgB;YAChB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAEjB,gCAAgC;YAChC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAC/B,CAAC;gBACA,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBACzD,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBACzD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAClB,CAAC;QACF,CAAC;QAvBe,gBAAQ,WAuBvB,CAAA;IACF,CAAC,EA1Ba,OAAO,GAAP,WAAO,KAAP,WAAO,QA0BpB;AAAD,CAAC,EA1BS,GAAG,KAAH,GAAG,QA0BZ;AC5BD,+BAA+B;AAE/B,sBAAsB;AACtB,EAAE;AACF,yGAAyG;AACzG,2FAA2F;AAC3F,EAAE;AACF,2DAA2D;AAC3D,2CAA2C;AAE3C,IAAU,GAAG,CA2bZ;AA3bD,WAAU,GAAG,EACb,CAAC;IACA;;;;;;;;;;;;;;OAcG;IACH;QAEC,EAAE,CAAC,CAAC,iBAAiB,IAAI,IAAI,CAAC;YAC7B,iBAAiB,EAAE,CAAC;QAErB,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC;YACzB,OAAO,CAAC,IAAI,EAAE,CAAC;QAChB,IAAI,CACJ,CAAC;YACA,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;YAC7B,MAAM,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;IACF,CAAC;IAZe,aAAS,YAYxB,CAAA;IAED;;;;;;;;;;;;OAYG;IACH,uBAA8B,CAAa;QAE1C,iBAAiB,GAAG,CAAC,CAAC;QAEtB,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC;YACzB,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAC7B,UAAU,KAAY;gBAErB,iBAAiB,EAAE,CAAC;YACrB,CAAC,CACD,CAAC;QACH,IAAI;YACH,MAAM,CAAC,OAAO;gBACb,UAAU,OAAe,EAAE,QAAiB,EAAE,MAAe,EAAE,KAAc,EAAE,KAAa;oBAE3F,iBAAiB,EAAE,CAAC;gBACrB,CAAC,CAAC;IACL,CAAC;IAjBe,iBAAa,gBAiB5B,CAAA;IAED;;;;;;;;;;;;OAYG;IACH;QAEC,MAAM,CAAC,iBAAiB,CAAC;IAC1B,CAAC;IAHe,iBAAa,gBAG5B,CAAA;IAED;;;;;;;;;;;;gEAY4D;IAC5D;;;;;;;;;;;;;OAaG;IACH;QACS,6BAAK;QAmBb,mBAAmB,OAAoB;YAApB,uBAAoB,GAApB,YAAoB;YAEtC,iBAAO,CAAC;YAER,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;QAC5B,CAAC;QAED;;;;;;;WAOG;QACI,wBAAI,GAAX;YAEC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;QACzB,CAAC;QAKD,sBAAW,8BAAO;YAHlB;;eAEG;iBACH;gBAEC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;YACzB,CAAC;;;WAAA;QAKD,sBAAW,2BAAI;YAHf;;eAEG;iBACH;gBAEC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACjC,CAAC;;;WAAA;QACF,gBAAC;IAAD,CAAC,AAvDD,CACS,KAAK,GAsDb;IAvDY,aAAS,YAuDrB,CAAA;IAED;;;;;;gEAM4D;IAC5D;;;;;;;;;;;;;;;OAeG;IACH;QACS,8BAAS;QAEjB;;;;WAIG;QACH,oBAAmB,OAAe;YAEjC,kBAAM,OAAO,CAAC,CAAC;QAChB,CAAC;QACF,iBAAC;IAAD,CAAC,AAZD,CACS,SAAS,GAWjB;IAZY,cAAU,aAYtB,CAAA;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH;QACS,+BAAU;QAElB;;;;WAIG;QACH,qBAAmB,OAAe;YAEjC,kBAAM,OAAO,CAAC,CAAC;QAChB,CAAC;QACF,kBAAC;IAAD,CAAC,AAZD,CACS,UAAU,GAWlB;IAZY,eAAW,cAYvB,CAAA;IAED;;;;;;;;;;;;;OAaG;IACH;QACS,mCAAU;QAElB;;;;WAIG;QACH,yBAAmB,OAAe;YAEjC,kBAAM,OAAO,CAAC,CAAC;QAChB,CAAC;QACF,sBAAC;IAAD,CAAC,AAZD,CACS,UAAU,GAWlB;IAZY,mBAAe,kBAY3B,CAAA;IAED;;;;;;;;;;;;;OAaG;IACH;QACS,+BAAU;QAElB;;;;WAIG;QACH,qBAAmB,OAAe;YAEjC,kBAAM,OAAO,CAAC,CAAC;QAChB,CAAC;QACF,kBAAC;IAAD,CAAC,AAZD,CACS,UAAU,GAWlB;IAZY,eAAW,cAYvB,CAAA;IAED;;;;;;;;;;;;;;OAcG;IACH;QACS,8BAAU;QAElB;;;;WAIG;QACH,oBAAmB,OAAe;YAEjC,kBAAM,OAAO,CAAC,CAAC;QAChB,CAAC;QACF,iBAAC;IAAD,CAAC,AAZD,CACS,UAAU,GAWlB;IAZY,cAAU,aAYtB,CAAA;IAED;;;;;;gEAM4D;IAC5D;;;;;;;;;;;;;OAaG;IACH;QACS,gCAAS;QAEjB;;;;WAIG;QACH,sBAAmB,OAAe;YAEjC,kBAAM,OAAO,CAAC,CAAC;QAChB,CAAC;QACF,mBAAC;IAAD,CAAC,AAZD,CACS,SAAS,GAWjB;IAZY,gBAAY,eAYxB,CAAA;IAED;;;;;;;;;;;;;OAaG;IACH;QACS,iCAAY;QAEpB;;;;WAIG;QACH,uBAAmB,OAAe;YAEjC,kBAAM,OAAO,CAAC,CAAC;QAChB,CAAC;QACF,oBAAC;IAAD,CAAC,AAZD,CACS,YAAY,GAWpB;IAZY,iBAAa,gBAYzB,CAAA;IAED;;;;;;;;;;;;;OAaG;IACH;QACS,kCAAY;QAEpB;;;;WAIG;QACH,wBAAmB,OAAe;YAEjC,kBAAM,OAAO,CAAC,CAAC;QAChB,CAAC;QACF,qBAAC;IAAD,CAAC,AAZD,CACS,YAAY,GAWpB;IAZY,kBAAc,iBAY1B,CAAA;IAED;;;;;;;;;;;;;;OAcG;IACH;QACS,8BAAY;QAEpB;;;;WAIG;QACH,oBAAmB,OAAe;YAEjC,kBAAM,OAAO,CAAC,CAAC;QAChB,CAAC;QACF,iBAAC;IAAD,CAAC,AAZD,CACS,YAAY,GAWpB;IAZY,cAAU,aAYtB,CAAA;IAED;;OAEG;IACH,IAAI,iBAAiB,GAAe,IAAI,CAAC;AAC1C,CAAC,EA3bS,GAAG,KAAH,GAAG,QA2bZ;ACrcD,+BAA+B;AAE/B,8CAA8C;AAC9C,4GAA4G;AAC5G,EAAE;AACF,+HAA+H;AAC/H,EAAE;AACF,4DAA4D;AAC5D,2CAA2C;AAE3C,IAAU,GAAG,CAkmBZ;AAlmBD,WAAU,GAAG,EACb,CAAC;IACA;;;;;;;;;;;;;OAaG;IACH,kBAA4B,CAAI,EAAE,CAAI;QAErC,EAAE,CAAC,CAAC,CAAC,YAAY,MAAM,IAAU,CAAE,CAAC,QAAQ,IAAI,SAAS,CAAC;YACzD,MAAM,CAAO,CAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI;YACH,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IANe,YAAQ,WAMvB,CAAA;IAED;;;;;;;;;;;;;OAaG;IACH,sBAAgC,CAAI,EAAE,CAAI;QAEzC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,CAAC;IAHe,gBAAY,eAG3B,CAAA;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,cAAwB,CAAI,EAAE,CAAI;QAEjC,EAAE,CAAC,CAAC,CAAC,YAAY,MAAM,CAAC;YACvB,EAAE,CAAC,CAAO,CAAE,CAAC,IAAI,IAAI,SAAS,CAAC;gBAC9B,MAAM,CAAO,CAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI;gBACH,MAAM,CAAO,CAAE,CAAC,YAAY,EAAE,GAAS,CAAE,CAAC,YAAY,EAAE,CAAC;QAC3D,IAAI;YACH,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IATe,QAAI,OASnB,CAAA;IAED;;;;;;;;;;;;;;OAcG;IACH,oBAA8B,CAAI,EAAE,CAAI;QAEvC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7C,CAAC;IAHe,cAAU,aAGzB,CAAA;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,iBAA2B,CAAI,EAAE,CAAI;QAEpC,MAAM,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,CAAC;IAHe,WAAO,UAGtB,CAAA;IAED;;;;;;;;;;;;;;OAcG;IACH,uBAAiC,CAAI,EAAE,CAAI;QAE1C,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxB,CAAC;IAHe,iBAAa,gBAG5B,CAAA;IAED;;;;;;;;;;;;;OAaG;IACH,qBAA+B,CAAI,EAAE,CAAI;QAExC,MAAM,CAAM,CAAC,IAAS,CAAC,CAAC;IACzB,CAAC;IAHe,eAAW,cAG1B,CAAA;IAED;;;;;;;;;;;;;OAaG;IACH,oBAA8B,CAAI,EAAE,CAAI;QAEvC,MAAM,CAAM,CAAC,IAAS,CAAC,CAAC;IACzB,CAAC;IAHe,cAAU,aAGzB,CAAA;IAED;;;;;;;;;;;;OAYG;IACH,qBAA+B,CAAI;QAElC,MAAM,CAAC,CAAM,CAAC,CAAC;IAChB,CAAC;IAHe,eAAW,cAG1B,CAAA;IAED;;;;;;;;;;OAUG;IACH,iBAAwB,CAAS,EAAE,CAAS;QAE3C,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;IACd,CAAC;IAHe,WAAO,UAGtB,CAAA;IAED;;;;;;;;;;OAUG;IACH,gBAAuB,CAAS,EAAE,CAAS;QAE1C,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;IACd,CAAC;IAHe,UAAM,SAGrB,CAAA;IAED;;;;;;;;;;OAUG;IACH,iBAAwB,CAAS,EAAE,CAAS;QAE3C,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;IACd,CAAC;IAHe,WAAO,UAGtB,CAAA;IA+JD,cAAqB,GAAQ;QAE5B,IAAI,IAAI,GAAW,OAAO,GAAG,CAAC;QAE9B,EAAE,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC;YACpB,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC;YACzB,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI;YACH,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAVe,QAAI,OAUnB,CAAA;IAED;;OAEG;IACH,wBAAwB,GAAW;QAElC,6CAA6C;QAC7C,SAAS;QACT,iCAAiC;QACjC,gCAAgC;QAChC,6CAA6C;QAC7C,kCAAkC;QAClC,IAAI,MAAM,GAAgB,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;QAC7C,IAAI,SAAS,GAAc,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,UAAU,GAAiB,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;QAExD,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QAEpB,IAAI,IAAI,GAAW,UAAU,CAAC;QAE9B,GAAG,CAAC,CAAC,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EACjD,CAAC;YACA,IAAI,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAElE,IAAI,IAAI,IAAI,CAAC;YACb,IAAI,IAAI,QAAQ,CAAC;QAClB,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,wBAAwB,GAAW;QAElC,IAAI,IAAI,GAAW,UAAU,CAAC;QAE9B,GAAG,CAAC,CAAC,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAC3C,CAAC;YACA,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,IAAI,QAAQ,CAAC;QAClB,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,wBAAwB,GAAW;QAElC,EAAE,CAAC,CAAO,GAAI,CAAC,IAAI,IAAI,SAAS,CAAC;YAChC,MAAM,CAAO,GAAI,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI;YACH,MAAM,CAAC,cAAc,CAAO,GAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IACnD,CAAC;IAED;;gEAE4D;IAC5D,iDAAiD;IACjD;;OAEG;IACH,IAAI,QAAgB,CAAA;IAEpB,EAAE,CAAC,CAAC,QAAQ,IAAI,SAAS,CAAC;QACzB,QAAQ,GAAG,CAAC,CAAC;IAEd,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,CAC7D,CAAC;QACA,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,EACvC;YACC,cAAc,EACd;gBACC,KAAK,EAAE;oBAEN,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,CAC7C,CAAC;wBACA,IAAI,GAAG,GAAW,EAAE,QAAQ,CAAC;wBAE7B,MAAM,CAAC,cAAc,CAEpB,IAAI,EAAE,UAAU,EAChB;4BACC,KAAK,EAAE;gCAEN,MAAM,CAAC,GAAG,CAAC;4BACZ,CAAC;yBACD,CACA,CAAC;oBACJ,CAAC;oBAED,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACtB,CAAC;aACD;SACD,CAAC,CAAC;IACL,CAAC;IAqGD,cAAqB,IAAS,EAAE,KAAU;QAEzC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;IAHe,QAAI,OAGnB,CAAA;AACF,CAAC,EAlmBS,GAAG,KAAH,GAAG,QAkmBZ;AAED,IAAU,GAAG,CAgIZ;AAhID,WAAU,GAAG,EACb,CAAC;IAyDA,cACE,EAA2B;QAAE,cAAc;aAAd,WAAc,CAAd,sBAAc,CAAd,IAAc;YAAd,6BAAc;;QAE5C,IAAI,QAAQ,GAAW,IAAI,CAAC;QAC5B,IAAI,UAAU,GAAU,EAAE,CAAC;QAC3B,IAAI,iBAAiB,GAAW,CAAC,CAAC;QAElC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAC5C,CAAC;YACA,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,gBAAY,CAAC,WAAW,IAAI,KAAK,CAAC,CAChG,CAAC;gBACA,gCAAgC;gBAChC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;oBACvB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CACvB,CAAC;wBACA,qBAAqB;wBACrB,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;wBACnB,KAAK,CAAC;oBACP,CAAC;gBACF,EAAE,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC;oBACpB,QAAQ,CAAC;YACX,CAAC;YAED,wCAAwC;YACxC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,gBAAY,CAAC,WAAW,CAAC;gBAC/C,iBAAiB,EAAE,CAAC;YACrB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;QAED,oBAAoB;QACpB,0BAA0B;QAC1B,oBAAoB;QACpB,IAAI,GAAG,GAAG;YAAU,cAAc;iBAAd,WAAc,CAAd,sBAAc,CAAd,IAAc;gBAAd,6BAAc;;YAEjC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;gBACpB,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAEvC,IAAI,OAAO,GAAW,QAAQ,CAAC;YAC/B,IAAI,QAAQ,GAAU,UAAU,CAAC,KAAK,EAAE,CAAC;YAEzC,2BAA2B;YAC3B,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,YAAY,gBAAY,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,MAAM,CAAC;gBACjI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;oBACvB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CACvB,CAAC;wBACA,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;wBAElB,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wBACtB,cAAc;wBAEd,KAAK,CAAC;oBACP,CAAC;YAEH,kCAAkC;YAClC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE;gBAC/C,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,gBAAY,CAAC,WAAW,CAAC;oBACnD,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAE5C,4CAA4C;YAC5C,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,iBAAiB,CAAC;gBACnC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAW,iBAAiB,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;oBAC3D,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI,CAAC,CAAC;wBACnD,QAAQ,CAAC,CAAC,UAAU;oBACrB,IAAI;wBACH,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAE1B,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpC,CAAC,CAAC;QACF,MAAM,CAAC,GAAG,CAAC;IACZ,CAAC;IArEe,QAAI,OAqEnB,CAAA;AACF,CAAC,EAhIS,GAAG,KAAH,GAAG,QAgIZ;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,IAAU,GAAG,CAoDZ;AApDD,WAAU,GAAG;IAAC,IAAA,YAAY,CAoDzB;IApDa,WAAA,YAAY,EAC1B,CAAC;QACA;;WAEG;QACH;YAIC,qBAAmB,KAAa;gBAE/B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACrB,CAAC;YAED,sBAAW,8BAAK;qBAAhB;oBAEC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;gBACpB,CAAC;;;eAAA;YACF,kBAAC;QAAD,CAAC,AAbD,IAaC;QAbY,wBAAW,cAavB,CAAA;QAED;;WAEG;QACU,eAAE,GAAgB,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;QAElD;;WAEG;QACU,eAAE,GAAgB,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;QAElD;;WAEG;QACU,eAAE,GAAgB,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;QAErC,eAAE,GAAgB,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;QACrC,eAAE,GAAgB,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;QACrC,eAAE,GAAgB,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;QACrC,eAAE,GAAgB,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;QACrC,eAAE,GAAgB,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;QACrC,eAAE,GAAgB,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;QACrC,gBAAG,GAAgB,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;QACvC,gBAAG,GAAgB,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;QACvC,gBAAG,GAAgB,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;QACvC,gBAAG,GAAgB,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;QACvC,gBAAG,GAAgB,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;QACvC,gBAAG,GAAgB,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;QACvC,gBAAG,GAAgB,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;QACvC,gBAAG,GAAgB,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;QACvC,gBAAG,GAAgB,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;QACvC,gBAAG,GAAgB,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;QACvC,gBAAG,GAAgB,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC,EApDa,YAAY,GAAZ,gBAAY,KAAZ,gBAAY,QAoDzB;AAAD,CAAC,EApDS,GAAG,KAAH,GAAG,QAoDZ;AC3zBD,+BAA+B;AAK/B,AAHA,0CAA0C;AAC1C,yCAAyC;AAQzC,IAAU,GAAG,CAuXZ;AAvXD,WAAU,GAAG,EACb,CAAC;IACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgDG;IACH;QACS,2BAAsB;QAD/B;YACS,8BAAsB;QAkU/B,CAAC;QA1TA;;;;;;oEAM4D;QAC5D,KAAK;QACL,2BAA2B;QAC3B,KAAK;QAEL;;WAEG;QACO,sBAAI,GAAd;YAEC,gBAAK,CAAC,IAAI,WAAE,CAAC;YAEb,IAAI,CAAC,aAAa,GAAG,IAAI,QAAI,CAAC,cAAc,CAAS,IAAI,CAAC,CAAC;QAC5D,CAAC;QAED;;WAEG;QACO,sCAAoB,GAA9B,UAA+B,KAA0B;YAExD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,QAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAE1D,gBAAK,CAAC,oBAAoB,YAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QAED;;oEAE4D;QAC5D;;WAEG;QACI,uBAAK,GAAZ;YAEC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YAE3B,gBAAK,CAAC,KAAK,WAAE,CAAC;QACf,CAAC;QAED;;;;;;oEAM4D;QAC5D;;WAEG;QACI,sBAAI,GAAX,UAAY,GAAQ;YAEnB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrC,CAAC;QAYM,uBAAK,GAAZ,UAAa,KAAc;YAE1B,EAAE,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC;gBACtB,MAAM,CAAC,gBAAK,CAAC,KAAK,WAAE,CAAC;YACtB,IAAI;gBACH,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QAC9C,CAAC;QAYM,qBAAG,GAAV,UAAW,KAAc;YAExB,EAAE,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC;gBACtB,MAAM,CAAC,gBAAK,CAAC,GAAG,WAAE,CAAC;YACpB,IAAI;gBACH,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;QACpD,CAAC;QAYM,wBAAM,GAAb,UAAc,KAAc;YAE3B,EAAE,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC;gBACtB,MAAM,CAAC,gBAAK,CAAC,MAAM,WAAE,CAAC;YACvB,IAAI;gBACH,MAAM,CAAC,IAAI,sBAAkB,CAAS,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACzD,CAAC;QAYM,sBAAI,GAAX,UAAY,KAAc;YAEzB,EAAE,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC;gBACtB,MAAM,CAAC,gBAAK,CAAC,IAAI,WAAE,CAAC;YACrB,IAAI;gBACH,MAAM,CAAC,IAAI,sBAAkB,CAAS,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3D,CAAC;QAED;;oEAE4D;QAC5D;;WAEG;QACI,8BAAY,GAAnB;YAEC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAClC,CAAC;QAED;;WAEG;QACI,6BAAW,GAAlB,UAAmB,KAAa;YAE/B,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5C,CAAC;QAYM,iCAAe,GAAtB,UAAuB,CAAU;YAEhC,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;gBAClB,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAC1C,IAAI;gBACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC;QAED;;WAEG;QACI,wBAAM,GAAb,UAAc,GAAQ;YAErB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAClD,CAAC;QAED;;WAEG;QACI,yBAAO,GAAd,UAAe,CAAS;YAEvB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QAClE,CAAC;QAED;;WAEG;QACI,wBAAM,GAAb,UAAc,CAAS;YAEtB,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC5B,MAAM,CAAC;YAER,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC;QAED;;;;;;oEAM4D;QAC5D;;WAEG;QACO,gCAAc,GAAxB,UAAyB,IAAkB;YAE1C,qBAAqB;YACrB,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/B,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC;gBACpC,MAAM,CAAC,aAAS,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAE7B,SAAS;YACT,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC3B,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;YAEf,eAAe;YACf,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;YAElC,MAAM,CAAC,aAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC;QAED;;WAEG;QACO,gCAAc,GAAxB,UAAyB,IAAyB,EAAE,IAAkB;YAErE,WAAW;YACX,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;gBAChC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAEnB,SAAS;YACT,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,CAAC;YAEhE,eAAe;YACf,IAAI,EAAE,GAAG,IAAI,eAAW,CAAS,IAAI,EAAE,OAAO,CAAC,CAAC;YAChD,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;YAElC,MAAM,CAAC,EAAE,CAAC;QACX,CAAC;QAED;;WAEG;QACO,iCAAe,GAAzB,UACE,KAAoB,EAAE,IAAmB;YAE1C,IAAI,QAAQ,GAAwB,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;YACtD,IAAI,IAAI,GAAW,CAAC,CAAC;YAErB,kBAAkB;YAClB,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAmB,EACnE,CAAC;gBACA,oBAAoB;gBACpB,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAC/B,QAAQ,CAAC;gBAEV,UAAU;gBACV,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,aAAS,CAAS,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC/E,IAAI,EAAE,CAAC;YACR,CAAC;YACD,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YAE3B,+CAA+C;YAC/C,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,QAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gBACxE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,QAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEnE,eAAe;YACf,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1C,CAAC;QAED;;oEAE4D;QAC5D;;WAEG;QACO,+BAAa,GAAvB,UAAwB,KAA0B,EAAE,IAAyB;YAE5E,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE;gBACjD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QAED;;WAEG;QACO,8BAAY,GAAtB,UAAuB,KAA0B,EAAE,IAAyB;YAE3E,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE;gBACjD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;QAED;;0EAEkE;QAClE;;WAEG;QACI,sBAAI,GAAX,UAAY,GAA2B;YAEtC,EAAE,CAAC,CAAC,GAAG,YAAY,OAAO,CAAC;gBAC1B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YACzB,IAAI;gBACH,gBAAK,CAAC,IAAI,YAAC,GAAG,CAAC,CAAC;QAClB,CAAC;QAED;;WAEG;QACK,+BAAa,GAArB,UAAsB,GAAoB;YAEzC,4BAAiD,EAAhD,kBAAU,EAAE,iBAAS,CAA4B;YAClD,4CAAiF,EAAhF,0BAAkB,EAAE,yBAAiB,CAA4C;;QACnF,CAAC;QACF,cAAC;IAAD,CAAC,AAnUD,CACS,QAAI,CAAC,SAAS,GAkUtB;IAnUY,WAAO,UAmUnB,CAAA;AACF,CAAC,EAvXS,GAAG,KAAH,GAAG,QAuXZ;AClYD,+BAA+B;AAI/B,AAFA,yCAAyC;AAQzC,IAAU,GAAG,CA0WZ;AA1WD,WAAU,GAAG,EACb,CAAC;IACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgDG;IACH;QACS,gCAAqB;QAD9B;YACS,8BAAqB;QAqT9B,CAAC;QA9SA;;;;;;oEAM4D;QAC5D,KAAK;QACL,2BAA2B;QAC3B,KAAK;QAEL;;WAEG;QACO,2BAAI,GAAd;YAEC,gBAAK,CAAC,IAAI,WAAE,CAAC;YAEb,IAAI,CAAC,aAAa,GAAG,IAAI,QAAI,CAAC,cAAc,CAAS,IAAI,CAAC,CAAC;QAC5D,CAAC;QAED;;WAEG;QACO,2CAAoB,GAA9B,UAA+B,KAA0B;YAExD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,QAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAE1D,gBAAK,CAAC,oBAAoB,YAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QAED;;oEAE4D;QAC5D;;WAEG;QACI,4BAAK,GAAZ;YAEC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YAE3B,gBAAK,CAAC,KAAK,WAAE,CAAC;QACf,CAAC;QAED;;;;;;oEAM4D;QAC5D;;WAEG;QACI,2BAAI,GAAX,UAAY,GAAQ;YAEnB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrC,CAAC;QAED;;WAEG;QACI,4BAAK,GAAZ,UAAa,GAAQ;YAEpB,sBAAsB;YACtB,IAAI,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;YAC3D,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YAE1C,qBAAqB;YACrB,IAAI,GAAG,GAAW,CAAC,CAAC;YACpB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE;gBACrC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBACtC,GAAG,EAAE,CAAC;YAER,MAAM,CAAC,GAAG,CAAC;QACZ,CAAC;QAYM,4BAAK,GAAZ,UAAa,KAAc;YAE1B,EAAE,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC;gBACtB,MAAM,CAAC,gBAAK,CAAC,KAAK,WAAE,CAAC;YACtB,IAAI;gBACH,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QAC9C,CAAC;QAYM,0BAAG,GAAV,UAAW,KAAc;YAExB,EAAE,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC;gBACtB,MAAM,CAAC,gBAAK,CAAC,GAAG,WAAE,CAAC;YACpB,IAAI;gBACH,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;QACpD,CAAC;QAYM,6BAAM,GAAb,UAAc,KAAc;YAE3B,MAAM,CAAC,IAAI,sBAAkB,CAAS,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACxD,CAAC;QAYM,2BAAI,GAAX,UAAY,KAAc;YAEzB,MAAM,CAAC,IAAI,sBAAkB,CAAS,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED;;oEAE4D;QAC5D;;WAEG;QACI,mCAAY,GAAnB;YAEC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAClC,CAAC;QAED;;WAEG;QACI,kCAAW,GAAlB,UAAmB,CAAS;YAE3B,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,CAAC;QAYM,sCAAe,GAAtB,UAAuB,CAAU;YAEhC,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;gBAClB,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAC1C,IAAI;gBACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC;QAED;;WAEG;QACI,6BAAM,GAAb,UAAc,GAAQ;YAErB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAClD,CAAC;QAED;;WAEG;QACI,8BAAO,GAAd,UAAe,CAAS;YAEvB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QAClE,CAAC;QAED;;WAEG;QACI,6BAAM,GAAb,UAAc,CAAS;YAEtB,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC5B,MAAM,CAAC;YAER,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC;QAED;;;;;;oEAM4D;QAC5D;;WAEG;QACO,qCAAc,GAAxB,UAAyB,IAAkB;YAE1C,SAAS;YACT,IAAI,EAAE,GAAG,IAAI,eAAW,CAAS,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;YAElF,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,eAAe;YAClD,MAAM,CAAC,EAAE,CAAC;QACX,CAAC;QAED;;WAEG;QACO,qCAAc,GAAxB,UAAyB,IAAyB,EAAE,IAAkB;YAErE,SAAS;YACT,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,CAAC;YAEhE,eAAe;YACf,IAAI,EAAE,GAAG,IAAI,eAAW,CAAS,IAAI,EAAE,OAAO,CAAC,CAAC;YAChD,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;YAElC,MAAM,CAAC,EAAE,CAAC;QACX,CAAC;QAED;;WAEG;QACO,sCAAe,GAAzB,UACE,KAAoB,EAAE,IAAmB;YAE1C,kBAAkB;YAClB,IAAI,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACrE,IAAI,QAAQ,GAAG,IAAI,eAAW,CAAS,IAAI,EAAE,aAAa,CAAC,CAAC;YAE5D,+CAA+C;YAC/C,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,QAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gBACtE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,QAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAE1D,eAAe;YACf,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1C,CAAC;QAED;;oEAE4D;QAC5D;;WAEG;QACO,oCAAa,GAAvB,UAAwB,KAA0B,EAAE,IAAyB;YAE5E,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE;gBACjD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QAED;;WAEG;QACO,mCAAY,GAAtB,UAAuB,KAA0B,EAAE,IAAyB;YAE3E,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE;gBACjD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;QAED;;0EAEkE;QAClE;;WAEG;QACI,2BAAI,GAAX,UAAY,GAA0B;YAErC,EAAE,CAAC,CAAC,GAAG,YAAY,YAAY,CAAC;gBAC/B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI;gBACH,gBAAK,CAAC,IAAI,YAAC,GAAG,CAAC,CAAC;QAClB,CAAC;QAED;;WAEG;QACK,yCAAkB,GAA1B,UAA2B,GAAyB;YAEnD,4BAAiD,EAAhD,kBAAU,EAAE,iBAAS,CAA4B;YAClD,4CAAiF,EAAhF,0BAAkB,EAAE,yBAAiB,CAA4C;;QACnF,CAAC;QACF,mBAAC;IAAD,CAAC,AAtTD,CACS,QAAI,CAAC,QAAQ,GAqTrB;IAtTY,gBAAY,eAsTxB,CAAA;AACF,CAAC,EA1WS,GAAG,KAAH,GAAG,QA0WZ;ACpXD,+BAA+B;AAI/B,AAFA,yCAAyC;AAQzC,IAAU,GAAG,CA2WZ;AA3WD,WAAU,GAAG,EACb,CAAC;IACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2CG;IACH;QACS,gCAAgB;QADzB;YACS,8BAAgB;YAExB;;eAEG;YACK,kBAAa,GAA2B,IAAI,QAAI,CAAC,cAAc,CAAI,IAAI,CAAC,CAAC;QAsTlF,CAAC;QApTA;;;;;;oEAM4D;QAC5D,KAAK;QACL,2BAA2B;QAC3B,KAAK;QAEL;;WAEG;QACO,2BAAI,GAAd;YAEC,gBAAK,CAAC,IAAI,WAAE,CAAC;YAEb,IAAI,CAAC,aAAa,GAAG,IAAI,QAAI,CAAC,cAAc,CAAI,IAAI,CAAC,CAAC;QACvD,CAAC;QAED;;WAEG;QACO,2CAAoB,GAA9B,UAA+B,KAAe;YAE7C,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,QAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAE1D,gBAAK,CAAC,oBAAoB,YAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QAED;;oEAE4D;QAC5D;;WAEG;QACI,4BAAK,GAAZ;YAEC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YAE3B,gBAAK,CAAC,KAAK,WAAE,CAAC;QACf,CAAC;QAED;;;;;;oEAM4D;QAC5D;;WAEG;QACI,2BAAI,GAAX,UAAY,GAAM;YAEjB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrC,CAAC;QAED;;WAEG;QACI,4BAAK,GAAZ,UAAa,GAAM;YAElB,sBAAsB;YACtB,IAAI,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;YAC3D,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YAE1C,qBAAqB;YACrB,IAAI,GAAG,GAAW,CAAC,CAAC;YACpB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE;gBACrC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBACtC,GAAG,EAAE,CAAC;YAER,MAAM,CAAC,GAAG,CAAC;QACZ,CAAC;QAYM,4BAAK,GAAZ,UAAa,KAAc;YAE1B,EAAE,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC;gBACtB,MAAM,CAAC,gBAAK,CAAC,KAAK,WAAE,CAAC;YACtB,IAAI;gBACH,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QAC9C,CAAC;QAYM,0BAAG,GAAV,UAAW,KAAc;YAExB,EAAE,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC;gBACtB,MAAM,CAAC,gBAAK,CAAC,GAAG,WAAE,CAAC;YACpB,IAAI;gBACH,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;QACpD,CAAC;QAYM,6BAAM,GAAb,UAAc,KAAc;YAE3B,EAAE,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC;gBACtB,MAAM,CAAC,gBAAK,CAAC,MAAM,WAAE,CAAC;YACvB,IAAI;gBACH,MAAM,CAAC,IAAI,sBAAkB,CAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACpD,CAAC;QAYM,2BAAI,GAAX,UAAY,KAAc;YAEzB,EAAE,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC;gBACtB,MAAM,CAAC,gBAAK,CAAC,IAAI,WAAE,CAAC;YACrB,IAAI;gBACH,MAAM,CAAC,IAAI,sBAAkB,CAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACtD,CAAC;QAED;;oEAE4D;QAC5D;;WAEG;QACI,mCAAY,GAAnB;YAEC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAClC,CAAC;QAED;;WAEG;QACI,kCAAW,GAAlB,UAAmB,CAAS;YAE3B,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,CAAC;QAYM,sCAAe,GAAtB,UAAuB,CAAU;YAEhC,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;gBAClB,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAC1C,IAAI;gBACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC;QAED;;WAEG;QACI,6BAAM,GAAb,UAAc,GAAM;YAEnB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAClD,CAAC;QAED;;WAEG;QACI,8BAAO,GAAd,UAAe,CAAS;YAEvB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QAClE,CAAC;QAED;;WAEG;QACI,6BAAM,GAAb,UAAc,CAAS;YAEtB,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC5B,MAAM,CAAC;YAER,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC;QAED;;;;;;oEAM4D;QAC5D;;WAEG;QACO,oCAAa,GAAvB,UAAwB,GAAM;YAE7B,SAAS;YACT,IAAI,EAAE,GAAG,IAAI,eAAW,CAAI,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;YAE5E,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,eAAe;YAClD,MAAM,CAAC,EAAE,CAAC;QACX,CAAC;QAED;;WAEG;QACO,qCAAc,GAAxB,UAAyB,IAAoB,EAAE,GAAM;YAEpD,SAAS;YACT,IAAI,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,GAAG,CAAC,CAAC;YAErE,eAAe;YACf,IAAI,EAAE,GAAG,IAAI,eAAW,CAAI,IAAI,EAAE,aAAa,CAAC,CAAC;YACjD,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;YAElC,MAAM,CAAC,EAAE,CAAC;QACX,CAAC;QAED;;WAEG;QACO,sCAAe,GAAzB,UACE,KAAoB,EAAE,IAAmB;YAE1C,kBAAkB;YAClB,IAAI,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACrE,IAAI,QAAQ,GAAG,IAAI,eAAW,CAAI,IAAI,EAAE,aAAa,CAAC,CAAC;YAEvD,+CAA+C;YAC/C,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,QAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gBACtE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,QAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAE1D,eAAe;YACf,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1C,CAAC;QAED;;oEAE4D;QAC5D;;WAEG;QACO,oCAAa,GAAvB,UAAwB,KAAqB,EAAE,IAAoB;YAElE,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE;gBACjD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QAED;;WAEG;QACO,mCAAY,GAAtB,UAAuB,KAAqB,EAAE,IAAoB;YAEjE,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE;gBACjD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;QAED;;0EAEkE;QAClE;;WAEG;QACI,2BAAI,GAAX,UAAY,GAAqB;YAEhC,EAAE,CAAC,CAAC,GAAG,YAAY,YAAY,CAAC;gBAC/B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YACzB,IAAI;gBACH,gBAAK,CAAC,IAAI,YAAC,GAAG,CAAC,CAAC;QAClB,CAAC;QAED;;WAEG;QACK,oCAAa,GAArB,UAAsB,GAAoB;YAEzC,4BAAiD,EAAhD,kBAAU,EAAE,iBAAS,CAA4B;YAClD,4CAAiF,EAAhF,0BAAkB,EAAE,yBAAiB,CAA4C;;QACnF,CAAC;QACF,mBAAC;IAAD,CAAC,AA5TD,CACS,QAAI,CAAC,QAAQ,GA2TrB;IA5TY,gBAAY,eA4TxB,CAAA;AACF,CAAC,EA3WS,GAAG,KAAH,GAAG,QA2WZ;ACrXD,+BAA+B;AAI/B,AAFA,0CAA0C;AAQ1C,IAAU,GAAG,CAgXZ;AAhXD,WAAU,GAAG,EACb,CAAC;IACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2CG;IACH;QACS,2BAAiB;QAD1B;YACS,8BAAiB;YAEzB;;eAEG;YACK,kBAAa,GAA2B,IAAI,QAAI,CAAC,cAAc,CAAI,IAAI,CAAC,CAAC;QA2TlF,CAAC;QAzTA;;;;;;oEAM4D;QAC5D,KAAK;QACL,2BAA2B;QAC3B,KAAK;QAEL;;WAEG;QACO,sBAAI,GAAd;YAEC,gBAAK,CAAC,IAAI,WAAE,CAAC;YAEb,IAAI,CAAC,aAAa,GAAG,IAAI,QAAI,CAAC,cAAc,CAAI,IAAI,CAAC,CAAC;QACvD,CAAC;QAED;;WAEG;QACO,sCAAoB,GAA9B,UAA+B,KAAe;YAE7C,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,QAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAE1D,gBAAK,CAAC,oBAAoB,YAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QAED;;oEAE4D;QAC5D;;WAEG;QACI,uBAAK,GAAZ;YAEC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YAE3B,gBAAK,CAAC,KAAK,WAAE,CAAC;QACf,CAAC;QAED;;;;;;oEAM4D;QAC5D;;WAEG;QACI,sBAAI,GAAX,UAAY,GAAM;YAEjB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrC,CAAC;QAYM,uBAAK,GAAZ,UAAa,KAAc;YAE1B,EAAE,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC;gBACtB,MAAM,CAAC,gBAAK,CAAC,KAAK,WAAE,CAAC;YACtB,IAAI;gBACH,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QAC9C,CAAC;QAYM,qBAAG,GAAV,UAAW,KAAc;YAExB,EAAE,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC;gBACtB,MAAM,CAAC,gBAAK,CAAC,GAAG,WAAE,CAAC;YACpB,IAAI;gBACH,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;QACpD,CAAC;QAYM,wBAAM,GAAb,UAAc,KAAc;YAE3B,EAAE,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC;gBACtB,MAAM,CAAC,gBAAK,CAAC,MAAM,WAAE,CAAC;YACvB,IAAI;gBACH,MAAM,CAAC,IAAI,sBAAkB,CAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACpD,CAAC;QAYM,sBAAI,GAAX,UAAY,KAAc;YAEzB,EAAE,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC;gBACtB,MAAM,CAAC,gBAAK,CAAC,IAAI,WAAE,CAAC;YACrB,IAAI;gBACH,MAAM,CAAC,IAAI,sBAAkB,CAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACtD,CAAC;QAED;;oEAE4D;QAC5D;;WAEG;QACI,8BAAY,GAAnB;YAEC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAClC,CAAC;QAED;;WAEG;QACI,6BAAW,GAAlB,UAAmB,CAAS;YAE3B,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,CAAC;QAYM,iCAAe,GAAtB,UAAuB,CAAU;YAEhC,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;gBAClB,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAC1C,IAAI;gBACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC;QAED;;WAEG;QACI,wBAAM,GAAb,UAAc,GAAM;YAEnB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAClD,CAAC;QAED;;WAEG;QACI,yBAAO,GAAd,UAAe,CAAS;YAEvB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QAClE,CAAC;QAED;;WAEG;QACI,wBAAM,GAAb,UAAc,CAAS;YAEtB,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC5B,MAAM,CAAC;YAER,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC;QAED;;;;;;oEAM4D;QAC5D;;WAEG;QACO,+BAAa,GAAvB,UAAwB,GAAM;YAE7B,qBAAqB;YACrB,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACxB,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC;gBACpC,MAAM,CAAC,aAAS,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAE7B,SAAS;YACT,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAC1B,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;YAEf,eAAe;YACf,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;YAElC,MAAM,CAAC,aAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC;QAED;;WAEG;QACO,gCAAc,GAAxB,UAAyB,IAAoB,EAAE,GAAM;YAEpD,WAAW;YACX,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;gBACzB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAEnB,SAAS;YACT,IAAI,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,GAAG,CAAC,CAAC;YAErE,eAAe;YACf,IAAI,EAAE,GAAG,IAAI,eAAW,CAAI,IAAI,EAAE,aAAa,CAAC,CAAC;YACjD,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;YAElC,MAAM,CAAC,EAAE,CAAC;QACX,CAAC;QAED;;WAEG;QACO,iCAAe,GAAzB,UACE,KAAoB,EAAE,IAAmB;YAE1C,IAAI,QAAQ,GAAmB,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;YACjD,IAAI,IAAI,GAAW,CAAC,CAAC;YAErB,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAmB,EACnE,CAAC;gBACA,oBAAoB;gBACpB,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACzB,QAAQ,CAAC;gBAEV,UAAU;gBACV,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAClC,IAAI,EAAE,CAAC;YACR,CAAC;YACD,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YAE3B,+CAA+C;YAC/C,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,QAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gBACxE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,QAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEnE,UAAU;YACV,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1C,CAAC;QAED;;oEAE4D;QAC5D;;WAEG;QACO,+BAAa,GAAvB,UAAwB,KAAqB,EAAE,IAAoB;YAElE,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE;gBACjD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QAED;;WAEG;QACO,8BAAY,GAAtB,UAAuB,KAAqB,EAAE,IAAoB;YAEjE,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE;gBACjD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;QAED;;0EAEkE;QAClE;;WAEG;QACI,sBAAI,GAAX,UAAY,GAAsB;YAEjC,EAAE,CAAC,CAAC,GAAG,YAAY,OAAO,CAAC;gBAC1B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YACzB,IAAI;gBACH,gBAAK,CAAC,IAAI,YAAC,GAAG,CAAC,CAAC;QAClB,CAAC;QAED;;WAEG;QACK,+BAAa,GAArB,UAAsB,GAAe;YAEpC,4BAAiD,EAAhD,kBAAU,EAAE,iBAAS,CAA4B;YAClD,4CAAiF,EAAhF,0BAAkB,EAAE,yBAAiB,CAA4C;;QACnF,CAAC;QACF,cAAC;IAAD,CAAC,AAjUD,CACS,QAAI,CAAC,SAAS,GAgUtB;IAjUY,WAAO,UAiUnB,CAAA;AACF,CAAC,EAhXS,GAAG,KAAH,GAAG,QAgXZ;AC1XD,+BAA+B;AAI/B,AAFA,oCAAoC;AAQpC,IAAU,GAAG,CAutBZ;AAvtBD,WAAU,GAAG,EACb,CAAC;IACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsDG;IACH;QACS,0BAAQ;QA+DhB;YAAmB,cAAc;iBAAd,WAAc,CAAd,sBAAc,CAAd,IAAc;gBAAd,6BAAc;;YAEhC,iBAAO,CAAC;YAER,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CACrB,CAAC;YAED,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,CACtD,CAAC;gBACA,mCAAmC;gBACnC,IAAI,KAAK,GAAa,IAAI,CAAC,CAAC,CAAC,CAAC;gBAE9B,gBAAK,CAAC,IAAI,aAAI,KAAK,CAAC,CAAC;YACtB,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CACxD,CAAC;gBACA,sBAAsB;gBACtB,IAAI,IAAI,GAAW,IAAI,CAAC,CAAC,CAAC,CAAC;gBAE3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACpB,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CACxD,CAAC;gBACA,0CAA0C;gBAC1C,IAAI,IAAI,GAAW,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC3B,IAAI,GAAG,GAAM,IAAI,CAAC,CAAC,CAAC,CAAC;gBAErB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACxB,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,QAAI,CAAC,SAAS,CAAC,CAAC,CAC9F,CAAC;gBACA,mBAAmB;gBACnB,IAAI,SAAS,GAAyC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAE9D,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;YACjD,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,YAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,YAAQ,CAAC,CACxF,CAAC;gBACA,iCAAiC;gBACjC,IAAI,OAAK,GAAgB,IAAI,CAAC,CAAC,CAAC,CAAC;gBACjC,IAAI,KAAG,GAAgB,IAAI,CAAC,CAAC,CAAC,CAAC;gBAE/B,IAAI,CAAC,MAAM,CAAC,OAAK,EAAE,KAAG,CAAC,CAAC;YACzB,CAAC;QACF,CAAC;QAgBM,uBAAM,GAAb,UACE,KAAU,EAAE,MAAW;YAExB,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACxC,CAAC;QAED;;WAEG;QACI,wBAAO,GAAd,UAAe,IAAY;YAE1B,2BAA2B;QAC5B,CAAC;QAED;;WAEG;QACI,sBAAK,GAAZ;YAEC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACtC,CAAC;QAED;;oEAE4D;QAC5D;;WAEG;QACI,sBAAK,GAAZ;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACnB,IAAI;gBACH,MAAM,CAAC,IAAI,kBAAc,CAAI,IAAI,EAAE,CAAC,CAAC,CAAC;QACxC,CAAC;QAED;;WAEG;QACI,oBAAG,GAAV;YAEC,MAAM,CAAC,IAAI,kBAAc,CAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC;QAED;;WAEG;QACI,uBAAM,GAAb;YAEC,MAAM,CAAC,IAAI,yBAAqB,CAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACjD,CAAC;QAED;;WAEG;QACI,qBAAI,GAAX;YAEC,MAAM,CAAC,IAAI,yBAAqB,CAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACnD,CAAC;QAED;;WAEG;QACI,qBAAI,GAAX;YAEC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACpB,CAAC;QAED;;WAEG;QACI,yBAAQ,GAAf;YAEC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACpB,CAAC;QAED;;WAEG;QACI,sBAAK,GAAZ;YAEC,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QACzB,CAAC;QAED;;WAEG;QACI,mBAAE,GAAT,UAAU,KAAa;YAEtB,EAAE,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI;gBACH,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,6CAA6C,CAAC,CAAC;QAC1E,CAAC;QAED;;WAEG;QACI,oBAAG,GAAV,UAAW,KAAa,EAAE,GAAM;YAE/B,EAAE,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;gBACvB,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,6CAA6C,CAAC,CAAC;YAEzE,IAAI,IAAI,GAAM,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;YAElB,MAAM,CAAC,IAAI,CAAC;QACb,CAAC;QAED;;WAEG;QACI,sBAAK,GAAZ;YAEC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;QAED;;WAEG;QACI,qBAAI,GAAX;YAEC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjC,CAAC;QAED;;;;;;oEAM4D;QAC5D;;WAEG;QACI,0BAAS,GAAhB,UAAiB,GAAM;YAEtB,gBAAK,CAAC,IAAI,YAAC,GAAG,CAAC,CAAC;QACjB,CAAC;QAoJM,uBAAM,GAAb;YAA2B,cAAc;iBAAd,WAAc,CAAd,sBAAc,CAAd,IAAc;gBAAd,6BAAc;;YAExC,+BAA+B;YAC/B,IAAI,GAAsB,CAAC;YAC3B,IAAI,mBAAmB,GAAY,KAAK,CAAC;YAEzC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,yBAAqB,CAAC,CAC7C,CAAC;gBACA,mBAAmB,GAAG,IAAI,CAAC;gBAC3B,IAAI,CAAC,CAAC,CAAC,GAAI,IAAI,CAAC,CAAC,CAA8B,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;YAC/D,CAAC;YAED,WAAW;YACX,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;gBACpB,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;gBACvD,GAAG,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/D,IAAI;gBACH,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAEvD,UAAU;YACV,EAAE,CAAC,CAAC,mBAAmB,IAAI,IAAI,CAAC;gBAC/B,MAAM,CAAC,IAAI,yBAAqB,CAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YACjD,IAAI;gBACH,MAAM,CAAC,GAAG,CAAC;QACb,CAAC;QAED;;WAEG;QACK,8BAAa,GAArB,UAAsB,QAA2B,EAAE,GAAM;YAExD,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QACvD,CAAC;QAED;;WAEG;QACO,wCAAuB,GAAjC,UAAkC,QAA2B,EAAE,CAAS,EAAE,GAAM;YAE/E,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CACzB,CAAC;gBACA,0BAA0B;gBAC1B,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;oBACzB,gBAAK,CAAC,IAAI,YAAC,GAAG,CAAC,CAAC;gBAEjB,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACrB,CAAC;YACD,IAAI,CACJ,CAAC;gBACA,OAAO;gBACP,gCAAgC;gBAChC,OAAO;gBACP,iBAAiB;gBACjB,IAAI,aAAa,GAAG,gBAAK,CAAC,MAAM,YAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACjD,IAAI,WAAW,GAAW,CAAC,CAAC;gBAE5B,kBAAkB;gBAClB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAC1B,CAAC;oBACA,gBAAK,CAAC,IAAI,YAAC,GAAG,CAAC,CAAC;oBAChB,WAAW,EAAE,CAAC;gBACf,CAAC;gBACD,gBAAK,CAAC,IAAI,aAAI,aAAa,CAAC,CAAC,CAAC,sBAAsB;gBAEpD,MAAM,CAAC,QAAQ,CAAC;YACjB,CAAC;QACF,CAAC;QAED;;WAEG;QACO,gCAAe,GAAzB,UACE,QAA2B,EAAE,KAAoB,EAAE,IAAmB;YAEvE,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CACzB,CAAC;gBACA,0BAA0B;gBAC1B,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAmB;oBAClE,gBAAK,CAAC,IAAI,YAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAEzB,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACrB,CAAC;YACD,IAAI,CACJ,CAAC;gBACA,OAAO;gBACP,gCAAgC;gBAChC,OAAO;gBACP,iBAAiB;gBACjB,IAAI,aAAa,GAAG,gBAAK,CAAC,MAAM,YAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACjD,IAAI,WAAW,GAAW,CAAC,CAAC;gBAE5B,kBAAkB;gBAClB,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAmB,EACnE,CAAC;oBACA,gBAAK,CAAC,IAAI,YAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACxB,WAAW,EAAE,CAAC;gBACf,CAAC;gBACD,gBAAK,CAAC,IAAI,aAAI,aAAa,CAAC,CAAC,CAAC,sBAAsB;gBAEpD,MAAM,CAAC,QAAQ,CAAC;YACjB,CAAC;QACF,CAAC;QAED;;oEAE4D;QAC5D;;WAEG;QACI,yBAAQ,GAAf;YAEC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/B,CAAC;QAoFM,sBAAK,GAAZ,UAAa,KAAU,EAAE,IAAwB;YAAxB,oBAAwB,GAAxB,OAAY,KAAK,CAAC,IAAI,EAAE;YAEhD,IAAI,GAAsB,CAAC;YAC3B,IAAI,mBAAmB,GAAY,KAAK,CAAC;YAEzC,+BAA+B;YAC/B,EAAE,CAAC,CAAC,KAAK,YAAY,yBAAqB,CAAC,CAC3C,CAAC;gBACA,mBAAmB,GAAG,IAAI,CAAC;gBAE3B,IAAI,QAAQ,GAAI,IAAiC,CAAC,IAAI,EAAE,CAAC;gBACzD,IAAI,OAAO,GAAI,KAAkC,CAAC,IAAI,EAAE,CAAC;gBAEzD,KAAK,GAAG,QAAQ,CAAC;gBACjB,IAAI,GAAG,OAAO,CAAC;YAChB,CAAC;YAED,iBAAiB;YACjB,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAEvC,kBAAkB;YAClB,EAAE,CAAC,CAAC,mBAAmB,IAAI,IAAI,CAAC;gBAC/B,MAAM,CAAC,IAAI,yBAAqB,CAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YACjD,IAAI;gBACH,MAAM,CAAC,GAAG,CAAC;QACb,CAAC;QAED;;WAEG;QACO,+BAAc,GAAxB,UAAyB,KAAwB,EAAE,IAAuB;YAEzE,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;gBACrB,MAAM,CAAC,KAAK,CAAC;YAEd,iBAAiB;YACjB,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CACrB,CAAC;gBACA,gBAAK,CAAC,MAAM,YAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC1B,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACnB,CAAC;YACD,IAAI;gBACH,gBAAK,CAAC,MAAM,YAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAErD,MAAM,CAAC,KAAK,CAAC;QACd,CAAC;QAED;;0EAEkE;QAClE;;WAEG;QACI,qBAAI,GAAX,UAAY,GAAuB;YAElC,IAAI,UAAU,GAAc,IAAI,MAAM,CAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YAEpE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;YACpC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;QAClD,CAAC;QACF,aAAC;IAAD,CAAC,AA7pBD,CACS,KAAK,GA4pBb;IA7pBY,UAAM,SA6pBlB,CAAA;AACF,CAAC,EAvtBS,GAAG,KAAH,GAAG,QAutBZ;AAED,IAAU,GAAG,CAoJZ;AApJD,WAAU,GAAG,EACb,CAAC;IACA;;;;;;;;;;OAUG;IACH;QACS,kCAAW;QAQnB;;oEAE4D;QAC5D;;;;;;;;;WASG;QACH,wBAAmB,MAAiB,EAAE,KAAa;YAElD,kBAAM,MAAM,CAAC,CAAC;YAEd,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACrB,CAAC;QAQD,sBAAY,kCAAM;YANlB;;wEAE4D;YAC5D;;eAEG;iBACH;gBAEC,MAAM,CAAC,IAAI,CAAC,OAAoB,CAAC;YAClC,CAAC;;;WAAA;QAKD,sBAAW,iCAAK;YAHhB;;eAEG;iBACH;gBAEC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpC,CAAC;YAED;;eAEG;iBACH,UAAiB,GAAM;gBAEtB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACnC,CAAC;;;WARA;QAaD,sBAAW,iCAAK;YAHhB;;eAEG;iBACH;gBAEC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YACpB,CAAC;;;WAAA;QAED;;oEAE4D;QAC5D;;WAEG;QACI,6BAAI,GAAX;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;gBACrB,MAAM,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;YAChE,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC5B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YAC1B,IAAI;gBACH,MAAM,CAAC,IAAI,cAAc,CAAI,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC7D,CAAC;QAED;;WAEG;QACI,6BAAI,GAAX;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBAC1C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YAC1B,IAAI;gBACH,MAAM,CAAC,IAAI,cAAc,CAAI,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC7D,CAAC;QAED;;WAEG;QACI,gCAAO,GAAd,UAAe,CAAS;YAEvB,IAAI,QAAQ,GAAW,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YAEvC,EAAE,CAAC,CAAC,QAAQ,GAAG,CAAC,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBAClD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YAC1B,IAAI;gBACH,MAAM,CAAC,IAAI,cAAc,CAAI,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACtD,CAAC;QAED;;oEAE4D;QAC5D;;;;;;;;;;;;;;WAcG;QACI,iCAAQ,GAAf,UAA6B,GAAsB;YAElD,MAAM,CAAC,gBAAK,CAAC,QAAQ,YAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC;QACzD,CAAC;QAED;;WAEG;QACI,6BAAI,GAAX,UAAY,GAAsB;YAEjC,4BAAiD,EAAhD,kBAAU,EAAE,iBAAS,CAA4B;;QACnD,CAAC;QACF,qBAAC;IAAD,CAAC,AAtID,CACS,YAAQ,GAqIhB;IAtIY,kBAAc,iBAsI1B,CAAA;AACF,CAAC,EApJS,GAAG,KAAH,GAAG,QAoJZ;AAED,IAAU,GAAG,CAoDZ;AApDD,WAAU,GAAG,EACb,CAAC;IACA;;;;;;;;;;OAUG;IACH;QACS,yCAA+D;QAGvE;;oEAE4D;QAC5D,+BAAmB,IAAuB;YAEzC,kBAAM,IAAI,CAAC,CAAC;QACb,CAAC;QAED;;WAEG;QACO,+CAAe,GAAzB;YAEC,MAAM,CAAC,IAAI,qBAAqB,CAAI,IAAI,CAAC,CAAC;QAC3C,CAAC;QAQD,sBAAW,wCAAK;YANhB;;wEAE4D;YAC5D;;eAEG;iBACH,UAAiB,GAAM;gBAEtB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;YACxB,CAAC;;;WAAA;QAKD,sBAAW,wCAAK;YAHhB;;eAEG;iBACH;gBAEC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YACzB,CAAC;;;WAAA;QACF,4BAAC;IAAD,CAAC,AAtCD,CACS,mBAAe,GAqCvB;IAtCY,yBAAqB,wBAsCjC,CAAA;AACF,CAAC,EApDS,GAAG,KAAH,GAAG,QAoDZ;AC76BD,+BAA+B;AAE/B,IAAU,GAAG,CAwLZ;AAxLD,WAAU,GAAG,EACb,CAAC;IACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;IACH;QAoBC,eAAmB,KAAsB;YAAtB,qBAAsB,GAAtB,YAAsB;YAExC,IAAI,CAAC,UAAU,GAAG,IAAI,QAAI,EAAK,CAAC;YAEhC,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC;gBACjB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3E,CAAC;QAED;;oEAE4D;QAC5D;;;;;;;;WAQG;QACI,oBAAI,GAAX;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAC/B,CAAC;QAED;;;;;;;;;WASG;QACI,qBAAK,GAAZ;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAChC,CAAC;QAED;;;;;;;;;;;WAWG;QACI,qBAAK,GAAZ;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAChC,CAAC;QAED;;;;;;;;;;WAUG;QACI,oBAAI,GAAX;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAC/B,CAAC;QAED;;oEAE4D;QAC5D;;;;;;;;;;WAUG;QACI,oBAAI,GAAX,UAAY,GAAM;YAEjB,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;QAED;;;;;;;;;;WAUG;QACI,mBAAG,GAAV;YAEC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;QAC7B,CAAC;QAED;;;;;;;;;;WAUG;QACI,oBAAI,GAAX,UAAY,GAAa;YAExB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACtC,CAAC;QACF,YAAC;IAAD,CAAC,AA/ID,IA+IC;IA/IY,SAAK,QA+IjB,CAAA;AACF,CAAC,EAxLS,GAAG,KAAH,GAAG,QAwLZ;AAED,IAAU,GAAG,CAgSZ;AAhSD,WAAU,GAAG,EACb,CAAC;IACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAuCG;IACH;QAwFC;YAAmB,cAAc;iBAAd,WAAc,CAAd,sBAAc,CAAd,IAAc;gBAAd,6BAAc;;YAEhC,8CAA8C;YAC9C,IAAI,OAAuC,CAAC;YAE5C,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,YAAY,QAAQ,IAAI,KAAK,CAAC;gBAC1E,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;YACvB,IAAI;gBACH,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAEjC,IAAI,CAAC,UAAU,GAAG,IAAI,gBAAY,CAAC,OAAO,CAAC,CAAC;YAE5C,eAAe;YACf,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,CACjD,CAAC;gBACA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,QAAI,CAAC,YAAY,CAAC,CAClE,CAAC;gBACA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,eAAW,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,eAAW,CAAC,CAC9F,CAAC;gBACA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7C,CAAC;QACF,CAAC;QAED;;WAEG;QACO,4CAAoB,GAA9B,UAA+B,KAAe;YAE7C,GAAG,CAAC,CAAC,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;gBAC5C,MAAA,IAAI,CAAC,UAAU,EAAC,IAAI,WAAI,KAAK,CAAC,CAAC;;QACjC,CAAC;QAED;;WAEG;QACO,gDAAwB,GAAlC,UAAmC,SAA6B;YAE/D,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED;;WAEG;QACO,4CAAoB,GAA9B,UAA+B,KAAkB,EAAE,GAAgB;YAElE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAED;;oEAE4D;QAC5D;;;;;;;;;WASG;QACI,4BAAI,GAAX;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAC/B,CAAC;QAED;;;;;;;WAOG;QACI,6BAAK,GAAZ;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAChC,CAAC;QAED;;oEAE4D;QAC5D;;;;;;;;;;;;WAYG;QACI,2BAAG,GAAV;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC;QACtC,CAAC;QAED;;;;;;;;;;;WAWG;QACI,4BAAI,GAAX,UAAY,GAAM;YAEjB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;QAED;;;;;;;;;;;;WAYG;QACI,2BAAG,GAAV;YAEC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;QAChD,CAAC;QAED;;;;;;;;;;;;;WAaG;QACI,4BAAI,GAAX,UAAY,GAAqB;YAEhC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACtC,CAAC;QACF,oBAAC;IAAD,CAAC,AArPD,IAqPC;IArPY,iBAAa,gBAqPzB,CAAA;AACF,CAAC,EAhSS,GAAG,KAAH,GAAG,QAgSZ;AC5dD,+BAA+B;AAE/B,IAAU,GAAG,CAwKZ;AAxKD,WAAU,GAAG,EACb,CAAC;IACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACH;QAoBC,eAAmB,KAAsB;YAAtB,qBAAsB,GAAtB,YAAsB;YAExC,IAAI,CAAC,UAAU,GAAG,IAAI,QAAI,EAAK,CAAC;YAEhC,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC;gBACjB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3E,CAAC;QAED;;oEAE4D;QAC5D;;;;;;;;;WASG;QACI,oBAAI,GAAX;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAC/B,CAAC;QAED;;;;;;;;;;WAUG;QACI,qBAAK,GAAZ;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAChC,CAAC;QAED;;;;;;;;;;;;WAYG;QACI,mBAAG,GAAV;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAC/B,CAAC;QAED;;oEAE4D;QAC5D;;;;;;;;;WASG;QACI,oBAAI,GAAX,UAAY,GAAM;YAEjB,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;QAED;;;;;;;;;;WAUG;QACI,mBAAG,GAAV;YAEC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC;QAED;;;;;;;;;;WAUG;QACI,oBAAI,GAAX,UAAY,GAAa;YAExB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACtC,CAAC;QACF,YAAC;IAAD,CAAC,AAjID,IAiIC;IAjIY,SAAK,QAiIjB,CAAA;AACF,CAAC,EAxKS,GAAG,KAAH,GAAG,QAwKZ;AC1KD,+BAA+B;AAI/B,AAFA,0CAA0C;AAQ1C,IAAU,GAAG,CA2WZ;AA3WD,WAAU,GAAG,EACb,CAAC;IACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgDG;IACH;QACS,2BAAiB;QA4EzB;YAAmB,cAAc;iBAAd,WAAc,CAAd,sBAAc,CAAd,IAAc;gBAAd,6BAAc;;YAEhC,iBAAO,CAAC;YAER,8BAA8B;YAC9B,IAAI,OAAO,GAA4B,GAAG,CAAC,IAAI,CAAC;YAChD,IAAI,EAAE,GAAa,IAAI,CAAC;YAExB,eAAe;YACf,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa;YACvC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,QAAI,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,UAAM,CAAC,CAAC,CAC9F,CAAC;gBACA,EAAE,GAAG,IAAI,CAAC,wBAAwB,CAAC;gBAEnC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;oBACpB,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,CACtD,CAAC;gBACA,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC;gBAE/B,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;oBACpB,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,YAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,YAAQ,CAAC,CACxF,CAAC;gBACA,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC;gBAE/B,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;oBACpB,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;gBACzB,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAEnB,iBAAiB;YACjB,IAAI,CAAC,KAAK,GAAG,IAAI,QAAI,CAAC,UAAU,CAAI,IAAI,EAAE,OAAO,CAAC,CAAC;YAEnD,wCAAwC;YACxC,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC;gBACd,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACvB,CAAC;QAED;;oEAE4D;QAC5D;;WAEG;QACI,uBAAK,GAAZ;YAEC,gBAAK,CAAC,KAAK,WAAE,CAAC;YAEd,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC;QAED;;oEAE4D;QAC5D;;WAEG;QACI,sBAAI,GAAX,UAAY,GAAM;YAEjB,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEhC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC;gBAChE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACnB,IAAI;gBACH,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QAED;;WAEG;QACI,0BAAQ,GAAf;YAEC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC9B,CAAC;QAED;;WAEG;QACI,4BAAU,GAAjB;YAEC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC9B,CAAC;QAED;;WAEG;QACI,6BAAW,GAAlB,UAAmB,GAAM;YAExB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QAED;;WAEG;QACI,6BAAW,GAAlB,UAAmB,GAAM;YAExB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QAED;;WAEG;QACI,6BAAW,GAAlB,UAAmB,GAAM;YAExB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QAED;;;;;;oEAM4D;QAC5D;;WAEG;QACO,+BAAa,GAAvB,UAAwB,GAAM;YAE7B,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEhC,+BAA+B;YAC/B,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC;gBAC/D,MAAM,CAAC,aAAS,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAErC,YAAY;YACZ,IAAI,EAAkB,CAAC;YAEvB,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC;gBAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACjB,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC;gBAChD,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACxB,IAAI;gBACH,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YAEjB,KAAK;YACL,UAAU;YACV,KAAK;YACL,EAAE,GAAG,IAAI,eAAW,CAAI,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,iBAAiB,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;YAC9E,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,eAAe;YAElD,MAAM,CAAC,aAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC;QAES,gCAAc,GAAxB,UAAyB,IAAoB,EAAE,GAAM;YAEpD,WAAW;YACX,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;gBACzB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAEnB,gBAAgB;YAChB,IAAI,GAAmB,CAAC;YACxB,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAEpC,mCAAmC;YACnC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI;mBAChC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAClF,CAAC;gBACA,OAAO;gBACP,aAAa;gBACb,OAAO;gBACP,SAAS;gBACT,GAAG,GAAG,IAAI,eAAW,CAAI,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;gBAEjF,eAAe;gBACf,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YACrC,CAAC;YACD,IAAI,CACJ,CAAC;gBACA,OAAO;gBACP,aAAa;gBACb,OAAO;gBACP,mCAAmC;gBACnC,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;YACrC,CAAC;YACD,MAAM,CAAC,GAAG,CAAC;QACZ,CAAC;QAED;;WAEG;QACO,iCAAe,GAAzB,UACE,KAAoB,EAAE,IAAmB;YAE1C,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAmB;gBAClE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;QAED;;oEAE4D;QAC5D;;WAEG;QACO,+BAAa,GAAvB,UAAwB,KAAqB,EAAE,IAAoB;YAElE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;QAED;;WAEG;QACO,8BAAY,GAAtB,UAAuB,KAAqB,EAAE,IAAoB;YAEjE,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE;gBACjD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QAED;;0EAEkE;QAClE;;WAEG;QACI,sBAAI,GAAX,UAAY,GAAsB;YAEjC,EAAE,CAAC,CAAC,GAAG,YAAY,OAAO,CAAC;gBAC1B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YACzB,IAAI;gBACH,gBAAK,CAAC,IAAI,YAAC,GAAG,CAAC,CAAC;QAClB,CAAC;QAED;;WAEG;QACK,+BAAa,GAArB,UAAsB,GAAe;YAEpC,4BAAiD,EAAhD,kBAAU,EAAE,iBAAS,CAA4B;YAClD,4BAAiD,EAAhD,kBAAU,EAAE,iBAAS,CAA4B;;QACnD,CAAC;QACF,cAAC;IAAD,CAAC,AAvTD,CACS,QAAI,CAAC,SAAS,GAsTtB;IAvTY,WAAO,UAuTnB,CAAA;AACF,CAAC,EA3WS,GAAG,KAAH,GAAG,QA2WZ;ACrXD,+BAA+B;AAI/B,AAFA,0CAA0C;AAQ1C,IAAU,GAAG,CA4XZ;AA5XD,WAAU,GAAG,EACb,CAAC;IACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+CG;IACH;QACS,2BAAsB;QA6F9B;YAAmB,cAAc;iBAAd,WAAc,CAAd,sBAAc,CAAd,IAAc;gBAAd,6BAAc;;YAEhC,iBAAO,CAAC;YAER,8BAA8B;YAC9B,IAAI,OAAO,GAAgC,GAAG,CAAC,IAAI,CAAC;YACpD,IAAI,EAAE,GAAa,IAAI,CAAC;YAExB,eAAe;YACf,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa;YACvC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,QAAI,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,UAAM,CAAC,CAAC,CAC9F,CAAC;gBACA,EAAE,GAAG,IAAI,CAAC,wBAAwB,CAAC;gBAEnC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;oBACpB,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,CACtD,CAAC;gBACA,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC;gBAE/B,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;oBACpB,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,YAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,YAAQ,CAAC,CACxF,CAAC;gBACA,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC;gBAE/B,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;oBACpB,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;gBACzB,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAEnB,iBAAiB;YACjB,IAAI,CAAC,KAAK,GAAG,IAAI,QAAI,CAAC,QAAQ,CAAS,IAAI,EAAE,OAAO,CAAC,CAAC;YAEtD,wCAAwC;YACxC,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC;gBACd,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACvB,CAAC;QAED;;oEAE4D;QAC5D;;WAEG;QACI,uBAAK,GAAZ;YAEC,gBAAK,CAAC,KAAK,WAAE,CAAC;YAEd,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC;QAED;;oEAE4D;QAC5D;;WAEG;QACI,sBAAI,GAAX,UAAY,GAAQ;YAEnB,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEhC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC;gBAChE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACnB,IAAI;gBACH,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QAED;;WAEG;QACI,0BAAQ,GAAf;YAEC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC9B,CAAC;QAED;;WAEG;QACI,4BAAU,GAAjB;YAEC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QAChC,CAAC;QAED;;WAEG;QACI,6BAAW,GAAlB,UAAmB,GAAQ;YAE1B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QAED;;WAEG;QACI,6BAAW,GAAlB,UAAmB,GAAQ;YAE1B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QAED;;WAEG;QACI,6BAAW,GAAlB,UAAmB,GAAQ;YAE1B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QAED;;;;;;oEAM4D;QAC5D;;WAEG;QACO,gCAAc,GAAxB,UAAyB,IAAkB;YAE1C,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEvC,+BAA+B;YAC/B,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;gBACtE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAEzC,UAAU;YACV,IAAI,EAAuB,CAAC;YAE5B,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC;gBAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACjB,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;gBACpE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACxB,IAAI;gBACH,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YAEjB,qBAAqB;YACrB,EAAE,GAAG,IAAI,eAAW,CAAS,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;YACpF,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,eAAe;YAElD,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAChC,CAAC;QAED;;WAEG;QACO,gCAAc,GAAxB,UAAyB,IAAyB,EAAE,IAAkB;YAErE,WAAW;YACX,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;gBAChC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAEnB,gBAAgB;YAChB,IAAI,GAAwB,CAAC;YAC7B,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAEpC,mCAAmC;YACnC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI;mBACvC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CACzF,CAAC;gBACA,OAAO;gBACP,aAAa;gBACb,OAAO;gBACP,SAAS;gBACT,GAAG,GAAG,IAAI,eAAW,CAAS,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;gBAEvF,eAAe;gBACf,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YACrC,CAAC;YACD,IAAI,CACJ,CAAC;gBACA,OAAO;gBACP,aAAa;gBACb,OAAO;gBACP,mCAAmC;gBACnC,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACvC,CAAC;YACD,MAAM,CAAC,GAAG,CAAC;QACZ,CAAC;QAED;;WAEG;QACO,iCAAe,GAAzB,UACE,KAAoB,EAAE,IAAmB;YAE1C,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAmB;gBAClE,IAAI,CAAC,cAAc,CAAC,aAAS,CAAS,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAChF,CAAC;QAED;;oEAE4D;QAC5D;;WAEG;QACO,+BAAa,GAAvB,UAAwB,KAA0B,EAAE,IAAyB;YAE5E,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;QAED;;WAEG;QACO,8BAAY,GAAtB,UAAuB,KAA0B,EAAE,IAAyB;YAE3E,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE;gBACjD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QAED;;0EAEkE;QAClE;;WAEG;QACI,sBAAI,GAAX,UAAY,GAA2B;YAEtC,EAAE,CAAC,CAAC,GAAG,YAAY,OAAO,CAAC;gBAC1B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YACzB,IAAI;gBACH,gBAAK,CAAC,IAAI,YAAC,GAAG,CAAC,CAAC;QAClB,CAAC;QAED;;WAEG;QACK,+BAAa,GAArB,UAAsB,GAAoB;YAEzC,4BAAiD,EAAhD,kBAAU,EAAE,iBAAS,CAA4B;YAClD,4BAAiD,EAAhD,kBAAU,EAAE,iBAAS,CAA4B;;QACnD,CAAC;QACF,cAAC;IAAD,CAAC,AAzUD,CACS,QAAI,CAAC,SAAS,GAwUtB;IAzUY,WAAO,UAyUnB,CAAA;AACF,CAAC,EA5XS,GAAG,KAAH,GAAG,QA4XZ;ACtYD,+BAA+B;AAI/B,AAFA,yCAAyC;AAQzC,IAAU,GAAG,CA6XZ;AA7XD,WAAU,GAAG,EACb,CAAC;IACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiDG;IACH;QACS,gCAAgB;QAwExB;YAAmB,cAAc;iBAAd,WAAc,CAAd,sBAAc,CAAd,IAAc;gBAAd,6BAAc;;YAEhC,iBAAO,CAAC;YAER,8BAA8B;YAC9B,IAAI,OAAO,GAA4B,GAAG,CAAC,IAAI,CAAC;YAChD,IAAI,EAAE,GAAa,IAAI,CAAC;YAExB,eAAe;YACf,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa;YACvC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,QAAI,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,UAAM,CAAC,CAAC,CAC9F,CAAC;gBACA,EAAE,GAAG,IAAI,CAAC,wBAAwB,CAAC;gBAEnC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;oBACpB,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,CACtD,CAAC;gBACA,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC;gBAE/B,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;oBACpB,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,YAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,YAAQ,CAAC,CACxF,CAAC;gBACA,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC;gBAE/B,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;oBACpB,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;gBACzB,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAEnB,iBAAiB;YACjB,IAAI,CAAC,KAAK,GAAG,IAAI,QAAI,CAAC,UAAU,CAAI,IAAI,EAAE,OAAO,CAAC,CAAC;YAEnD,wCAAwC;YACxC,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC;gBACd,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACvB,CAAC;QAED;;oEAE4D;QAC5D;;WAEG;QACI,4BAAK,GAAZ;YAEC,gBAAK,CAAC,KAAK,WAAE,CAAC;YAEd,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC;QAED;;oEAE4D;QAC5D;;WAEG;QACI,2BAAI,GAAX,UAAY,GAAM;YAEjB,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEhC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;gBAChE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACnB,IAAI;gBACH,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QAED;;WAEG;QACI,4BAAK,GAAZ,UAAa,GAAM;YAElB,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACxB,IAAI,GAAG,GAAW,CAAC,CAAC;YAEpB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE;gBAC7E,GAAG,EAAE,CAAC;YAEP,MAAM,CAAC,GAAG,CAAC;QACZ,CAAC;QAED;;WAEG;QACI,+BAAQ,GAAf;YAEC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC9B,CAAC;QAED;;WAEG;QACI,iCAAU,GAAjB;YAEC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC9B,CAAC;QAED;;WAEG;QACI,kCAAW,GAAlB,UAAmB,GAAM;YAExB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QAED;;WAEG;QACI,kCAAW,GAAlB,UAAmB,GAAM;YAExB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QAED;;WAEG;QACI,kCAAW,GAAlB,UAAmB,GAAM;YAExB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QAED;;;;;;oEAM4D;QAC5D;;WAEG;QACO,oCAAa,GAAvB,UAAwB,GAAM;YAE7B,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,EAAkB,CAAC;YAEvB,YAAY;YACZ,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CACjB,CAAC;gBACA,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACjB,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,CACrD,CAAC;gBACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACxB,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,CACjD,CAAC;gBACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBAEvB,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC;oBACjE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;YACjB,CAAC;YACD,IAAI,CACJ,CAAC;gBACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YACjB,CAAC;YAED,KAAK;YACL,UAAU;YACV,KAAK;YACL,EAAE,GAAG,IAAI,eAAW,CAAI,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,iBAAiB,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;YAC9E,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,eAAe;YAElD,MAAM,CAAC,EAAE,CAAC;QACX,CAAC;QAED;;WAEG;QACO,qCAAc,GAAxB,UAAyB,IAAoB,EAAE,GAAM;YAEpD,gBAAgB;YAChB,IAAI,GAAmB,CAAC;YACxB,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAEpC,qCAAqC;YACrC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;mBAC3D,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CACpH,CAAC;gBACA,OAAO;gBACP,aAAa;gBACb,OAAO;gBACP,SAAS;gBACT,GAAG,GAAG,IAAI,eAAW,CAAI,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;gBAEjF,eAAe;gBACf,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YACrC,CAAC;YACD,IAAI,CACJ,CAAC;gBACA,OAAO;gBACP,aAAa;gBACb,OAAO;gBACP,mCAAmC;gBACnC,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YAC/B,CAAC;YACD,MAAM,CAAC,GAAG,CAAC;QACZ,CAAC;QAED;;WAEG;QACO,sCAAe,GAAzB,UACE,KAAoB,EAAE,IAAmB;YAE1C,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAmB;gBAClE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;QAED;;oEAE4D;QAC5D;;WAEG;QACO,oCAAa,GAAvB,UAAwB,KAAqB,EAAE,IAAoB;YAElE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;QAED;;WAEG;QACO,mCAAY,GAAtB,UAAuB,KAAqB,EAAE,IAAoB;YAEjE,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE;gBACjD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QAED;;0EAEkE;QAClE;;WAEG;QACI,2BAAI,GAAX,UAAY,GAAqB;YAEhC,EAAE,CAAC,CAAC,GAAG,YAAY,YAAY,CAAC;gBAC/B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YACzB,IAAI;gBACH,gBAAK,CAAC,IAAI,YAAC,GAAG,CAAC,CAAC;QAClB,CAAC;QAED;;WAEG;QACK,oCAAa,GAArB,UAAsB,GAAoB;YAEzC,4BAAiD,EAAhD,kBAAU,EAAE,iBAAS,CAA4B;YAClD,4BAAiD,EAAhD,kBAAU,EAAE,iBAAS,CAA4B;;QACnD,CAAC;QACF,mBAAC;IAAD,CAAC,AAxUD,CACS,QAAI,CAAC,QAAQ,GAuUrB;IAxUY,gBAAY,eAwUxB,CAAA;AACF,CAAC,EA7XS,GAAG,KAAH,GAAG,QA6XZ;ACvYD,+BAA+B;AAI/B,AAFA,yCAAyC;AAQzC,IAAU,GAAG,CAsZZ;AAtZD,WAAU,GAAG,EACb,CAAC;IACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAuDG;IACH;QACS,gCAAqB;QA4F7B;YAAmB,cAAc;iBAAd,WAAc,CAAd,sBAAc,CAAd,IAAc;gBAAd,6BAAc;;YAEhC,iBAAO,CAAC;YAER,8BAA8B;YAC9B,IAAI,OAAO,GAAgC,GAAG,CAAC,IAAI,CAAC;YACpD,IAAI,EAAE,GAAa,IAAI,CAAC;YAExB,eAAe;YACf,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa;YACvC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,QAAI,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,UAAM,CAAC,CAAC,CAC9F,CAAC;gBACA,EAAE,GAAG,IAAI,CAAC,wBAAwB,CAAC;gBAEnC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;oBACpB,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,CACtD,CAAC;gBACA,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC;gBAE/B,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;oBACpB,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,YAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,YAAQ,CAAC,CACxF,CAAC;gBACA,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC;gBAE/B,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;oBACpB,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;gBACzB,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAEnB,iBAAiB;YACjB,IAAI,CAAC,KAAK,GAAG,IAAI,QAAI,CAAC,QAAQ,CAAS,IAAI,EAAE,OAAO,CAAC,CAAC;YAEtD,wCAAwC;YACxC,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC;gBACd,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACvB,CAAC;QAED;;oEAE4D;QAC5D;;WAEG;QACI,4BAAK,GAAZ;YAEC,gBAAK,CAAC,KAAK,WAAE,CAAC;YAEd,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC;QAED;;oEAE4D;QAC5D;;WAEG;QACI,2BAAI,GAAX,UAAY,GAAQ;YAEnB,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEhC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC;gBAChE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACnB,IAAI;gBACH,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QAED;;WAEG;QACI,4BAAK,GAAZ,UAAa,GAAQ;YAEpB,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACxB,IAAI,GAAG,GAAW,CAAC,CAAC;YAEpB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE;gBAC7E,GAAG,EAAE,CAAC;YAEP,MAAM,CAAC,GAAG,CAAC;QACZ,CAAC;QAED;;WAEG;QACI,+BAAQ,GAAf;YAEC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC9B,CAAC;QAED;;WAEG;QACI,iCAAU,GAAjB;YAEC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QAChC,CAAC;QAED;;WAEG;QACI,kCAAW,GAAlB,UAAmB,GAAQ;YAE1B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QAED;;WAEG;QACI,kCAAW,GAAlB,UAAmB,GAAQ;YAE1B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QAED;;WAEG;QACI,kCAAW,GAAlB,UAAmB,GAAQ;YAE1B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QAED;;;;;;oEAM4D;QAC5D;;WAEG;QACO,qCAAc,GAAxB,UAAyB,IAAkB;YAE1C,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,EAAuB,CAAC;YAE5B,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CACjB,CAAC;gBACA,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACjB,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAC5D,CAAC;gBACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACxB,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CACrE,CAAC;gBACA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBAEvB,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC;oBACrF,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;YACjB,CAAC;YACD,IAAI;gBACH,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YAEjB,qBAAqB;YACrB,EAAE,GAAG,IAAI,eAAW,CAAS,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;YACpF,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,eAAe;YAElD,MAAM,CAAC,EAAE,CAAC;QACX,CAAC;QAED;;WAEG;QACO,qCAAc,GAAxB,UAAyB,IAAyB,EAAE,IAAkB;YAErE,WAAW;YACX,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;gBAChC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAEnB,gBAAgB;YAChB,IAAI,GAAwB,CAAC;YAC7B,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAEpC,qCAAqC;YACrC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;mBACzE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAClI,CAAC;gBACA,OAAO;gBACP,aAAa;gBACb,OAAO;gBACP,SAAS;gBACT,GAAG,GAAG,IAAI,eAAW,CAAS,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;gBAEvF,eAAe;gBACf,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YACrC,CAAC;YACD,IAAI,CACJ,CAAC;gBACA,OAAO;gBACP,aAAa;gBACb,OAAO;gBACP,mCAAmC;gBACnC,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC;YACD,MAAM,CAAC,GAAG,CAAC;QACZ,CAAC;QAED;;WAEG;QACO,sCAAe,GAAzB,UACE,KAAoB,EAAE,IAAmB;YAE1C,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAmB;gBAClE,IAAI,CAAC,cAAc,CAAC,aAAS,CAAS,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAChF,CAAC;QAED;;oEAE4D;QAC5D;;WAEG;QACO,oCAAa,GAAvB,UAAwB,KAA0B,EAAE,IAAyB;YAE5E,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;QAED;;WAEG;QACO,mCAAY,GAAtB,UAAuB,KAA0B,EAAE,IAAyB;YAE3E,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE;gBACjD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QAED;;0EAEkE;QAClE;;WAEG;QACI,2BAAI,GAAX,UAAY,GAA0B;YAErC,EAAE,CAAC,CAAC,GAAG,YAAY,YAAY,CAAC;gBAC/B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI;gBACH,gBAAK,CAAC,IAAI,YAAC,GAAG,CAAC,CAAC;QAClB,CAAC;QAED;;WAEG;QACK,yCAAkB,GAA1B,UAA2B,GAAyB;YAEnD,4BAAiD,EAAhD,kBAAU,EAAE,iBAAS,CAA4B;YAClD,4BAAiD,EAAhD,kBAAU,EAAE,iBAAS,CAA4B;;QACnD,CAAC;QACF,mBAAC;IAAD,CAAC,AA3VD,CACS,QAAI,CAAC,QAAQ,GA0VrB;IA3VY,gBAAY,eA2VxB,CAAA;AACF,CAAC,EAtZS,GAAG,KAAH,GAAG,QAsZZ;AChaD,+BAA+B;AAE/B,qCAAqC;AACrC,8CAA8C;AAE9C,IAAU,GAAG,CAoFZ;AApFD,WAAU,GAAG,EACb,CAAC;IACA;;;;;;;;;;;;;;;OAeG;IACH;QACS,+BAAY;QA0CpB;YAAmB,cAAc;iBAAd,WAAc,CAAd,sBAAc,CAAd,IAAc;gBAAd,6BAAc;;YAEhC,kBAAM,EAAE,CAAC,CAAC;QACX,CAAC;QAED;;oEAE4D;QAC5D;;;;;;;;;WASG;QACI,0BAAI,GAAX;YAEC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACnB,CAAC;QACF,kBAAC;IAAD,CAAC,AAjED,CACS,gBAAY,GAgEpB;IAjEY,eAAW,cAiEvB,CAAA;AACF,CAAC,EApFS,GAAG,KAAH,GAAG,QAoFZ;AAED,IAAU,GAAG,CAkKZ;AAlKD,WAAU,GAAG,EACb,CAAC;IACA;;;;;;;;;;;;;;;;;;OAkBG;IACH;QAEC;;oEAE4D;QAC5D;;WAEG;QACH;QAEA,CAAC;QA2CD;;oEAE4D;QAC5D;;;;;;;;;;;;;;;;;;;WAmBG;QACI,+CAAuB,GAA9B,UAA+B,GAAW;YAEzC,MAAM,CAAC,IAAI,kBAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACtC,CAAC;QA4CM,kCAAU,GAAjB;YAAkB,cAAc;iBAAd,WAAc,CAAd,sBAAc,CAAd,IAAc;gBAAd,6BAAc;;YAE/B,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,kBAAc,CAAC,CACtC,CAAC;gBACA,IAAI,QAAQ,GAAW,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC/B,IAAI,IAAI,GAAmB,IAAI,CAAC,CAAC,CAAC,CAAC;gBAEnC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;YACnE,CAAC;YACD,IAAI,CACJ,CAAC;gBACA,IAAI,IAAI,GAAc,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC9B,IAAI,OAAO,GAAW,IAAI,CAAC,CAAC,CAAC,CAAC;gBAE9B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,OAAO,CAAC;YACvE,CAAC;QACF,CAAC;QACF,oBAAC;IAAD,CAAC,AA5ID,IA4IC;IA5IqB,iBAAa,gBA4IlC,CAAA;AACF,CAAC,EAlKS,GAAG,KAAH,GAAG,QAkKZ;AAED,IAAU,GAAG,CAiDZ;AAjDD,WAAU,GAAG,EACb,CAAC;IACA;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH;QACS,kCAAkB;QAkB1B,wBAAmB,GAAe,EAAE,QAA8B;YAA/C,mBAAe,GAAf,OAAe;YAAE,wBAA8B,GAA9B,eAA8B;YAEjE,kBAAM,GAAG,EAAE,QAAQ,CAAC,CAAC;QACtB,CAAC;QACF,qBAAC;IAAD,CAAC,AAvBD,CACS,QAAI,CAAC,aAAa,GAsB1B;IAvBY,kBAAc,iBAuB1B,CAAA;AACF,CAAC,EAjDS,GAAG,KAAH,GAAG,QAiDZ;AAED,IAAU,GAAG,CA4CZ;AA5CD,WAAU,GAAG,EACb,CAAC;IACA;;;;;;;;;;;;;;;;;OAiBG;IACH;QACS,6BAAkB;QAkB1B,mBAAmB,GAAe,EAAE,QAA8B;YAA/C,mBAAe,GAAf,OAAe;YAAE,wBAA8B,GAA9B,eAA8B;YAEjE,kBAAM,GAAG,EAAE,QAAQ,CAAC,CAAC;QACtB,CAAC;QACF,gBAAC;IAAD,CAAC,AAvBD,CACS,QAAI,CAAC,aAAa,GAsB1B;IAvBY,aAAS,YAuBrB,CAAA;AACF,CAAC,EA5CS,GAAG,KAAH,GAAG,QA4CZ;AC9VD,+BAA+B;AAE/B,IAAU,GAAG,CA4GZ;AA5GD,WAAU,GAAG,EACb,CAAC;IACA;;;;;;OAMG;IACH;QAEC,EAAE,CAAC,CAAC,OAAO,OAAO,KAAK,QAAQ,CAAC;YAC/B,EAAE,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC;gBACxC,EAAE,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,WAAW,CAAC;oBAChD,MAAM,CAAC,IAAI,CAAC;QAEf,MAAM,CAAC,KAAK,CAAC;IACd,CAAC;IARe,WAAO,UAQtB,CAAA;IAED;;;;;;;;;;;;OAYG;IACH;QAYC;;oEAE4D;QAC5D;;;;;WAKG;QACH,cAAmB,KAAS,EAAE,MAAU;YAEvC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACtB,CAAC;QAED;;oEAE4D;QAC5D;;;;;;;;;;WAUG;QACI,uBAAQ,GAAf,UAA8C,IAAkB;YAE/D,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACvF,CAAC;QAEM,mBAAI,GAAX,UAA0C,IAAkB;YAE3D,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;gBACjD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI;gBACH,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;QACF,WAAC;IAAD,CAAC,AArDD,IAqDC;IArDY,QAAI,OAqDhB,CAAA;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,mBAAkC,CAAK,EAAE,CAAK;QAE7C,MAAM,CAAC,IAAI,IAAI,CAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC;IAHe,aAAS,YAGxB,CAAA;AACF,CAAC,EA5GS,GAAG,KAAH,GAAG,QA4GZ;AC9GD,4CAA4C;AAC5C,2CAA2C;AAC3C,0CAA0C;AAC1C,2CAA2C;AAC3C,2CAA2C;AAE3C,6CAA6C;AAC7C,6CAA6C;AAC7C,kDAAkD;AAClD,kDAAkD;AAElD,6CAA6C;AAC7C,6CAA6C;AAC7C,kDAAkD;AAClD,kDAAkD;AAElD,+CAA+C;AAC/C,gDAAgD;AAChD,8CAA8C;AAC9C,+CAA+C;AAC/C,iDAAiD;AACjD,6CAA6C;AAE7C,IACA,CAAC;IACA,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC;AACtB,CAAE;AAAA,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/ts/index.html b/ts/index.html index 424c0176..f8910a23 100644 --- a/ts/index.html +++ b/ts/index.html @@ -4,7 +4,7 @@ - + diff --git a/ts/src/std/API.ts b/ts/src/std/API.ts index 3260718e..9a43095b 100644 --- a/ts/src/std/API.ts +++ b/ts/src/std/API.ts @@ -149,12 +149,3 @@ namespace std namespace std.base { } - -/** - * Examples for supporting developers who use STL library. - * - * @author Jeongho Nam - */ -namespace std.example -{ -} diff --git a/ts/src/std/Deque.ts b/ts/src/std/Deque.ts index 71e75d09..8dde6134 100644 --- a/ts/src/std/Deque.ts +++ b/ts/src/std/Deque.ts @@ -3,14 +3,6 @@ /// /// -///** -// * @hidden -// */ -//namespace std.deque -//{ -// export type iterator = std.DequeIterator; -// export type reverse_iterator = std.DequeReverseIterator; -//} namespace std.Deque { export type iterator = std.DequeIterator; @@ -48,8 +40,8 @@ namespace std * the end, {@link Deque Deques} perform worse and have less consistent iterators and references than * {@link List Lists}.

* - *

- * + *

+ * *

* *

Container properties

@@ -73,72 +65,64 @@ namespace std extends base.Container implements base.IArrayContainer, base.IDequeContainer { + /// + // Row size of the {@link matrix_ matrix} which contains elements. + // + // Note that the {@link ROW} affects on time complexity of accessing and inserting element. + // Accessing element is {@link ROW} times slower than ordinary {@link Vector} and inserting element + // in middle position is {@link ROW} times faster than ordinary {@link Vector}. + // + // When the {@link ROW} returns 8, time complexity of accessing element is O(8) and inserting + // element in middle position is O(N/8). ({@link Vector}'s time complexity of accessement is O(1) + // and inserting element is O(N)). /** - *

Row size of the {@link matrix_ matrix} which contains elements.

- * - *

Note that the {@link ROW} affects on time complexity of accessing and inserting element. - * Accessing element is {@link ROW} times slower than ordinary {@link Vector} and inserting element - * in middle position is {@link ROW} times faster than ordinary {@link Vector}.

- * - *

When the {@link ROW} returns 8, time complexity of accessing element is O(8) and inserting - * element in middle position is O(N/8). ({@link Vector}'s time complexity of accessement is O(1) - * and inserting element is O(N)).

+ * @hidden */ private static get ROW(): number { return 8; } + /// + // Minimum {@link capacity}. + // + // Although a {@link Deque} has few elements, even no element is belonged to, the {@link Deque} + // keeps the minimum {@link capacity} at least. /** - *

Minimum {@link capacity}.

- * - *

Although a {@link Deque} has few elements, even no element is belonged to, the {@link Deque} - * keeps the minimum {@link capacity} at least.

+ * @hidden */ private static get MIN_CAPACITY(): number { return 100; } + /// + // A matrix containing elements. + // + // This {@link matrix_} is the biggest difference one between {@link Vector} and {@link Deque}. + // Its number of rows follows {@link ROW} and number of columns follows {@link get_col_size} which + // returns divide of {@link capacity} and {@link ROW}. + // + // By separating segment of elements (segment: row, elements in a segment: col), {@link Deque} takes + // advantage of time complexity on inserting element in middle position. {@link Deque} is {@link ROW} + // times faster than {@link Vector} when inserting elements in middle position. + // + // However, separating segment of elements from matrix, {@link Deque} also takes disadvantage of + // time complexity on accessing element. {@link Deque} is {@link ROW} times slower than {@link Vector} + // when accessing element. /** - *

A matrix containing elements.

- * - *

This {@link matrix_} is the biggest difference one between {@link Vector} and {@link Deque}. - * Its number of rows follows {@link ROW} and number of columns follows {@link get_col_size} which - * returns divide of {@link capacity} and {@link ROW}.

- * - * By separating segment of elements (segment: row, elements in a segment: col), {@link Deque} takes - * advantage of time complexity on inserting element in middle position. {@link Deque} is {@link ROW} - * times faster than {@link Vector} when inserting elements in middle position.

- * - *

However, separating segment of elements from matrix, {@link Deque} also takes disadvantage of - * time complexity on accessing element. {@link Deque} is {@link ROW} times slower than {@link Vector} - * when accessing element.

+ * @hidden */ private matrix_: Array>; + // Number of elements in the Deque. /** - * Number of elements in the {@link Deque}. + * @hidden */ private size_: number; /** - *

Size of allocated storage capacity.

- * - *

The {@link capacity_ capacity} is size of the storage space currently allocated for the - * {@link Deque container}, expressed in terms of elements.

- * - *

This {@link capacity_ capacity} is not necessarily equal to the {@link Deque container} - * {@link size}. It can be equal or greater, with the extra space allowing to accommodate for growth - * without the need to reallocate on each insertion.

- * - *

Notice that this {@link capacity_ capacity} does not suppose a limit on the {@link size} of - * the {@link Deque container}. When this {@link capacity} is exhausted and more is needed, it is - * automatically expanded by the {@link Deque container} (reallocating it storage space). - * The theoretical limit on the {@link size} of a {@link Deque container} is given by member - * {@link max_size}.

- * - *

The {@link capacity_ capacity} of a {@link Deque container} can be explicitly altered by - * calling member {@link Deque.reserve}.

+ * @hidden */ private capacity_: number; + // Get column size; {@link capacity_ capacity} / {@link ROW row}. /** - * Get column size; {@link capacity_ capacity} / {@link ROW row}. + * @hidden */ private get_col_size(): number { @@ -863,8 +847,8 @@ namespace std /** *

An iterator of {@link Deque}.

* - *

- * + *

+ * *

* * @author Jeongho Nam @@ -1008,8 +992,8 @@ namespace std /** *

A reverse-iterator of Deque.

* - *

- * + *

+ * *

* * @param Type of the elements. diff --git a/ts/src/std/Exception.ts b/ts/src/std/Exception.ts index 3b2bf6f7..4958a8e3 100644 --- a/ts/src/std/Exception.ts +++ b/ts/src/std/Exception.ts @@ -110,8 +110,8 @@ namespace std *

All objects thrown by components of the standard library are derived from this class. * Therefore, all standard exceptions can be caught by catching this type by reference.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/exception/exception * @author Jeongho Nam @@ -190,8 +190,8 @@ namespace std * *

It is used as a base class for several logical error exceptions.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/logic_error * @author Jeongho Nam @@ -222,8 +222,8 @@ namespace std *

No component of the standard library throws exceptions of this type. It is designed as a standard * exception to be thrown by programs.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/domain_error * @author Jeongho Nam @@ -250,8 +250,8 @@ namespace std *

It is a standard exception that can be thrown by programs. Some components of the standard library * also throw exceptions of this type to signal invalid arguments.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/invalid_argument * @author Jeongho Nam @@ -278,8 +278,8 @@ namespace std *

It is a standard exception that can be thrown by programs. Some components of the standard library, * such as vector and string also throw exceptions of this type to signal errors resizing.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/length_error * @author Jeongho Nam @@ -307,8 +307,8 @@ namespace std * such as vector, deque, string and bitset also throw exceptions of this type to signal arguments * out of range.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/out_of_range * @author Jeongho Nam @@ -342,8 +342,8 @@ namespace std * *

It is used as a base class for several runtime error exceptions.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/runtime_error * @author Jeongho Nam @@ -370,8 +370,8 @@ namespace std *

It is a standard exception that can be thrown by programs. Some components of the standard library * also throw exceptions of this type to signal range errors.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/overflow_error * @author Jeongho Nam @@ -398,8 +398,8 @@ namespace std *

No component of the standard library throws exceptions of this type. It is designed as a standard * exception to be thrown by programs.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/underflow_error * @author Jeongho Nam @@ -427,8 +427,8 @@ namespace std *

It is a standard exception that can be thrown by programs. Some components of the standard library * also throw exceptions of this type to signal range errors.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/range_error * @author Jeongho Nam diff --git a/ts/src/std/HashMap.ts b/ts/src/std/HashMap.ts index 9b8e993e..6a275a3d 100644 --- a/ts/src/std/HashMap.ts +++ b/ts/src/std/HashMap.ts @@ -3,14 +3,6 @@ /// /// -///** -// * @hidden -// */ -//namespace std.unordered_map -//{ -// export type iterator = std.MapIterator; -// export type reverse_iterator = std.MapReverseIterator; -//} namespace std.HashMap { export type iterator = std.MapIterator; @@ -38,8 +30,8 @@ namespace std *

{@link HashMap} containers are faster than {@link TreeMap} containers to access individual elements by their * key, although they are generally less efficient for range iteration through a subset of their elements.

* - *

- * + *

+ * *

* *

Container properties

@@ -72,6 +64,9 @@ namespace std extends base.UniqueMap implements base.IHashMap { + /** + * @hidden + */ private hash_buckets_: base.MapHashBuckets; /* ========================================================= @@ -389,382 +384,4 @@ namespace std [this.hash_buckets_, obj.hash_buckets_] = [obj.hash_buckets_, this.hash_buckets_]; } } -} - -///** -// * @hidden -// */ -//namespace std.unordered_multimap -//{ -// export type iterator = std.MapIterator; -// export type reverse_iterator = std.MapReverseIterator; -//} -namespace std.HashMultiMap -{ - export type iterator = std.MapIterator; - export type reverse_iterator = std.MapReverseIterator; -} - -namespace std -{ - /** - *

Hashed, unordered Multimap.

- * - *

{@link HashMap}s are associative containers that store elements formed by the combination of - * a key value and a mapped value, much like {@link HashMap} containers, but allowing - * different elements to have equivalent keys.

- * - *

In an {@link HashMap}, the key value is generally used to uniquely identify the - * element, while the mapped value is an object with the content associated to this key. - * Types of key and mapped value may differ.

- * - *

Internally, the elements in the {@link HashMap} are not sorted in any particular order with - * respect to either their key or mapped values, but organized into buckets depending on - * their hash values to allow for fast access to individual elements directly by their key values - * (with a constant average time complexity on average).

- * - *

Elements with equivalent keys are grouped together in the same bucket and in such a way that - * an iterator can iterate through all of them. Iterators in the container are doubly linked iterators.

- * - *

- * - *

- * - *

Container properties

- *
- *
Associative
- *
Elements in associative containers are referenced by their key and not by their absolute - * position in the container.
- * - *
Hashed
- *
Hashed containers organize their elements using hash tables that allow for fast access to elements - * by their key.
- * - *
Map
- *
Each element associates a key to a mapped value: - * Keys are meant to identify the elements whose main content is the mapped value.
- * - *
Multiple equivalent keys
- *
The container can hold multiple elements with equivalent keys.
- *
- * - * @param Type of the key values. - * Each element in an {@link HashMap} is identified by a key value. - * @param Type of the mapped value. - * Each element in an {@link HashMap} is used to store some data as its mapped value. - * - * @reference http://www.cplusplus.com/reference/unordered_map/unordered_multimap - * @author Jeongho Nam - */ - export class HashMultiMap - extends base.MultiMap - { - /** - * - */ - private hash_buckets_: base.MapHashBuckets; - - /* ========================================================= - CONSTRUCTORS & SEMI-CONSTRUCTORS - - CONSTRUCTORS - - ASSIGN & CLEAR - ============================================================ - CONSTURCTORS - --------------------------------------------------------- */ - ///// - // using super::constructor - ///// - - /** - * @hidden - */ - protected init(): void - { - super.init(); - - this.hash_buckets_ = new base.MapHashBuckets(this); - } - - /** - * @hidden - */ - protected construct_from_array(items: Array>): void - { - this.hash_buckets_.rehash(items.length * base.Hash.RATIO); - - super.construct_from_array(items); - } - - /* --------------------------------------------------------- - ASSIGN & CLEAR - --------------------------------------------------------- */ - /** - * @inheritdoc - */ - public clear(): void - { - this.hash_buckets_.clear(); - - super.clear(); - } - - /* ========================================================= - ACCESSORS - - MEMBER - - HASH - ============================================================ - MEMBER - --------------------------------------------------------- */ - /** - * @inheritdoc - */ - public find(key: Key): MapIterator - { - return this.hash_buckets_.find(key); - } - - /** - * @inheritdoc - */ - public count(key: Key): number - { - // FIND MATCHED BUCKET - let index = std.hash(key) % this.hash_buckets_.item_size(); - let bucket = this.hash_buckets_.at(index); - - // ITERATE THE BUCKET - let cnt: number = 0; - for (let i = 0; i < bucket.length; i++) - if (std.equal_to(bucket[i].first, key)) - cnt++; - - return cnt; - } - - /** - * @inheritdoc - */ - public begin(): MapIterator; - - /** - * @inheritdoc - */ - public begin(index: number): MapIterator; - - public begin(index?: number): MapIterator - { - if (index == undefined) - return super.begin(); - else - return this.hash_buckets_.at(index).front(); - } - - /** - * @inheritdoc - */ - public end(): MapIterator; - - /** - * @inheritdoc - */ - public end(index: number): MapIterator - - public end(index?: number): MapIterator - { - if (index == undefined) - return super.end(); - else - return this.hash_buckets_.at(index).back().next(); - } - - /** - * @inheritdoc - */ - public rbegin(): MapReverseIterator; - - /** - * @inheritdoc - */ - public rbegin(index: number): MapReverseIterator; - - public rbegin(index?: number): MapReverseIterator - { - return new MapReverseIterator(this.end(index)); - } - - /** - * @inheritdoc - */ - public rend(): MapReverseIterator; - - /** - * @inheritdoc - */ - public rend(index: number): MapReverseIterator; - - public rend(index?: number): MapReverseIterator - { - return new MapReverseIterator(this.begin(index)); - } - - /* --------------------------------------------------------- - HASH - --------------------------------------------------------- */ - /** - * @inheritdoc - */ - public bucket_count(): number - { - return this.hash_buckets_.size(); - } - - /** - * @inheritdoc - */ - public bucket_size(n: number): number - { - return this.hash_buckets_.at(n).size(); - } - - /** - * @inheritdoc - */ - public max_load_factor(): number; - - /** - * @inheritdoc - */ - public max_load_factor(z: number): void; - - public max_load_factor(z?: number): any - { - if (z == undefined) - return this.size() / this.bucket_count(); - else - this.rehash(Math.ceil(this.bucket_count() / z)); - } - - /** - * @inheritdoc - */ - public bucket(key: Key): number - { - return std.hash(key) % this.hash_buckets_.size(); - } - - /** - * @inheritdoc - */ - public reserve(n: number): void - { - this.hash_buckets_.rehash(Math.ceil(n * this.max_load_factor())); - } - - /** - * @inheritdoc - */ - public rehash(n: number): void - { - if (n <= this.bucket_count()) - return; - - this.hash_buckets_.rehash(n); - } - - /* ========================================================= - ELEMENTS I/O - - INSERT - - POST-PROCESS - ============================================================ - INSERT - --------------------------------------------------------- */ - /** - * @hidden - */ - protected insert_by_pair(pair: Pair): any - { - // INSERT - let it = new MapIterator(this, this.data_.insert(this.data_.end(), pair)); - - this.handle_insert(it, it.next()); // POST-PROCESS - return it; - } - - /** - * @hidden - */ - protected insert_by_hint(hint: MapIterator, pair: Pair): MapIterator - { - // INSERT - let list_it = this.data_.insert(hint.get_list_iterator(), pair); - - // POST-PROCESS - let it = new MapIterator(this, list_it); - this.handle_insert(it, it.next()); - - return it; - } - - /** - * @hidden - */ - protected insert_by_range>> - (first: InputIterator, last: InputIterator): void - { - // INSERT ELEMENTS - let list_iterator = this.data_.insert(this.data_.end(), first, last); - let my_first = new MapIterator(this, list_iterator); - - // IF NEEDED, HASH_BUCKET TO HAVE SUITABLE SIZE - if (this.size() > this.hash_buckets_.item_size() * base.Hash.MAX_RATIO) - this.hash_buckets_.rehash(this.size() * base.Hash.RATIO); - - // POST-PROCESS - this.handle_insert(my_first, this.end()); - } - - /* --------------------------------------------------------- - POST-PROCESS - --------------------------------------------------------- */ - /** - * @inheritdoc - */ - protected handle_insert(first: MapIterator, last: MapIterator): void - { - for (; !first.equal_to(last); first = first.next()) - this.hash_buckets_.insert(first); - } - - /** - * @inheritdoc - */ - protected handle_erase(first: MapIterator, last: MapIterator): void - { - for (; !first.equal_to(last); first = first.next()) - this.hash_buckets_.erase(first); - } - - /* =============================================================== - UTILITIES - =============================================================== */ - /** - * @inheritdoc - */ - public swap(obj: base.MultiMap): void - { - if (obj instanceof HashMultiMap) - this.swap_hash_multimap(obj); - else - super.swap(obj); - } - - /** - * @hidden - */ - private swap_hash_multimap(obj: HashMultiMap): void - { - [this.data_, obj.data_] = [obj.data_, this.data_]; - [this.hash_buckets_, obj.hash_buckets_] = [obj.hash_buckets_, this.hash_buckets_]; - } - } } \ No newline at end of file diff --git a/ts/src/std/HashMultiMap.ts b/ts/src/std/HashMultiMap.ts new file mode 100644 index 00000000..d3024e49 --- /dev/null +++ b/ts/src/std/HashMultiMap.ts @@ -0,0 +1,373 @@ +/// + +/// + +namespace std.HashMultiMap +{ + export type iterator = std.MapIterator; + export type reverse_iterator = std.MapReverseIterator; +} + +namespace std +{ + /** + *

Hashed, unordered Multimap.

+ * + *

{@link HashMap}s are associative containers that store elements formed by the combination of + * a key value and a mapped value, much like {@link HashMap} containers, but allowing + * different elements to have equivalent keys.

+ * + *

In an {@link HashMap}, the key value is generally used to uniquely identify the + * element, while the mapped value is an object with the content associated to this key. + * Types of key and mapped value may differ.

+ * + *

Internally, the elements in the {@link HashMap} are not sorted in any particular order with + * respect to either their key or mapped values, but organized into buckets depending on + * their hash values to allow for fast access to individual elements directly by their key values + * (with a constant average time complexity on average).

+ * + *

Elements with equivalent keys are grouped together in the same bucket and in such a way that + * an iterator can iterate through all of them. Iterators in the container are doubly linked iterators.

+ * + *

+ * + *

+ * + *

Container properties

+ *
+ *
Associative
+ *
Elements in associative containers are referenced by their key and not by their absolute + * position in the container.
+ * + *
Hashed
+ *
Hashed containers organize their elements using hash tables that allow for fast access to elements + * by their key.
+ * + *
Map
+ *
Each element associates a key to a mapped value: + * Keys are meant to identify the elements whose main content is the mapped value.
+ * + *
Multiple equivalent keys
+ *
The container can hold multiple elements with equivalent keys.
+ *
+ * + * @param Type of the key values. + * Each element in an {@link HashMap} is identified by a key value. + * @param Type of the mapped value. + * Each element in an {@link HashMap} is used to store some data as its mapped value. + * + * @reference http://www.cplusplus.com/reference/unordered_map/unordered_multimap + * @author Jeongho Nam + */ + export class HashMultiMap + extends base.MultiMap + { + /** + * @hidden + */ + private hash_buckets_: base.MapHashBuckets; + + /* ========================================================= + CONSTRUCTORS & SEMI-CONSTRUCTORS + - CONSTRUCTORS + - ASSIGN & CLEAR + ============================================================ + CONSTURCTORS + --------------------------------------------------------- */ + ///// + // using super::constructor + ///// + + /** + * @hidden + */ + protected init(): void + { + super.init(); + + this.hash_buckets_ = new base.MapHashBuckets(this); + } + + /** + * @hidden + */ + protected construct_from_array(items: Array>): void + { + this.hash_buckets_.rehash(items.length * base.Hash.RATIO); + + super.construct_from_array(items); + } + + /* --------------------------------------------------------- + ASSIGN & CLEAR + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + public clear(): void + { + this.hash_buckets_.clear(); + + super.clear(); + } + + /* ========================================================= + ACCESSORS + - MEMBER + - HASH + ============================================================ + MEMBER + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + public find(key: Key): MapIterator + { + return this.hash_buckets_.find(key); + } + + /** + * @inheritdoc + */ + public count(key: Key): number + { + // FIND MATCHED BUCKET + let index = std.hash(key) % this.hash_buckets_.item_size(); + let bucket = this.hash_buckets_.at(index); + + // ITERATE THE BUCKET + let cnt: number = 0; + for (let i = 0; i < bucket.length; i++) + if (std.equal_to(bucket[i].first, key)) + cnt++; + + return cnt; + } + + /** + * @inheritdoc + */ + public begin(): MapIterator; + + /** + * @inheritdoc + */ + public begin(index: number): MapIterator; + + public begin(index?: number): MapIterator + { + if (index == undefined) + return super.begin(); + else + return this.hash_buckets_.at(index).front(); + } + + /** + * @inheritdoc + */ + public end(): MapIterator; + + /** + * @inheritdoc + */ + public end(index: number): MapIterator + + public end(index?: number): MapIterator + { + if (index == undefined) + return super.end(); + else + return this.hash_buckets_.at(index).back().next(); + } + + /** + * @inheritdoc + */ + public rbegin(): MapReverseIterator; + + /** + * @inheritdoc + */ + public rbegin(index: number): MapReverseIterator; + + public rbegin(index?: number): MapReverseIterator + { + return new MapReverseIterator(this.end(index)); + } + + /** + * @inheritdoc + */ + public rend(): MapReverseIterator; + + /** + * @inheritdoc + */ + public rend(index: number): MapReverseIterator; + + public rend(index?: number): MapReverseIterator + { + return new MapReverseIterator(this.begin(index)); + } + + /* --------------------------------------------------------- + HASH + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + public bucket_count(): number + { + return this.hash_buckets_.size(); + } + + /** + * @inheritdoc + */ + public bucket_size(n: number): number + { + return this.hash_buckets_.at(n).size(); + } + + /** + * @inheritdoc + */ + public max_load_factor(): number; + + /** + * @inheritdoc + */ + public max_load_factor(z: number): void; + + public max_load_factor(z?: number): any + { + if (z == undefined) + return this.size() / this.bucket_count(); + else + this.rehash(Math.ceil(this.bucket_count() / z)); + } + + /** + * @inheritdoc + */ + public bucket(key: Key): number + { + return std.hash(key) % this.hash_buckets_.size(); + } + + /** + * @inheritdoc + */ + public reserve(n: number): void + { + this.hash_buckets_.rehash(Math.ceil(n * this.max_load_factor())); + } + + /** + * @inheritdoc + */ + public rehash(n: number): void + { + if (n <= this.bucket_count()) + return; + + this.hash_buckets_.rehash(n); + } + + /* ========================================================= + ELEMENTS I/O + - INSERT + - POST-PROCESS + ============================================================ + INSERT + --------------------------------------------------------- */ + /** + * @hidden + */ + protected insert_by_pair(pair: Pair): any + { + // INSERT + let it = new MapIterator(this, this.data_.insert(this.data_.end(), pair)); + + this.handle_insert(it, it.next()); // POST-PROCESS + return it; + } + + /** + * @hidden + */ + protected insert_by_hint(hint: MapIterator, pair: Pair): MapIterator + { + // INSERT + let list_it = this.data_.insert(hint.get_list_iterator(), pair); + + // POST-PROCESS + let it = new MapIterator(this, list_it); + this.handle_insert(it, it.next()); + + return it; + } + + /** + * @hidden + */ + protected insert_by_range>> + (first: InputIterator, last: InputIterator): void + { + // INSERT ELEMENTS + let list_iterator = this.data_.insert(this.data_.end(), first, last); + let my_first = new MapIterator(this, list_iterator); + + // IF NEEDED, HASH_BUCKET TO HAVE SUITABLE SIZE + if (this.size() > this.hash_buckets_.item_size() * base.Hash.MAX_RATIO) + this.hash_buckets_.rehash(this.size() * base.Hash.RATIO); + + // POST-PROCESS + this.handle_insert(my_first, this.end()); + } + + /* --------------------------------------------------------- + POST-PROCESS + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + protected handle_insert(first: MapIterator, last: MapIterator): void + { + for (; !first.equal_to(last); first = first.next()) + this.hash_buckets_.insert(first); + } + + /** + * @inheritdoc + */ + protected handle_erase(first: MapIterator, last: MapIterator): void + { + for (; !first.equal_to(last); first = first.next()) + this.hash_buckets_.erase(first); + } + + /* =============================================================== + UTILITIES + =============================================================== */ + /** + * @inheritdoc + */ + public swap(obj: base.MultiMap): void + { + if (obj instanceof HashMultiMap) + this.swap_hash_multimap(obj); + else + super.swap(obj); + } + + /** + * @hidden + */ + private swap_hash_multimap(obj: HashMultiMap): void + { + [this.data_, obj.data_] = [obj.data_, this.data_]; + [this.hash_buckets_, obj.hash_buckets_] = [obj.hash_buckets_, this.hash_buckets_]; + } + } +} \ No newline at end of file diff --git a/ts/src/std/HashMultiSet.ts b/ts/src/std/HashMultiSet.ts new file mode 100644 index 00000000..d0015491 --- /dev/null +++ b/ts/src/std/HashMultiSet.ts @@ -0,0 +1,374 @@ +/// + +/// + +namespace std.HashMultiSet +{ + export type iterator = std.SetIterator; + export type reverse_iterator = std.SetReverseIterator; +} + +namespace std +{ + /** + *

Hashed, unordered Multiset.

+ * + *

{@link HashMultiSet HashMultiSets} are containers that store elements in no particular order, allowing fast + * retrieval of individual elements based on their value, much like {@link HashSet} containers, + * but allowing different elements to have equivalent values.

+ * + *

In an {@link HashMultiSet}, the value of an element is at the same time its key, used to + * identify it. Keys are immutable, therefore, the elements in an {@link HashMultiSet} cannot be + * modified once in the container - they can be inserted and removed, though.

+ * + *

Internally, the elements in the {@link HashMultiSet} are not sorted in any particular, but + * organized into buckets depending on their hash values to allow for fast access to individual + * elements directly by their values (with a constant average time complexity on average).

+ * + *

Elements with equivalent values are grouped together in the same bucket and in such a way that an + * iterator can iterate through all of them. Iterators in the container are doubly linked iterators.

+ * + *

+ *

+ * + *

Container properties

+ *
+ *
Associative
+ *
Elements in associative containers are referenced by their key and not by their absolute + * position in the container.
+ * + *
Hashed
+ *
Hashed containers organize their elements using hash tables that allow for fast access to elements + * by their key.
+ * + *
Set
+ *
The value of an element is also the key used to identify it.
+ * + *
Multiple equivalent keys
+ *
The container can hold multiple elements with equivalent keys.
+ *
+ * + * @param Type of the elements. + * Each element in an {@link UnorderedMultiSet} is also identified by this value.. + * + * @reference http://www.cplusplus.com/reference/unordered_set/unordered_multiset + * @author Jeongho Nam + */ + export class HashMultiSet + extends base.MultiSet + { + /** + * @hidden + */ + private hash_buckets_: base.SetHashBuckets = new base.SetHashBuckets(this); + + /* ========================================================= + CONSTRUCTORS & SEMI-CONSTRUCTORS + - CONSTRUCTORS + - ASSIGN & CLEAR + ============================================================ + CONSTURCTORS + --------------------------------------------------------- */ + ///// + // using super::constructor + ///// + + /** + * @hidden + */ + protected init(): void + { + super.init(); + + this.hash_buckets_ = new base.SetHashBuckets(this); + } + + /** + * @hidden + */ + protected construct_from_array(items: Array): void + { + this.hash_buckets_.rehash(items.length * base.Hash.RATIO); + + super.construct_from_array(items); + } + + /* --------------------------------------------------------- + ASSIGN & CLEAR + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + public clear(): void + { + this.hash_buckets_.clear(); + + super.clear(); + } + + /* ========================================================= + ACCESSORS + - MEMBER + - HASH + ============================================================ + MEMBER + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + public find(key: T): SetIterator + { + return this.hash_buckets_.find(key); + } + + /** + * @inheritdoc + */ + public count(key: T): number + { + // FIND MATCHED BUCKET + let index = std.hash(key) % this.hash_buckets_.item_size(); + let bucket = this.hash_buckets_.at(index); + + // ITERATE THE BUCKET + let cnt: number = 0; + for (let i = 0; i < bucket.length; i++) + if (std.equal_to(bucket[i].value, key)) + cnt++; + + return cnt; + } + + /** + * @inheritdoc + */ + public begin(): SetIterator; + + /** + * @inheritdoc + */ + public begin(index: number): SetIterator; + + public begin(index?: number): SetIterator + { + if (index == undefined) + return super.begin(); + else + return this.hash_buckets_.at(index).front(); + } + + /** + * @inheritdoc + */ + public end(): SetIterator; + + /** + * @inheritdoc + */ + public end(index: number): SetIterator + + public end(index?: number): SetIterator + { + if (index == undefined) + return super.end(); + else + return this.hash_buckets_.at(index).back().next(); + } + + /** + * @inheritdoc + */ + public rbegin(): SetReverseIterator; + + /** + * @inheritdoc + */ + public rbegin(index: number): SetReverseIterator; + + public rbegin(index?: number): SetReverseIterator + { + if (index == undefined) + return super.rbegin(); + else + return new SetReverseIterator(this.end(index)); + } + + /** + * @inheritdoc + */ + public rend(): SetReverseIterator; + + /** + * @inheritdoc + */ + public rend(index: number): SetReverseIterator; + + public rend(index?: number): SetReverseIterator + { + if (index == undefined) + return super.rend(); + else + return new SetReverseIterator(this.begin(index)); + } + + /* --------------------------------------------------------- + HASH + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + public bucket_count(): number + { + return this.hash_buckets_.size(); + } + + /** + * @inheritdoc + */ + public bucket_size(n: number): number + { + return this.hash_buckets_.at(n).size(); + } + + /** + * @inheritdoc + */ + public max_load_factor(): number; + + /** + * @inheritdoc + */ + public max_load_factor(z: number): void; + + public max_load_factor(z?: number): any + { + if (z == undefined) + return this.size() / this.bucket_count(); + else + this.rehash(Math.ceil(this.bucket_count() / z)); + } + + /** + * @inheritdoc + */ + public bucket(key: T): number + { + return std.hash(key) % this.hash_buckets_.size(); + } + + /** + * @inheritdoc + */ + public reserve(n: number): void + { + this.hash_buckets_.rehash(Math.ceil(n * this.max_load_factor())); + } + + /** + * @inheritdoc + */ + public rehash(n: number): void + { + if (n <= this.bucket_count()) + return; + + this.hash_buckets_.rehash(n); + } + + /* ========================================================= + ELEMENTS I/O + - INSERT + - POST-PROCESS + ============================================================ + INSERT + --------------------------------------------------------- */ + /** + * @hidden + */ + protected insert_by_val(val: T): any + { + // INSERT + let it = new SetIterator(this, this.data_.insert(this.data_.end(), val)); + + this.handle_insert(it, it.next()); // POST-PROCESS + return it; + } + + /** + * @hidden + */ + protected insert_by_hint(hint: SetIterator, val: T): SetIterator + { + // INSERT + let list_iterator = this.data_.insert(hint.get_list_iterator(), val); + + // POST-PROCESS + let it = new SetIterator(this, list_iterator); + this.handle_insert(it, it.next()); + + return it; + } + + /** + * @hidden + */ + protected insert_by_range> + (first: InputIterator, last: InputIterator): void + { + // INSERT ELEMENTS + let list_iterator = this.data_.insert(this.data_.end(), first, last); + let my_first = new SetIterator(this, list_iterator); + + // IF NEEDED, HASH_BUCKET TO HAVE SUITABLE SIZE + if (this.size() > this.hash_buckets_.item_size() * base.Hash.MAX_RATIO) + this.hash_buckets_.rehash(this.size() * base.Hash.RATIO); + + // POST-PROCESS + this.handle_insert(my_first, this.end()); + } + + /* --------------------------------------------------------- + POST-PROCESS + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + protected handle_insert(first: SetIterator, last: SetIterator): void + { + for (; !first.equal_to(last); first = first.next()) + this.hash_buckets_.insert(first); + } + + /** + * @inheritdoc + */ + protected handle_erase(first: SetIterator, last: SetIterator): void + { + for (; !first.equal_to(last); first = first.next()) + this.hash_buckets_.erase(first); + } + + /* =============================================================== + UTILITIES + =============================================================== */ + /** + * @inheritdoc + */ + public swap(obj: base.MultiSet): void + { + if (obj instanceof HashMultiSet) + this.swap_tree_set(obj); + else + super.swap(obj); + } + + /** + * @hidden + */ + private swap_tree_set(obj: HashMultiSet): void + { + [this.data_, obj.data_] = [obj.data_, this.data_]; + [this.hash_buckets_, obj.hash_buckets_] = [obj.hash_buckets_, this.hash_buckets_]; + } + } +} \ No newline at end of file diff --git a/ts/src/std/HashSet.ts b/ts/src/std/HashSet.ts index 105c46b9..4910dfe1 100644 --- a/ts/src/std/HashSet.ts +++ b/ts/src/std/HashSet.ts @@ -1,7 +1,6 @@ /// /// -/// namespace std.HashSet { @@ -29,8 +28,8 @@ namespace std * elements by their key, although they are generally less efficient for range iteration through a * subset of their elements.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -58,6 +57,9 @@ namespace std export class HashSet extends base.UniqueSet { + /** + * @hidden + */ private hash_buckets_: base.SetHashBuckets = new base.SetHashBuckets(this); /* ========================================================= @@ -374,372 +376,4 @@ namespace std [this.hash_buckets_, obj.hash_buckets_] = [obj.hash_buckets_, this.hash_buckets_]; } } -} - -namespace std.HashMultiSet -{ - export type iterator = std.SetIterator; - export type reverse_iterator = std.SetReverseIterator; -} - -namespace std -{ - /** - *

Hashed, unordered Multiset.

- * - *

{@link HashMultiSet HashMultiSets} are containers that store elements in no particular order, allowing fast - * retrieval of individual elements based on their value, much like {@link HashSet} containers, - * but allowing different elements to have equivalent values.

- * - *

In an {@link HashMultiSet}, the value of an element is at the same time its key, used to - * identify it. Keys are immutable, therefore, the elements in an {@link HashMultiSet} cannot be - * modified once in the container - they can be inserted and removed, though.

- * - *

Internally, the elements in the {@link HashMultiSet} are not sorted in any particular, but - * organized into buckets depending on their hash values to allow for fast access to individual - * elements directly by their values (with a constant average time complexity on average).

- * - *

Elements with equivalent values are grouped together in the same bucket and in such a way that an - * iterator can iterate through all of them. Iterators in the container are doubly linked iterators.

- * - *

- *

- * - *

Container properties

- *
- *
Associative
- *
Elements in associative containers are referenced by their key and not by their absolute - * position in the container.
- * - *
Hashed
- *
Hashed containers organize their elements using hash tables that allow for fast access to elements - * by their key.
- * - *
Set
- *
The value of an element is also the key used to identify it.
- * - *
Multiple equivalent keys
- *
The container can hold multiple elements with equivalent keys.
- *
- * - * @param Type of the elements. - * Each element in an {@link UnorderedMultiSet} is also identified by this value.. - * - * @reference http://www.cplusplus.com/reference/unordered_set/unordered_multiset - * @author Jeongho Nam - */ - export class HashMultiSet - extends base.MultiSet - { - private hash_buckets_: base.SetHashBuckets = new base.SetHashBuckets(this); - - /* ========================================================= - CONSTRUCTORS & SEMI-CONSTRUCTORS - - CONSTRUCTORS - - ASSIGN & CLEAR - ============================================================ - CONSTURCTORS - --------------------------------------------------------- */ - ///// - // using super::constructor - ///// - - /** - * @hidden - */ - protected init(): void - { - super.init(); - - this.hash_buckets_ = new base.SetHashBuckets(this); - } - - /** - * @hidden - */ - protected construct_from_array(items: Array): void - { - this.hash_buckets_.rehash(items.length * base.Hash.RATIO); - - super.construct_from_array(items); - } - - /* --------------------------------------------------------- - ASSIGN & CLEAR - --------------------------------------------------------- */ - /** - * @inheritdoc - */ - public clear(): void - { - this.hash_buckets_.clear(); - - super.clear(); - } - - /* ========================================================= - ACCESSORS - - MEMBER - - HASH - ============================================================ - MEMBER - --------------------------------------------------------- */ - /** - * @inheritdoc - */ - public find(key: T): SetIterator - { - return this.hash_buckets_.find(key); - } - - /** - * @inheritdoc - */ - public count(key: T): number - { - // FIND MATCHED BUCKET - let index = std.hash(key) % this.hash_buckets_.item_size(); - let bucket = this.hash_buckets_.at(index); - - // ITERATE THE BUCKET - let cnt: number = 0; - for (let i = 0; i < bucket.length; i++) - if (std.equal_to(bucket[i].value, key)) - cnt++; - - return cnt; - } - - /** - * @inheritdoc - */ - public begin(): SetIterator; - - /** - * @inheritdoc - */ - public begin(index: number): SetIterator; - - public begin(index?: number): SetIterator - { - if (index == undefined) - return super.begin(); - else - return this.hash_buckets_.at(index).front(); - } - - /** - * @inheritdoc - */ - public end(): SetIterator; - - /** - * @inheritdoc - */ - public end(index: number): SetIterator - - public end(index?: number): SetIterator - { - if (index == undefined) - return super.end(); - else - return this.hash_buckets_.at(index).back().next(); - } - - /** - * @inheritdoc - */ - public rbegin(): SetReverseIterator; - - /** - * @inheritdoc - */ - public rbegin(index: number): SetReverseIterator; - - public rbegin(index?: number): SetReverseIterator - { - if (index == undefined) - return super.rbegin(); - else - return new SetReverseIterator(this.end(index)); - } - - /** - * @inheritdoc - */ - public rend(): SetReverseIterator; - - /** - * @inheritdoc - */ - public rend(index: number): SetReverseIterator; - - public rend(index?: number): SetReverseIterator - { - if (index == undefined) - return super.rend(); - else - return new SetReverseIterator(this.begin(index)); - } - - /* --------------------------------------------------------- - HASH - --------------------------------------------------------- */ - /** - * @inheritdoc - */ - public bucket_count(): number - { - return this.hash_buckets_.size(); - } - - /** - * @inheritdoc - */ - public bucket_size(n: number): number - { - return this.hash_buckets_.at(n).size(); - } - - /** - * @inheritdoc - */ - public max_load_factor(): number; - - /** - * @inheritdoc - */ - public max_load_factor(z: number): void; - - public max_load_factor(z?: number): any - { - if (z == undefined) - return this.size() / this.bucket_count(); - else - this.rehash(Math.ceil(this.bucket_count() / z)); - } - - /** - * @inheritdoc - */ - public bucket(key: T): number - { - return std.hash(key) % this.hash_buckets_.size(); - } - - /** - * @inheritdoc - */ - public reserve(n: number): void - { - this.hash_buckets_.rehash(Math.ceil(n * this.max_load_factor())); - } - - /** - * @inheritdoc - */ - public rehash(n: number): void - { - if (n <= this.bucket_count()) - return; - - this.hash_buckets_.rehash(n); - } - - /* ========================================================= - ELEMENTS I/O - - INSERT - - POST-PROCESS - ============================================================ - INSERT - --------------------------------------------------------- */ - /** - * @hidden - */ - protected insert_by_val(val: T): any - { - // INSERT - let it = new SetIterator(this, this.data_.insert(this.data_.end(), val)); - - this.handle_insert(it, it.next()); // POST-PROCESS - return it; - } - - /** - * @hidden - */ - protected insert_by_hint(hint: SetIterator, val: T): SetIterator - { - // INSERT - let list_iterator = this.data_.insert(hint.get_list_iterator(), val); - - // POST-PROCESS - let it = new SetIterator(this, list_iterator); - this.handle_insert(it, it.next()); - - return it; - } - - /** - * @hidden - */ - protected insert_by_range> - (first: InputIterator, last: InputIterator): void - { - // INSERT ELEMENTS - let list_iterator = this.data_.insert(this.data_.end(), first, last); - let my_first = new SetIterator(this, list_iterator); - - // IF NEEDED, HASH_BUCKET TO HAVE SUITABLE SIZE - if (this.size() > this.hash_buckets_.item_size() * base.Hash.MAX_RATIO) - this.hash_buckets_.rehash(this.size() * base.Hash.RATIO); - - // POST-PROCESS - this.handle_insert(my_first, this.end()); - } - - /* --------------------------------------------------------- - POST-PROCESS - --------------------------------------------------------- */ - /** - * @inheritdoc - */ - protected handle_insert(first: SetIterator, last: SetIterator): void - { - for (; !first.equal_to(last); first = first.next()) - this.hash_buckets_.insert(first); - } - - /** - * @inheritdoc - */ - protected handle_erase(first: SetIterator, last: SetIterator): void - { - for (; !first.equal_to(last); first = first.next()) - this.hash_buckets_.erase(first); - } - - /* =============================================================== - UTILITIES - =============================================================== */ - /** - * @inheritdoc - */ - public swap(obj: base.MultiSet): void - { - if (obj instanceof HashMultiSet) - this.swap_tree_set(obj); - else - super.swap(obj); - } - - /** - * @hidden - */ - private swap_tree_set(obj: HashMultiSet): void - { - [this.data_, obj.data_] = [obj.data_, this.data_]; - [this.hash_buckets_, obj.hash_buckets_] = [obj.hash_buckets_, this.hash_buckets_]; - } - } } \ No newline at end of file diff --git a/ts/src/std/Iterator.ts b/ts/src/std/Iterator.ts index 2f57312f..8196970f 100644 --- a/ts/src/std/Iterator.ts +++ b/ts/src/std/Iterator.ts @@ -19,8 +19,8 @@ namespace std *

There is not a single type of {@link Iterator bidirectional iterator}: {@link IContainer Each container} * may define its own specific iterator type able to iterate through it and access its elements.

* - *

- * + *

+ * *

* * @reference http://www.cplusplus.com/reference/iterator/BidirectionalIterator @@ -162,8 +162,8 @@ namespace std * first element in a range is reversed, the reversed iterator points to the element before the first element (this * would be the past-the-end element of the reversed range).

* - *

- * + *

+ * *

* * @reference http://www.cplusplus.com/reference/iterator/reverse_iterator diff --git a/ts/src/std/List.ts b/ts/src/std/List.ts index c998b932..f94947ef 100644 --- a/ts/src/std/List.ts +++ b/ts/src/std/List.ts @@ -34,8 +34,8 @@ namespace std * distance between these. They also consume some extra memory to keep the linking information associated to each * element (which may be an important factor for large lists of small-sized elements).

* - *

- * + *

+ * *

* *

Container properties

@@ -59,18 +59,21 @@ namespace std extends base.Container implements base.IDequeContainer { + // An iterator, node of beginning. /** - * An iterator of beginning. + * @hidden */ protected begin_: ListIterator; + // An iterator, node of end. /** - * An iterator of end. + * @hidden */ protected end_: ListIterator; - + + // Number of elements in this List. /** - * Number of elements in the {@link List}. + * @hidden */ protected size_: number; @@ -1089,8 +1092,8 @@ namespace std /** *

An iterator, node of a List.

* - *

- * + *

+ * *

* * @author Jeongho Nam @@ -1254,8 +1257,8 @@ namespace std /** *

A reverse-iterator of List.

* - *

- * + *

+ * *

* * @param Type of the elements. diff --git a/ts/src/std/Queue.ts b/ts/src/std/Queue.ts index 5b4e17cf..e3830bf2 100644 --- a/ts/src/std/Queue.ts +++ b/ts/src/std/Queue.ts @@ -31,8 +31,8 @@ namespace std * By default, if no container class is specified for a particular {@link Queue} class instantiation, the standard * container {@link List} is used.

* - *

- * + *

+ * *

* * @param Type of elements. diff --git a/ts/src/std/Stack.ts b/ts/src/std/Stack.ts index e8b3c211..636c9299 100644 --- a/ts/src/std/Stack.ts +++ b/ts/src/std/Stack.ts @@ -29,8 +29,8 @@ namespace std * By default, if no container class is specified for a particular {@link Stack} class instantiation, the standard * container {@link List} is used.

* - *

- * + *

+ * *

* * @param Type of elements. diff --git a/ts/src/std/SystemError.ts b/ts/src/std/SystemError.ts index 0c93cbed..e3adf690 100644 --- a/ts/src/std/SystemError.ts +++ b/ts/src/std/SystemError.ts @@ -15,8 +15,8 @@ namespace std *

The class inherits from {@link RuntimeError}, to which it adds an {@link ErrorCode} as * member code (and defines a specialized what member).

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/system_error/system_error * @author Jeongho Nam @@ -25,7 +25,7 @@ namespace std extends RuntimeError { /** - * Error code. + * @hidden */ protected code_: ErrorCode; @@ -104,8 +104,8 @@ namespace std * passed by reference. As such, only one object of each of these types shall exist, each uniquely identifying its own * category: all error codes and conditions of a same category shall return a reference to same object.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/system_error/error_category * @author Jeongho Nam @@ -272,8 +272,8 @@ namespace std *

The {@link ErrorCategory categories} associated with the {@link ErrorCondition} and the * {@link ErrorCode} define the equivalences between them.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/system_error/error_condition * @author Jeongho Nam @@ -318,8 +318,8 @@ namespace std *

Objects of this class associate such numerical codes to {@link ErrorCategory error categories}, so that they * can be interpreted when needed as more abstract (and portable) {@link ErrorCondition error conditions}.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/system_error/error_code * @author Jeongho Nam diff --git a/ts/src/std/TreeMap.ts b/ts/src/std/TreeMap.ts index 5febbec5..0c88543c 100644 --- a/ts/src/std/TreeMap.ts +++ b/ts/src/std/TreeMap.ts @@ -1,16 +1,7 @@ /// /// -/// - -///** -// * @hidden -// */ -//namespace std.map -//{ -// export type iterator = std.MapIterator; -// export type reverse_iterator = std.MapReverseIterator; -//} + namespace std.TreeMap { export type iterator = std.MapIterator; @@ -40,8 +31,8 @@ namespace std * *

{@link TreeMap}s are typically implemented as binary search trees.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -72,7 +63,7 @@ namespace std implements base.ITreeMap { /** - * RB-Tree+ object for implemeting the {@link TreeMap}. + * @hidden */ private tree_: base.PairTree; @@ -397,423 +388,4 @@ namespace std [this.tree_, obj.tree_] = [obj.tree_, this.tree_]; } } -} - -///** -// * @hidden -// */ -//namespace std.multimap -//{ -// export type iterator = std.MapIterator; -// export type reverse_iterator = std.MapReverseIterator; -//} -namespace std.TreeMultiMap -{ - export type iterator = std.MapIterator; - export type reverse_iterator = std.MapReverseIterator; -} - -namespace std -{ - /** - *

Tree-structured multiple-key map.

- * - *

{@link TreeMultiMap TreeMultiMaps} are associative containers that store elements formed by a combination of - * a key value and a mapped value, following a specific order, and where multiple elements can - * have equivalent keys.

- * - *

In a {@link TreeMultiMap}, the key values are generally used to sort and uniquely identify - * the elements, while the mapped values store the content associated to this key. The types of - * key and mapped value may differ, and are grouped together in member type - * value_type, which is a {@link Pair} type combining both:

- * - *

typedef Pair value_type;

- * - *

Internally, the elements in a {@link TreeMultiMap}are always sorted by its key following a - * strict weak ordering criterion indicated by its internal comparison method (of {@link less}).

- * - *

{@link TreeMultiMap}containers are generally slower than {@link HashMap} containers - * to access individual elements by their key, but they allow the direct iteration on subsets based - * on their order.

- * - *

{@link TreeMultiMap TreeMultiMaps} are typically implemented as binary search trees.

- * - *

< - * img src="http://samchon.github.io/typescript-stl/api/assets/images/design/map_containers.png" style="max-width: 100%" />

- * - *

Container properties

- *
- *
Associative
- *
- * Elements in associative containers are referenced by their key and not by their absolute - * position in the container. - *
- * - *
Ordered
- *
- * The elements in the container follow a strict order at all times. All inserted elements are - * given a position in this order. - *
- * - *
Map
- *
- * Each element associates a key to a mapped value: - * Keys are meant to identify the elements whose main content is the mapped value. - *
- * - *
Multiple equivalent keys
- *
Multiple elements in the container can have equivalent keys.
- *
- * - * @param Type of the keys. Each element in a map is uniquely identified by its key value. - * @param Type of the mapped value. Each element in a map stores some data as its mapped value. - * - * @reference http://www.cplusplus.com/reference/map/multimap - * @author Jeongho Nam - */ - export class TreeMultiMap - extends base.MultiMap - implements base.ITreeMap - { - private tree_: base.PairTree; - - /* ========================================================= - CONSTRUCTORS & SEMI-CONSTRUCTORS - - CONSTRUCTORS - - ASSIGN & CLEAR - ============================================================ - CONSTURCTORS - --------------------------------------------------------- */ - /** - * Default Constructor. - */ - public constructor(); - - /** - * Construct from compare. - * - * @param compare A binary predicate determines order of elements. - */ - public constructor(compare: (x: Key, y: Key) => boolean); - - /** - * Contruct from elements. - * - * @param array Elements to be contained. - */ - public constructor(array: Array>); - - /** - * Contruct from elements. - * - * @param array Elements to be contained. - * @param compare A binary predicate determines order of elements. - */ - public constructor(array: Array>, compare: (x: Key, y: Key) => boolean); - - /** - * Contruct from tuples. - * - * @param array Tuples to be contained. - */ - public constructor(array: Array<[Key, T]>); - - /** - * Contruct from tuples. - * - * @param array Tuples to be contained. - * @param compare A binary predicate determines order of elements. - */ - public constructor(array: Array<[Key, T]>, compare: (x: Key, y: Key) => boolean); - - /** - * Copy Constructor. - * - * @param container Another map to copy. - */ - public constructor(container: base.MapContainer); - - /** - * Copy Constructor. - * - * @param container Another map to copy. - * @param compare A binary predicate determines order of elements. - */ - public constructor(container: base.MapContainer, compare: (x: Key, y: Key) => boolean); - - /** - * Range Constructor. - * - * @param begin nput interator of the initial position in a sequence. - * @param end Input interator of the final position in a sequence. - */ - public constructor(begin: Iterator>, end: Iterator>); - - /** - * Range Constructor. - * - * @param begin nput interator of the initial position in a sequence. - * @param end Input interator of the final position in a sequence. - * @param compare A binary predicate determines order of elements. - */ - public constructor - ( - begin: Iterator>, end: Iterator>, compare: (x: Key, y: Key) => boolean - ); - - public constructor(...args: any[]) - { - super(); - - // CONSTRUCT TREE WITH COMPARE - let compare: (x: Key, y: Key) => boolean = std.less; - let fn: Function = null; - - // OVERLOADINGS - if (args.length == 0) { } // DO NOTHING - else if (args.length >= 1 && (args[0] instanceof base.Container || args[0] instanceof Vector)) - { - fn = this.construct_from_container; - - if (args.length == 2) - compare = args[1]; - } - else if (args.length >= 1 && args[0] instanceof Array) - { - fn = this.construct_from_array; - - if (args.length == 2) - compare = args[1]; - } - else if (args.length >= 2 && args[0] instanceof Iterator && args[1] instanceof Iterator) - { - fn = this.construct_from_range; - - if (args.length == 3) - compare = args[2]; - } - else if (args.length == 1) - compare = args[0]; - - // CONSTRUCT TREE - this.tree_ = new base.PairTree(this, compare); - - // BRANCH - CALL OVERLOADED CONSTRUCTORS - if (fn != null) - fn.apply(this, args); - } - - /* --------------------------------------------------------- - ASSIGN & CLEAR - --------------------------------------------------------- */ - /** - * @inheritdoc - */ - public clear(): void - { - super.clear(); - - this.tree_.clear(); - } - - /* ========================================================= - ACCESSORS - ========================================================= */ - /** - * @inheritdoc - */ - public find(key: Key): MapIterator - { - let node = this.tree_.find(key); - - if (node == null || std.equal_to(node.value.first, key) == false) - return this.end(); - else - return node.value; - } - - /** - * @inheritdoc - */ - public count(key: Key): number - { - let it = this.find(key); - let cnt: number = 0; - - for (; !it.equal_to(this.end()) && std.equal_to(it.first, key); it = it.next()) - cnt++; - - return cnt; - } - - /** - * @inheritdoc - */ - public key_comp(): (x: Key, y: Key) => boolean - { - return this.tree_.key_comp(); - } - - /** - * @inheritdoc - */ - public value_comp(): (x: Pair, y: Pair) => boolean - { - return this.tree_.value_comp(); - } - - /** - * @inheritdoc - */ - public lower_bound(key: Key): MapIterator - { - return this.tree_.lower_bound(key); - } - - /** - * @inheritdoc - */ - public upper_bound(key: Key): MapIterator - { - return this.tree_.upper_bound(key); - } - - /** - * @inheritdoc - */ - public equal_range(key: Key): Pair, MapIterator> - { - return this.tree_.equal_range(key); - } - - /* ========================================================= - ELEMENTS I/O - - INSERT - - POST-PROCESS - ============================================================ - INSERT - --------------------------------------------------------- */ - /** - * @hidden - */ - protected insert_by_pair(pair: Pair): any - { - let node = this.tree_.find(pair.first); - let it: MapIterator; - - if (node == null) - { - it = this.end(); - } - else if (std.equal_to(node.value.first, pair.first) == true) - { - it = node.value.next(); - } - else if (this.tree_.key_comp()(node.value.first, pair.first) == true) - { - it = node.value.next(); - - while (it.equal_to(this.end()) == false && this.tree_.key_comp()(it.first, pair.first)) - it = it.next(); - } - else - it = node.value; - - // ITERATOR TO RETURN - it = new MapIterator(this, this.data_.insert(it.get_list_iterator(), pair)); - this.handle_insert(it, it.next()); // POST-PROCESS - - return it; - } - - /** - * @hidden - */ - protected insert_by_hint(hint: MapIterator, pair: Pair): MapIterator - { - // FIND KEY - if (this.has(pair.first) == true) - return this.end(); - - // VALIDATE HINT - let ret: MapIterator; - let compare = this.tree_.key_comp(); - - // hint <= current && current <= next - if ((compare(hint.first, pair.first) || std.equal_to(hint.first, pair.first)) - && (hint.next().equal_to(this.end()) || (compare(pair.first, hint.next().first) || std.equal_to(pair.first, hint.next().first)))) - { - /////// - // RIGHT HINT - /////// - // INSERT - ret = new MapIterator(this, this.data_.insert(hint.get_list_iterator(), pair)); - - // POST-PROCESS - this.handle_insert(ret, ret.next()); - } - else - { - /////// - // WRONG HINT - /////// - // INSERT BY AUTOMATIC NODE FINDING - ret = this.insert_by_pair(pair); - } - return ret; - } - - /** - * @hidden - */ - protected insert_by_range>> - (first: InputIterator, last: InputIterator): void - { - for (; !first.equal_to(last); first = first.next() as InputIterator) - this.insert_by_pair(make_pair(first.value.first, first.value.second)); - } - - /* --------------------------------------------------------- - POST-PROCESS - --------------------------------------------------------- */ - /** - * @inheritdoc - */ - protected handle_insert(first: MapIterator, last: MapIterator): void - { - this.tree_.insert(first); - } - - /** - * @inheritdoc - */ - protected handle_erase(first: MapIterator, last: MapIterator): void - { - for (; !first.equal_to(last); first = first.next()) - this.tree_.erase(last); - } - - /* =============================================================== - UTILITIES - =============================================================== */ - /** - * @inheritdoc - */ - public swap(obj: base.MultiMap): void - { - if (obj instanceof TreeMultiMap) - this.swap_tree_multimap(obj); - else - super.swap(obj); - } - - /** - * @hidden - */ - private swap_tree_multimap(obj: TreeMultiMap): void - { - [this.data_, obj.data_] = [obj.data_, this.data_]; - [this.tree_, obj.tree_] = [obj.tree_, this.tree_]; - } - } } \ No newline at end of file diff --git a/ts/src/std/TreeMultiMap.ts b/ts/src/std/TreeMultiMap.ts new file mode 100644 index 00000000..da779ab5 --- /dev/null +++ b/ts/src/std/TreeMultiMap.ts @@ -0,0 +1,417 @@ +/// + +/// + +namespace std.TreeMultiMap +{ + export type iterator = std.MapIterator; + export type reverse_iterator = std.MapReverseIterator; +} + +namespace std +{ + /** + *

Tree-structured multiple-key map.

+ * + *

{@link TreeMultiMap TreeMultiMaps} are associative containers that store elements formed by a combination of + * a key value and a mapped value, following a specific order, and where multiple elements can + * have equivalent keys.

+ * + *

In a {@link TreeMultiMap}, the key values are generally used to sort and uniquely identify + * the elements, while the mapped values store the content associated to this key. The types of + * key and mapped value may differ, and are grouped together in member type + * value_type, which is a {@link Pair} type combining both:

+ * + *

typedef Pair value_type;

+ * + *

Internally, the elements in a {@link TreeMultiMap}are always sorted by its key following a + * strict weak ordering criterion indicated by its internal comparison method (of {@link less}).

+ * + *

{@link TreeMultiMap}containers are generally slower than {@link HashMap} containers + * to access individual elements by their key, but they allow the direct iteration on subsets based + * on their order.

+ * + *

{@link TreeMultiMap TreeMultiMaps} are typically implemented as binary search trees.

+ * + *

< + * img src="http://samchon.github.io/typescript-stl/images/design/class_diagram/map_containers.png" style="max-width: 100%" />

+ * + *

Container properties

+ *
+ *
Associative
+ *
+ * Elements in associative containers are referenced by their key and not by their absolute + * position in the container. + *
+ * + *
Ordered
+ *
+ * The elements in the container follow a strict order at all times. All inserted elements are + * given a position in this order. + *
+ * + *
Map
+ *
+ * Each element associates a key to a mapped value: + * Keys are meant to identify the elements whose main content is the mapped value. + *
+ * + *
Multiple equivalent keys
+ *
Multiple elements in the container can have equivalent keys.
+ *
+ * + * @param Type of the keys. Each element in a map is uniquely identified by its key value. + * @param Type of the mapped value. Each element in a map stores some data as its mapped value. + * + * @reference http://www.cplusplus.com/reference/map/multimap + * @author Jeongho Nam + */ + export class TreeMultiMap + extends base.MultiMap + implements base.ITreeMap + { + /** + * @hidden + */ + private tree_: base.PairTree; + + /* ========================================================= + CONSTRUCTORS & SEMI-CONSTRUCTORS + - CONSTRUCTORS + - ASSIGN & CLEAR + ============================================================ + CONSTURCTORS + --------------------------------------------------------- */ + /** + * Default Constructor. + */ + public constructor(); + + /** + * Construct from compare. + * + * @param compare A binary predicate determines order of elements. + */ + public constructor(compare: (x: Key, y: Key) => boolean); + + /** + * Contruct from elements. + * + * @param array Elements to be contained. + */ + public constructor(array: Array>); + + /** + * Contruct from elements. + * + * @param array Elements to be contained. + * @param compare A binary predicate determines order of elements. + */ + public constructor(array: Array>, compare: (x: Key, y: Key) => boolean); + + /** + * Contruct from tuples. + * + * @param array Tuples to be contained. + */ + public constructor(array: Array<[Key, T]>); + + /** + * Contruct from tuples. + * + * @param array Tuples to be contained. + * @param compare A binary predicate determines order of elements. + */ + public constructor(array: Array<[Key, T]>, compare: (x: Key, y: Key) => boolean); + + /** + * Copy Constructor. + * + * @param container Another map to copy. + */ + public constructor(container: base.MapContainer); + + /** + * Copy Constructor. + * + * @param container Another map to copy. + * @param compare A binary predicate determines order of elements. + */ + public constructor(container: base.MapContainer, compare: (x: Key, y: Key) => boolean); + + /** + * Range Constructor. + * + * @param begin nput interator of the initial position in a sequence. + * @param end Input interator of the final position in a sequence. + */ + public constructor(begin: Iterator>, end: Iterator>); + + /** + * Range Constructor. + * + * @param begin nput interator of the initial position in a sequence. + * @param end Input interator of the final position in a sequence. + * @param compare A binary predicate determines order of elements. + */ + public constructor + ( + begin: Iterator>, end: Iterator>, compare: (x: Key, y: Key) => boolean + ); + + public constructor(...args: any[]) + { + super(); + + // CONSTRUCT TREE WITH COMPARE + let compare: (x: Key, y: Key) => boolean = std.less; + let fn: Function = null; + + // OVERLOADINGS + if (args.length == 0) { } // DO NOTHING + else if (args.length >= 1 && (args[0] instanceof base.Container || args[0] instanceof Vector)) + { + fn = this.construct_from_container; + + if (args.length == 2) + compare = args[1]; + } + else if (args.length >= 1 && args[0] instanceof Array) + { + fn = this.construct_from_array; + + if (args.length == 2) + compare = args[1]; + } + else if (args.length >= 2 && args[0] instanceof Iterator && args[1] instanceof Iterator) + { + fn = this.construct_from_range; + + if (args.length == 3) + compare = args[2]; + } + else if (args.length == 1) + compare = args[0]; + + // CONSTRUCT TREE + this.tree_ = new base.PairTree(this, compare); + + // BRANCH - CALL OVERLOADED CONSTRUCTORS + if (fn != null) + fn.apply(this, args); + } + + /* --------------------------------------------------------- + ASSIGN & CLEAR + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + public clear(): void + { + super.clear(); + + this.tree_.clear(); + } + + /* ========================================================= + ACCESSORS + ========================================================= */ + /** + * @inheritdoc + */ + public find(key: Key): MapIterator + { + let node = this.tree_.find(key); + + if (node == null || std.equal_to(node.value.first, key) == false) + return this.end(); + else + return node.value; + } + + /** + * @inheritdoc + */ + public count(key: Key): number + { + let it = this.find(key); + let cnt: number = 0; + + for (; !it.equal_to(this.end()) && std.equal_to(it.first, key); it = it.next()) + cnt++; + + return cnt; + } + + /** + * @inheritdoc + */ + public key_comp(): (x: Key, y: Key) => boolean + { + return this.tree_.key_comp(); + } + + /** + * @inheritdoc + */ + public value_comp(): (x: Pair, y: Pair) => boolean + { + return this.tree_.value_comp(); + } + + /** + * @inheritdoc + */ + public lower_bound(key: Key): MapIterator + { + return this.tree_.lower_bound(key); + } + + /** + * @inheritdoc + */ + public upper_bound(key: Key): MapIterator + { + return this.tree_.upper_bound(key); + } + + /** + * @inheritdoc + */ + public equal_range(key: Key): Pair, MapIterator> + { + return this.tree_.equal_range(key); + } + + /* ========================================================= + ELEMENTS I/O + - INSERT + - POST-PROCESS + ============================================================ + INSERT + --------------------------------------------------------- */ + /** + * @hidden + */ + protected insert_by_pair(pair: Pair): any + { + let node = this.tree_.find(pair.first); + let it: MapIterator; + + if (node == null) + { + it = this.end(); + } + else if (std.equal_to(node.value.first, pair.first) == true) + { + it = node.value.next(); + } + else if (this.tree_.key_comp()(node.value.first, pair.first) == true) + { + it = node.value.next(); + + while (it.equal_to(this.end()) == false && this.tree_.key_comp()(it.first, pair.first)) + it = it.next(); + } + else + it = node.value; + + // ITERATOR TO RETURN + it = new MapIterator(this, this.data_.insert(it.get_list_iterator(), pair)); + this.handle_insert(it, it.next()); // POST-PROCESS + + return it; + } + + /** + * @hidden + */ + protected insert_by_hint(hint: MapIterator, pair: Pair): MapIterator + { + // FIND KEY + if (this.has(pair.first) == true) + return this.end(); + + // VALIDATE HINT + let ret: MapIterator; + let compare = this.tree_.key_comp(); + + // hint <= current && current <= next + if ((compare(hint.first, pair.first) || std.equal_to(hint.first, pair.first)) + && (hint.next().equal_to(this.end()) || (compare(pair.first, hint.next().first) || std.equal_to(pair.first, hint.next().first)))) + { + /////// + // RIGHT HINT + /////// + // INSERT + ret = new MapIterator(this, this.data_.insert(hint.get_list_iterator(), pair)); + + // POST-PROCESS + this.handle_insert(ret, ret.next()); + } + else + { + /////// + // WRONG HINT + /////// + // INSERT BY AUTOMATIC NODE FINDING + ret = this.insert_by_pair(pair); + } + return ret; + } + + /** + * @hidden + */ + protected insert_by_range>> + (first: InputIterator, last: InputIterator): void + { + for (; !first.equal_to(last); first = first.next() as InputIterator) + this.insert_by_pair(make_pair(first.value.first, first.value.second)); + } + + /* --------------------------------------------------------- + POST-PROCESS + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + protected handle_insert(first: MapIterator, last: MapIterator): void + { + this.tree_.insert(first); + } + + /** + * @inheritdoc + */ + protected handle_erase(first: MapIterator, last: MapIterator): void + { + for (; !first.equal_to(last); first = first.next()) + this.tree_.erase(last); + } + + /* =============================================================== + UTILITIES + =============================================================== */ + /** + * @inheritdoc + */ + public swap(obj: base.MultiMap): void + { + if (obj instanceof TreeMultiMap) + this.swap_tree_multimap(obj); + else + super.swap(obj); + } + + /** + * @hidden + */ + private swap_tree_multimap(obj: TreeMultiMap): void + { + [this.data_, obj.data_] = [obj.data_, this.data_]; + [this.tree_, obj.tree_] = [obj.tree_, this.tree_]; + } + } +} \ No newline at end of file diff --git a/ts/src/std/TreeMultiSet.ts b/ts/src/std/TreeMultiSet.ts new file mode 100644 index 00000000..000b8a10 --- /dev/null +++ b/ts/src/std/TreeMultiSet.ts @@ -0,0 +1,392 @@ +/// + +/// + +namespace std.TreeMultiSet +{ + export type iterator = std.SetIterator; + export type reverse_iterator = std.SetReverseIterator; +} + +namespace std +{ + /** + *

Tree-structured multiple-key set.

+ * + *

{@link TreeMultiSet TreeMultiSets} are containers that store elements following a specific order, and + * where multiple elements can have equivalent values.

+ * + *

In a {@link TreeMultiSet}, the value of an element also identifies it (the value is itself + * the key, of type T). The value of the elements in a {@link TreeMultiSet} cannot + * be modified once in the container (the elements are always const), but they can be inserted or removed + * from the

+ * + *

Internally, the elements in a {@link TreeMultiSet TreeMultiSets} are always sorted following a strict + * weak ordering criterion indicated by its internal comparison method (of {@link IComparable.less less}).

+ * + *

{@link TreeMultiSet} containers are generally slower than {@link HashMultiSet} containers + * to access individual elements by their key, but they allow the direct iteration on subsets based on + * their order.

+ * + *

{@link TreeMultiSet TreeMultiSets} are typically implemented as binary search trees.

+ * + *

+ *

+ * + *

Container properties

+ *
+ *
Associative
+ *
+ * Elements in associative containers are referenced by their key and not by their absolute + * position in the container. + *
+ * + *
Ordered
+ *
+ * The elements in the container follow a strict order at all times. All inserted elements are + * given a position in this order. + *
+ * + *
Set
+ *
The value of an element is also the key used to identify it.
+ * + *
Multiple equivalent keys
+ *
Multiple elements in the container can have equivalent keys.
+ *
+ * + * @param Type of the elements. Each element in a {@link TreeMultiSet} container is also identified + * by this value (each value is itself also the element's key). + * + * @reference http://www.cplusplus.com/reference/set/multiset + * @author Jeongho Nam + */ + export class TreeMultiSet + extends base.MultiSet + implements base.ITreeSet + { + /** + * @hidden + */ + private tree_: base.AtomicTree; + + /* ========================================================= + CONSTRUCTORS & SEMI-CONSTRUCTORS + - CONSTRUCTORS + - ASSIGN & CLEAR + ============================================================ + CONSTURCTORS + --------------------------------------------------------- */ + /** + * Default Constructor. + */ + public constructor(); + + /** + * Construct from compare. + * + * @param compare A binary predicate determines order of elements. + */ + public constructor(compare: (x: T, y: T) => boolean); + + /** + * Contruct from elements. + * + * @param array Elements to be contained. + */ + public constructor(array: Array); + + /** + * Contruct from elements with compare. + * + * @param array Elements to be contained. + * @param compare A binary predicate determines order of elements. + */ + public constructor(array: Array, compare: (x: T, y: T) => boolean); + + /** + * Copy Constructor. + */ + public constructor(container: base.Container); + + /** + * Copy Constructor with compare. + * + * @param container A container to be copied. + * @param compare A binary predicate determines order of elements. + */ + public constructor(container: base.Container, compare: (x: T, y: T) => boolean); + + /** + * Range Constructor. + * + * @param begin Input interator of the initial position in a sequence. + * @param end Input interator of the final position in a sequence. + */ + public constructor(begin: Iterator, end: Iterator); + + /** + * Construct from range and compare. + * + * @param begin Input interator of the initial position in a sequence. + * @param end Input interator of the final position in a sequence. + * @param compare A binary predicate determines order of elements. + */ + public constructor(begin: Iterator, end: Iterator, compare: (x: T, y: T) => boolean); + + public constructor(...args: any[]) + { + super(); + + // CONSTRUCT TREE WITH COMPARE + let compare: (x: T, y: T) => boolean = std.less; + let fn: Function = null; + + // OVERLOADINGS + if (args.length == 0) { } // DO NOTHING + else if (args.length >= 1 && (args[0] instanceof base.Container || args[0] instanceof Vector)) + { + fn = this.construct_from_container; + + if (args.length == 2) + compare = args[1]; + } + else if (args.length >= 1 && args[0] instanceof Array) + { + fn = this.construct_from_array; + + if (args.length == 2) + compare = args[1]; + } + else if (args.length >= 2 && args[0] instanceof Iterator && args[1] instanceof Iterator) + { + fn = this.construct_from_range; + + if (args.length == 3) + compare = args[2]; + } + else if (args.length == 1) + compare = args[0]; + + // CONSTRUCT TREE + this.tree_ = new base.AtomicTree(this, compare); + + // BRANCH - CALL OVERLOADED CONSTRUCTORS + if (fn != null) + fn.apply(this, args); + } + + /* --------------------------------------------------------- + ASSIGN & CLEAR + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + public clear(): void + { + super.clear(); + + this.tree_.clear(); + } + + /* ========================================================= + ACCESSORS + ========================================================= */ + /** + * @inheritdoc + */ + public find(val: T): SetIterator + { + var node = this.tree_.find(val); + + if (node == null || std.equal_to(val, node.value.value) == false) + return this.end(); + else + return node.value; + } + + /** + * @inheritdoc + */ + public count(val: T): number + { + let it = this.find(val); + let cnt: number = 0; + + for (; !it.equal_to(this.end()) && std.equal_to(it.value, val); it = it.next()) + cnt++; + + return cnt; + } + + /** + * @inheritdoc + */ + public key_comp(): (x: T, y: T) => boolean + { + return this.tree_.key_comp(); + } + + /** + * @inheritdoc + */ + public value_comp(): (x: T, y: T) => boolean + { + return this.tree_.key_comp(); + } + + /** + * @inheritdoc + */ + public lower_bound(val: T): SetIterator + { + return this.tree_.lower_bound(val); + } + + /** + * @inheritdoc + */ + public upper_bound(val: T): SetIterator + { + return this.tree_.upper_bound(val); + } + + /** + * @inheritdoc + */ + public equal_range(val: T): Pair, SetIterator> + { + return this.tree_.equal_range(val); + } + + /* ========================================================= + ELEMENTS I/O + - INSERT + - POST-PROCESS + ============================================================ + INSERT + --------------------------------------------------------- */ + /** + * @hidden + */ + protected insert_by_val(val: T): any + { + var node = this.tree_.find(val); + var it: SetIterator; + + // FIND NODE + if (node == null) + { + it = this.end(); + } + else if (std.equal_to(node.value.value, val) == true) + { + it = node.value.next(); + } + else if (std.less(node.value.value, val) == true) + { + it = node.value.next(); + + while (it.equal_to(this.end()) == false && std.less(it.value, val)) + it = it.next(); + } + else + { + it = node.value; + } + + ///// + // INSERTS + ///// + it = new SetIterator(this, this.data_.insert(it.get_list_iterator(), val)); + this.handle_insert(it, it.next()); // POST-PROCESS + + return it; + } + + /** + * @hidden + */ + protected insert_by_hint(hint: SetIterator, val: T): SetIterator + { + // VALIDATE HINT + let ret: SetIterator; + let compare = this.tree_.key_comp(); + + // hint <= current && current <= next + if ((compare(hint.value, val) || std.equal_to(hint.value, val)) + && (hint.next().equal_to(this.end()) || (compare(val, hint.next().value) || std.equal_to(val, hint.next().value)))) + { + /////// + // RIGHT HINT + /////// + // INSERT + ret = new SetIterator(this, this.data_.insert(hint.get_list_iterator(), val)); + + // POST-PROCESS + this.handle_insert(ret, ret.next()); + } + else + { + /////// + // WRONG HINT + /////// + // INSERT BY AUTOMATIC NODE FINDING + ret = this.insert_by_val(val); + } + return ret; + } + + /** + * @hidden + */ + protected insert_by_range> + (first: InputIterator, last: InputIterator): void + { + for (; !first.equal_to(last); first = first.next() as InputIterator) + this.insert_by_val(first.value); + } + + /* --------------------------------------------------------- + POST-PROCESS + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + protected handle_insert(first: SetIterator, last: SetIterator): void + { + this.tree_.insert(first); + } + + /** + * @inheritdoc + */ + protected handle_erase(first: SetIterator, last: SetIterator): void + { + for (; !first.equal_to(last); first = first.next()) + this.tree_.erase(last); + } + + /* =============================================================== + UTILITIES + =============================================================== */ + /** + * @inheritdoc + */ + public swap(obj: base.MultiSet): void + { + if (obj instanceof TreeMultiSet) + this.swap_tree_set(obj); + else + super.swap(obj); + } + + /** + * @hidden + */ + private swap_tree_set(obj: TreeMultiSet): void + { + [this.data_, obj.data_] = [obj.data_, this.data_]; + [this.tree_, obj.tree_] = [obj.tree_, this.tree_]; + } + } +} \ No newline at end of file diff --git a/ts/src/std/TreeSet.ts b/ts/src/std/TreeSet.ts index 80d45c58..e47b28c0 100644 --- a/ts/src/std/TreeSet.ts +++ b/ts/src/std/TreeSet.ts @@ -1,7 +1,6 @@ /// /// -/// namespace std.TreeSet { @@ -30,8 +29,8 @@ namespace std * *

{@link TreeSet}s are typically implemented as binary search trees.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -65,7 +64,7 @@ namespace std implements base.ITreeSet { /** - * RB-Tree+ object for implemeting the {@link TreeSet}. + * @hidden */ private tree_: base.AtomicTree; @@ -372,393 +371,4 @@ namespace std [this.tree_, obj.tree_] = [obj.tree_, this.tree_]; } } -} - -namespace std.TreeMultiSet -{ - export type iterator = std.SetIterator; - export type reverse_iterator = std.SetReverseIterator; -} - -namespace std -{ - /** - *

Tree-structured multiple-key set.

- * - *

{@link TreeMultiSet TreeMultiSets} are containers that store elements following a specific order, and - * where multiple elements can have equivalent values.

- * - *

In a {@link TreeMultiSet}, the value of an element also identifies it (the value is itself - * the key, of type T). The value of the elements in a {@link TreeMultiSet} cannot - * be modified once in the container (the elements are always const), but they can be inserted or removed - * from the

- * - *

Internally, the elements in a {@link TreeMultiSet TreeMultiSets} are always sorted following a strict - * weak ordering criterion indicated by its internal comparison method (of {@link IComparable.less less}).

- * - *

{@link TreeMultiSet} containers are generally slower than {@link HashMultiSet} containers - * to access individual elements by their key, but they allow the direct iteration on subsets based on - * their order.

- * - *

{@link TreeMultiSet TreeMultiSets} are typically implemented as binary search trees.

- * - *

- *

- * - *

Container properties

- *
- *
Associative
- *
- * Elements in associative containers are referenced by their key and not by their absolute - * position in the container. - *
- * - *
Ordered
- *
- * The elements in the container follow a strict order at all times. All inserted elements are - * given a position in this order. - *
- * - *
Set
- *
The value of an element is also the key used to identify it.
- * - *
Multiple equivalent keys
- *
Multiple elements in the container can have equivalent keys.
- *
- * - * @param Type of the elements. Each element in a {@link TreeMultiSet} container is also identified - * by this value (each value is itself also the element's key). - * - * @reference http://www.cplusplus.com/reference/set/multiset - * @author Jeongho Nam - */ - export class TreeMultiSet - extends base.MultiSet - implements base.ITreeSet - { - /** - * RB-Tree+ object for implemeting the {@link TreeMultiSet}. - */ - private tree_: base.AtomicTree; - - /* ========================================================= - CONSTRUCTORS & SEMI-CONSTRUCTORS - - CONSTRUCTORS - - ASSIGN & CLEAR - ============================================================ - CONSTURCTORS - --------------------------------------------------------- */ - /** - * Default Constructor. - */ - public constructor(); - - /** - * Construct from compare. - * - * @param compare A binary predicate determines order of elements. - */ - public constructor(compare: (x: T, y: T) => boolean); - - /** - * Contruct from elements. - * - * @param array Elements to be contained. - */ - public constructor(array: Array); - - /** - * Contruct from elements with compare. - * - * @param array Elements to be contained. - * @param compare A binary predicate determines order of elements. - */ - public constructor(array: Array, compare: (x: T, y: T) => boolean); - - /** - * Copy Constructor. - */ - public constructor(container: base.Container); - - /** - * Copy Constructor with compare. - * - * @param container A container to be copied. - * @param compare A binary predicate determines order of elements. - */ - public constructor(container: base.Container, compare: (x: T, y: T) => boolean); - - /** - * Range Constructor. - * - * @param begin Input interator of the initial position in a sequence. - * @param end Input interator of the final position in a sequence. - */ - public constructor(begin: Iterator, end: Iterator); - - /** - * Construct from range and compare. - * - * @param begin Input interator of the initial position in a sequence. - * @param end Input interator of the final position in a sequence. - * @param compare A binary predicate determines order of elements. - */ - public constructor(begin: Iterator, end: Iterator, compare: (x: T, y: T) => boolean); - - public constructor(...args: any[]) - { - super(); - - // CONSTRUCT TREE WITH COMPARE - let compare: (x: T, y: T) => boolean = std.less; - let fn: Function = null; - - // OVERLOADINGS - if (args.length == 0) { } // DO NOTHING - else if (args.length >= 1 && (args[0] instanceof base.Container || args[0] instanceof Vector)) - { - fn = this.construct_from_container; - - if (args.length == 2) - compare = args[1]; - } - else if (args.length >= 1 && args[0] instanceof Array) - { - fn = this.construct_from_array; - - if (args.length == 2) - compare = args[1]; - } - else if (args.length >= 2 && args[0] instanceof Iterator && args[1] instanceof Iterator) - { - fn = this.construct_from_range; - - if (args.length == 3) - compare = args[2]; - } - else if (args.length == 1) - compare = args[0]; - - // CONSTRUCT TREE - this.tree_ = new base.AtomicTree(this, compare); - - // BRANCH - CALL OVERLOADED CONSTRUCTORS - if (fn != null) - fn.apply(this, args); - } - - /* --------------------------------------------------------- - ASSIGN & CLEAR - --------------------------------------------------------- */ - /** - * @inheritdoc - */ - public clear(): void - { - super.clear(); - - this.tree_.clear(); - } - - /* ========================================================= - ACCESSORS - ========================================================= */ - /** - * @inheritdoc - */ - public find(val: T): SetIterator - { - var node = this.tree_.find(val); - - if (node == null || std.equal_to(val, node.value.value) == false) - return this.end(); - else - return node.value; - } - - /** - * @inheritdoc - */ - public count(val: T): number - { - let it = this.find(val); - let cnt: number = 0; - - for (; !it.equal_to(this.end()) && std.equal_to(it.value, val); it = it.next()) - cnt++; - - return cnt; - } - - /** - * @inheritdoc - */ - public key_comp(): (x: T, y: T) => boolean - { - return this.tree_.key_comp(); - } - - /** - * @inheritdoc - */ - public value_comp(): (x: T, y: T) => boolean - { - return this.tree_.key_comp(); - } - - /** - * @inheritdoc - */ - public lower_bound(val: T): SetIterator - { - return this.tree_.lower_bound(val); - } - - /** - * @inheritdoc - */ - public upper_bound(val: T): SetIterator - { - return this.tree_.upper_bound(val); - } - - /** - * @inheritdoc - */ - public equal_range(val: T): Pair, SetIterator> - { - return this.tree_.equal_range(val); - } - - /* ========================================================= - ELEMENTS I/O - - INSERT - - POST-PROCESS - ============================================================ - INSERT - --------------------------------------------------------- */ - /** - * @hidden - */ - protected insert_by_val(val: T): any - { - var node = this.tree_.find(val); - var it: SetIterator; - - // FIND NODE - if (node == null) - { - it = this.end(); - } - else if (std.equal_to(node.value.value, val) == true) - { - it = node.value.next(); - } - else if (std.less(node.value.value, val) == true) - { - it = node.value.next(); - - while (it.equal_to(this.end()) == false && std.less(it.value, val)) - it = it.next(); - } - else - { - it = node.value; - } - - ///// - // INSERTS - ///// - it = new SetIterator(this, this.data_.insert(it.get_list_iterator(), val)); - this.handle_insert(it, it.next()); // POST-PROCESS - - return it; - } - - /** - * @hidden - */ - protected insert_by_hint(hint: SetIterator, val: T): SetIterator - { - // VALIDATE HINT - let ret: SetIterator; - let compare = this.tree_.key_comp(); - - // hint <= current && current <= next - if ((compare(hint.value, val) || std.equal_to(hint.value, val)) - && (hint.next().equal_to(this.end()) || (compare(val, hint.next().value) || std.equal_to(val, hint.next().value)))) - { - /////// - // RIGHT HINT - /////// - // INSERT - ret = new SetIterator(this, this.data_.insert(hint.get_list_iterator(), val)); - - // POST-PROCESS - this.handle_insert(ret, ret.next()); - } - else - { - /////// - // WRONG HINT - /////// - // INSERT BY AUTOMATIC NODE FINDING - ret = this.insert_by_val(val); - } - return ret; - } - - /** - * @hidden - */ - protected insert_by_range> - (first: InputIterator, last: InputIterator): void - { - for (; !first.equal_to(last); first = first.next() as InputIterator) - this.insert_by_val(first.value); - } - - /* --------------------------------------------------------- - POST-PROCESS - --------------------------------------------------------- */ - /** - * @inheritdoc - */ - protected handle_insert(first: SetIterator, last: SetIterator): void - { - this.tree_.insert(first); - } - - /** - * @inheritdoc - */ - protected handle_erase(first: SetIterator, last: SetIterator): void - { - for (; !first.equal_to(last); first = first.next()) - this.tree_.erase(last); - } - - /* =============================================================== - UTILITIES - =============================================================== */ - /** - * @inheritdoc - */ - public swap(obj: base.MultiSet): void - { - if (obj instanceof TreeMultiSet) - this.swap_tree_set(obj); - else - super.swap(obj); - } - - /** - * @hidden - */ - private swap_tree_set(obj: TreeMultiSet): void - { - [this.data_, obj.data_] = [obj.data_, this.data_]; - [this.tree_, obj.tree_] = [obj.tree_, this.tree_]; - } - } } \ No newline at end of file diff --git a/ts/src/std/Vector.ts b/ts/src/std/Vector.ts index 68cacf40..520771ea 100644 --- a/ts/src/std/Vector.ts +++ b/ts/src/std/Vector.ts @@ -41,8 +41,8 @@ namespace std * end, they perform worse than the others, and have less consistent iterators and references than {@link List}s. *

* - *

- * + *

+ * *

* *

Container properties

@@ -742,8 +742,8 @@ namespace std /** *

An iterator of Vector.

* - *

- * + *

+ * *

* * @param Type of the elements. @@ -892,8 +892,8 @@ namespace std /** *

A reverse-iterator of Vector.

* - *

- * + *

+ * *

* * @param Type of the elements. diff --git a/ts/src/std/base/Container.ts b/ts/src/std/base/Container.ts index a5593175..41f378e4 100644 --- a/ts/src/std/base/Container.ts +++ b/ts/src/std/base/Container.ts @@ -5,8 +5,8 @@ namespace std.base /** *

An abstract container.

* - *

- * + *

+ * *

* *

Container properties

diff --git a/ts/src/std/base/ErrorInstance.ts b/ts/src/std/base/ErrorInstance.ts index 2f22f0db..5b722aa5 100644 --- a/ts/src/std/base/ErrorInstance.ts +++ b/ts/src/std/base/ErrorInstance.ts @@ -16,20 +16,20 @@ namespace std.base * so that they can be interpreted when needed as more abstract (and portable) * {@link ErrorCondition error conditions}.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ export abstract class ErrorInstance { /** - * A reference to an {@link ErrorCategory} object. + * @hidden */ protected category_: ErrorCategory; /** - * A numerical value identifying an error instance. + * @hidden */ protected value_: number; diff --git a/ts/src/std/base/HashBuckets.ts b/ts/src/std/base/HashBuckets.ts index a2b0bd5d..1dff33a9 100644 --- a/ts/src/std/base/HashBuckets.ts +++ b/ts/src/std/base/HashBuckets.ts @@ -16,8 +16,14 @@ namespace std.base */ export class HashBuckets { + /** + * @hidden + */ private buckets_: Vector>; + /** + * @hidden + */ private item_size_: number; /* --------------------------------------------------------- diff --git a/ts/src/std/base/HashMapBase.ts b/ts/src/std/base/HashMapBase.ts index e9297772..aa4254a8 100644 --- a/ts/src/std/base/HashMapBase.ts +++ b/ts/src/std/base/HashMapBase.ts @@ -22,8 +22,8 @@ namespace std.base *

Elements with equivalent keys are grouped together in the same bucket and in such a way that * an iterator can iterate through all of them. Iterators in the container are doubly linked iterators.

* - *

- * + *

+ * *

* *

Container properties

@@ -345,8 +345,8 @@ namespace std.base /** *

Hash buckets storing {@link MapIterator MapIterators}.

* - *

- * + *

+ * *

* * @author Jeongho Nam diff --git a/ts/src/std/base/HashSetBase.ts b/ts/src/std/base/HashSetBase.ts index 23ce6029..0e2393d5 100644 --- a/ts/src/std/base/HashSetBase.ts +++ b/ts/src/std/base/HashSetBase.ts @@ -22,8 +22,8 @@ namespace std.base * elements by their key, although they are generally less efficient for range iteration through a * subset of their elements.

* - *

- * + *

+ * *

* *

Container properties

@@ -273,8 +273,8 @@ namespace std.base /** *

Hash buckets storing {@link SetIterator SetIterators}.

* - *

- * + *

+ * *

* * @author Jeongho Nam diff --git a/ts/src/std/base/IArrayContainer.ts b/ts/src/std/base/IArrayContainer.ts index 01727a0e..dfaca451 100644 --- a/ts/src/std/base/IArrayContainer.ts +++ b/ts/src/std/base/IArrayContainer.ts @@ -31,8 +31,8 @@ namespace std.base * beginning or the end, {@link IArray} objects perform worse and have less consistent iterators and references * than {@link List Lists}

. * - *

- * + *

+ * *

* *

Container properties

diff --git a/ts/src/std/base/IArrayIterator.ts b/ts/src/std/base/IArrayIterator.ts index 474bd231..56749a76 100644 --- a/ts/src/std/base/IArrayIterator.ts +++ b/ts/src/std/base/IArrayIterator.ts @@ -15,8 +15,8 @@ namespace std.base *

There is not a single type of {@link IArrayIterator random-access iterator}: Each container may define its * own specific iterator type able to iterate through it and access its elements.

* - *

- * + *

+ * *

* * @reference http://www.cplusplus.com/reference/iterator/RandomAccessIterator diff --git a/ts/src/std/base/IContainer.ts b/ts/src/std/base/IContainer.ts index 61f57c3a..d11dcb94 100644 --- a/ts/src/std/base/IContainer.ts +++ b/ts/src/std/base/IContainer.ts @@ -8,8 +8,8 @@ namespace std.base *

{@link IContainer} is an interface designed for sequence containers. Sequence containers of STL * (Standard Template Library) are based on the {@link IContainer}.

* - *

- * + *

+ * *

* *

Container properties

diff --git a/ts/src/std/base/IDequeContainer.ts b/ts/src/std/base/IDequeContainer.ts index 210f7287..9ba27634 100644 --- a/ts/src/std/base/IDequeContainer.ts +++ b/ts/src/std/base/IDequeContainer.ts @@ -5,8 +5,8 @@ namespace std.base /** *

An interface for deque

* - *

- * + *

+ * *

* * @author Jeongho Nam diff --git a/ts/src/std/base/ILinearContainer.ts b/ts/src/std/base/ILinearContainer.ts index 5ef1679d..501db8ef 100644 --- a/ts/src/std/base/ILinearContainer.ts +++ b/ts/src/std/base/ILinearContainer.ts @@ -5,8 +5,8 @@ namespace std.base /** *

An interface for linear containers.

* - *

- * + *

+ * *

* * @author Jeonngho Nam diff --git a/ts/src/std/base/MapContainer.ts b/ts/src/std/base/MapContainer.ts index eca16d62..4e0eb71d 100644 --- a/ts/src/std/base/MapContainer.ts +++ b/ts/src/std/base/MapContainer.ts @@ -23,8 +23,8 @@ namespace std.base * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -683,8 +683,8 @@ namespace std /** *

An iterator of {@link MapContainer map container}.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ @@ -829,8 +829,8 @@ namespace std /** *

A reverse-iterator of {@link MapContainer map container}.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ diff --git a/ts/src/std/base/MultiMap.ts b/ts/src/std/base/MultiMap.ts index 78b1d057..34ab9a99 100644 --- a/ts/src/std/base/MultiMap.ts +++ b/ts/src/std/base/MultiMap.ts @@ -22,8 +22,8 @@ namespace std.base * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
diff --git a/ts/src/std/base/MultiSet.ts b/ts/src/std/base/MultiSet.ts index 8e3fae7a..bef9a2e2 100644 --- a/ts/src/std/base/MultiSet.ts +++ b/ts/src/std/base/MultiSet.ts @@ -18,8 +18,8 @@ namespace std.base * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
diff --git a/ts/src/std/base/SetContainer.ts b/ts/src/std/base/SetContainer.ts index a48a3fd7..53f930ab 100644 --- a/ts/src/std/base/SetContainer.ts +++ b/ts/src/std/base/SetContainer.ts @@ -19,8 +19,8 @@ namespace std.base * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -534,8 +534,8 @@ namespace std /** *

An iterator of a Set.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ @@ -652,8 +652,8 @@ namespace std /** *

A reverse-iterator of Set.

* - *

- *

+ *

+ *

* * @param Type of the elements. * diff --git a/ts/src/std/base/TreeMapBase.ts b/ts/src/std/base/TreeMapBase.ts index 90391205..a971a387 100644 --- a/ts/src/std/base/TreeMapBase.ts +++ b/ts/src/std/base/TreeMapBase.ts @@ -26,8 +26,8 @@ namespace std.base * *

{@link ITreeMap TreeMultiMaps} are typically implemented as binary search trees.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -168,16 +168,22 @@ namespace std.base /** *

A red-black tree storing {@link MapIterator MapIterators}.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ export class PairTree extends XTree> { + /** + * @hidden + */ private map_: TreeMap | TreeMultiMap; + /** + * @hidden + */ private compare_: (x: Key, y: Key) => boolean; /* --------------------------------------------------------- diff --git a/ts/src/std/base/TreeSetBase.ts b/ts/src/std/base/TreeSetBase.ts index bda2b46e..0680e593 100644 --- a/ts/src/std/base/TreeSetBase.ts +++ b/ts/src/std/base/TreeSetBase.ts @@ -23,8 +23,8 @@ namespace std.base * *

{@link ITreeSet TreeMultiSets} are typically implemented as binary search trees.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -172,16 +172,22 @@ namespace std.base /** *

A red-black Tree storing {@link SetIterator SetIterators}.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ export class AtomicTree extends XTree> { + /** + * @hidden + */ private set_: TreeSet | TreeMultiSet; + /** + * @hidden + */ private compare_: (x: T, y: T) => boolean; /* --------------------------------------------------------- diff --git a/ts/src/std/base/UniqueMap.ts b/ts/src/std/base/UniqueMap.ts index c5481ebb..a7e129b4 100644 --- a/ts/src/std/base/UniqueMap.ts +++ b/ts/src/std/base/UniqueMap.ts @@ -22,8 +22,8 @@ namespace std.base * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
diff --git a/ts/src/std/base/UniqueSet.ts b/ts/src/std/base/UniqueSet.ts index 1c5af6f0..073856e4 100644 --- a/ts/src/std/base/UniqueSet.ts +++ b/ts/src/std/base/UniqueSet.ts @@ -18,8 +18,8 @@ namespace std.base * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
diff --git a/ts/src/std/base/XTree.ts b/ts/src/std/base/XTree.ts index 81483034..832da952 100644 --- a/ts/src/std/base/XTree.ts +++ b/ts/src/std/base/XTree.ts @@ -52,7 +52,7 @@ namespace std.base * * * - *

* *

These constraints enforce a critical property of red-black trees: the path from the root to the farthest @@ -349,7 +349,7 @@ namespace std.base * the only loop, and any rotations occur after this loop, this proves that a constant number of rotations * occur.

* - *

* * @param N A node to be inserted or swapped. @@ -398,7 +398,7 @@ namespace std.base * node are black) is still violated, but now we can resolve this by * continuing to case 5.

* - *

* * @param N A node to be inserted or swapped. @@ -444,7 +444,7 @@ namespace std.base * through {@link XTreeNode.parent P}. In each case, this is the only * black node of the three.

* - *

* * @param N A node to be inserted or swapped. @@ -642,7 +642,7 @@ namespace std.base /** *

{@link XTreeNode.sibling S} is red.

* - *

* *

In this case we reverse the colors of {@link XTreeNode.parent P} and @@ -679,7 +679,7 @@ namespace std.base *

{@link XTreeNode.parent P}, {@link XTreeNode.sibling S}, and {@link XTreeNode.sibling * S}'s children are black.

* - *

* *

In this case, we simply repaint {@link XTreeNode.sibling S} red. The @@ -717,7 +717,7 @@ namespace std.base *

{@link XTreeNode.sibling S} and {@link XTreeNode.sibling S}'s children are * black, but {@link XTreeNode.parent P} is red.

* - *

* *

In this case, we simply exchange the colors of {@link XTreeNode.sibling S} and @@ -748,7 +748,7 @@ namespace std.base * left child is red, {@link XTreeNode.sibling S}'s right child is * black, and N is the left child of its parent.

* - *

* *

In this case we rotate right at {@link XTreeNode.sibling S}, so that @@ -812,7 +812,7 @@ namespace std.base *

Thus, the paths passing through N pass through one additional * black node.

* - *

* *

Meanwhile, if a path does not go through N, then there are two possibilities:

diff --git a/ts/src/std/miscellaneous/exports.ts b/ts/src/std/miscellaneous/exports.ts index e0fa68c7..abae8a50 100644 --- a/ts/src/std/miscellaneous/exports.ts +++ b/ts/src/std/miscellaneous/exports.ts @@ -6,8 +6,13 @@ /// /// +/// +/// + /// /// +/// +/// /// /// @@ -16,8 +21,6 @@ /// /// -/// - try { module.exports = std; diff --git a/ts/src/typings/typescript-stl/typescript-stl.d.ts b/ts/src/typings/typescript-stl/typescript-stl.d.ts index ff9e3983..c5aae45b 100644 --- a/ts/src/typings/typescript-stl/typescript-stl.d.ts +++ b/ts/src/typings/typescript-stl/typescript-stl.d.ts @@ -1,4 +1,4 @@ -// Type definitions for TypeScript-STL v1.0.0-rc.3 +// Type definitions for TypeScript-STL v1.0.0 // Project: https://github.com/samchon/typescript-stl // Definitions by: Jeongho Nam // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped diff --git a/ts/tsconfig.json b/ts/tsconfig.json index 8f174a38..342642ca 100644 --- a/ts/tsconfig.json +++ b/ts/tsconfig.json @@ -3,5 +3,8 @@ "target": "es5", "declaration": true, "outFile": "../lib/typescript-stl.js" - } + }, + "exclude": [ + "src/std/example" + ] } \ No newline at end of file