From f65407f86a7934fd717a389413d7cd366b7ce2d4 Mon Sep 17 00:00:00 2001 From: Matthew McKinnon Date: Sat, 6 Sep 2025 16:30:43 +1000 Subject: [PATCH] chore: add favicons --- .../img/favicons/android-chrome-192x192.png | Bin 0 -> 50521 bytes .../img/favicons/android-chrome-512x512.png | Bin 0 -> 270708 bytes assets/img/favicons/apple-touch-icon.png | Bin 0 -> 45114 bytes assets/img/favicons/favicon-16x16.png | Bin 0 -> 808 bytes assets/img/favicons/favicon-32x32.png | Bin 0 -> 2317 bytes assets/img/favicons/favicon.ico | Bin 0 -> 15406 bytes public/404.html | 920 ++++- public/about/index.html | 991 ++++- public/archives/index.html | 1003 ++++- public/categories/gitea/index.html | 944 ++++- public/categories/gitea/index.xml | 27 +- public/categories/homelab/index.html | 952 ++++- public/categories/homelab/index.xml | 36 +- public/categories/index.html | 1048 ++++- public/categories/index.xml | 27 +- public/img/favicons/apple-touch-icon.png | Bin 13867 -> 45114 bytes public/img/favicons/favicon-16x16.png | Bin 1247 -> 808 bytes public/img/favicons/favicon-32x32.png | Bin 2312 -> 2317 bytes public/img/favicons/favicon.ico | Bin 15086 -> 15406 bytes public/index.html | 1103 ++++- public/index.json | 2 +- public/index.xml | 51 +- public/js/categories.js | 3380 ++++++++++++++- public/js/commons.js | 3357 ++++++++++++++- public/js/home.js | 3441 +++++++++++++++- public/js/misc.js | 3392 ++++++++++++++- public/js/modules/theme.js | 129 +- public/js/page.js | 3585 +++++++++++++++- public/js/post.js | 3644 ++++++++++++++++- public/page/1/index.html | 11 +- .../post/2024-09-05-resetrestart/index.html | 1298 +++++- .../2024-09-21-websitedeployment/index.html | 1745 +++++++- public/post/index.html | 995 ++++- public/post/index.xml | 36 +- public/sitemap.xml | 56 +- public/tags/cd/index.html | 956 ++++- public/tags/cd/index.xml | 27 +- public/tags/ci/index.html | 956 ++++- public/tags/ci/index.xml | 27 +- public/tags/continuous-deployment/index.html | 956 ++++- public/tags/continuous-deployment/index.xml | 27 +- public/tags/continuous-integration/index.html | 956 ++++- public/tags/continuous-integration/index.xml | 27 +- public/tags/docker/index.html | 956 ++++- public/tags/docker/index.xml | 27 +- public/tags/git/index.html | 956 ++++- public/tags/git/index.xml | 27 +- public/tags/homelab/index.html | 975 ++++- public/tags/homelab/index.xml | 36 +- public/tags/index.html | 994 ++++- public/tags/index.xml | 62 +- 51 files changed, 39027 insertions(+), 1111 deletions(-) create mode 100644 assets/img/favicons/android-chrome-192x192.png create mode 100644 assets/img/favicons/android-chrome-512x512.png create mode 100644 assets/img/favicons/apple-touch-icon.png create mode 100644 assets/img/favicons/favicon-16x16.png create mode 100644 assets/img/favicons/favicon-32x32.png create mode 100644 assets/img/favicons/favicon.ico diff --git a/assets/img/favicons/android-chrome-192x192.png b/assets/img/favicons/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..4e5083438000e0d87109c10d3e02aa6fbf977764 GIT binary patch literal 50521 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 CSawDL literal 0 HcmV?d00001 diff --git a/assets/img/favicons/android-chrome-512x512.png b/assets/img/favicons/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..8971ff0187f124efa04efb5f7ada06db9ac02bc3 GIT binary patch literal 270708 zcmc$_^;cBy7dCum7`j0^1q74^rDJH2lMP5Ug+W)ZCZ*{0FcqtGHfaRHG!hiAzJd*nr zM{${V3#&bp+}yK%$@)S0o2()9|G!q`4B&$f97e7Q ztU$P%vTABz|GQ9+(EslNP4fQ-kDQFv!amL9DzOkH^)@i%#P-<)Y+@hR+SO8#$I0hu zS9XUYQ=QvS3;tlHp{JsUkmIrgN3|J-!Lc>)W@EVfl{aF{;ZYbAFg7;Eitb|Mo!M

!VM?W+|{MZF|3AN>&^9O7JJ=N-=pEpD%_eypB9 zoSzu_<_(pXm)A+t>bK<{2G@J(GC7)PHr2P zKLW-9?t*^kEf;YzlF#fye$Ly8=M#$FrKAw!5fE7U`%`}S@Szh(CX4B|nim1Q5efwG zW|mzlJRnyvSJLk)NPP%oahG2JBNPn*1BmQ0sI)ZbdT*TM8r6M{J}dgV7=HSeOBFa5>Az}6W)ko@r@TV;y!%5BimvJK7^FTCrPwz4Vx z;U_d2P|+Z@7`21b4?c7OiH07W85dNzQnd)}+|Zrw3(*N7bV#LVXXS0n zv52eyEFQWOfd>x#`q|#UpsWmUV`Jl6S=l3^ zX$?XLmXhcubyLxoeuImqs78eNuLA=EyN{(p?kMjXh^IpryDz-{zFzyKE%h+~u`7Ao zbWC~p;eZVnZW?N7`H2?Uygp$9iq7#3yun|pqDGj2#-u^WB01Jm`R*8@b9Khb&wzK4W^MT2X= zQKxKx1^97Tc#1LfD~zyBffuURVS%N!nI`(xFLyd@39_@+4~||yxi#$xx>lE%D7n9` zG7X*B`aS3I?!keAmsc$Sup(3N3r_9rkd~rLC)hTO;lZ_b2wsuAjxJiUg_IFiwAXK?mQGC|G=aF zS5{Q?S0F1x?>X9#h`_NcHg?{`#k%@`_Zp&DGtMSxkYwzFMxtEg7nP4=Gydu!b{Wty zWM%7*(EYRr-=xtU^yJAGcTqabs&_l@QCpsW*z)1IZtZO(C!A7B0J(kE zetRG${^mr^7m0FS{=!x)&laO-!2q) z@|#1`ff{NU+@f99t8h-%D=4ZVNQ}sWpHIN7c^skGpDiQI;sYvdxXq&@N8{aHpQ`vu zH?J>%QP^I^(411DnL&;4CnI9QV&|!Zrr ztG5zb%%TPlMW^aQS6?cOyx@p1S7P8EvA>K^qrR_NJS_D={6tQRZzP((L>6?3&1jO=BODtfJ)pbd* zluGaE?YhDH-$(WZU;m}DKm-L}tm?SZy?ckds&?AB`X?1Ffxn}*VMYDhlb^V}s7-)F z4K=P($pGP1Ay^jTwjRhO?+#`^9LPdSA&!#@?|NXbW~TdF4~6t|v#-di3?@%4I-u-oLk9c4Pqju#nVOl=kR$JSBTWF^Y%I zH=B%{v{JUWy|^7{f1hXy07O{P)osM^ojHuDsRkkojx|aUU{P&k$)9bz+5VHPr+IWDr@HWob+aGGHjlMn3G{AC_@sNB`NNMXSx2uSAxj(Hj2siucP>&j z{4G^RWixn?>YD0E2TttlE^PBChBw#OOyoLdufjSznfkDgzTB>;Xi)rsA5CV2p}eX$+B8E-+gRvYsc7?jgdW6L&vK0lw&kq z<}*3OCV7i6`m@0@o>g!#>25X%68`w9`Co!;)$my>1(tN8WZs6VurKxaE|E-~kKT3? zL&7Z~vX&4TOGqElTjrRT<`F_ePiH{V5KfHG(9PEkMyo29g+;s+8}iq`hfc6*YFcU% zV}GJ^a#mUj5P=^PkfJ?hFfr0&1sH|cFhyo(e-8{OdMH=3GUpsDexZUMrS6=eyxOt7 z+^G!*_!bB?T#+!cu(Sk?cjAzr(rrzkU})GH5+=Y+q1QMpRGM z%|1M$(A0|&nuRtS!oxp~f>3hL$w{SD6xGP#>%Ot?=)HimLa?jdTvQNSTU+j9hxZ3*5P;|3MfazHy@amNbtY%Hz=BB07e{hJ$+Qx~zHjcxI$|`?lYHzS} z3`R}cMov3M@GPQN_M$g0vQ9H^sBc!(FHBlr*nNJ)9cilc9ebvNca-$*?fd1ghvyKe z#LwiP;2o|Hsd*E95ZzSE)BF;N}xS_``UJpyTUC3=FY;&C>@Xz7?yJ3TkrkR}m#LK>OZK0Ed)sCX7u_fw!hzrDX7e8s2#-fxx z#0`r%lQIn3nWN5;2qd>x&nJH&9cuSg36DmE;I@>XK21zLLECU;k*ffJH_xjFYZC@`_F>}@37PZ3!e|t;i)yLfUVe)4+~H!;@Ji-UMg~d2lUri3y=M%6 zmN)B}Qz(Cci6P3zy=(KjAn$`x8tFlv^4L>zgIRcg0MrwmQp><_{?~ZFXnOi|-D1FV z)=!usEVQ47B8iF6fFpAVz#UDBh{vpuQra>=eSLi)<8MVZwIN>~(C5~wafoL7Aln$KCg=Rp)%TJl!X1s}y*?b^X-_?o z@IwKY~tB?4_sY(JH3B$ElXY@E`I|>_T*ALIXFPCyq}+bq>e3 ze`HHHG?Y7UJNA5sHOjjv4B)11f6<+k0~O{%o`qWQLdN{Te0_-NusB{!Y)F?8yG1a^ z+aU{x@h5ihCw4tSa7Lzi&(;;ELeEz|K?yd?aNf$tV!?C(uVo6OvbOYibr`l_9KO0B zx~HgRgFt1NZ5-cQ8DebNWWyAeU-}Mg6Y8AkHuAs+@XuQ*zXRF|lb_+G`js!uU^~q2 zjO{o(g^Ir(07y!tR+o4S`6#W8Og~aoObi_eLR@c-Lw*ah+*FPMHO4P$M!8r?7r3J} z7brAz*FQKX)ZFrL{f1`6B}&CYNH18rLYfOg%&l9L3Bz=7B*_$hxBIQXOFbN=f~>Pd z(ZPcv-v+Vd6-fde(pvOm!bGu8s)_L|LoD&FKb%rhXZNhkJnt!{;B9VsH<`c%>3jux zWW%efEFmT{L&D`4W}D1fD{lb)pe#00l?!0qA6xrH^|)j_Inbc8^d-6b`$6M~5P3xC z;NXy~Ad7;1|5rBY0oD>vIqT+h)N%~%>W zeBsb0Fq!<%-%4IDpPF+L%PthfBB}~CU|ma)P6k~>;Hjh28|<6w@0}28-GV24J70qB zKtNWlASJc}GlZN)E#}F0I-*`yFU&LAu<=zx6|VjbWnXnMAQ)AldV1+rprt$VSN8M*59w!+Tt{tlvjJ9p z%fP@uF%;^AlnS~cVrFK}@=_W5_riC3;aY4@@X@AS;rBKYAt~X6(oLsV?>7~j=Fv-M zImH$nm=fP+ri!$-ld~e_0l@EXK=`K~%sl{zUEAHm2m^P~+_ag|3LAzcKq+faoww-n zIzMc-I&5!IC|LMRj4DTyD6_;;UD46G^Wo*~*vw2!`)zZ3S1&_o{LYS(B?jd) z&FC7qaxDrNv$=Lp1}!(E;{m+SpR)k4C$JzpHYoE?7qJ%_BXh+~bltAQQ>kk`*PK{i*Hr|GWKG8=mZQ7Y=#!bH-xN#H<{d91BVm1d= z3I^e+7t`rQ(^VH?b8r}M(dTsLvhf_>PY`(H#alV14W$S(H@Dr|8*~)ho(IL6zKDM< z)a~jkqi9xi*9SIf@h5IaoL746&%JPbx_9iqbkMouVjE^{@zBO}FqJ&Lt0Cu=0c-$v z;1@qs55U92bI}JCB_{U;ZFFCwlKXp8Z`})vC4w$0dx~iN$vvxA20yb zJ{_QdOk@v7t)=Tu+ZfNQSi?RaMLXaDULZ=Gm5~Q$cKolkEpN;^3~T^Efb&Ks8oV(y z(3mF6*hr2jrU?jxLf=DX2cy0O8A|dDPwKACMPitUYe!~{o7mjaR=rx2>QlXBS&L1* zYWVwWU#@HU7P52{F6E7ErXkqAz7CYKd6HCFReRxMkCu1S*UrN|X5e0}xaLnao~Q7-%WYZ>ryWO8k7)+wiiUCzyp znwFfAKF)C?sObLuzFu!L-_vDcUkW+sH-3B(#dz@+IC}<4Ob*8WrlTaXdcC0r0xpf3 zjtg38B)ZlOjOPD9<9oU0@wW;#zrWPZ?*`G%81b3zRWjapgS10jm5oR9RQDU$=E2kIfMp*w}L6 z+26RhI*X^NkNYs~$Np%(8;pOx?KRRPsd}gK>paMhd45ExM#ahLjmzj~iT3ugtA@;* zBrr?|T7tjs%Vhi9R*G|I3>KvLJw^Z(n%md$xbCd4ZGu5p&?^!=5Sz zyoU(N5;Ys?<9(sAa+~fZ9E2$Cx!mAg;FYWk zsDfGinSjwOP+wB>FW7VFSsUTp{N`z_C}Ve62Hx*vz+6BSqhF}_H);DJ-?!bTxOeX# z!uVrd+s%QsJ;-UY_MV3nbhzA{)E<2PWQzQ&rg3^SAy0k>Cey`-$M_*i_Y-_t?9rI@ zSK8kG> zHWyfpA@@xzX#9Ba1)!}>Ulv-AE4k;FO}#w-(9$*3XNV$y8ChJ?dsm80UF_0iXJ=66 zL+yK2>I9|aLoZdX_TZ6GI3~@S(b{S9?(;)2ip+)i3>sP+8oR{qzh>@*nh0k+H0jB4 zRR!6=uU0IL84#P(gzmS;0`Y1?+tXtpSla|rgc1Om+6laS_f8HMMh3D0zkK;pj)SpY zyP%5X8SzoVlu53)Hz&$(#tb=LjGNDZn~0Wu)0>x4{lu^P zPsAG5AzwL}efIoMDkIwft~O^ll#!Fmr$M^AZFoa>!?(Ta@zUDv3(I^K7hg=;C2y8; zZt>u$XynDU>)rV_2|vY+1Z)v8w)b9e;m4g zG5ynrx?7a4f`9R`4yJTmY}4pv-^>;HLDkB~m5xVD)C0LBA@1y`VBrcXF2(UU?R=V3 z{#3>?kx)Gv{aESICwHCpDRp1u@B$u11`dGNvwGj#NjUx$#g%8~5eSPrxE*$d-k$nh zom`OOC8|4`za9r*Q$)WtkwO8Wqqh;+LMq7N9FYhOse2s~P$p?|X6E-S2;JX=PZh!J z561drfbk;cvqhK=z?gefhiEH2p}>Oh@ryj2cE2`xF(Vf#&ki^v zJ`Vs6031Wnh}yzut?xAC?l>;+YDZlFL*Z-PJ%SqpYOUuh!!5?U(#riUq`I!|`FA98 zC4%rR$l?jq(ede36KV*PSo^@050{qyy9nVbP&pg-a6V9;zpt#UT<<=mXuMx^_4aF% zd)^o}4wmB1tN7I&<(ax+4|heg8pA4t0K9QsDiRlLjeY{ap&!50$fVLXE>J}bG=k#j zhUg-$F54wL_5F-S#e~EB-!BrB8}-U=zbW|6;M9cq7Bfo{E={+vtxX7X4bMb#U+=-s z5%qc557J#*mNqmsz2r4OMO;@EjuW0@7g#yrhfoff25?0OXXNGl`W&6)et1B~IjqVg z#eq+Os)i>&ol^hVG7edWqkH_ae)aSg&9u;wE%L}g6|t!B9R#S6%&ht{IaaS496h1JKugIjM}e7FLCSJHUV-h7~>V1%?g$2J_;<#Q_w<@47fy zoEY_BE$ZDOg*WV+Rn6OKyp){_ceFPFfyY-JXx@^qqeZBprnaC8Q_+N;8=R{J!Hf^Y zENd=jA4VS`e_b>57Pd2Rljz1pf~t%x{X~-M3`Qly6U36lj`zC=#CNGX@A`2%Q)YY% z^OYIVq~ryNdH1m(biZ7oV+`%fNm*IceP~zbm7!ciVKue2D6#=7qSTq5`XTNd(q-`f z9vQ=9>R&jzIQp1>&{L`%=LJ@#U0AK(I{1jt_k+Y)Wjln~}SsG%$NMyDMTLdhe>@Y_1 zBziwY6Y?(1CwK>v)PE5XHr9^UCVSvo`VZ1#Lp^SIxtd%Xe=zed=S#}r0~r?88DIE_ zK=8qFjHa97iWaUM7m?V$U1x$Rs&#=56N%M)9`^GKm-m_4+QEeS!kZg#gtfK>=@Tx=LO#HX zO#%~c0T6&8$smh91{LHC?#g95vb7G&&K6kKMl~NE^{D2f*T;6Uh2R(1TdqSB5SXal z+SyCKLe5z5v`h)RnSAStjPjhlpC=-14LxwQu41%g0(j358q@&e4qu0rojI&g2kL@R zxJ8rQ+d4%bbiX2Ec1B>$K_nNhOQL0`3_xiMs=192zoZ*O@pG!K37>|FB0}$aLl+LP z;V1GwsCk|Kg9n@F>kaKfIiYNIbuBEJNV<`H>#AbXYz{B>;g?&(1a#9Cpt!9-h$oo~o&}3eq8B!znU(TL< z@SN#1-BVE_TwZkvKEANxB!*R6W88E*wv<)=&!0+&63!o(D+Ow640IDVRH~>q%nTjprd0Tn}&YqsG&*G@%1X5+C z6CR6c8X_P9sz9S=KmjGp&&2<{n%VN9&HBavT^fZOH1ALoV~SReb>j~#e8ybBRmg#dk!JwZ}ca)BRA z*s46P*jWCf;}LAGxs;T-@SUFYoY&+};JH0;YAk;wrXSJ;X>4G??g-Gq68@~FTdIuK{8-8fA!Hc`Ju)1RtkAx8%ry|5;}YzNT|#!`lVV(c7i6c(JSrD--xuXA+c{XQ|rh6efF;={<|-S$`3L6=A`4qGpd zEX4sVTZZMZomK*)xL?mOGm&AWBr0$piT1~UavO!T}PrV9(>Gr<+L zP~$&u6#q+iX=z&PK^(X(hf;H&+)*qA?$*|h%)ojy<@PpAj0&o)29j*^BtJh-!HCx-`rb`EmxSi$m8|xU@r{%f^9wck&U!}ArhI$~4YGAlYy4*~3)#?n)^(fi)y)JgW4x$rvF`sT+N+kbO$2v#OHrHpo zvXp%~+DVla)p6h*b)Sno;Bx}t7Ls+IO8YXtwb<&VhMpW>|LKj+iM+erzxO}!B)b2s zZLp{c0%)UOVIL7(s_XF7?}zNL zfU423oxIo0z4wwIW(ljd)MEU6|K46L2GihSV=*Eta0#~=VGQ=#oh)R&Pxz8*#O6d! zh{~=0?G>X0QrH++N_6n0jy(W3L6tW-CPeLnA)2CUTW!W_T^0lw9I7mAwO0k;>lA2P zRC(}|CJey0iLK38AKohX;(+)cBkx#JDpHXl_^tW6WGg90+oGobx|o zG{>^69kZ-qx5^WD;B=9B=3$s&0r8^|CKs3h^tN+VfWdX z(2V*@c9o8flpZP%J4;cm*3|I#T?yrcy1JJCLYR|rYsSNmZ(F6d1+-AIkY!M>3*t^z zqncjQAP!lQ3={q)2Oe|Kak`cLlq`PwLe!WQc1$Q4x@57Qza+WPdMa_S@H4`O6PEpv z`lvaZ!hPFYdM2rC^c5Pb(M(!L3C9Kua&8`;R zE)Ja_n@l|$-M5r#>QC+um#cabv4|(5K~+lu8Ls~2dSguuvt?CAgH;*d2in)qx-Dt6 zx;=OF;_vkI)G%1>D)PY#L${}g{!SCjRO z{vk1H?men%W#Gz1qs+^Y7azuu{$AEQj|OXP5ca#$xo2J+DU#~BN3~>JMt}}NrPW@G z3e^Q9&NAS>p!>H;ThJNBU-kc~aXwANdiBy{L5K*V(Xkv5n)8A*v8GX{n{UeYHzSaC zilTY4iWUH@zWxOsKK|$OaymL5^UihN^)ABU6(I&Q_{KyU`&n^^T6&guQ}?@~$?ybs zN;J}1hmhH%vA#ENWnR4m?}Yh1UiE1TX$Y%JsK`@bYYxR7)T0qs#~feuEfOgMgZ&+3 zL_}o^1kmTi>wkJSXfUpOimaZ0?bz^!JJxpEHYk-^RnCJxc2&flu)x^s39OWVkzgw? z)MmV|B7to6#W%}>=PoG$#)%3dB8afvDP)z3<4@&3z1SjA;Rh9m26MESi%-} zIP5|(-CH!7a-8IobSK=8j)wixR_~P0mm57~Um~#}@8aT~9P^}cp@`}v?Nv@9>gjtDm7l41k1vBPRs6l3+EHZrwbb!wj!uGhMZDqTWRtjb(#!_#g7>v8()RS*ngZ4 zhJ3S2Y<7`o;l>5S>NE}XL$ zaMY2Y`}zFe>_1FA0&Dv_43?^lp-#OL*e>i-5PNIRJ|V7!#FHY%fUs zFuyb6hncv`VY(bNTv&apc<(mBM~Ed<<>kwwy`+**3Ldl6Mky+k#H;Z} z+4BJ7xp)nZu`vh)E-E_Z7kC)fpm?&Lgt+r@5U*Glt{jt$7n>USV1>)dJR98=5Ax#0 zoET=+PvuuM9s_}Sp*GN_R42blTMvIJFH)eDfq-ilBzSGxVTr0QEtRr zG#IT^8P``~3EQCXRZ#mf6iJJ0_kS=%HhK8~6 z@$vgvp-UX!6-y@cfff8vs!2!1o(E6N{Gx>xoQA%&*SLGQyW15Zt}PW_)WOUi zitnD4KRZt>D0jx93%1TMHdBIc8#(4}9C%P&gC~!i=rT?Xo)Si&cPm-$jbmmqp2ebfSm5 z4+r`kLby<(Sn6B%&5^QDFs#;oBwQKhjj&NRJAV_Q{Hi?|MQA+?d}(`iC8WL97=lDS zMDNnm$;AWCuu#o@*WO;4u>S#qa%7of$4b~23}SY4ubhq71TC`(uUw9c1o;f29-0c_#hdhg4Hl%Li3d*^F`Uq6=9ibmLN%~2kq*IT=a(CFZIn| z?4Tx`k z*ZBV0eO-TPO^4VPnjZ81B<+bqZbvaXA@pu@k$H=n7B%a}uo`Owu#{=*GKe&srY#S` zVjwB#N|ZiG)}Mj`Hxnj;sbv3F?zX9)PwIcJ;bagA;V~hg;rz$)UW=SKdKUa$b)_C` z{0dKv`|}rT2;p4Q*j)`_*ZKstan(@PUWLd^v$lp0!sNB6uc$xHz2?qGLqre}gb1$+ zk9YF=byxf&xv#$WY+Ffv*f}Mrp`iO%(m-m$FRAfMIy$;5#O6kB_o~lwXLB z&u3DLa0)`^r=wLJ>et3jdM)Xkzc070GHDx|YTiXY`A5#lOr8k;_)o@Ep18uithaZ1 zc=c}9$mVL{{fqV=O_2v-$_oLbiR}xHs3|g@g-=0I9Ui_hj+-1zvDxH>IaQPz}@DCYj&a!d~fnS;!&R1N#wQG;t zKHw51zKu-a&0J$2?1Ntm6uY;5!kDzZ{ylQ>cwjSZWcNLboPe&cs~x=mxvansJ@6KF zPS58H$%WVZowXGp)!{*ARx7a4_-A78nL~t{+R}Qv;W;#gq381HSr?sDu2eQc^JY5c z`p}O{_cqi7A@l7`%P`7)TZUzJ?q!`ph)-X;va_;eyu1Y3uK&@XZyc%gNZ-DEEv}nbN4qFdl$3_iB|k6*j9n!I^eyO0%M;Qc5bdEzNw>wONEH44QikC}bH;{Rn$UQ= z4cI@qXW4kE-mgf3im?k*6_2H0Yj3Y};vackeS@W))64guU^j}Fl)DwrUbyCSX z_kAsGgK>jpNgdvd#SJ4+MVjgNaGxym?yyu#tn+k5VOg1u0Y+jk@TAfkdh9!4NJ_gel5Cre*OZFFsa~6J)NtoDT&Aw=@&12{QAzk^f1>&ebpPrYCBmF2?E0p{iF3z`ks#oe`+5y%F*v zisBO#iAxyb3U>TmdMAu#QT8}8h|=zRNy&QyDU~~vrBCfi3O*fHO<$kdqXPs8KfU0t z)fyC)7ws(Z$6=`x3;|SEP>xHogThg&fXeO8&Q4K1hjZ&T;OXVneN4)W(lJw39-;&5 z>+AlAJ9K)Oah_`or8Ir??y$8F^g`YwuFq zHYmtfJFic#u09ibtoQh&e*CB$68@KLtFHAQOl#pTFQ?%ifMK0c0*~dTVAHJZ7LjOv z2to!)l6e$pv9z_N8q1)6HrjmY!4W`IhRXNTbVVRQ)9D-0OVy^&dH(So_s}1d9dfW%_#hHF=quvPsoVUz?1r{t81_9zP zYkuMy0-_Q6AehcTD*+(xuLK-DB3)+&0~rqXUtZ=fJ|h_3_KtC4s6CBX#R7K_b*^IV z5j2dBsHtrpk0}Z@fM6ZK9tKcpHZaXc@!bfBiUM^}48}J49ZDKy8S{$sGhM{8)oDua zton++%E^vC_3>%+SQW3x7mIt>668|xdc{{o0FiIp!27cbHus(+XyMOWj`MT&!G47- z9y)1&?lW`a`4*p>gg*>1_NqEz(kX1xWy}DhS*--yU=03OhN{w==IvXC@K3zp$Nz{? zt^_f$;x{7X{zf0D>eu^ zk-l0zV1=a;L7Wrl6iyBTNY8!)ybvfbiW0{^23SK=Kn26MKfN|tjt2m|K$Y%`@eT|$ zI32SOm=f%Ny!M118|~=P`nq*YH&c^uo1sc0X^NB@GUV`Ff}ZDHoXY5*nV4*$*DE*Y z&g>jKA828k4m@Z_zJLXftLxpM2yY#)lvL7iBEiBfg5Jp3m{(BpabLJ{%H`rK{J+Cl z*SOc2h7KhXk%T;^@S(4)I%JQmtX^29q(6Kxe$F76doTQbDKj&9JnH~q%-wY$H# z0S@}u!h9SL!$NO)G$G$}!HP@HQGQ3T!NOF|tNIwF|P_Lf5J z8gV7Ce*gVqb|5vTYx$mm3`00Pl=M&X^5R2@Y2N?C7HWq}`6cjs{T&3QlfeSo?k|ij zfp6Gwx=XhFASO;gcNqs47acgd(+2_8q6$2~0rfU#rp?UQ?BnM*>(NQ5ov{w50Ug`! zFMCA%>Q}dP;TmKdhWQWja~CE13KSHN%8wAUS#*C;WH9`lfL-I{nTrGPcshQ&>QrWDm+f zxT@UTD=xNA5MA}VSLfGp>;pW|ahuMgJ8^n%-<7EeHvh9bk*}MZmerc?W;owPR-2{~ zR5p7&w}X-hoDav&0~Unf--Cmx22x@4T@poi*cX(C%ax`17eh~9#y3SBSGdJh(&Po0 z8?IzL%=)ZrlG!Y&Z$W@)?dqy!AA$|=KlzLO@83UYFEsi;JxW$^-g6gxH&90T3EFN>RL(BWnd##Six>$L z@F#`+N=Tku&tgT(yoU>lw!%Jr7jXpFHP$fs>~+gWHoAYpW(Yk?0RVo$27jyQS}Aur z+u%|c)?uOOkIyR3A9P%I{nTyo2BTGCQRyu+6GZM)UZ;sviy4JgAInrjxWO_O{E^US zmSU`r8bWJ9u3R-O+ZmbpA9L@Kji=={H`D2a7-?{Dih4*Po+Y~a)LN^d=u)-?iafvG-WN1N=mFMKPm5SO7|p%k&21jS*E=`8ezJ*^cSU^&;N|)}hF@ z`+qcd$L&bJv&(Zv9sxQb?%WRh>1-4eN!E{Z7ZWXOU|`m@wfC$^(SB@BBHVsac5U=q zpfT!914`e!vYsTFGA^f)r3jCl`W5}YRl#bhx$->-5N4Y?6cG2k9X3Vjd(C;pUc`>K zxR|^y=^ctI)-+FvD^sPA!M1SmMK?tgprkf~y5q9{?w3`^_^?HiVVFTi2b)@wba6pX z$=z0THGKLkF7AuByR8pC^9OAMBh$!5M_C_Kk0v;|78Lvx$8+3Ly{D?WI&$)y3&Nbr zJeAWpTX_D=BKxoAb8f)G!HV1z&3cQ9w)fW_NhcHfpjX`pI% z?(}O$0Wn2b+K*PD4!7FJTtjGj!oU4mkE?|i-K8RXgxWGhUm31wK4_X`e{wo$-Wpoy zW9z>h68r9^2Tn#HZ+0s;GCcx&BDNi<{DewC88pyn6{F>XrAw7Iflh$C!PqzP5BLgk zK^Js=onI|36&bao7394^Tai;rym{zjm>gftr$Je2Y^loaR%q`}zAwS-za+pZW~^`2 zWb-ZbX1mgTdtAOx+k)vaUHh?rwm9tGMQ+q;M)^4j7T~trL17*gmKG`UNB_~PzW&JS zdfdY5?dpI#V}_EIgA=-I?z;blC++$=2Xq`Kd-9z>e^h_bXzTw~*?wvfvzuNLd+u=A(&OHdH+H0Zg(Gz~heoMc#5p482qKHM7 zRn^V~y^xYRU-mQ(B<^%5-3y0Ifi25}-QPQbg7);#EP_LAbzg9se(hXC|4aS|zA+5%P9>@c`{rU91(!Dywz7DRxk3V`keH>&8&L`4&>F>73>;v zn51KI=azR&p89-yIzX|RB=?AQYKrag%{fg6`&V+oQ4#UD!16_hUFu(RdXOi!oEmo! zhG2hfN^C+1uy$CCUsycQsvi2oa1wSbADkiAfyWO{DURI98r0QEP&c~Z4{QS>O%mY~1lsN>w^zK#q-t6@@Cq+osl4}Nv|0D%^Cy+sF9<=1F zqjjmMod0P76#C2##+8u*6foN`RoHrBhO2odkEiKTf1A)J5tRydfZb>-v6~G=I9^pCwWXGIyL5m^5@(`+sUXeB+Md8Nw))|GZys6jF0< zxBr+3IzL$}Td=qf85C4i<62prP!D?3Oy*~N%iCP@#RsBFLd)m368%S9_W3qdh)(*) z&p&=pqrVYx7prGgpl`qx5&7vZY=RYOJ)WKk3}qk4yP45@o_c<9N#0#K_Sb@cMDbQD z8vU{Pg{TFBT-XT1UzbZfS6DtU{yn_1?FMImf4>IT?u5a(lLTVY8lbDQHp7rtS*wex zYK*|>pY29w`*BK@Y0>6@(S`B&wmi3A5zgPZPS$r&=VSEA3K`kZxQp?t{b?gff|~Yo`pTyrhulgg#{)sbV7Tbz3+Uz=Q<$BbNe}UX&(Im%{io=CrO$EB`C#N}rTQJd ziVc7Pw$5|0dcvXWLGg>BbNvvU3yb+xJg5dOkT?+RmB@;5uvr1DrQdLi<$|zb-%o9m zHIs`P3n8#m)G3H0j1KG8T_SeQLdV;mupu29-@lg6c1M6GFYcHO6+cj7pbek_9+9~x z8ylNBf^=g*2#jh&LE*^*Ng!mjUg1aAEOk7<&d@5Az-9b3Q6)Vmqp#tBW#(!JS_7vv z;o=9_fIy%ps2S5w#MM|2Z`zyVklYB{E^?th@o<177! zfiS^T?m);5uETTVQb}xtwewaY(kP#M7mh(AD(7@t7mSX#?ho&c48p|r$?_I{qB(Ryg7iMtkuE$^}c_G9Ex8 zD?7FOs^H3BYJqbl0}Ht2xf*+VfQR{RAN>4IYh!0lk;5XH>(FuYFkoGyKU-c+GdZ7@ z1<^{8Uw$muo6(pH+*S~qCUK-^YWHf;LMZ9*z4CgDj!uai7_-TZGbkIVL=^TzJicXM zkmP$`O+8$1Uf^W%a`p&VlZ``ofjI#GcIwy^=+>-nLIAPw3#2lsKQ;sw>`rW6$Hf<1 zmPmR-Nl9LI?~Mu_a~p`vfbZhow2V(ky+dEps8s6f@`1m% zoask(J4jzxb%mIX;UKe5)v7t9MT_=hi0jbKoab<|8UdO+zn6}S%dL08Nu}5V9u`Pa zee2%4n>#ST7y5dNq(z5=Wv=flHs}^O3m3S}+E3n$9UIliR@?C=oRsS?jYdWe*qL!f zLEDExS}BHczLS^ltn7>hYuvCP`K#FENz5fDJ4AqN;PeD?In%3Lqo)~ne1E`pzn;^9 z={i$a7s#t%oI>=_AniAM*y~@fwDhA1_R&w;LT05M2`Ss6vBJbhB%e+-oLJY~IP~iA z;fy`(^fQqXkd5*RVvLAv`tSsCQirov6}~ z;d6$m^?#JrQGf1&RRS~_92sVBvB*D&|HKTzt}Zy}pwaOuF-Z?-Ynz`X)U|`Yf9$D} zEF>^9DgGWG^U-`7X65CJwlpH<72;M*IoP#TV6&e1k&v_!ur+5C&qinPN1Qu79goDd*6}Pv?!1kC5qsnDYUc^O`M%T1G_ir>4rm|R3IfOE`q7g zJI75YJbz}$9$-MJIG$kRP$V=@g`aNhZYP*&jjjCoj|wM0^aCt7Nsy%T@3gII2ltb& zRC7JfbzOdY4gndhuLT4CP-5G(TwL7s&7I-y4#d#Ds8bqg`4!y|P1w+*_elh)KRN9l zYVF=y;?DZ(?aE}N?a|jfjBIh-viPY<{iy@FT5wYq7kQRfXemS&)zwF@zmdf-IqNHq z$){zyZa?Ase+#DwaOaG)q@qGS-xA+ukUd}-uQkbGCf1JV}a>yMPl~Ux$}tl zgIzf}D`c)vFBx~gpo*0+qz(VFtb^P!%^hh>OMX~PDwrIR1g8=jCreUUosno@e4IvV z!lF$Y4jT26mVoX{}10F(q^{-Af=gT#W&e{UpW`R~Ehxup7=W(Xn^ z=RKMekpS;-WONixN=ll#87vpk%Y#ru0lX8M65^7Z@R5XnjRikx32{#*9J_0X%IFc| z(|)(RMX8}!qI~~gcGGFqt)*oJxu)jz1s@H4ZtNx+toAx{pZOd0w1~_jXn+o9Vp&+w z4WgC=-;>kg_KMBP4Q+zVT2&gd%6oXcLI|(6c2%aPKEzqNSz5Y=BRkg!7T*rogoFa> z>s6xTVol5)N$e}(%PJ=>SAXBME;%DmKMA!G5d>~~wtrR z<4L@Nq9}ml;vUe_`7?O=NW}L%!p2z-G)#nX;0lTCmY^!D>qkXT%3B#%5nDghzW4s$ z4}UW_O{1=u_F>VGb9d)521-xI!|ltzs%MM7X5)*D7^8D6&XlnI>bdeVKd-E*9bFky z25xCX7M>e6ruS#EktXK;Rt;54Ij$4CR^%9NMjE-B7>M-#`G}<8yvsZ7fj{JGtU@Jzpk_3%{I%KkC*CE(hV|YV{5**@NL-k&#}!)a8~fXRr9Atf-An2rO(YGT}V-F8sv2-ki$q z>{aXZAKIp3>&FC3%iK^g-O>XB&}C-HS8^m$-|d|hA4bU809m~BDN+m z+Fw3h7Jf(iQE6RA!HEiqkq3*5N>CaPQlPh<;w+?M?^w^%ZFDa9|0t77NJ^mLYy}E^oN)iz3RQGG z=lFf#0W*+DbO0H7Ng@=`h=TdC1i^-+#PlV0u>bn!={meoq!YXOhW3$tMY~aA-f#QG zpIp&3z}Jd=>gTa~Vqcj8?&c))rk^mma)42T)w0R=z?k1?!!)>;`6ZZ2hA0$P4?F#f zgpa>BKe{***OZu_?d(dYG;w%r|2Gz_4kwsa`sH7WnQxx=h3fAiM4FSj+{Q1(_bIoQ zt3_PH9myAtvD;c^77}y_D$W(VN%c=r`DgEL5o?{>GUhCD`al#kPL#Sx z@8c;#?nCU3_B5Pl*e5o&2LF%}b#TT3dSu0czX!^FhbC+sW8bpJd*IU3TQ3T zxS-&o6Y(o^Vyf}dUd*586q)|3c~(2#&XIw0Y;-${Jv4ny2ad|MB)X|uI?Sv@y_FC08Gdx zS21s{bc!Ti_^^3U)<8sz2viGc7(sQ^7i(AYpB8X)}?#!`4tI)U5_IEM@=`x6Yo)-_K`$k zl_q8YnPWNWKeuWu&M|-Slj2sm)6$&u3{iKHi{|I|T_7 z#~j*a3A<6rm1+%lLHj+kCu(VbYxm-jE-PkY;88g~hrE!-poJKP;mflGjmmWNGR)l# z2pE9tz(k0t@hw~!*&f2roS}}Jq;YK4;Vn#P`iAvjBkLDYuF;PdErAXmedkvC>NXmt`y$#tzo_Pv)N=9~(Az zc9n#%k1W%Ed>-ge`YKdc-hA5JBRT2^7CSrNkpQZXcCRPWzyIyLvUy9GSg8#Pk+cu5Ga-zkWn!6yX zHbmj&We%P8V=Qq&P@Gco>o{zJHMOY5rr)D7LDN|ZCt_JTF@uE2ZhMIg6QgMRt@fE)|STDqY(8; z)ovb)p!p*a&rDdMxG!>09P^*A$i8RRR2nt)ndn8m5hgmW5OJ;ODF*L|yi9<+ug+9& zW0`yRr;{XlPq>AXhZWwVodrL(L?-i@e==S+{O8@x`?Gh9=$8p?kmJXEar!FFkTdW0 z4o0HzNQtFwY#0m#YzD?(v3_-GfE9wRxm5(L{b#cgc^zJoBC%X4d>i)W3jIT03b^=4 z9ww~(p_+^oR4aZWxR82mBsp9mt}5eYJ_YIN(fl&^SemXcnc0aQuPuu|&r&m3dJ{#n zhUih$EB%d5b>|1uP7bZTh3%04UX-}U3{^r4{0H5k43t;q1t`}_5k`EPHE2Kr!MJ#HhIiRj6{TGZ@`f(EnU z>$P%DD^o7`4;B#{k1IUw{2jAbox}~8ln%P4<(1|s=ZtI)y>H+jo;*F&$>9i5tb$e}$uY}wh`Y#idd6}YYaJ7;u!Yd8n7-ef@M z#7yVZ(Ec}i`$CI!YVD(bR^`^&rKqJ6@k;}ygZ2(B%Vj}#`{Bp83&B=G{syW(0L~u@ zF8-2C1miYWzLZ;T^?F^9|A(uq@Ai2vN5i)%*X3LJ3bkWqO5Mb{PhFq3yB=b_c7*)R z#*^7qE0`+~%7f&nF#*z^hevyF$6cw>a#BgZpBltXp85;#PyiFQ^lz;FcJ~WJG@i|v zo=JLTsr=J{X?OdfpP@SRFlL`Eb+ zP%}9=PiHF<@K-tP0JhAT-_E^!^BHEK0pS_U8}=}lS!kty1^c0oXC3Mh`Pifn|2SOh zSe%gj=t>_Xg$`JH?k9#$IvbcNy0{qQ@z!A8{?7C8^7WtJmkHQJVu;&Z^5>gsS2N;#|%d`miSdpJ9HqFJ4 zq>rZVt&ZU=xu+&xo1a4RBz3E2M=j07k@Cjp`e%=v6W>=VO?6=pPZoRGXHe7rM5Ct> z@7lv!jBKP|@v)sY_gWrfW|Jz_1sPEV(@+0*~Py#0u;4T;_(zCA-Ya_jYgIi%+lXHMcBf7b;FU^674id^J{JL zicus4YRrRUVIj%}V8nYst9tP7Mo_$b4EM)IE!wO`$GF52CF9|{p+NP!&@+;jgQ+=8 zt$xnP+z#F;3g+=50>lV;)kR1h;UpZSQC%ymU{CObW{r_qa1!tbr`Pc1`N;P}vjsvQ zxIA9E-aJcUes1w=%X>ir^8L@m&@Zs8A}sBM`Dfd%+##O46;D-i6hGN=Wt|o><6Os9 zOf6&I*Fpk*R-y(tMA^7?ir;fLLm-{Tr`lF6Wq78x`#>ard*bd!;^L8DS!c@n$E$EP zQ)#wbbS20Y$???pV_>Xq@0r^bC}}g>TzStN9?meHe|^f-frxmrg9KYDGbtbkZPR#9mFhTJ=^Z6Bcn&+N`m41hl(5cy^Gt4m?XQ-iZF%{4Pq zxtapBougT;blBH3EU#`JA+PqZxbyE@+iT2)5m?Wkt)o%->v*^WGAhvV6yA8Qhc1V9 ziGz#iBKULj2>KomX$CCg;TOid~{oyxuZ7K}ey&I3)yZgQ)r~ZAXJ~Q?)=G-b^q%v9x69xvxi1Yqq zNd1MK@QQvlKyh2u^BU{l)oj6uI&I1X#`Vq6f#KHdn^!n=tdTM|D>qlLZrZncR>4S6 zkz%lqt%t*Vr|IR7W?_4V{gn1vtc{zIC|qU7sw8)#A*AqLFyS#(r^(wh*?|OLA?!mK(l4_T1Etasc@*IJ1>I?zAbsr!-a*{hJx+{v!VLg=Y{!C2N(BcH(CY4+O&u7t*;!;(0ZN* zAc=A$%pkVzQ?&IuI4SGLBg{x(yJ?$I-*|3ARG2j#t$Zs0u?|`$^P3D=C4A>icU(9YL;C%^q(eqKuv$iVXr$l_StEi`sH_|`IN~A&XRz73< znQBp~KGu$OkApa>_HCynH>=hwfa3b(_JMqpJBx)f!6IHsWq7&uq)f9%u}rF`05u5m zjeS~iJYx-zj9w{t<@f78#+mr?=Dzt%1KrvvO`whd#HT{JeUu3*V?v<;<(V^gcOvu4 zQ3z*=LGa$UPdM++-!YZkl+0iaE7Z0fbsS9{G2CjVcAodO<>ejHHv32N?6yAM4D(DL zScA#4@GmwD`gOT+snyE$?8vf5BV)IEaYZRo2IBujFNVPD8RQN=mJ{>c(G~W=<(|XT zAAKR$rUvl(CwC$N;CmYAap}h&pT0O7=yqUh#HD*G_TCoKy#U5J@xsz`;E(S?2E$&w zJPlez@b<$?eM>{!pFe_wyN-14zb(YQ&)dK@afNNHKeLAkQ~Kp&mVxs}{kONtdrK^g zlLJT2a6Z5NH1Pt3W|3({nGAjOpa2%74@0baIwrte7;F>lUlRe-_M{(|p!bp559n2Q zv@c1DuY30xH7rVf_H$nv{CCaYAt9&{*_++8f^Y5y)34ZTyTSzh_fWavpqr zEAr>7mOn{zr5cmvOQZ6`Q9Rx9rTZ@2$8JmBPLLNN5B!Kq<DN6VR2Q z(-y<)jR~c)Ezl8$cku=OAR5i5NfrJK?E5!tn*{>jX{1NLe|fEJw*FVDi+XtYeqN|L zcAQ8I(InB)J&z?{f1^kcVI+~{!5W^OMUO>^Q=#1}xy%*})_p$?#JiPRv2%4F8D{0@ zj#|yIY8A9+%RM@oN96BK?VFj2Z$u7m_uYr+jU8i&i-TPS0aekQ5xkNWUx)j)(S2Xe zy&ms`-w4Y8T~3`rzaAL=?YrBT#lK@XK%hWKD(Jr0#^bLnYh9*;&I}bAa#C=8?Uun9 z>EkIJ6Zp9}obgFeGCT%G++UG8#bL#2U@#nU*ZvccMG}T|m4?OJQ|A`SWl(n@HXxE- zT8C5iv(yquZaSDUGzPSy&3`vqFXW5SW(;cJeQ%?)#C=Q8xOHu)a<0y8uq8J2l^I~9FriAH>nn1 zV;BGONdAItsivUy>{5q(8|A>7$-H%BfTsJ7m52pe3!MT)G$Fx%)Rjc{kE4MUPh zSEw9U9E{Jw6Qo})Aad1k@UR7jcYXPmRL0)T4)EH`v7zZIIsgKIMrRb&;pa(4 zTM^czfjK4y&;JSC`*MiJ_a)40g&#g&s|Jok^6q^x#H#bh4}7;8c~c8tte{v>GNR<` z73#y4-^WeZ$_i?qRm0XnZS_u?nXg;;&tmV)cG_yOyoJtg-v#g;(C(ZawF+HH>Y~b-;wn)W|_39U>OXGZc)Pj-y$t|auFTfayi4cH`NieSW*3WV4;1h*Qft5aJV!NCk{N(V zWyrjBU&*Rtr-u)^8}qc0qc0TK2pRo8g3y}@V$XYvmwP**zhcqQv4A0WT*(o6t1XS} zSF;^5U3MtKolb`}jMC6(^{$FQ;l$x2V&P`R9hnrJ!%u*g-tZkE_ZD#pdi*#tpA!+yQY)3da`ZlNgq95vUHU|X6P8LB}4 z4~cii6a;o_i_;5CNUWf4O{@#X<}M!{q;#aZ)oKTxGgcHNvE`9&OG2QL;DGnRglih3I zZuk9}yg7Dvba9~$DaPn%?k5lEE2K!h&BLsIKu^kl#qQ!t-j^SEq=#mzF;AhN%V<13 z#18BJb$S{#L~(rg^K|K?i9WLMJdP44hAc-ef6=u95%qr2eL+JEn+8#aWZ`yh7W8; zMp0Vi1uXeTnsk8;HblVvSE$>j531km^22Od&F-gKrd{E;S1x--CDAhLd>zKfO}~ae zLB0v|wN;Ztl*)g7(1E(gn}W%cJh>iSzI#R%N-SBl{(U#IRm0( zvAfC`t76bJK?VXy!=Y8I1kQlhp)>3&L-bA0sE&()mk{)fG2j3Kvc;GH5o*A{+&RK)brrZ?dMkaqHo5AtjJ~lucAwe_qhuo@ChkAr z7p2dTsMY}?zpbcVTr7)~odkpysqGjVig#&BN=c_4kRPp>D{=N{uU)ElT|DoNUO3{8DSm$>5<^uE2x4IF;!#0Cfx<91YJ-W1( zqKRJL6j#iYs~oka5ACvE7Y1#h2ey<+zd^fY@-Z#w)cCB=8}0RwYIZ{w%9X!oByFtHeXyhXT-DMn40_SdW-+MxBQxV>N-5!4_iM+j0QjFbt$br{9$usEq?yuGX%=hZ zu9mx<_W@TK{!qD6$y`eJ>j71WM!`QTd-1F_v4U_Tve2eGNblDpO7G`YQ!DHlRgrG) zyd8(KfWP3F8!I%NN=cD`d8;s+(U7ZpM|nj>xefXZ5QxD}DS!pC^yba&8+Xm=#27%O zYGrG0x9!&BMS9Wo(i5*FRnNm4o!8|G{e4qs__iF=vuo#VdilpPZTtc6kiQ``kW(nt zB4RGSN%wB@Xa4V7-gq&EE`&F-^poOHfU?nV=%9S5E*ijSmn^!e3$3t1pejgeqnneC zte4L+{)cSn{s=5E)%W$w&|Kvu@3AV*wrX2wMFy=#=4Bo@7S`MQgAN7K7zEtrZ(t zopbx0b#Ct%(l0LDC^+6am**E};7E4_xUKUV9XiS^g`#++qS^97&9dRGd=N?)zDA`i zI6}>U$y4_1;SRou&T#%gYCCQ*SeK?nE$$B{dvH?W#SMVgvkjmzia}h=vQR;5Z$3wBisT0QCFR6i#G@S0(|`! zAD6JNHy;n1j;$TYFCxO=2i_pdW@qSf4O9O%XHnUrNQr#C*%?0o;MBW{i{Jq`9MH+5 zd1s0UeK;Xrix#Tgr0e`ma?mjZZ2=^*zfKZ<4E=Q`j&MdH^dcAdb4QuW+2LIF1k3jQ@u95>M*R;7XaBIe36eS!TJ$aimYO89N+; zNRtP>|H(9J%jIkrGFBEJW0k?kwC`2V_H)e1j8(_bhq^xIpXsOV|6f@Tc226kYj5x? zz4O03dv$pI7lG{PUdJ*HUJ;W88^d}i`)~rDsG0N*23Dl`cK3l7byOzh2zwQt(%t+U z>}e25k`he$hN`HvX!)6db}veXhCN&&DX~z4HW>=I3>`m^Tr(_43oyt5JC~$*&Tv-j zERfP~DGHC_?q#gz+p3pr$+GBn4tWB-9$GF}4{T&gof4-knzZ+Rd_CesiSxdE5*s!9 z(T`HDCiu-XkQhw_U=krAy2&W5u#ojR16bjMGr1uPx9tv( zF#hyDuT;BzMu-TG{$|&q1@eDWc`Kz|FuZ7iugj{O*AH$0D1ip|Apu$_O7|-eD}y5s zQ}}>EyDuzos?9pw)p@bKm()JHVz(t!DCt^{|du6PkoSyK%6}0-c-*L zpJcmo083_n(QnGrT!{iUtvc@~nDg!@ntuleJ*rr@47!u&ur8Wg*tP$Cs5{Va?QyC| zUOHlT97VbBFO2skPAV36+}vDfQK1DIEnqMZ{9Oc3ScOa&hb(ddNn=2eC}MT0WSwbd zq4LSKz?bAAS$Wk%ySeNVC+rG&l36W`0tci78KMX?f)W#Lgi;KqN{yX;{$krG_(1>J z{IINyBURJ%T%v$^d#N5#mGcRrme$$NvzDKg8P(AdO6r<@!@=iQnSR;GO^c21csPHR zRtPFAOo)gmx0f`WELA2-CdxEM5BJ=fm*VgW$<)~l%iy9s9Z^9(dcqGCxh)v|@PgY{ zT%w-BU~f8s1*@*DE5z?9uczdoLG0)_iiWzKF1~^!rgYqhp93MfNxkrEv@142eRyijf%}r^oWB&zxQ5TDXLtI z6GPYhr+1nd9|GisW9%!JQQQe0_+fLk_yZ?vXSk1j+?K0}Wlc8T9kHHn&2CcUd>)s+ z-FI@~DNyeaj>yQMHb{+Nk?!_3e8v(AfLetBM?40xaDl(dGM>v238+!nvx>7+ke+UC zA3t~680CzF&M z$Krit2q8pj(Vp1khS+?>f?LQAD=^!2sB+tTw0X1T(s|K0vj`dy!Dm>n4M^@^f0og& zYODH>w9acW#u(Ak99abzL4l+1Dx6_LOk|OKutE!~ZN6u{(+Z=z9r%we#6{Gj>vjB! zu1x#Kc1|3)YKwJjDB;ZXZ-L`yGhL%AV`|^h5*oY`m-eZD%DRpo-S?|nd?aYTpWg`qN3Kd*>R@Ttm97U(;ZsM0qb@HXB zTZqrtR}w@IB!b`*&=nRZ{0w)MPdcE1>H9wH@_PH*CY{u+PiW;+kvrIR|BsUL+NI?7 z)h5z1Iz*iO*~-~k%OZ}T;GyN%%l*7dp%2Ep|`WK7*Su5kiWyB!m znuT~4T2<`q>+&UQ84M!qiT=arww%Wi?%LghTK)dlVpy&QkPh+NjnX=>6()%Br~qtr zLIdEYtPu^EsWn6g&B0khk|u&Il|ZzB2xOQ!+Onp_Wi#OK0Rp;gL63!npvOQa|MY&K zYAOc2ILOCx;iMcB@IUq=&O8)lO&Ci0gSlZSEJBtWw)i>lXiS>EOlu zqWfnDgz&HbdLK>qem;JmsVP;XrE&&)pEg^?f48WpsC)SEVanAwv$e~8eKWW%#P)HJ z%=~t)$iL>#&(vL?2@394{isT6X}7ig@&Ae^kz_*D`_Ce@YE_XXF_7VW={tzqxtxg$ zG9?w;E?2%_To7RXIx40+QN@=5<@vy%##IL2+EJYDFv%aS%U!z_!>?J_$piloPweBF z)7hg__FYg^vHoq zVhvPF^bDh*$A}bv1Fb{)6t>gA8C~^w+|Z<^rfoSR)6FAyjlT-GAdHL8vW15h>PYhB z_QH~S`#<>JFq3#+;aj(H;*@o{pG;A+L1$j`8B^xZTAC5~o76QZ^n_DkYXqNEi%^FQ zYtX))x->e2^8*`mbE_^2lC?@*jh{b`C07*`L_IXoi>c4oiPk|Dh-?9zhLmj#|fhke8K_B1k+?lA#Q5V zkhD9u_wsL{`fZ~W;c7HAShPbC==%hdDaSnUC0CX&5@P;BKCLKzJTz7C0ks9Sr~}_9 zdZF1MGw<7r@0#4OhQl7*u7=h?{a0AgZ&;w%-Ri6ft!#oJ{{l@N6DSaYtEFcn?PBK2 z!^q{+y#9tRzew}X{*5_my$%=Ms_HOlshQ1>wB6dC8weNS{0<1elK)Q1f!^bdO7|3D zZqBx*>+|hiZRCLvlP7+2l41!OyfhjDjF~}?@?_y+l~|d2L=V5!bp$+1XOaDit@F5P zUe4!`pI+y3Df+@u!Y8g}VPgV6G9l~p^2YW`fKN&IM?D-zj98Ha2dLy|NU{OjQ;!+2 z)z+VhP*1V*{Fs7P93!o(1D#5!+5nU=}3 z#}1;$m6>tNABfk`MG4*knl*Yu{W}m+Bg2DVdiS0C_v@mTfw;Fq<#^~U`|oiig2P@H z?=TBW(tqm}ZlY{*?j@JBH^w z*Q@2mJNWE$ON7dK+a;BgP!j2Hd$18PvV^F z8EZ~xy=8*3@Nbb?o2XkiO+L0n!84|HTf;fa4kuH@t8YmOi5jB+8?*HNcYwb0Rv2R6 z_y__<=w?b;ocwQ(yghj`gW#+^w96;7D9KX|3p{MoGkL} zE$75jJ4)DvnJB&O{K-3BZAp%t4P0XwJB9qTTwnT(f9r(B3S>@`|nzaHUj zeXWg}+L|r0^L}4doh6Z1jNW=~l4Puv@3+{G&9U}n2gUnM|HBK(lBQ1q8A1SKBlt%=h@#Qv%y<8K8c&;B5l7X8SOTu#pAoMe#(x?R`A?qwC3#x5^DZ+~`_ z3XSAf2ofD0yCsQz!>ws8YqIQ$-J7zo$D21~V-q4AO7QF|55u)il2cePl3_wMozSgsqt?nx3=InSjT0A0G1SZzz!VYn z4*f0aRvq)_#libh?xH0>B?e$+)x~hesGg-@oxcQyum~eoUlmSvQG2$1^QmJ+@V-E~ zMx;pP%Y~n-EtclLGP8F-^EJqea%7qY(4sXaDwp@;TN$DIFOO)GieTe1{AEoVM;jLc z%pw##ucq-f>fNGqQF`6M02b!6(3m3Doe(~~qNLWF;jC8AGy2d!_H^%ZCuf^BUEO&N zGj9v$2;P7Gll^}{_}4}kHhI0Yd3O^JCP~q!NYNC9zaGv>lfK(>g~-!K$h83-K4@Q} z8npD%`{AJVrP?mmbMOe?)WjQ#+n$x& zfq+Z5N4Zmw9$C%qK!~k}a#z_RTnXhJ(8UotC4I*JM?oY`ks!saD^f2J2Q{Q=q_B6iSZ|d< zRp@fBMm!QHBlD@K6m3)~JsPC@ll+tlR0yC%aQ3J^NfyH(-_*!iWAwcXArr!^ExbP) zOV{eO@wrCaU?)YvgfIO zn>k#dT_OypMs)AQ?wyY@l`y5_jZ-yM)H5I&*lC0%(V=^|m%IALPjC3s_<=QiL|1x6 zD3(IszTeEv)as4^%r8eARmjS=n_X#23!XAZRYFlV>sY^7BR8ET`6WvV*to(PAPA&WKd+*k`~W0HWoU#`Vr_E-$ncQ&iwX^Fr`ItQ@5ewwI-s@<2^(2Q+V&FBd@7TuK6Bi?ahD~s%cW#pPUs9qQ`Drz7LZY4vi6Du5iw4&nS~82aH^e9PjAQH++Z@ zzeG8#o!PB#Hg^XS_5O&7>K;Tcc}WFNsZ;)&Y#JDCQ{%J@llVce+T!^3kb;%&%NNCX zc`CDqvag>DF6Kv($B!EOkLr4@w`uc8AR*uIh*Yvw>-8i{mIC{Xu)uqZ_)G8VY0aLx-StF77;z-4H3sMUseGTO>^iU3K2OTKn>Xj- z3>J?pW|HvUtMSE+#I=BT>^@L`o;h_qlvpx`4g`q{__WiA^tw4k>+wa9a2k3oV6&?H`6YY1!k9YUxaIi)rQv1HR)d>!R8Ihc2Y>URuY7fChL!cWE3vcl)3UJrh^#C{9qoHJT}BJ0=+1NQQ0T z7`Q}PrxFiPd#}iJ?NPwj_UZJARwA`EI$`zab576B89DjhO_wBC@T?3(fswrHpf*mTi8_V(D!-=GFxHSj z)Tj9eq&K@L{aFmWS!=F@aB1_?Iz4)s+Et6sh?hnITlV}p429D34BT2Y_sDH}g`a7Y zWsEtV;`%$ueyu{$j0n2F#GJU_G})wQ;Y;@vD7hLISHlA#%JKvxI5V-* zdY+!(8JVM_{swd$k)$Xl8VxFHIinEqs=;ISCUD=+%a%=e#;=azNN(UEushJw@_}N} zo`a%=72$@arwN=;qms5JvHn1nv2t((9pN`?ORZ5bm-c>^$P%sGx{FabwY}(d^A1*H zkM(Q=SW(&*u`+X=pZ#Znjv>Yj1V$LfJrfD4#Y|uet3(ca)!RT;ViH&7C#SM~qr@c5 z8nhiMkp*NbjX-NN4|BsIQVn^&kxH>c+*MQYk64W>Oc@=_B5JW#n;07#TK{n9M2N;jfN%h(yafWGiGG>HWRVnD z!<@G($oT!^82u0hssX?XAp{-fWqANlM@H;lxE#IbZKnBmLfzQN>QGX#cR3!#FqI&Y z3RNMtZQBvt2>n-TUv4Ah?iEMzmx8CuUyupq$YkT3raxPku9$Y{8Y2UlcJ*S%iz%Ui^SYy{&^w&FYTF--{w)DL? zwucsj$-8MYs?mrsmW4upFQTTrWRRIrMKBFUR+}xZcJy1HgPFWk=78z4AmZ)_o&=3S z*zW}>&?t1=STscm2I&%@A1h|OdDqGH!6(I_Cr$oyXsCJD$ z`vi!gA;O!htCGCfNhBZJ0T2cKEEpZ0oh*)*^=UD?tHW7DU}b{y4+d{ka|@BlOMp~m zAG5kl!AJRVZy+SD<-&ryvYr&(mP|GldWTjN{ugM1%T(wl8S8%03>WE3u0GD;A{| zpQRCk*Z`dlu=QqOi%e*EkMEBvQ{_1v7RqPFcSGs3{@g3rbGtcgp7EMS*zIVJbA?l$`jZLW5?{AuVClr!Ooiq%MQgZf1hdYALon=|0hRPCGB9>Ecl ze~iOF9^~{|I7Dxp8{fF$x~<njx1Feiae(M-Ooh!p=M%2jbe&4E1Du*x?e+m>wiWRe21mMd(S#^Euh`RZZq$Jpf7fdjk)PVUl! z7B9%_!iwOV)j}KVMO6=)H_Uq#&@-6O<;;CqP9D&H>Ouq6EfUZ#F?93n;N(O3k!8Hq za)hlEPLPO2st_AvWa6W3>zux5d3G7BwUkYZcU`aRR(eKM-%S!Zgn>F7x_Zd+ZRnpG zpK6CXzSIoaOOb}6jdyy~61cS^7{V*qFscK7c9lmzZ+dMn=nqSyOtgdAD0bfryzT_y zI20Hp{nH^ZjKdduh(@DQnbT+C+yD`vZhtm`I}u8#MjRI#TjO672Vu%u^-ZsD?Z;+M zBO?g^dO45h4w0E*4n{~w{8p{^V-OEo4vr(tsuA@I()LXPkYq6|C1fTY_W1q{q-%LCXtWH0 zfG9H~qyJ_WQ;;++?SoD(S~J~?S6I0B{XH-OW`#SiDfmd37!hPjrN=j<0-DCqUIOM^r`h;#Q-bl@K(c-G>Kij^>uadzOPf99|e!g zdtbWYoRXR<@2nC_V#K!7L{!9NXWz-UDLEAO5Tj zzT>gmmk?_-e6}QE|53`y&2hC7Va&foC&;HXA1^+YO^vlKPp?t5xDRwj40b@`T9oDxO5^Hb63Fb~)5nFYigtG;#O9-e7|&$&D*}VDlZr?Lo<57et9M zMVZA6&)DPLBwa4?ts0_DcrY!T-VqvYeS>o~l}B^6=uef3{p+6z!|RfxNjW*7Vu5hP ztUiMFCsdh!))U#N;9!2ZBL%#j8A$D4#o&r zR9&ycXs!G<1fUV$6a)HA$O}MO>5jN|ZKPUd7~8UDqzNjJFEW0%cBDqmHfZ6)egyq{ zzv@e;k9s)IdJo1@uj_N(ke8|r5*@{=KJ~(s`HWhPm`RR|F7|A0W;b{(E-mfcX62Hn z!zjwdQ3)xi&@yK((%<=Z;=8TZ@bfVEz7L*YMDvocWh}?eh%Lzn6kd?&>)HFxQVOE6U7;y$u_?b| z!wE~3a16qKFQ{-~Lz931)L8Ae+BfM4{|$T-H)JTP|2Wh^m6qkuf6mrpG5ZI;VALo; zNnW*3$p^wbKJe^kTdYNSl$l^K)HlrVJf_*uUm>!5cGAmmFH$|$B*$3(aMC6@-y3-~ z%Lf%A&wp<8qYHa?1hWpPlQY$Sl>8=bS+`&L_wn~@ci%(?&o(KcmxY{}V)swDYs&IP zUpsdgzbD2kcNm~cX`nwyhAP9PmYVZ{2@?D9{QT0?#s0#5g%kDS{kb{$Dh2u5Ua!bI}HmIv0QrB`<7 zjtDn$L;diYs;ecB$H7o3{7}+wxfyJb|ItvnHtfU%dE=8|6 zqF$!ufC&$7^<)XrR1Vbb$dWdd4yea8_l zb1HcUZK$T%ow6;UG7IYLoJ8&&V(@3->Wc7A+BU1-wez~~`DXBhXwu*a?n>bc&OsiAY!gz>Ko zDW|)z=@aZ+49wp@Wb-3Ta5xCI?|IodFM4VcX|#yvG(b-Y!vJ z&h0SMJH`GO3O*bx`0jjgcNfyI-5HL@ejPn5BDdz{xTeSS8TdnY^Z3Oy(uI#d8jT7$ zaYJwzcgK{?eJIlt@eL>I)JIZSHO$;8@2uBkvhhgVKi?7K<#?aqFfy18?ipNvTu%Qa zN#%h79OTQiyGs|2z~i$rnAe3Z5QDlEC5wiwEPX@(=yDk}A?gRg2{Dc*GdaHrd4=pE zc-a$2cdxdg1q8fr8czsVFV?$41l(EVSbF07QDeR^HgNW0D29(PRoD@4pR5YMI`uCZ zSuBFu-C2x{?G=VFzQF=6e)LlKGDxPnqhExBbRiw<{$c(stEjlWc0@lV^7eQ&!xCth zF-ej{XJcav&}o85Nv&;Yp~I-oB+hjg9fnERl0mTl12!heI?T!B_(V+!e?Zncpxc8W z+`k@4x=uyLn6Bav&+Ut`@th0^G^c`5M@VqbnA;0B0=H87j~)alj?Yo$rfcih0vk5j zqs&iAId_6T4lk9^9KJXbchdZww$jB!9%P@Ftc%9-M?6tbT~)`;z>t^}8*SU(N0h2c z*Vhrvn6pkzkf(yG!vE#6if&4;`%f!_*-ZYkWFibP%-*ulom_eNbDUo%1eJu+cyx@> zpVPjP>D&lA*E?~G)8AsfR#2n12(*FF+>dXwm*3U|`c%ndz2spsHX={b3G~|QMC>|wJKhIfn_Uvt?f%xz@^W`Y?zhHQylxvFNe&#U0``*MVglw zOjh=8i+0~Vrs9^=)bXQT4#1yL7S9zZOMH36b{)D*VH`O^H0jUyVrlLY=hl&KD~IfK zJU`s!Pw@?7p=*?j{JQx~nx?&R!f099()d)>)_e+n4M`m;YyT?@K*v=E1SoO%!U0^r zC|S(Nx>rhbw{ipfSJ5(xzDeV>3T&+-k!O|nb6H^}WO_$11J9R?0C~nlzdL5n<^{#y zdqU|>CH>Aea+mkNMFi1aVY#O>2vDL0>0X^d+Jd2-Z@?l?9QA!1ZW|UB>3UadbgNDi z;9}w=5fiwp@fd`5(m$(RMiR($j*}cv;3ZE$X7+dcViVy)NPoCMCWDtB6^y`-T_jN@ zx*%t!XZ8LqlGirqWRePK1A{4QPK>YVZM%xbf_`<=B@ z{92eCoFDsBcOsYapv_cZi0qHaC0(RORghsPu07fp`ge?#lSW;P z%UTkR>IF#`-O`i<`XqG4qn$Vl?49lGZ^RUQ%%V_5YhZU(6Bo>74U{xhK^foXaEgKA zkkv`jFz{}uH~g*5Nx>Jo#@DmN zwy5D}*o2K7QLV^oqZJ&fIgC+YpG$^M9nZwdn^P-`fZy-rf1e-x6``OYDJ!&)6u|zz zPd#w%W%J|?%^oQiZm3W!ulVN~waW_(c7XXZXt5Cysz;b_V-a6+zBD-m;;IF_5!xmj zsM944bkf4XOW#aC>ahv4hZ)Do1EQx5EXMTzd@#gTZ!dCkwHbOW$a?!?*Q4&8sYKN4@HqTQ;7fvoO{^&=LQiM7nhBL zgK00w7QtmV%u`tS=@{#EPUM5oChpSIN(J z#Q-z#Y!`KZ6x!e!Ryb4tJ-GcOAN1r&St zo|upjc0$;v>J5o~)dJs1bkL2X4NG}uvogFV_vC-AHQYLCJ@<2ShcVnhd^G^Sg3i;J-wQ_6TE{-TKHU_85838sD&XkH7eRpkL!t*~c}kxT?N+^Y!=j31TS#&|uK0R^uAa+pr0nXxgfVSNt4$43Ar?^-c?D zS_+9Ab&QTi7Wqf<$5Y*CTNB^eip}gG*(;ls`K@xs*C$>5Xs|SA@>+$g znFhKqM^j`#_zDpoYjj+=s&J~tNozCU=oTT)mI>xN9_sF+f3c_~i!gcQ4G`s`&qjoH zp2yUNQ_xOx+B>{yk$j1bZOOejmuOYN7~3}DicAD%(JQZ5K(P?p$2tD1t|)Jq*D0&sJ_(ndw)^2Q}Rx zU!fi?%{q8|BKXna2*U{CWFxei>@%eRN+Yk>u$4^RSp!VJN#04~~6fBUWv4YAlv0&XFV;vlh`!{>pm3)ki&17xX?A*pD zruJrwIu94q8=T@1BW=vS`@pylOmyl(VzR ze=(a{TR`(1Kk*#)#fPc`x?K1vh2!rtx3bxgeunvz=xnZTWgMR?qT@Js(MzJbm$eGu6lJyKtvU9Zlj1Z?C4r3EO?1|riP84GlVVpoL z_1)fC&}H6d)TGALf$pb=rm~j&$ycj{I{Uzvo#ZDn(I|+DR4g4{xHZL=lg^Hp*(9d= zL_3>#8W%;CpQAcE!(}qs(STM;aeT7S&$mBxc2@xi1PQho=rU;yf_C~QKgJkm%mKsK z)#I+cVKC`t4_q-nHt068++NXUo<97m>1+p0OehkQkdo)f%Zo#h&QH}K(D71@cJ0E5tQjY!F>Pwt9PRO0?+74Ikfl6ElN*z)6b@Yy2+80{xjG~Q z`}V=!Hr5MUTQPKAwoE#FIRwB6DZp(|LZS%?5G{E<+scC>XS|LsH&}ZzJWC$snDZ&a z6GHa0ZotOtmBie!(szP^hvw!+t7&&grDQ{ zOfUTLIu#-H>Y#Vu(k>WgUadH^*%W8;^mM}h5G2QY4yB##V(Pj|)%*GG=m$GXtDKe$ z7}SvSV?UIjKRa^kGUN9!U?>QEJu7Y?zy^{2T8>Xv6*UQ`_zMk55BwdR4i{Bor&5a! zjaq<>?UNJS>B|OG~}B0%qpi+!~`m z7G=MI3H{k6qvt&>t=NDGJ@(jV)oXR_AxEBvTu)OPS2Tytadi=(R%JXgnlE1idO)Ms+`v9UM@Jd1${#Q}R-vm&}}{ ztXW+E(Z6?PZ>N1%xKn7;AaYXkx`Q~B+o7#m7#st9VNtL+`%vrD_3hLqvI zAtcR*LN)2g@PkfIcP9uJb}vPr+4*b-7yha0rxS%P*(E1+>t?AF+r@o6RK4Y=Pv2HZ zmYnBdyC#S?$@3v~Q;w)_lM5kQ2}&&pf0G|OcB9OdL~}=+uC z_#?+P`z#9}_vNaCzbg1uEV2EkZniF- zdG#rKRdORDXh&0~5w2)2*9Yzyk?`40^5*DF1297~82iX%jV!lVk%7)vAyT+1Lmew9 z07bWt%?0SW#mlQVSPM;V<3(KhSI41VB?#ZLuixPN>KP5j{)NBcD=)fT4R(HB_pb>I zmgug*3ARA$*ksq&?F@0>^h9d@u@SWJU4kQ_Z?5t4diNuYPq;vu%l)q9QVBcHp>)~o zz>y8@Q-7zyfVxi08O^#jLB9?7ge!7^iLO@3J@cIbo8NmI5z2ug@6vP9&pRl-r*?){ zs=g{ZTn#F3CcAF4iMRN+{r^}1Bm#&4Eg(Rg0Rv#O{HfpZlW#hZa_ZL3oMf#a)yJ|} zJ4_^HXweZ`FTCMlqR)JB?;#2=)lzz}IcGJs_zRTo{Q>CHzqggu+r5)Tc5c*Qcv`1Y zE?o``BN8r?5nK5wXFc(2sPzj>4UU!iGD&^KSW(O3vy7-s zcHU#_m8HoBozevo%4i$^xORoAvHfDEv$GQNK`g;vuD@DsU%o$a09G$2&X=^zKoo$3 zBB~3B=Ai(YEggcfj@3wAM#Puz?+}YkL3lt<4K^&U+{G->1pk*$O00zrJ}#8GQPx3U zwT`aKzjej7yK9B+UMx6rA#6B2ps=CO;P=bt-TfS0V zHwbplnUgKK&?t>%-?EXubEC$Iw>%m_k@@?O))Ve%6pbw$g|HRLDSj zeNVKC{@y=DHq0%D* zl|{*yj~w7EcN|6KxEie;Ny0T+V_PyAjEDp1Aq6kn7XH1V%q5CEK^1UwSNj1e`L8dg zHcN3bHZsf0_f+F_d!#t9a4$QK99*MeVA9dP9K$UU!tFKy+Uov+K&5=%kr;k&W)Xwb zp3HcU9Qei?D4vJ9G|gs#mr_&H5;A&1-y)>cqR-7s;%4mJK$ykm_@50D>@c5TyefbL zI`Y(QQ@+euJOXi~BDiqPl@rVeZq^!O_~3Bo8*r?G1-NZ4#E?1hL^ofn zMA@I|*Uyce8AsXYSA~ha*aYVxFt&vJ3+~h6QtoAHmY+=gCvSn;qqk!Ad~n8?rhe2n za{wHE;2s>shYEroeu4)W4g~M`aXLsDaV?|=hI8`EM10%AI`{CoI;9nqR1D4&f~f$N zVhlo)i^K^Fu;vQnOtHq=m?^$L`uh<5==3B(T_b;Xv9+TchxiQa$P%`{KoDnzm~VuI z5zj)VCC~?uHvCfHea(jG;biJ<-4c#Vq_Sq#L{mEvY-*0XI+`NgQzqN&Uwv+>5nyuq z5b?g;+0gPULhu^_tZm>bwHD+VGaQ%vTQ2r)|H zfi85Y0F`(ScqXsWP?+@SNe-`M z?JG{yY!Cnh9pYL4p+c^ zgDj=A3U<%M41FTZQL0-_qc`L?x*o?B*iKw&C3yu=r=YNcn1daRbRP7+){TBiu^UKo zfUUa=^rlV(Nr`}o^;1>dpr6I>00(DeWPIBek-ymtS<*-<{;^Xc?d<}kCi@hWSGhlMu=>XxqTGQ&iw?HVw6KAd=6tB32V zwxQa+Cgo_kyo}39D^u z0z;IM%PqXv`*`^U1z3+4TM}||2!i%#u$vu&!TujP4q2D^oh)$8dVk`Rvyo3{V4gQ8 z_wJ{O$IxPQU>mrx^Ya+s!aQ)W_tVLeLK4xf?TVBCwKoP^MT>nUC{t)+(y~oMGj{jl zbK+-aCZ!+!o}HRF8p}%!OC)*2OO4FU0uexd{9^jN>l4b}EQwqziM*(K=yT!N|U+{AhhI5c3i1Z0yK3X6;KYjV+1TwTu&Q8sp8Old_nj5(Z7; z-Fe-CLF-(NvgPblH+(byFaOTC@M4zly4trt;sH@v572toXh9a|VTcF<5Fw>7;@m=f zR-i-*#}ZEBgs_~h2wq_Pr&+;REpMVe;+S;`($uu4{UiZkYn;0XD^x(yCrE%Oo&%uk z!^;61NMd2Zu@@uoF7TowM7u^Z zb;@jE&*+WHPx}_7GujCgXYM+((IgC<}dO0R}0ClR%K%{dF%+0``olY$+wZ} zT-jxA{lYg&jXbCU;4~eIk?18&uWoyP93e&v#gs;hpO#XyTFj>c6BAPs8hV$4Iao~h zwR;94A|OD-CyugbV2Lk*9?C>}%HWv9pr@W^Pg{TMu%=+>H|4rDlSIO354A9kt9H)eb2|JaCTC{0MIV5dK$2UJ#S_lCC#Hpj+ z7$65AykaOL;RDe>9kx1pxkUvBLutpw?zr*tmc`WVz4el>cLCVHwJnqr$-LCmD4P{w zf=HQ3#V!DSeSITq>*Rt!`kAJ--|*c}yDU%v15dmci19ukQ~gg)79FfCKa6c{aWnMV zRcv;r*R>;~>I6&o_Tgb(uUMxMzFkr6KflkjB){+_Iu3wq9iQiUYIWfLY? zB_Scy^NWjn1#!ZXdftp`Kh;}OpnkxzaqiTvxIg!D2QIWfX0C*+Z78w#|*4dOSZ&oGeC(|uIovU?OxZynzEh9yfQ)JbNt zAbYRF8YkE7D^P(AFKVsP z%)X}kY9q&9_j5=ET+#@Ff#|4H=h`bPgZnr9G^yM*ZN35ZNMt7S2qPnG6g;eWgM-*7 z`q4qJJ`dI{x=;Ne|1?Xg5sH2|JTZE3JM{TggREO;42>NvR^ zt}=&{$a{UkhcNQ65^>cqM4uCj`X5*Dx!0o2B-$UlA_ch*t%*;@jl2%gmE#T&1z!rh>? ztb18X#zvW0*j+URlgA}JrvEe;B6>O=uMzbn%2$=ugl~bkR62o2U8s>N(ZfL z^Y54O%P||&_Akm$kkZhhxjiJg8{OhGJN5)%kE?s^wS^B%9C(s$Y(Q-vLnxp?$ci~= zkvCS>fd+Qdu*7rF;+Ek2*?Nq^_1SbV(GR2+iP1I!)seL6(g&bW0$RgpzCar7(*> zbho0S!qm<#>wf>B=-<d*oNZBoGdO3Yq!I&! zvBf4_DMu6u`{`WRw6qEwrTM4#&!79V3d)ZTZG%SciKPR$_-JK>(>0>!oZ)B=d9Jq? zc(YLzz?WxkTmOnRTt251l;;sk6=NT})~bwHeO^jfr&UvufOd8+i%23c1%*oli)WaBj12bPSQYG%$+AL@K3X`YX0*MOS zO|lP<_`j*{r2IJa%ATowNFG9fiHT`5 z&@0%Ry4Fzv_h4BA zp-_VzKR4Im{wQnft!=AWR9-xyWLG) zYze=+A`5@)a<}mlqF2w6%StOE1Mk=(9U|5F7=Y+eV){7;y};juACT;mFK|QGPu8rP zsERcj@qIzUuiL`*jm-sx4N27)H`2$a=lvi{WyhBKDBEB{gBWu<)<1y<+t9xK&c_6q zJFlJ`E!K8){pW{HNr%O?LN!rtBl8A%Bwj7B`jPHHf+!aH`_D<{#>GJnj6~$4CDdtw zj-b>Zhsz@0C{gm*SaHr#K3P>WOXCt850vH_@dzhOL%=r=R+B#R1G)ZqxXKr>A?kRh z*c^rpqjr}Q$CU5)GkSNitlI-_5Q_T9;KB}qSC@t4{GPOE>dGhxWAyzq8PRl$Ta2&b z#u}1jG_xP_=1$8(hOrtnCdMC6kSX*clyoxR+Ypj97fP$krBqcRW@pt_a2^3~so zx*A^a@XAB5W@WOryBl<#WtXj|e#$S&vkzY>(6LnzE2f~pbSLLkSYloS=O-S7iui@j z%$e+$PJ3-_?dUh9aHue_Xg&Wm_g0JfOOyf|zKg zIAF~kyatHSs~2ieu5bX4Es20D)C|3K@mG#c`!dN`=ZuUufK<>c@`!b-<^$^d`Es*0 zcydw+e5|0Pq6!|y!@^2D_It)AlIM*08m96sJLWkGk|S(j{RY=-b8`Fqi4rwdIU(I% z)W(4Q*Kb6XUm3CUk|^G4=u-gz;0lq34= zFe3&BY`}gz7WhT8rWw1p=4lS+)1`vL!k_~B#?7ctMli65{q{{^^O5t>Kfj(hQCf64 zpfG5%qmS;No$<8R#4ZJ^@AMV5ge*7Q8rpx-6zj^dDNYmRYNchBULIv!b(K)c&fpBgTf*f7O&&s z@ERQ*m9|CxbdONwn<~xj!ihZg>?h0pk>k#8I5SdKG*z9YVA9byzUk#N4g}!(R}W7J zR4r=kuB#9eDEP7Sx|k9m^Y0ntyCb%gZATkEoq5E-p=fwBaFf zV!`t&CuIDV@YTWPn8kFsa4_|9MDp!N!vCc|v=R!%H)Pf@k6qANg@53gK3%4%FtQ)| z^Y9Lu!_y#^X_m6rSDEP$S}s9hx=~=AC5>4IKV3&=Y7M4?;9Jl^{47eR%5a&{A6aQl zM-~R8dX*GQv#*`h2E<7mH)Qa7Y~R|i`j}D}9|YfsAgJ7wsDo+Q^;uXK$Gts-*&;uV z97VL6A9rq^&-X2PB(uj1|k77a>A?E_qUv!texXyco~`Snl;wkxq)6Q>ilmEyL+Dn zw;un!X0};0X0z{{uOEg;Qp)@khLMx=f(7oJxvEPVBnhd~c*c2!_zof#`+{s;8WwWP z%7|h95lmadB!_6^0n|IFJ;64>_AQIcdK)AFtWQkgkocEgMomF_e^))T_ArqdPl4M^ySKf;Mx;^dG3wk%fY~Wq8*P z*x@64h4HlO!c?~=By>;^9qYKbr76L$a>RIZ*&y8_bf%<8x?uyFUisbch14xd4A_X9 z%--w5XT-Yfjb=j`wNl8@%r%`=8wW;!7^mlIGSQrxN@hmnbDiLPl378Indna%*gW!> zPM^MIv4OrBHr4>@LJfjEA!TCB?^B=wHIKJ|`}x>^2h1HF0+DdlVZ2pKd$$r4iIkc- z0bx;;F7v6mP1Hy_Cy~>oIIk_j*#Z&iXEH!Q9dyK3iOYlizLuG&sUKVy?we|IAmZ7_ryshxNYm=lw|NMw5uA z!?d6_6#i^UdHkcGUm`O*yH1~-mXTy3xrmOnK<76pW+c2lPYeRFt*b(r2hpJrZ{~hz zPC&>2b$0XYWSU#dJjC+KiiN;-qA8<0#*MS0)sIRs8=Ft3FMB$ubU{fHMrLXF8N&tP z)$DwHXffQdIlhaL4-a0)T!c@)*o*r(N!TK4Z~>9=#!7I_Z8!`x6_s`uCPog3)z9Ed zX+E^LIN7*^^OUTF!{D;^$ulKb3>Oqk z8FEI=xS=Thh9#W*j_HVfYLcZ0UR0NeU@=*7vAj7Nb#m$i6VF=!$`o`=ls>rrms?+$ zyt@TDtNBMkWhctNf7ApqFSo+fGh4C$t%Z-8|JFi9RaIWe5ssH(=Rk@lR9Tp0L!(As zULH2zinR}?p3X*JV#%Aw0%w%n7`w^5E;cp}B`r^e-p_q`W#>s*f#|ChR}ZN;l)^(xw-l@0IL_h$R0i%A%#^J|oet^>_I*B;d$iJ1+NhrUWJYw^UlyjbZz- z&$Rh=GV{!36g3?pAj0h!A|lxDJ&~U;Dos1WoWb@y$JE6O2Wk%~O=okcY!0cFA?))T zG$rfgB#?t7rQ@~!qgqtYfL?*1EMCssR{B%^@Ln~#GqWtk?lr`Zl9a1LOKk9uVeSfhX6FHtnoQtBPR8r0sfT`=_-w$qsLw^x7dIGq>#Hw2Kx5tus1myz8>V2H38D5 z9BXg(=X&gd?Xk^R<=TcDgDdI5me1Cs2&D|8(o(9pPMmkLv!&!%aGt%?G*vB7JH7*^XiIBzgf;D1{!(!63=Y@4mBe z#gzRJXKa3iPw2~U@9Mg<3HJyteT)ft@(2v^IyuHmX$=!eRYkw*5@wz``X^udpNR0{ z?Va{3d+2GI4hm?+?x3ptJuYEy2s>5o&J=!p;Rm|F3)Ws+4%R0KUhfbzGq=3Hh|@md z!2&{lgn|#S)aXE^R;G3+daiadaWanQ*?5ed!vbT&Ogt)r6% zB!qS>D_f^k?|x>wsv& zPE&h)3VvK$o#6U+njDb$01@Ukzq^rRZ*<@c__V0kv)soJu4i6EEFL3m{3Z%B%j>Lf9Xn`QX?)T5J1Fzc9ChDFZ@OA^NBKTidseLC}R*Mb)KPRfIWU^oN@r*uKi>aR*uW zij*9p35_iXM`!}ZC%c0%^gso#fPmEWrL>7S69c1@s{CwCzCM10CNpmT`OWtJStdl! zz#WIh5s!nJt7v6pxDwt}E1X(nnhdol5Dpip2{T(5`vN}jD%_BH*L?6W*@04r3b~}OgfT~ zgtNz!6M8+PfULr34{O(RR6T|oGOSiwbaeE#;x|_AC0qZQqb{+r1-xBsqB!kAWS& z5oJ*1AzSO2RCVq+F6#}gm}kC&HCbzpK4ycV=foV==qD!#>nQZBV^W50u$X&$6c}dGGc3(FQR1!fxWil zwH{lgM;XGS!!Q=wP@AjZ&~mHl@~aq-up3LhIwxc>eEkGV(K z3`UTwmb_|8V#rMg7q(du`6qe^ipXen4EKjPw#J6Q_gZsgg(~CAryxzb$W`qogyPVj zG^+ET9lU%TJl7q(1+V_SDV#Bme>uqVQI{h9gT$GT@)Jl9hwWYiz4dce*j|_#Z}fee z-=Hv)0y+9=5&pS}8Q~;|F9jW7piUf>9s0aY`;Zn=k}m{8-!&g8fv3mVs}6ri*5~0` zSBJ37Ak5d2?hkLDr|WRp#ZyNwub`qqDFsCZlkXkX4W}k7njX1K zfCJyj`_;koRaTZgx1|9YX8~Nz&H^q}0dUGlx{OPh>98o-4!&QT}~35(giFYWa*PB!T=N ze4xVK#Ka3spkziY4Ac`*LIGuIav_CV!otFX50j**sHi))E%BL!(!K@+`~pO(s)i8* zlFaUiR@_QF-&5Cuu}=B)SoGZDw7<(re&zta$WG^yZ$(7i2%4D{Ux`cIa2bm|8>3N3 z1oEG2NN|+qIYN6vK>t6Q-oh=a?|c8=Gjw-~v`DwKlysMLx0IB04APwnC@BaEA|;J< zcPc2|NO!~Uyg$$L{Rif{=A5(FUh%r`MMsE*d&ih)Y*M|nT@4fS8AD1`k1KjF5O6-b zY47M5BF=I|2&kwZTX=a5V8YIs+0F7)*p~V*L!L2_s+p9UkjALgK`hDj`{T?l)f(|i z9yDzWl9JNo5AV<8Q-f@l9`UfokY6=B zBF;KZ*~aA)b(gsE|5s&d&7W@w*xK513y8cOj(=A8d1vg8R!BsTJLC4M#Viw{xdapx zEMED>o{K;uuZ}buY4*(|ESS)58-&Cj(StuUzK*Nr2CgD|V-9P~w&F6J#~zc(@3YX~ ze50g?1L_#fd+2j{4B)_N+7AcltB;sh?poQ|k!{))N5v)=B;E7bh>$*uIT=YhIi+lV{ zNsY%cTIjQ=%-8^q4WhD^&MzxkDkC>X7grX8Z!lfd(a&&(=V12E&dW2_$F;?wkn@<) z-;57g9e)MyX7qDH)i9>st$!-`O1O?WE;J-g##D8Dc+(n=_(+5 z;Un6Bt|u85(Zh6G{%|G1N0E|pxmD9R?}Cq>Yo@;>wBOL+tFN9w_f8>y`b&O-c6D)> zvDE#YJ2l6)r^wpcn(HSsLqkeSOO%$jCJOY9tJa)%_|O)}E<5_`jNsY-LI6VHH8SY? z@NNQZ+7{I#xo)Z4Ky?e$w7u79#rsfiz?LrPU_GwGRqHjWsG{gRn=}#@ZG;XW})}MeK zZPMrcwi&{l*6fh!4Jp(21nc2U;(3gLSpAp=gWk!hO(jInE%C9HA+j{A^DQmD6g zVCi(KhXFW@GBI}LRq>)dd+F=+yHtIQPA=c_wO8HWL_Rohlz}%>!i?VlWFXljOUap) z{TGVzWtot9T4xb&TJ2?B@CncUyz|>=>(@X0Ynnomi0M-(qu_^;0j`bnLPBD8G!Z#^ zonl2_*hhQK9?k-Pcuq;t6SluuzC8kf2o{RS0Fvm`uL0y6>N77IQLMhOblVZy@riKm z->#&G2SYDhTc;vw?o^s?0p(zSKfkpcFOf#9?S6zw9&2>Hp@!$;9#0fGBRT_!?{%<1MO}q z(4aH$DoEy2VU%A@kx|AtIyzg_PK14$lOsfUz5Z zP^(GbY1o&67cOe7DXA+2r8+Q}TRoC_Cngf0hq)}x{Ie!pT1Tf{-2e z6Dmvw%Y8IG-F?~gaLOWnn}=c`ha?S?pc3H1FKmYK$fN+73EIeZf}5M}K>{(qsmP!6 zFNn#kd4T=Sw+8|kLK1E*YHpY{|eOkN3{>d~X#*TE-`*oQ_WpJ3%TGh=Z)Lt!47_RvVwV(J_Z!O@<4ioTJNozcJiIwYZmMcGes zAs+}C40kX!Os&J1I7#h#z1Z1ZtUTM}uoB6HGZmRfp0%Y>CF;j4JRy_(WdPb;jdDXh z;dCxHM83&h13w~C$MFU4uQrjHi3kQTm~@w)w?s8RpeR0mcs@vj!I-3?K7_1w49{D1 z_4_#^F0`B#vVV{9&57m(^`pdz0ZPyLeQA0BM{&F3>aq2-^Ta)P(t>Ly)HqyQ2fP2u zNw2uW8s^rpByRSP_T~@=4|3#zUG^yVglw)Sur^&}Al5AzETN_S>~bYm4KlWUPE5Ml z?&bG(zZl8qdKaf@;c@OCg5q&^Ho<3*^}5JB4n$kFS>`*lUV zEg5vXW^sV!X4}=b#ctY6-ZgNIn>L_Noc{h(Ss9M1s%pTVhLNayQhHbA8FFVQ12k2) zG00jyMHk*as{gGUUK>GJ_@uXU^|-CsH)^)VMBmw~7A8QkVxbZ(|49IswE_D_-9?0g zHXWl_N_vaXQe@OID=lWz<+wQ$y&OKNmc^pF=&d7etkan?7TfwsIGH^x+f9iE2BUb6 z))`70N_et>;n%xC0i5*J@_ub=zSJgDlW~&s^J5)7ZOvRgEdH@kuy@zmh4S<|C)n_R zNy@~*xz`1^fIx^mUT$99=Cf13m|W*xvexFrlnMI!$6lu`R2{3uf#j5#o%iDuI&N+d z_bd5#*$`%XIMctVU{Q14SwBYGx9 ze{<~fFI>4P^p2)G(-vcPRi9EahPvPnb zs_^$~b(VwVIWRpY@^lm|o>yCSy2tIAu$@qQR$^KgG19X=$LNoyH2oGRb-kj8N)Wz{ ze79RnLzo&~ekfZcwY%QgHSL;_G)9E4lG$;<&3jtR3B2*>0pk5b61n@tzt}K^6~1CL zwx-@Kip8vg+wm-JzkO<>k(&KIdx`{FE5tcZDRam+OIP@6tOD&dlqBi4&80F ztSpmqa;Q-OKRjtZk3cf4g`}Yu8j@vHgD=#DqvE2^Lu81h4PH_I`Rgz~qY<&oj_E+q zzURJt$~XthFuWoKdFCEeaPUJ%D|>WgZ)R?;{m&m%HMK-xq@~vn8$-UZKi>$ihYiWh!uF;{#O`T72g6jR69PvLsE0 zY6x7&Icu(i^(`I7@iC?_VTN=Fb6JAIn`D!U3fxFnKlh0CWeaGnF9<9*?QnAsyFLyG zn3+XfmxvX9ej>@3Y@X}T`Xl_!iMTvp@zbYypZdbyvLkI-yb4m!i~i;H;U<bF%-uu#NY8A(7wzJYMv~)OV9SWxn1nrV=`~ISRr5uP0z_bB3CLt;Q7b|tUr(g zZeD>{GA=Z3!PcIm2Hz{$=9}Vd*9Ac!X-%eb3zHaJrj`hZdWuJ5`Nj=Kp(x@hp!ccz zbCwCk*;mDirsj-Hed&ioF)uu|Wa9D{fi|#z162exPeXMGrJ1+nX~`|UCE>I(B8>QL zCYc&Zt6u%%iC+8ZDdH}UQ7C4y3W7^jqHUUb>5oB(AZ|)?YzU?sdK6dMIB86 z#*If~&0PMacpdQVYwP}i&umA_Ev?MPP_T%?r4>N@ChOYIA?ak`^SQSKvC2F6 zip0$HEaviPBBI|DLD=&*8E1WrLMfd%ErGH7o1;AZ+@NR3sgmE5 zs&*6Ua||jJnTf4n#vnxDdOcduDC7w&VkiGBMCuAOQF$=y^4tG0$p{0d@yE0)}|Zh75`z-yi!YATL~vO&^vz5O3S*SzfGL-MQSc zzfb26+uhrTwnyaG)L@!qpMCkt8qU)R-o&L$BJ~qyczs?(1}`p$Tc7t1e4=>8;umo3 z_H=*Y)mu5DLH0LroUTrDKBknFbU2MGWj$`{RjtSLtu z7tLSIVn^#le@f9p1&@(IRdt8QVH5-2b9yw)rIn6|n(1dyT^&U>KM#3+gmTKo)LvT# z_%sp3pFJ6~*Abc%X*=w~lq>pO`AT?2b~-KJ?#jFcg7+N;(9qrO6Gds;qvNwkxR$&c zuBe!LN|V3oy@1efEzXcI{x~TfY1s0cqziEv0v|5(xVZ-lUkfl`_%liriXl?@p1vQB zgc=$#Pw!GQ3>PG&m00%|nnKH4Zcz-43}>dEHeSmAj<-h%5+}Jd0EoLgB&hum|8P9| zfF|a`w!c`~nI3%hsvZdpsmCp~|K=K>6l976ke-78ZK(=Ll2_6&EXYUVTH;~C*N%cn zk=9o64+*H?1wxy(0lo&}hDN318hV(iJSc=;(M^l7il<=uv+b9R$w1K6zJ@`qjA#OI ziGmJvS~xgA$E|E>iJpIqm4=BSdRQxhg9jS`P3?wV*LvbS5Mr?!SES!lq%ko zYt~FsTLTk}Z5oN3e|vr~1c;4-1=@cu1!LETy#MD?(ch)6Y*6 z%k%urDF^@FCn`@6b%NNI#@J4moLpl@w$OaGjMB>G5%$rGcnpfsvIe7GU!(^gg(b8vewWjjHem^jtw?t}WpsDi{gM5ehNWoO*g@uC2p zxu<>r4wG&_9NfMk0hud(lIp=eo-xs1Wlv9WEo{BQ{~i>5GyYLivwEKWmzlM%l_@-y zQ4#Z4MC6O9b=K+eI@|3|>ph!p`iA)!w`bH()Kat`VlWCvWiXG%ikB+f> zC5~F~QYJa_(h7%IhY&Ka^WsibiUtUYdb`FGuB-~p6?1dF3k{i4VzHhpA)wnLBfUZg z=vrh5QDLY_Ks)$Q$lGq>ny3;(S~o6O8@DiyvYTy8TbBoD0wL9D&^1O0YiSUr_qVOm z|8YeJ5J^S|`7-QN0I{8(@`p^&Mj>9m7{}Gh2sE%-7h@ZaV5ng2pv6TTp+g;tZN(Iq znK`yYl$V4>g}6voxcHgf;2N9NLrb7dIUq;N<@FB;?U8A)+F%2hn%{XXEyNT>)-H87 zRJc^sIaV$~NDK@o*x*|+E+ZpTwJI;c&oC#SKjcKp4cltI+hph_mK~5_zIK-dS#u|GyRqtI)a&b^c$H#zD>4xdGiWSiT5W@~( zp%>dK4n&|W_mfbfSPFugUPj0wO%ki%u+F-G&Ca`d@&xPs!x>(jm1h91y!@tuijtJJ zHkSDPrBzybx^%uqfU^GZbg8KD^X{!J^81^IOB(XW)G}?(@}_dUh9#I|hA$CS9V&e! z?oLiLOJ`&7oHJD`%l4tor%bxI@3bPwKT}~);)G7=hr=VL7nvOh1%%*lEm#5KQFAp75uOEeA1MFIG7VDxau?BT#wM9uBMg|FrM*hA;{FM8r* z3tyKwq!7~<%J$m{0WnirXzS+OoD-CddeGwU{fX+no0Ry@6~buJX_FT-X%Tt0hTIz& zITukh@Bd1X+VEqkhMr!GiWRT)3NRKBJ;xobsHljJj+SNTczuk^Cp-%R-7$4|c$^3Z zmDitu3ai)NG>`b<6}wVQL|cGCdF95La)v?WZ~#qL&<{u6iGm=4oHuw& zt#@^38Ce<7y2RyqiO(2XjIPGtvJ@j3g9~sG=6Y#$)Vwm4aY%xTB+}M#+@Dy?sZzSx|IiBPBD}o@@CD!S@lI zBOcw~zs67gk(jmy#mCp!Fw4Ty)@_ztw4b<4lhLuT;1&y@*{0Wyi&n)gB+GttHgH|` ztl&x1%121$hOK0&tQGDg6VgON=oo#lki=J$ zWISQ^JAgn(UIOELTHV?NZtlvM-<`1#Q5+%0^nTUvV6GwFXs<3QJ^jK2i~8=$9_16s zWwhRs9SXR=%6$-=aq8W2D({8iDr#ysW{p}Fq?#I=FD2~HLkB+m9}6HY zXUi+|32-`jQBh^{V7R{OkK5ZrLJp-bEV8BTcEths6zaq)JTaXXz5CzCV35!!JyuiG zAnLr9l3(!Ur$V8RC#cK?IRJ2M@Iv0*R!bMLN2gaLV9a6qa_OD}6=Y`iXSrWA0ou9i z#9d2SOD= zjwEJ7gGdk=a*}sP<#bH=6^f^~x7CuW1g^Jt(%0Y1L5?`$4&`Ai&vRhE?kjO7l}Vea zKFBZjvHz;|hFI&2xK}F5QvS{u|CFjM_!((6A7Pb=pi;hx<1WeXmY}j5<{dax#&}W8 zjUaT#=YjzlczdcOg1G+hlBcdVGH2QM6nn&~zc~{5C$(yPe7(nwfT5vba(4Dz>Vvh6 znfZTNeLx-NoCa|1UM;HgcXf^09Bpbqat&yX>}li;IGTM9-80gqFIUzs(W^ZixAt-+ zUq3LCrVG%$@6$BYecL?eq=rlk5Eo4^59F`574noX`@89)6j9|2&Rr}oa@|UU{Qq{; zwnbxz5RAdE5yV3$Ks3}!!Qv}(#P4V z_5Q^ua#oltE5u@2m$qn2CV+O=n&C0x02h7_po~=;5@UYVL9OeJ&7OY|7eBiC%3A`` zeUf+KgUiU^OSHMhH?fYMcRqTV(hN^fVe-9OL051yiAzd8?bN7bkc~rfd8+$N$vuUj zJT^pvxML(g9>Yi7ua}$uXV~2;5%aqHTBg>KuiaypX_C&g_hCXLPoBllB`bB1_9QDM zF`gSPhKb(mwaMgZpo^j8Y8ZG)sw1)o*q&!j;7`p{Dp zibu_3B3Wus`ljw&VOBrGB~C|2AeV~K&*InBqjkzIxaeE1dQ^=Y`N+TNwBB}?7vSf= zy+m<-W}lBMsVQ)(c!bWI^oanGNXF7&+#b8RHic>0O1+#AszWdP%0T>|<6zP&l@K*( zMP7I=HaNWIgte{OmGkiPV>sYG6m5Pd!#tyleDy#eC9%HD?sfxdfS@d!6odw^1oo-uN zQKT_bs03{W(6p0FI>88te|^myn93(*3~=F?kuW!O+9OVxw&?lz$}1eP?MLz#A6cCA z6O!I#$A2F&st>-PMuL{3o_5ZMe@dkKujL@2gyO;t>fOyng@wEO4!IYthc{l5r@XQM z#wDw)EiAuGc+}rqlh|^PA+{4VC@Nac6&4fYPW)fj=>Cw-!j!8hyN*oYFG}5mcP+HRp!3&cYZaY2q~_o&KfU$LNT%23F_O45n}hIl|RF?rmI z1Qza2F%^BK8G;=ADAjYH_wMLDpD{L*eXEr4KE~Md7g@!XI`mope7Hy)<*BoT+{v&b zm`E#weL5UM)SLdf*44lpDEgyb4j9zRpAW2!G4o$A^a}RA&Kjm>2*GT&!&QZG!Nm)d@k|1U<}HnSd91F*R%Ff=l< za#d}oZ)74JrxmwiN%YS#w*HZ1++O@};OTjMb<^L=F8D2sU|MlX1C5sc zuLe4Pi8gmlzyrtt&Q_Gr}e{KcLy@jMK{QCVK^G=*8s7$z{(aLD4#I&p%ywU$g%JhKY zE&u}o7gw#^BlrnBtO#z5Brtk*-gdBK}6qhi%iV+VYiXknOS$_3N6AV$XYQ+x8 zQieamPS2WqR)+XfRtmSASi7@-v8IvOFh~`LNHclT{HpVU0NRMmbq=a*;iNB<`OKm? z;RY;yO3DavDWnEzI!}0qz(C=;9lE5b|8fa>>>V;~Z)tE;D1we8)m?I6yc1G#vKgU~ zlbdzzEK>}9ccNp2r~ z^7X|c9ppLTNJ;t8H^AGLlmf~GaCtM+QjuS^a4b=_kLU`~$GfaB-m+jKB;WuaLxYqW zBHm_jQ=#q1JKcvBV=#MkZ)h0rDhm%t2bcR4pDGF-$D%;f9iRJCVL!80xwbb6jmK0Y z==NV&rMx0wihqR0n%8%C(;l;>*Pd6p2)ECMlTp6IH25mA_UMfJ^A16|wgbYQ6ivXEe6>Zz=3d5aiLm?FlBiH&3K6RfiR ztMV9e&*RxjECLEuiwOV>@lh5|JY*8~Msvv{Qua9gTOhADT{O7?@<+iTXzgL-q#~yW z%PxjS#_O)DZ34E&TF2aI>(nCC|ovSl)?Hhg&yn#|70 zZW-tt|JnZ?iR|TW>fg)T6H(@Jc2u}&J*QJMb2MXN+0)b~1huv2JgpT8KYubPJhA-s zu(@VUOJ|DoE@sX9lk&uzIwla?gXW;bNIe@Hx{#0U9g(4tQ41Z?Z6W|LYArh`92Yd* zpin;#2y;GRozVVaU&7H-)}u7_o|KkL6^{pg*!Z}Q!)gCdz4i-XtUu%w zS}FVre2jF$EU*vyB*gAKg_dts-V)(=GM>ZnEfJh$!3OB$Z&g?=G~}gTIR5R0&V$^= zM@8&W_6`RR+R3!=M2UO!i~adk1?QjQnf;OD4F5g}>iidUQ+OBw}lD!~KF-8JX zIZcCWT3#oqO4iL*xw#+1_jbv*UqwTlw|VQ8d0Xh&ne)(4nU(V@K6Pt`A|ewTctV(} zoNEIoZE_5>IC%NoFH^t%M@1CGZ=W9&Gq#ON{DgXd*WhK%XUQ?N&8r3g>;q_%-IV5+ z+c5;{F6v{U)0wu0OsszB(a z&G<)R_5oFx;VnS);<39>Eln>`<(ws21q6|JL33^4hRe0oMAwUj=V|ZXF|a7&HKZLg z{r^{X7V9A&45;mcxP$~=jIqrI$r7p9i4^uUVw<~%-JhG@#+x-8SEX@T9wQ;NlH9c1 z@+fRGE=Kz``;jeyn}fG6Cq0^q)63^g`Sxg)KV^6T3^=X($X85e9qDy$$JSy@V53A@ zCNsfYN@}0C;y>bhQJs6YYghW=e0R5s5XM9fS|y|dUxdPeu<-1Fs(P1B`HgE=7_D0A z5#^XH&QW9if0&l0%>gUSh z8DPkEKVf|G86P{$P1L0RIqowyIt~UC6uZ(i+@7b9si1br9g=Fz?aFHG?S>$Yd;Myj zC1~b+N>^!=CXC`&0MUVoc#)IwW6O~5Z1L07_wV1%vbRf!ciy96-9JcTKn;LPVB9dc z`VT;&pEiM$~kkM9#s1)R}s54?c(fOGTxaIKV?nM7`IkO2>@lnram_Vd{M!qAOf zqT5Cv?0AAh|1_m8G8(^|W_tNlX6te0s>>*TXu+h?3r)kc-sE3$e?B;VDPv~j5~Zl- zDS{!w=rnY~{u?jOf-QPcAn6npYT+YZ*|FY)6yRHz-X2ZSjoJ6?Xc>(X2#vXGAb}g~ zw!c3P4uaF~NHo|Ee*px9=21%o4IPeoh<#VZ#GKH{6ZKmI2D6z%Bb;tGBii3hf(w-Z zZ`9|Kk`I6W7=8{=*KcCtZTx+9>mv-3v=BOeHoJ~8HoHv9gd#uF04e!nO3TUGA{Dy? zDu=bcWx1;A6jzaXmEmtZ&+9^Z$qMom{3bp#(8qWT4!@rtIj{W~7svmMLGsU9Z7r3G zsv3_l3!qiiFkZcw5pA!{JAbL53nWB z48{bPTb+3IK1ZJ{!BpiU8d$v7`5U};kJ(Jeb{GLikm>3111-4E=@ySVwS=XOZ^Abf zzTSk#OSj=J1A{Rcxn}FX%Ba7a`nOfz^JH;y+1RX4O-*SSv%7fG%Mdjhehj*3P zfe#FPOHIw}SUyL^rE$;zZF@(&trhKaE2PwBX>q&!H5DH}LVLx(Ro67g3Q>KkuU9w= zDK0Exd9<9FnfV;hj)2=uyk~%Rs)id3ywq$YV#Jz;C)E};S^0Rc1z_a=aqI)eP4|eL zr$|mNzRVmPo3~ddN>tuUl6>Le;U&Zs7sgj2sFJ^4itu+8HI%pJa&ZQK9e|a_##(C4rcg3ExB_ysr$U>6|la1r_YbpDMF2-a?~`s?|OF6xAFd0nqAoCeeh}f zXgw{+dr6LftD-js|1}G_Bk?KKUBW>HO9Cps5A)BC3}du4?X1wi7?zM&x<15G$k@VXIMFhv1dr%W4mWND~v zEtP6&x|or8&)mP1<@_K{{j|18h63y%{a6Y?a9gDFe9@Pn*58r+_Jt)SDaXf3TH2GY z4f8|8BfP@T^2q@U?Dlq5`M)sJ1(R$>#>cj|-$5Icg@V<)G=J3B_!Hk%W(v;9p6Ed@a_qB%hRrFm2=Sqlb0ukdUzh8(BePJVH4 znzeLDnn_5Nf4n}n27G7x!b^gFQXs;%W0~Mn zvJbV$=DJT1LV%p2r=?O(O}B&+FW^uT$F@2lUNw?3QH;;ds&ik;4xa`l;gbI7pjNLY z?sHL*mZ_?IEFq&i*xPSu+)Txs-VYbpog`aJ{)Ye}t_@}2nRWI?7 z{{a?Bfx==7wo=vWS>Mwwg5c{xvxdMO0Y_!!fu&7Pc{Uo8e|b$mLssV4v1K5mDw(J+ z37FemV>{s#V??;J=%~`jpOd)W-=l_7wpjC1t}q}_knODytGJj0lkH!KXuzxCDGQIw z`ZLck3F8*|(Kd2{CZyEyLf-rRk%BB?j}PC!yHI}k&^J7I6OuT3KX_2yc8_^G^S}7g zHC25nKs|}A*@d?>-ic;>e_KAJ60f0|Gx#(&pzUaqOft7?W{W#F_~=RS?V=tzWlmvU zp2m3gYgV9P0tk!Ni(`sY2<2XKCz+Q`W@e;vA_y!1KaS+zc2vq8HWFEOip8l@Og@iN zeP`Tf6r;xdJgkt613 zPlH9vToOa>)J7lhd@*+a$U7dSaQBVJA;Rw8(>_8E(>JXd|1D8e1g(BF_nnnfG8BpY zYlaJ2jp_XF#7{M0E{B5P8o~IBIA#I48LHId$f)IG#443QE>%602ATao_92Ju(NP` z*S{^hLH0W>uwvFcuaGu!po%^wjhmMum|I%rb(g&&6LECat3_x-xl|=6!IC6LByzFl zy3hjl(uQD&x z$fA1R9UeUDbH3Iea_&l$^0+jb*lkCvy)Unr+d+U4pp8@=DewOL#AU9z(=OLcH}B14 zt&)K$DUIpYQg*8RtFm%hE;f>a;~hNv(BQ5IJq)&IZN&-RVy$GZpOL@CIL~Gme!+f6 zZ2F4@S{W8*YL*mEB04I!(Qx9KcE61AOp2HM(1K_C-S_;wA2H`vy~2U}V)IWMr@iM} z_x}6Pn@#@rp+A47Crs_Y^;_VySe@nwdI!nvA*L~yygJU;YYi6=AZBOlm&PUj@OJTT zpYQs*cNOHlpO}~sL&n`RDA>K@S@5D%m!3wjGArBOuaNDuFy2MyDlRY`OWNsEBRxprdLojfJ zRMc);np-A|s`qUBi$@0r;@qmGcuKL8J{M7DRlIsRRrh%Fa=Y4-=Afunw+Hr6z!|r= zp0Ow49gK3Ww-jj@B1jFoRu@J#PU|;ex%b=Z*myY10Gj!=j(+t>haR|vpB89KzrDXO zJNy=GESxp{Yg)tf`zvrB1I+Yr5SRw6!2bThP+{^GOQtTPUinIp_I+*a$&i}*vil!J z=T6l|6Fsl9Y2GL~|Gr{ynR7k&Ki^yivJ*c=#naE4ksBnAD-X zrBD|2Gh81VMIf0L%JJrQWiuTrZ}478&^sf_lYraW^hWh+g`ABe)FzoTJ~Akx?%i_EHc55b3h_=}y!b&2;UHP6DhZ zQF;U7rC!u{!yaXJaq@SmTaR@UHo{&F#wLHH>?BCw+2^eyAAVZ5&)hp|veFUm@uQai zPUhRN`VYSS);;L@B>L9&2n!HC8}+#+JrImsSfKuHe4kR8OjpI5>T{93niafB%<`3D zNM-o2d-M0@-GRiW#i&P$w$|6L1blgvN=iyP0#9di(J{^RP$kpmSTEUH-!g}2XkeWO zNdyIJu*}@GAUez%N2TCD2^QJ~|?v*#8yhLztrN@@sI+ed@xOaP7BmIj+hz$KMYSg6#y zQzb=9JE7s6FS&W&gXbJ~Kf(}03`qjQ$G=0J{&ROqLGrqVuy7y7g*XM!yyDA$bIrFR)bgx>aMcYwU5}!=oH*;plOxP^WF2DO zOv##oQIiL^af#yBh=fjOOrQP5b3OB5l!Y7;A7y}$iym}#bw&IYeEqf2y9y=2n`Z5{ zo0GTNBjcmd+VQ5~)!u>lYWu4AvoA#@jWH1ssH|+P#0<1js{hK$KjO6|On<9-_YMlQ zH*6Hmoy)pK;=IlBe?JHH=!BNsT_oqTx=ct^X&)mL! zj=9b9tj#jbi63%bJwh+=5D=4k$5854vw~XRQmewfR9ssW=e;O8%oTLS*_-eqIjxXk z_b(GYEvw7tLt8ik-EjwZUt(7eEL|NkE`NazCFl73*&RUa?KzW@rIT;%tX{|Ohz0+O z6<^sjfAPdFk>*o%S;AXvJ|;JmG%K1(fNW*VVO!-gW!qhmQO8sRd>Xrh%#H=HOr*^jz-;?&Jem z!2rlA>X9ocErkraG|O4ee*MM(j1Kp#g7I=`Zx{F6Ef)V+dUPfPdMMl6^^@`mXHr<( zd}c`uEMF|WB`|iuQ>)VpL4J4E`_5;@Uqef$Ex$-ajmCM!$MK2kOO(PVMiqbN#V9@; zIBnnj9}BSFld36aSLUSr^h5i%HTS=!G{4SX8jo;bVpRz(%#ZjVDLTET7iGOTIDL9S0j5>+4bSMm8FY)4mJ{m;`tt$)w*-{%%}w@1^v>@#O)3yR-Ls<4l&WcexZ)! z?rco;7wG5_C%^v?W_mr`N$^Z>NfidJeJ~{d>s{zCc7kSoczxFe3Lxy!b{8u*{W%bP z+Z)XNOkCPcjnb~ku)*h3e9=Ha)np3y7hDtq{Fb55$FdrON^#Bs5RR>oYNUwoUuu{a9unx{iwt3q>uR=%wL?>ekO{q2)5pb5y8RA=F*P4 z$!>7M|BB9oTKH=rFy@y}v}apI?BT(8dU3`lEFKg5SL&4_seIxy?UyDcUyen+bB-VG z4%p@zZ;*4j@^0s9z9QZzp=U6|nq7dTbBhQ;LU^TU7CQ$=CAVNXdr)fpn1+e8@(Ysb zby?zd+mxKNLYtj-ZqD-DX&kib*iw~Yj>>wc&efCD>`W;m?RefC;h@6ke;w@Z6YS(~ zDjL=;T^*8}khHN!zFS>{MQyWZ4E3|-{dL;;#=&LI-(&x!eChNn?nu^t-q)75-*&N8 zP_y0b)2g~SfkG7Uih(cg?FO#f9n``ca%uC`H4>1?u^mVg2w|wV7QcSg)t8eayl)y^T(?7|t=TRyys`sHh)2!E3h|2hQSE_N}h z(_Wno4F=aYHyKnkod<6;v>4CJq>s`oe(r6)I^Yhz+pR6xi77R))fK3zc>_6&Y3u7B zUc*6hals^Ld#^nFJ~unl_HTotssSmD@owSG3~V5#N^yFJC(_0_PA1Owt!9ProXQXf zA2+Y;!x%B!FOF_PDu?gu0p4sTk&jr0Mrfy{&k6p}v7ZTVA53nO^(X)LtR~qSTEDC3laBnxJdfsH7RzgVVnUC7@=btySG7xHbLH z{>>g7F)ttq1JRto0{r?_3mshbH!y5W5VcPNYoP}-Rz8Ko`1_duy56~YO!knammf+z zY`&&=M43nXJi7WZTD@mU_C_PGd-Vj*qb?%aMkJ8d+p3E-sjDAx$81dd{DH|+uHeJt zipFJYbITAenuO!LV0hh|@FISiRwwS0pzLU4W#S#LG&@H>myzyzk!@RH@Dc|n;Bp)d z3P0sr`@7QR>4anV&i~8Toee_j0EB_jIlsux{`k54Ad?k#`P?Xt*v`HFrzsDRmQRcu zalPxY`feKBx3a>zv1ZN6Rtouj7JvDo@iT(g#CKQ;NIx(^(wC{I?t|S^eyQ?M2DHH| ziTm}y#!)IJF2Tn?M-vzJ!lRNigrhUYqkfZ_zZvd18K>A6r(V0dd|N`Gym%E(n)ebL2ko1J{j z|0_0w7pDM5zg)p;(467ym_DM82Y#H*?I0xq@Bvk_5kPh!*iahy1rD5#I1!L0?<`*nd|qTbLYt@ z9QXMAXyy3fCbCjfv509*O#06KSe;HLR%|>TUf|i-GV?1Ayn%>nE%R=>u-mO9 zCz)t&tmVw9PEMabMq`}-0HLcz;1<#bE4@IszYYK(VNSH$qL?TFD4g{}0)RciKNt$J zw!Y5r@DPt5-sj=NM~se*6ZUziFU{l3kprCRYN4UFoSdvQOa}c603b0>Nqw7Gbf=)9 z`v3GM)wa31;h}eUj++k#=pUZM>)50+HNdIz81L5TIb0~-#4u&o@nA{M^|>fFraaiA zP}khd&wueTzxm|XbR6y2Hv)QFcK!YDvA+WG6?iKEfKma(Db@MKMFs~386O>DYjc&X zbR!2_s%dPhQX@@Q*JKjgAYWd+&%n?a{$QA*qGIanG)rI!ZhMV@UI!4c3jhS1gxIn> z;|#zI0k4C$=5qeaZ{Fk7nIlS-ZwLj^`+Vr5I&=mj=ncv)Sh8{3#unEf4DtD$KGrv# zN;B}z$wQnv+DvX*iUI(VNd_Y!oL(P`n+_fi&GN8sijk=mHXS}y0tg0ucsx#JFWk~x z&*@WLoIZ7w1_1zBDfc?p^NOzQxG!h$_9LT1>Q5mvH82 zGbfKW(@YSlb4@QU0p5ZWo0{dz=;j}bpZh46B9gm@Q|A~Z}8;tV{BHddU!#07Hthx zsx|Y(;ReOhWM?HS03f9)(E-F_qErVPcmbm?Bl%6L; z=sfGR=7l*^ZKA8(KxIaR%%m8>u$~FKk-Lj}uFgbwFz03)sIIT){hz(hFMs(}}^}=9m~8W_EgvZI_km>H>}& zIY4nqF%GAfo}OX8xO|7+z9D68o1L4h904oJ%SlU1+sSfXmok84butHjF94WdSYU2; z4*RB!j8rr2Ep@at)=*KLM_yJM*=fn7rzK-C8PudeVE`m^cX|9g?4RJv`~6A?SXNxX z#p7*U>TaQ?Fq`yb3p%}lkO&T=5w-(<LM~Tk`${VJ`kd1A!bAu6#yWGA>jkU=nXN<79&xEftAf|1}9f}&^yJ0Cu7V_ z&r)n~aiT2BxoRVaigaWrMKKv-ctZw8H;mkv*K>I~%+u9v!a#XN1*gxR;b%X4pOeRr zQ&dzGA2Yr02)G|o_E+F-Sb;Ym00;x1Vw={YB&IhjODn1iU}9{L^|e{bOS3uFAzlDw zxLtl8Js#xqFK*M@H>?1F%(}0xu2OD*($jG$$ z5IiE!Ix4yQ@<0ntJcKxQR`-_;<>y?~a)<#c7Q31zVYB_VXfzGyC zD$5E;PcvaK$T5r(k?0&V#Q}gkDS}QHQGYiln~CU*OfGJ6|Jf9`9}O`yI7!I0No!7! z(`7M^m+7d>iIHrKDrZ4w(8zPEkuPWA@=S!0O|Rr9;9W+UauePx|ONP2}XzeSX`K(xG0^D&Q_`_%5l2`JbLt;&py9R zZ~w~yfam}co7?MB0!Y+eg#zC8`mt}>v02yIwAt{wJ!+<1lEtii-;=Q znC8kClU{F>=0P(5#WkCv^0PA1XsjvYM0-7_+Z#AoS3zN3HkRZh<=htuh1qaASz6mr zfnT}@2FB(XonBVn@+OO!`i5H0o$2Dzg>Kqg#ZW07qb{Zf*vNZCk>IZZ0PVt#AGe>d z4KUFG@WM1eJ<1C}M1cNy7r?#yeOwa&FglG+XQutIHV*jMu?{LLD@jXB{nmSn%$Ts- zHyIxr9y z#at#gD}w`d<(%(m;l!Z^>MM%K&PvB1z2uU$hC*!nysU3Jn3`W_U~Hbp1CxwQFR~p7 zQ(Rg^XJ@cl-_7j0l%%Sm5UcHs8WEG%4C}4UVywar{bR!2z*_Vu)_fC?A5y#(7W6B*9S^9 z;#<0rqT0Cc*C84CYS_^RerX^_N|icspwxV*)peeL{NEI=UfOK6mjd{PZmfME@ZEsG zn+pKqfkXupP3ERnA{YphLSAMH zDM`WvXaPgY$G)HhbRXN>a`zLCMpd8rv6dP-57uz7rc7xGaNlC$+WWr>GU?|AO zrklxmD~|`K=^L40!MX(oBNde;bRKKvWOoY<_2pz|YFY}hp_M6m5^eOVPhCEJl$b6t z+V;Dhz_0S`Zw&xs9IyfacJ4oV&W&3=^gkcR=MO2@$n)pVbN1|64jgD!1EdnSmz^tn znHxDTpAQXj?fP{d-o3-p>=fZ`2PuXKNhSkXTP zz^j~tuku)7jC?+yDjUh@=x;NhWCtkh=%f;n^t%k;emPLzOUVmsYOz>IPDxUGh9nl> z*X`>B*?VWCd|&VN&-OZRFaS_Fh?Y%i_)`M_!4R7pn@miM@$6X-W1|D)<|fhIb%^@f zDuTWUy-&3+fZl;2HXUx#Gcr~7UsYK}PEIyvvsnc%g}|k7{udSe$Vt{?_rbWsgf63q0|y#7*U?PJfl6{SQ;|`{QtlGr zrHliV7SC8r8?a2Gpk&_^PHQHN12>jz~Xmsv>?hy4Fz{W2KXxA z+0VwlpVK&@6_Ga44V#TkyIoEF6#b8!wlbFag>b&Zq-k0APHwd0kotXyHvbj`NI6PA zt7xW@l9R~H$fTekkG%XmrHv6#px}P|aS5hC1#XQr_!c{Wyoa`~Uk9-F&%1y8ynE{a zfOyZ_?ORMvPSE@GF~h@sq^BF`>}XMjHF}JU3{P|Q+5_%Ce#Y|Z29~5`%F4^AsjeYE zKab?(WYzO5!T+@b06HB}HT@6_()%5asKDy;2AEw~VtjfAyM2TF>@-dtJHY8<2WY4$ zBr7uwy~#u<7-3`6#lnh}xn(O$>vq;`Ti7-oI9+a{p%7_FX3C0lX=$kBaBBlib>$SR z`2r@4Ivs&<1c%GZqSe9J+$v+!%Pd>%gwat}SB2x=?R zCHAQAl9jyrN&mM1Kx=tS0089#sDMd~U@(ep!^P9SQEuINs)k2RiHlxRG94Wq{L8=m z3zsfkQou2BlXE2@irbr=2!-o*yBVLH=H|WoT>0`Uv%`JlL>;u}$2d}Aq$pj-qASL& zMLnCwBI<-`=xpKm!7B1H(=dn!fG&dA2Fp4cl=f9m%%I0)F`+XVu)DW;)HlH&K7UA0 z|2Y0FJ9X(%F4dTMry82_qokRl%1p=`)MN7-=-)8Xv!Z9#5hE0dkY$OGo1# zvs+QzhAhgO4s!8lA8`KsS?cTR$jZ!8^9J_ovM)am6Ul>O>Oyi4A{o83a0b z6QOLvcO-Gn$ay5?A~A_tU0qe}p>k~s11A)_WYOOZ zJW}Ep-K$?VJJUnI`cyF&ljtn(m6Do5PIfj$#YGh47m$`N44__p_kfHBkAcZ(#AG&O zHkmP+jB2=)?6c}KOUttOOvHbe@SKo+?yD7muby-J0N@`wsOm{?5dhGFiHx8XmHf=i zG=05K8613u*&L?*P#p(b>d8n?XK`_zTQ__7;@VxtC*~D3UQ$|0U2Uzh0~Yius8$4b zuNwf6;4eW-0RW{-k7+?U7-n{UiSfxP1prF&GkE9ZVct94PFr0m**O{L%x0pY2<|O6 zD^@!z8(XY9+}H#VEUhy(wZ!z?G7gtp%?UVAU&-mNHo6WqP*t2uZbmZ6W`o*jWFvEK z2Uu9MGcmi$_{@qb2Sf~d%4*7KX>H^{a~-86d6QO#&%Z<{nIl5F9HD3O^7f~ zZjq=Chr>tT;3T*1^k{a#Lu2T52Gt4hZ~yjheE8vqswV#T0DxE`+wFFq4~=m3<{hqH zy^eKih}tACrz;GctTIuQA-(t!{xYRwDON~TT_YE|S~%HSO@2liGKVLsj}VPTln~Gu z)hTOWo%lBB^>{-eW>+@3@?elZUVg;<%pCa!Kc~t}yx)+-vBC(2>0#COw;j;2?9?-2 z*VAX!Gw0M3i9tb1l-jH)C7GIDWML!7&{~ukZwis@3L1`far)djjvYHnRb>TfshR+C zU!AS3K_ci&tEOBZ(m^8>zT54=?RKfL&w+sWXG9cJxxMYh>2#{LPaRV6f@?QJ5_2qvQmvsp@davf@Cp3;U0i>23Nv6x9oNmj>3ewvH|7WU4a_(y`p z%S!;--lze9_pu~dl&-{L zmSJNi#V#f827@s^)pGZ9@6|)>mjV8f-~*eBlVL zZ9nr1RvryZasTNk0xSN zgZ}XaCYIK)WTer2uz_Po57JOqrpgi0yOy8;6ENV%ZUXo^20$Yv;!b+XO;0vr6JBqG z=OfeHxc!(fuimBi*^tsQ9BMnnfBmiPyQb{*j4!D{lQ1fT#wl(5nOfH7ty z*=$nGfHx3e$+kuB*aBbN8{xr|5pY^LoEzr-S`+80jFhE?u$ZF?ysdBR>08xtXFkT5 zUCSD)vUIfNLvvn~qAZQcSg}WWzM`YoW??Fj0R@$`A3w#}^XE8rxSis{f`8f$fW29$ z{9E=3q3Bh;J`hm%ZSS@U@S^>&TCLb@Hnu%p75rrqsl&0w`uaL;BR%gkfQ7;OpIQaUvnO)3c!eUS_;+uU-h@}&5XWM*cOpO;U5egPR7S#dT%bOR}* zD!`Je*w^HgWc5=(g8US~qXC_`tTO&H!M1(35ctpi?6(d8$X4$61z1^GVR&eWk>LS? zK?l`U1+*V(pt`n9A@E1{pYh-R`=7XTw^y0t6c-iK)YL#(S(!qz2?pTD0{}0g?D(}6 zFOnsozSbu$5m+cdDGST!UZdVfI22=XWu2+%S!}j7(v$QYJ5a^hqm3MDD50z{o7B`K zr5le$Vu*e$qBkIVZvg;v^Xok5pW;r>FoWZ>3b~gS=5xBEl?&Z%wAGhToR>y&lC+>j z)rO_izUc7IO%@BGu%6+uS=9yb+2vdG^z;)BMLBZh2><%8|CJ9u_+WJ3qubHD->KSuk7l^sYzvY}UYpixnMg~vsMf!YEe8YR3tWFP&W)aN)>o`lm_3{?jqqNTj>Cm9EXFV) z@qq~GnR4iPun6}SVr==LK37L)sh%T+P@NeeB_*PSn(l2qQ=3M5)=b=AGcp-WqvXI5 z&R)34`Lm~JuCG(VuY_-g77kv#{kTP*@8<;irofUI7cK!_0)8UsOQ06o-s6$GTM2Q6 ziF7(0YSgo2^Y%@<3g|K>Tc~mQx6`?W-?zQP07wv(Ag|U{Y@Jomjw)avzY_tbw4O@K zuasbvzgIl48;p8V1ps7aDlJo1Rt9FXRxa2P27KrFCVP))Te`Lwsy zQ(IR?I2Ps6y;%Iv#B?XxznN8>o1_`lB6tt^U`Z2Gby=xse z14?8SV%!oF5D>#?5>Zn!QN59|@p-P@c*LiliD}O>0)Y@mj~?Y;|Mg!L0I06sEdhKT z6~4B%#z0>`H*eqL=A8$Oj|`I^wR5Q=#(Onp4i=dS>vTL=j_}txBkRUOr2)_YKn3|( z0-&_6iHNLUOj@l>q$ZhFaF}1Qa`&06{SZ%{Pm>h!awIp*rSd4JN+Z-{M^rnf&8uU< zqi5Krqjycmm z?Z&h1QS%#IE;lZ>Tm5uwZE1h^xbgdaghByA!GNOrrQR<$$>ycAL&{EaRONy<7!4}e zWoD(TKrdOolB>#fF4?{OEhAmg=t8;6-!(0OFaS}NiJPSakenRPs4ZIe$O|a!<#hfx z9gQ9SVCSg`{lT6WR=_k$Fc`+~^Q-cPlr6kopJEf$cQ6QJWyWYQqc<3p36(IH;!P3^ zg_Tj6LFSeiOmS;>@xCx9Adr!fNnufuVrWH#Dj?`z-$2`^Eu=jdP0Knc= z*8sqZ0sun{4+#KpQ6&sOTOGBvC4{449^C8Yzy154xO1-$mnWbG0yQ^D384H(W&mDt zLB@qIiTaj0(c>GemJw(dymr?z>qt0;)n;d5aS7|%Dq;UN1=*=I)s)awQ$$5^E?F6= z7*&l?BNhUoC=QRG6`Ml=fRUL+=2zC)a=J;jm}#so<#cBoXO6aTpt^{HoK)41E*HA2 zp|W36S_vJiRu>PRj`78vURE626jzkcA^L%%&D2yBkeQaEOl~B5jqCt`AG^b1H#JCv zCZ(rPVi@UC(EctPYjRo&F_V$Wi8-!ad(59dy}|tl&+z*L-v|J{x+%%Anwp&A?%lgw zxqefz0M_LtYEylDTxaBiS~E>~Mm%A-H6P*Ac_UV1F|~~iTub~r9~5J zv!J^yN?Spc;*=Ohq6*+CYFDqr7dA5O&~tMx%4f4WHdCsoJJiAHGp9Jw)j@4-jS5N$ z01)SPb}q=T=8NA(_x=6vq2Cnrz8(O`v6Fx;EqIdYOYmP`U1ND^nf0|b)otT)3&rhH z!C$NOdl1IQu|FI2sel;k9`GSkV)$s{RB0-h$4OG{5x*?VSY zhN|8ulmIgjV9mM zqz9T1Q1%oNH%20I4{I!knp+_{Dh=>QMf(sCZ;+q@1)-3bngwvWJh z*GUw=KSaPER^2WsDd|e5RV9wCl@;XWl_1a_p^p~65f6%LHx8KA7>;(W4 zKqPSV_w{r6$`!6$z0SbEAbyXNmb@6hYP9fSotcJg15SUGtFrhnWMr%QY^7JUF#+WK4`DF*z#YmDtl1ek6+B3VgN)CDA%HNen@baTDWBQ21_#N&44fji2$z&^0d4BTR@!L6Ssd9 z2x!;Ki@+`Z9;ziZe%~oA2ntaYhqC`xh)21!#)t*|_&max2y^09Y?^2V94-$|r$?~{ z67*$H6OiC?d9iN^tKwDrMn-0iGNuwHpr9b1yxd%J^KvODC{TVJA|%}J2>8~qUp??G z0RS(4X=$$!+I4tvi01=+c(=ExD9@*@wT8NyBBIeC4<0__-~XRaxqE*Ar^`n{VIhqT zb(EJ^kd-AZPR1Xs4Nz@Id$M|g&*~DBpsxUcrt(*9J&F37Am~VxKtSj<4<5INZ7~7b z_9|;&aRE$ZAmS@83SJW&udN*Hj6DM|8?yN2gkpk~0JVpa8&? zYmfNzUv4P|;F|!z-cOdu9!35C@Zm!~|Kba7-MYi{^fbCyh=X|se$|xB2el^Zvvj!p z5w6Wf_{+QntEq^(#(FMxHgZw{0MP)*CMsi{4XS(-iH5LkIT@Q-iKS$Qz`uA8*BaU0?2|2po`~5WrcJV zRZv}7N>O31YQq&lo?Mf{3Z$eYDNvA`o2AtHTIQ}-8EsN>3ObW{$4yVG*~#Y=I^PIt z?uncadjs>{vRVQRB!2#*AVAajB#zkoLNi8?NL&oPABowZi`H%!=0Wr~VSOsK7sf9v> zf_|d@b54IaxsaspJXDEwa6wU-v6>CNDWOWZE3fW`oDk;q3OggA*4q7hE-p` z2qP2JylmyA1=*bIY~_=mol(PrvNMy3MMH#@Bbk=xMFaro^{VA*W5Y@R&@?w53^Ovf zM%ZMcx~`n=u2xQWwNO`8g2kLnC>&GoC2R200D!MD051aoCX&;W!5m|1VwNjX0#E>; z?;A@1d(RW0K7|IJn3&+!?OR;GeuKWgKGoAL;OkJKiC;8Yc(2+>eHOU=QLfKM`OCan z0f73(x*Y(Zi2zO7JO!0mi9K_Gv4wRW_RsKaaE6tIB~tu$S~I+yE)CIM6eT}Z%zkt% zd5ny2ni#SfS#s&sc3hPa;b>umro0GgX00Zq+PWp7i;E#sj8RN_a0hgZ+YH=TN#dD1 z6L(4pC5>%#o;bznGbgF9sZ;<(g1-g;1VjqBii4J)IQ;*uG*O|GzqzavpiPe3#)gfV znOO#hhUo8m&e-^rYRMDZW+}&rxK09pswmb|QxvFmx||A_=VoWn*>Q-jjzcsyR8yFr ztpdITd71bqcVQRhdK9)vE2D|#LTGV~K9@kZTXK*8D^6|8#iM@nQexw8l^A`;G?wGr{CGO;pE z$|T}oYK)f!ep>YTYD@kjKl-f%0CFL3ZrT|g8KLi4FPj_d6y&AT(p*7(T`^{}j)CXn z{Pqu*xp}9TwY5#9F0HDnPy=4_^9z;Xi=3c|Uf1vYxF{by6^k_QYzadWfR%BEKY&*P zdb|ZlL^XNO;daBA2P=j$f3U#fc-${PNOqjvsEOPzL-+9XcFVT>$b~!_tso)Se?0-pKeO zcYDTpKDB}?6s4%Fkd9-`oH^d6%!GuZ695oY6tlLq{P?$5005>KlasStz50khe|kHv z0SJC=31IJc5tX>GQ1|cOSJuCedmgLt&Ax3f7K5InC1yUVH*v8_Pi>|EfS3XRpU#`H z2>@si0MNjRwsP{aQZY$Cv~qwGlb$FJpO?oY3tW3R&hW?#QKyZ@G(RVcLmbZcQ=Jte z)f8hZpl5i)#N$;9GY*3iUKOWBX~_-Knj5AxJ)(lVSVV^fl_@q#f|Ha0#1}z_J7{3i zZsgu-5>Gc%uo?5otvi|&dDSvTQc}mRmT6%a1Wl5`M=rMKLL(c7)S?~?mFJ@6{w z|7yWyC-#01Qj1;cf3IJMfEEe-qR1ERM`n7e(laQ*VoZ$FG(n>V0ikddCIJPSnJxWm9Csuya1i6} zD=$|pKtn@=8e=WpTsc`;YR~z`j)5P41A49A@eKz6UkxC;8;uBb#>d9#eewjGb%osQ z6q*~$X{ak9ImN`-#4P{spKoye<`WhcSCuzB!I+9j?beeK^l8ELdNR&ueso$kX; zR9EDaot{FH7?4Q2j|hD9F^p!RF10C)GqYA6KAWa@Y>73emyFy@+S}_nf9fzTP1VXL zT*N)X0BA|Vn*snt1gMn&M0EFc8i2&{mrYs};-h0@eEQeV6abhUAIIs~Qa%hBW)oed zCVp0{<4ieJX6kVI;rd*Rzs{Ml84GDp3_t_N+bYP-PRA_HZn9$H`WOtc>Tq+je}=2~ zN0^_QB|qxqWJ#3sl`*O^eB@X{susNB7Mou)cb3d-`1BN}#c0is(3T&jGCfSDS#xKU z>^~e&D^;_mPOOo2YF@xrP%MMRG0@C2n}v0<$gXVU=<$;RMT~cI8=gw z0051uemwxd*I%6pt%kI&O;1np{P}YR`uiCf9c6xD0q2%OeV?MjJZfvoX=<#duC|=w z;(T)R@-SPHl)2dBCw=ty4Um>%;-il)aPDjuC1u5G)~tm`(MZciKlB(zQ1)$#%WctLUT6@|t3g1HheqFtx52MQn*ErWOr zi0yAdUXBtbN_kNhN!UvDK=q%-2}v*))7`n?kuW2oa}v#x+vCT!zQy#+lA6ykFgT9G;a0{&A`)zFZsuTXEA8#=)Ya7PSi8U4 z-u%z==(hv_Bm&89Z>aR%j*m_7q^Ae#+A=xW$uu>TDFBd~W?^<=g}+{Y!1Y@_Oij%z zwQ50r9#vJA_y!w^4TXNK_h9xLVHlSq%+luZN;w%;kX;i-$ zfrz5mpd&fSq7?OoIhhpYXOo+oNm^=>dc4*ZAOJuFgmKUCIKa@TW1RvSuCHI~|KysLCYBV35pe+frexc?^NqKTcsx}$q&&G&VY`oEh7(? zwYvoM*8C{lWf2bMhRL*uq);gPM39M#_+k)_=m4i~ z#I_mfsgxHNDQC-;mO7f7tEsIiqp&cS^qgGPk~uLx$JMKMxqaupa=!feM;GYmY{Qal zVQt06>e}Ycj0s`OHZ~n>+MPJJJSzJS_(QloUbeOzN^t0QZ!10}5!QFQR(|A#Oz>qY zIhV3xET+0oWKHt(a>>ifR!o34KSeV{QfGnC_~DT1pb#5m+4IuVQ2w6SF}_YKny%=?~6GCBV-gFznlPpX*!Qa;dv@vb;d6v>%ssZno@#E+ku2 z%i>I@i()X#hM;K*R@R(68C>G#<1wC3ED+MgXlt+MSHHNxiLN%)zbp)Z=oAvdrXT;p z+!anK0##+LA_CL|fJy{tjB5Z)IwmJ(xhf*SPo)ds?=t|RzYzB~p^$IhzRMr~@+l)j zgKT?T%CjNOY^E&T%!yJR7s|tQ6h$aV)v*ys001+a!T>Y~01yVCQc=y)YcKiq_I7}| z^(~%Hukg5kocW1ylH9Abrh7SCsi&jVfY}(r6^JqGHZrg&;y(lPTQTyIA{;G>(peIr zE-OlsK1MjIwH9isQ_XZn4v)j9$L51oUyKDW%sBPT*v%|D^tg3N#hmzKKr@c1`SkgHo0bj;6KYH|#*_j#T z(kBddZcaA;KYQ=t9p{;ydH%kNh=rUAIVWa9l9{8>Ba?AkkL zJwBe9?pElQC?e0YR|o26$w%uqzQq>_(GA~nxI zY`uwU)h|*!vG5gBqPU7lj;|&e`uCIvBcCf`x)Ra+Dnnz|vnszt0wsx7BSyrEpuI@g%x_cQLpJFc%(oVqj>(}|<{SP>P z{J3(uzJGkH0YLoCy}B!;oi{Q(LT6_Oiwm=)d)!o47Eo2`RXzOj+9oZJpL6#?2hX1m zDe@No?27Voic3q?3qVLd@emEGGLFmEe)l}__g!pO;Dt5w-}U=hTU}vcZl3j(6>Mgh zqP$FwH&#+nl7}bRMM{E`%(N6WU2#h=jF4$G1Hfv@#b?9ucQ2AQ>FHX!_82!?=Dd-J z+H!UeO!4bSy*%m~W_)H*xd5*iMe-~*CD6!mD)nY_q^6job)_^^7E@l3N2Vtgr^L^S zcfLbh$}Gv$?BXWv&!_pk^#vWhqXeR1j-ROGZ~xP~T)lXTw6qKh00bl#KzIP(v<%SN z0IVe~c5LEFYO&4V7PW#&lmsXMU`R-Sj}-ts5&$4ZKut~j?5AP`^xkVmK=SNcTRtYn zC+K?G$-~wbo<4cV^1=*a2Q2L6B$tbVWEZFM;c{U}iFi55XfV&`QwASRxmbS#0LY>z z#xJrou5a$pJGQ{%7i0AI4H8+Mrr22HSVn-81yGY?dBo59Z1k);dAjOkY}3kas7ViT zEGNRDY!h#?sa>OhX(tkw78(*TX|k~gQ=2xXwqSNQ!s4FEvfswqo{OdJDBGrkwEO~& zpE$ug?_A^j`Lh&wi`0hJs^Db9u+FW5s(2Ub-vt181p=h!|x|GtAJhHQdVCKZ(h{<%_DVU~%k&zkh+6m{3hwfC{n-p%=%^1@#TW@P3-!wuU-}a zur&Vai4X|9nj03GA!g2)kYyN?ZJ=Ca3zvY#?p=pZwkJVLpHQKPg zmTN{NkNJ5y)Kr&o{8$}Fj#g7%UO-w}vI5J%euRznJ)ZXttE%f!TPK4f<9eLWojcEu z|K@MFeCaa9#l_$A0DjA+^eyQCd>H_2Z*4O+K2A?h4|B7VBqkV?mE=%WQ9w>+8e2X; zk30LgcfXUT-MuU=t&reOpt7QZ(y~%K=^mU;mo>kPTIM+is5ozIn7?n!fBoNW()JRx zFN8eb4$BLREX>a1+gK;rZKJWOh|6aW(^ykXx+j4Yw*yZ~5}wQ~kSun&JLKk*4<+5i z7qys!kT7Y*Xd@u9Bngm-5;R5fx6jJzIz0o^v~-Wq)iIDGdg-l2od4b>3V+p zU*6}&m9wO$Wg*3bv^$B0RciK4Kdkd&V06@46Q`2*Fc69Qj4)*gct4*Ee$c$|Wvex=2-ZHCdTiI;zmw zuMh!ahEp2VeZb%1n?C2SNNLvfEgOt%Jn^>wllFEVJ$l58=g-*jZBks6M_p|tH8tf_ zmKRe|R!EUISIK?u1Yu%W${ZPkIh=_^B6dbbXSsK;otD;ioDPGFmrg0!t#5FgU;Vn3 z&ZqtAg6H*mDJaM%D?3wdZdK}Q*wp`CTGcY*lRz8+Qr40aFE+mU&ELXnvGI_ohfFKP zNC?ToNfNTMfCAmb<1*&hs8Rl2_)L4dd+JxB_TkakSU@@-YNfodqeC?dikSw<&&kL@ zK1&xM-IGdbX(1<0G;s04F^(Rs)PON5)?BV61z$1_XzzH=7x!9edDy}1+zNH|4GI9> zz4fjV1HbnO_?C45Ua!Hwe3J;HR@l6~{k=?0juAEYDaiFuRh~~_ezuxTboLB!=RpVU z9nYAZoyTr>sk2#Gd8xMe#1Gz(IcC(3DH`$Dj5gwYfLAT$uez`)0Ii8cM?%og5{?#8^3P;F#w=@zoq3eMN7N8 z&-Tu)+H6WyC&aOhZ69;g#oIo;gA-~H?dT)%vl3{NiM zfT4O{q9LL-%NF%dKw16@hu$(j(hfk3pcFOC7zmI`RV0!kSF#LQ5|gC^;9z)AqN5+a z0RYbMv!DHxAG{|3piF|_9C;k<)6Evpo zaK132dVX(;_Sa>I001BWNkl<=-Z2`MR4a5jBSEH6jdXkB&V`ZS28Q%=CWlJWfq=GYNo4I!7 zGRKb}qok;aQs2f4`lUmUe9R zC}+hNk4xvLPBDSy4V#L7m<^bqrUwrg%e4jB;!d6p2Xs+gP+A`vN~07 z5d8jhN9QX)Q=EV(9SbGqg+$IM#N$_y>6Qh6wH{ceWf7|Y5nl-*0}22T01=RsLy+8_k?Mdzh-qLb5W`)Ey9e0voH_3=L24 zp!Er#-EN_$XOPV7d_MT$2mIjuA8_pGQSG|KN4npK2)#P(Z*2$Q_ch_=247rUVq|oL zv9V!%+iRqIT-sKzD9zVdT<_pGcOP`p`lyr9(MjFp#oN8Is*KFcbe&llHU~yjOo3im zZd#*&KO6vPTTK|&(TKLkHdfYIU0lJxy+wMGlcV(|ymQF{0LjS?8K@CaxsX9H6xI1) zP(1=^7HIHyi$DJfCIw zA@IURQEoOj&K=?>A70?Z@me)EF$GMBU8gMWu?eqa0muw_V|Sn7$pu3Uhu)DX z>RtF&FS@#kE$lnRjv*y*JZ5C}e zPCKJRvVcF*EP&QW-D+LhbgEf90PnqbO96lo8#jEr42?|E(e{|0);lcqwUNCyOOw~6 zB-72FY1!`%Z#r1tcTwaqIOmOUCO=GJa)k9gxIG!==TiwRyTk{enp@4aTsdAres;Qg zx~*(%(=#~9-N(JOKY4+3dyWeQVXju%Ih=1J*(nvfjouX}&lc_a`y$aOC23Jk7n;=P zm}Iy@I3!Y77G=@=+iZkXuPq%Z*x8RVu@U9P8Z7Num3ykwPNLJ!Zpg;K(jL#2gUkh- zxHEEBJXV1D> zTU#MBBZU*k8@YJ?Bqxs7Ys+7_Hv;@+gd#v%s$I)5+RA1~NJvuPI5sxR{rgXN@SqJd z8s^NIqok#$F)}v8g9lF;9GWC0)uSpSX-VhgWUE#^?mZB{kKYWH`pP@>H}Z|KaZa4a z5nFrS>`hoJQp|BQW^QIFOijzh@Ls|g{I8--#wn0yXfj(zgWWRng> zqU`O5*xvQCE==TgVIqr`c3V-o^$rC9*eS`+;RhFw@^}B?3P(=VsLU(8yH9Y}uN8m- z01X3jDcgI?A7X4~na4dt+-~irXJCw|!=U-x5&q%tKjix5W>S+q1pQ$Ge$hBbltb`M zK6D-(`-OVc;s8KTh5!JoJ0NByNy!Of+RnuIH1}IN`S{cOw6u1zw(he4z|Vfld+*+& zq^wlIR^RX#9UWZ^bUtQdw3D>$QR`#?{|}*YNy$2(wrZn zI62Ig-{khB$}&VAW89Ur`zy%aaa(NpWg~M7veBg(A`lw_zGK%h6GeheXhZqO9yj zncX$m2}_ck1hO~@M(oV_plg1Qo}~aYyFg;9vaD}jzs9>icu%EQSy|byH~<>16yuSr zi`~CPCHs1JP=mr27J1h5oO}1~(bfHw<>h%&lHD{mRB`Uy3637Ap`x@vTmHgQmr7U7 zc?1B&eD4(k*dQ@MIvzI06#%p;01$v22LPkvv$V8!F*Gzqswa)IvQo_(IS2rx<*nvg z2WH{AN$K+P>Wcj)@0IxPdKF6c`lcSwDfw-$>0pkD<`HOGpj>0t_(hJX7`6#%RzR72 zEn@&{bg-uu%!^BldalIrRGbvgo;k*)izhT-tg_szYq(yUA(OR@ZJzZGDOkUA_X*oO zL5?3g!S(CcID7Uim6eqW81%fwfy=)IA@$$lB>s-y`R(ce8~^~)R@&U!Vs>VRzCIZP zjADxhC@;z7NTXQ(7O=3o$%BVa`SoWHc+&BVt<7CE0;;O6AUh{ZXLRB=B{Om5tZCIB z-~10QEME@*SVd9n*<|jz7toNAg}FKPi5KU$6OGkWmwQQ0bP|mrWBIAcBc!6a2g~z&@}Pw?6S7H#`4Otf&iK6#UIiE zD9z8|{maMshyQq$hU3*Fx*UXjdjxj(bQUNZhQ<-woJ0*L{(#Bc$`;RtC;8%07j4~x z>;!@wJzmF8e)0h~t~QgA=D`$T5|9pnr4jxnAFl&|c>7M7l+^6WKDKWwl&$-WVYda%}S-S?lD3qC_z8@|4&_silAms=v|o13(3!@R-+^shupS|k@#ejYzUe4IK+d$-6)AHTa^Q-KmD5z%v z81tc035x>nRaJU?Q!gaG!ndt1Sf8=A_rWKzgo#zD@~)z@VSv%YkO5gW6mV^ci;uta zaAfHCcu7P>J>=Mqyzr1KN~TIVFkT2NA_EeyNGSl;(s-6kPdMR4x-rM|g~PkQpTP#p{<6z}rM)l9 zJ}dXN!bSJQrv9+CkL3h65LXnW!ixok$>zug7*(MqSzz}Jug@X;L@_}lB59~R8$NQn z3Xup3ih|>jJwfgkcm`pY@7uRVy$;WKu%2~#dAVfhb(=M&D^=(L!6!4|T^AA9Cr`Mm z0y7=G+uHH)kNc1=R8=yh<|1HizK>}?UQFMVM8yjIDPGt(9Zi`$D*H~iV97_ztNq28 zZM+E(UWek}eE;a<1DFH~_xGKs&?3+`op|ITxv5_wZcJ3L7`b1?7K#enhBLz>x1 zq`}>^vYLXHkk?60hBT5-?;>uD74>_V=~ldW*oAPJ5QWH6da@~Q1lso;yu#b+dV6~X z!AVREMj{MvIP3h66MjB{B<{SA|W1YCt#|z@-NFwEZkRUltrai~@1-ggLYC&`BmdyF=Pd157R-->1 zd4@uVkTYMX3J6qIaemqLOfIJ+cBsRp%5BTW%M?;q2p*vpQTVbY_D8md*RAp~<(3|u z|5C-kAVi9ubm=mUYpQ}cEGil{%RC!Ew@;BMos16_hU+VLzf>UT(2AdomHCF9#T4$$ zK`q;~){mZ8C;Moq|8Wmp-;j(|J}}ucdAJD4=^iS4gZg@Zz~Sb17i*cW;a1+6HTTEs z)JOIU>SgWTT3-J6*Z?ARtNR7RQ0!8C!v3NUlVDfOoarvlVd1(0FN-2)N&H!UV_^`r zQd<(vobN*mm;?;b(BMjoBg|kUCnrnGKsT=#QS-h<2;o~0cDQw%I?&T264uEr5>nxD zmU*@cp{1i^5#W)URUxlPSb5OfO2Ls`QTUtEkYC;T>)(*xXeD^mf*>U!J7Z7Vl-F0$ ziLw^oXEv|^9Sa-V9~Ic-Ioi?z(55bPvNH?bWca6i+Tbtj)V>*XKi3cOI5)&hWD^lL zxt;hvzC*<$R_)z`tCac@{vuUP(UjeT;8ce-Yi)2P4;<+v%|`|iC~Ylg&?Ax%Er{qN z$0FRp&b|x>q`vg2E}kB5xJ8ZPYi(cv2ngUEwCNa% zhFMToDqSst1))fe0@rB-qMm|%I`_xfc*ERwbZL9$(X7rcs;Wv_&vGTA9=^s>%XGN; zPsr}^>?2l49igk6)#Z2qCbu~aJ?J_!kl!oii!vL=IXJ6+Yz zuWE*&!zfW+?rVcarw zd7)AnYs*ag>7~| z>ym2)Vdu7$bYKbB0hR(a>dxB6!AzpP;QK!DXg6E{ZS z3Krt35c+Sqp^g)0;Gpd=jWEW2QYp#w;!;)3?Wd-jium09@G;eDJlyOoA5-N`3 z;`P#BPM23tMr~_ap5GFL5n6P?T3974BX&g$;V4<6SPgx{`-G_cu%7Fj<9EBTv?taa z;0*M7t0^I$x`d)en_#STu)%2n>Yaw6S1bv%1{~2y*S}i-3;sPqz)uHHSSve=2Z;Ms zwYs~Uf9hi7fqQ=bl%8d9C?iGE?9e>7xGAR?m`cxGrJ}1QV&szj>p`O_bdBeHWd?q; z%yn1>WL7LfV`J$(RCVzIS5H-0k3Psvo>bfiw}7%)%~3Li#S|`c)FE;vOQ$<>fVIFe zO=>qeZibzzVRb@SSZSGc@C<`MC|H$}-l1t)Og=$=`9~}A#0rye*bn%LbW z+;7H>Ye8*g$vJSr ze0df7@f6$P`JUA<51pYza_~nNr`7iv>)XOWSqxfGj*&7Uvf-h`StA)B%*6yD*lV}G zvI0(#O9UEQ4k1boQH_k=SiuQL+lGb}dxF!I`Wcd|Lv z{@R90P{VV&mwS^(3B#@P+bOO6I!~dI0-wexbIlqj!M4nr3m66ur9U)FT?^vAw~c>{)h#Ma1hD z7gJ9Q)g+Eb@0f#Bhcb$azbf?7+9dYPqSUDe5MUy;WGn;l`M04yx$?o*U|T>iuAXjf zX}W=Y8Gqv~C=Vsnn_z!1yDiA}yYS5alw04;vQJ%jSUP`ts+iD$-b3Pn0epNa7#P2M zj;z0Cc`vnNG9Y_63Q6a0D7wi6Qay7LRTt*7gq`0}CSaO1kbbWJ4bm|Z=}gJg@Za2N zsBhXab+iqPIWl#9h+%E-Q1nv3Te8pE>kXkAl|@wVrO}3)wef?2WU%WIk?Penjqv=8 z=fiCHqSz!Vv%6t+CJ^aXClLRtNamvhk}=aua3VE$N^oM~ZKBw)6ppSturY>}$SC%6_gur^)fnXdF~;Cb>8SlIK6n@c8jmDB>= zzZjy--%VB&U%c@HM_Jy6N*slq|(H0FJ_N|2 z8!hYxD570aMG3}mCt-Co$r=VQgT*bGxgW1M_>)PA2RnMVtefp_fpV!CG}Sb{*ysj| z%E|2iVAbPsjy|*qlAw2oU$k`Bz`UK%Vx^apOXBJ2y!>9m3xKj19!T34kt>D)R6Biu z?dFXlxT!f2G|~WOKu#Zh0^aB41p)Xk2xg#{-$0X_$vt_~_sHyYZsk@%L9Y>sqOs(6 zcZYO)Hbs2jvMhn2T_ZH@`u2H}^*e|#UnG-_f2W98r9QE&zZzThKf<)&7@`oU2=D( zX@_08InOM0)l?vPm$Tzh%V-lcMKeSH89hq1;+@Qkfq6Stz%*1X{8CyUFlHnzEaDsg zHv0n?3I>Cop|Uak#2OnL2R;;%PB)>rn*@6={Y+I1}=_;G=7 z{|kJ01Y$@wv96ox-|4z@KRn!Vfqzz74hU;Bi8nGiK6P%c5`uu#axIT#6grR1p6!UakN9jDTz{1 zOr2@9Gh8IbD>!)q8~Yn{aDTty@)h7zht(p(>1UqUQl{+CmQl8oDkX#at7@(SxkmOD zA>$>nQJVnCVminEs@5(4v3A4iom@NBij2x+syJ^3!58kHj2<};+RbZaQG<#FW+SP0 zYi?X~FU>N4e#|wlB0nx)h|CxmHVivYHKa&2`5TPB7JU_Q=DHRKmJa(HUoz1pv$%tB zL3bcvMR^y+<-&uMbCGWXlfgowWhB7-=b#vVAE?dX*GrlXC>64>4c976tF?*Di4n}cX z>l#!P{`vj~IajFkAswTm!f0vKzEndyLXKgz@WSG8v4bKV9fMi-=4KW{ob%*l&O;0A z<@;wDC7EAk^W{~+QfHA?6*sDf6I8kzCm4;p^R>Y(UJlt?i;RHL-KlueH$*y=Y+FO)Qz|8eIeyNZl3PUNKO`W2aoZCZEGcW=sk~ zQ;QUxD%%=97G|;TX*{U;YI)CX?Jro_+N3Ry&|--N53GG~$`RFCCeS{YPA6G97WEI# zh*GzXs9;=F<4*jD`C%ONOM$u)(f)FL)hd@;dktAR&c?ZOc=DbtNX<*d83SA#<3C=J zx16M*%(xtg&lo&300l3&G6LWMkdbl8Og@}c&TKTBBn0K zZ`0L_4ZsvLO2Gf-N339LIZAbDsr9<=5tY#MTCU@J?{l^17e9~A3q}~Adeuqe(_1D0 z$`Y6BTbtP&`FL6i0RIgTqyyjIb%CiyIZO2ij%A_Iw-oowM)zrcmZJLQjtwx}DbU1lW$OcuERb1-; zC+wi*Nv4)ETHLlwVMkpOg;ZH-6$81-=s{XzSz$;DJN{n)eq`4Bk50(j3>w2CXM~%9 z$%+T|7j~OK<`vRxruNScHuc~&FZOXon4Jyf+UUW)@PfouOzRk0Iu=afrJQS7K+`Ak zgN58w$Fj5|M5TtLmbK<2-+Xdp123pJ3jHezZ52(UHrFK1Dz70lC*EwV2#_q53E}=%(gjmo$!p)fQD)g-sS8h&(j@FpHo`(b}QeR8Kq?k4M9&)Df{8 z#b1u?w&*r;ryreLfmb?IkbIR1{yLDvnX|pS@LjLXGiS8UBq0&wgJ!Ryx{mOpYQk{b z0yY%3T_+8c`$8C)T-Ddrk%&U%&ik=P-E#-qYIr3aQ%Cb21KOUf3^% zd}SY_$eR3o%*-s*^wdRvHOEEYar_)zKURsLB#ohExCv97nl7cg2_m#nB6oE&NF&iWriAcFj z8PN|N*7RQaiqmf6axhh=H%jPcKBlzP4ZRVB$zXSpkdi$TPk~IxuOVe%&=y(_e?55v z6+87*3B&y!u6bUa9R$@RSRFIxfIrb8YJY9tz!}vv$hbLD;+lHbboHNDCiRD&) zqJwAE;Gcg;Q8LHp?Fc8G97~rcM}I#FiQVP4u0gDZ4pwBWJi|9NDM9oHe}s4{qLM0P>j^E^L7~d! z#P1T)#MgD#3urUX1nC5>oDv9It}L$hGR%GujgjczVGg^EHzdVL%x*;$?NV9R^71I! z;VDwq89W#Gdfc;Xv?9$l38bq(HVA~v(kLSm*q{ zxZ2#u`r!TA*pkAGqQ_i$H^P}_Y~Ry8m`y2|!}@uxpF?^$`kH+6bTVA?hbv}qCtY^X zi~>KZrM!-%kr{LLd>uu{Z4kIJ>za~rD$B;s&Ovj`Nu4cp>HJ}TS9UgAyUZ7`ns{Nb3B-A4>AmR zj}u0l%x-`B3Oq4-jDaV2`{flXPL(ATSToY}j}$QX)Eb&U-TXDT^hoRwKpjHSRQ;y% zdrOFqOYCfq__Epc82QYVN?Avz$ho^COOLVx44T-TdjD7Z>cS57?pkg}2&8GTw=5)c zg8AOs8HTe$avII*0{rd#Pj5bLUX~UI+cFA$7p^v(GCbjlEHa^FR+>6qC1yY1Ad{Z4Z^_|Es}c z&E%S}i{(NLzQp}aN_mSPhaY0^ODf6;Mhf~0L4l8Fw+jY2@wbZvJrf1>xOsLW^__7o zLcz*>;u@X(#Y!(LrV(5=&vH@~KHwLDkXA#ht?UPt4_jo6-jv1Vh-b_hyb8a3q7!~K zkTy~<0R4rH7(DHj}FmeNOv?+yQ0NqS* zif(4zSNt!v3b=D1Xl`Vs3Lz|0ss(|Q@I?_6u?0>Zf=h!aAluiyy*+Pxv&2-&{@nzO zvhp%4czDm0YmlpxI1CFH*DpZ0+y0w5?a@@u_RRoQ3}F?y5I1t_oJFhFWtg_k%6{UM z&Xb|g$B&;Aeu~+G#lZG#;a@3WYZ3)4DFr3lQp?rqVcp&$b{u1{vo&J#P+u)3GT~PpF&S&(kr8`NVNo`u zeK9G78yt<~^1di2V0(e5`=&7#?oEsFZ;R6$1e#H}Y)@cK3uDk1@9CmW_2Q+-@`_AN0TVb30=xqL}gmNO87X%faVr>zIvT2EVO((Nol_nsJhXTnE4L`#4tN?5JoeGsI z-?Vw4X8RdCQn-tg*Z7LhD`Y27z3ic8v#W(9-Lfma_9i^HX3qKqOB-<--g85IfI z`>^toD%#%6++U`!6bwIM5dkez90k4_+n*+*@Gy`X%!azNDr#A;l+#il!4vSN^#g-k z{}S1fJ+@t?_si64>RQunFV9&UTY9hhk<>8jE2fw+3=An|xc_QUH{uQ9R{{S=F(H{=FAvm=aCsSKWN8_}%X(;G1NKKtPx(820oiL*lF5yk1 zB-PKDHM&zORARESH)^5+IpH?sSlW!YWAoNSM(^OwM~ovAdiNjHKnp8_2%XBF2XGylx{(#2+PzaEU~2?V74%b=TZ`UoOsrWHzQ zyb_TTxmJ#ook4iVH?g ztN%h_k<&27oUeuBnLxhPuD~EQ6?_;}Qj({&pvyQUFa+j|!;xCJ9y-?Hz`MNEOTF%W zyvR`%X_S2D>5UC|HMQU9s1n}GbT4>)^!4rx0fbQ=%MnEA8t#9(4N6Mk;T~I>IA^`R z5sk{Z@VM0Fyk^OB-lAdutrq;g<0OUJlLtl?mJViud4S^II&Tt$Xr_E#08rj{ZES_S3{!=|I zivnlN2JKu(Bl<9OObe?=4oSEJ5+){OZ!j$-&yL4p4!Yw|%l`&#V5U#HEfBatUEyG|j*&a+%FsMyE_(F=xPIXj& zwlzSR$wfey#*%M)DT!ym=_z1&)RUDxQWJK5DwfsintrCqPI|_3r(Y0qna0 zq!(tjQJ3iZ0%y5uP^TdlN}updmZ3Kh{?`aQNC3x#Oe9 z&Doh94;OcDPU-J=-};He-`%?5&C@SBxXOB{ANQ!^YxkH=pFz>)oEHvGDqa92^ly4n z%I?z){Kj(y1sN57m${_B_u%1GtH(D`uBZcXu@ceYXrWq`ph~qk`0ld%W!o7OK4ZOg zWANkc1WTCDZr>LgoX#u{Qj0kX2k79;`n;KYy z1F{kjtk~zjr~uuwuL3iUKs7gJHFxHG66FNm@^ak6T8ujcTYbHZyv!oukCSxm!NEao z9X+$DzkMteo(Y(xl{AOFrD9oM4Wz^hQ-7ReB?Qw_4JqD0isR$L*SEBdOz%T(^r^{L z*_z79=I56MCk~zRsB6kvlvxd3$W|Z@;Xc!`#@VRz0cET871oU0U0NBrv_0ZCxh>Bj z_hN%YY{X~;>%ydE7d`j)b{d-8;1-XOpWDy-5U-{qs)&lo_?BkL7{AyA^~5@)>v`_0 z7I8spYp-1-OEm0&Pb&`#(X?gh@HfAFLUj1Yy4F^rc(iW#kM(Lw^&H%me$#OF{$xv3 zGl-((X*8d%1uE-R_;4u3pXHMuwFBkY+MDC|8{#vJsM$wEGR7q9pxCmEQOqSc5Vw`> zlPbi=gl)KKm{qdg_rrDVUhhFcGP#Mr+~95n%k!DSFBrv0EZcskJDqLZ-m#VT3MQ_n%BkP>nZ4m$@7(nH6 z3mv!;@|xk632Y7~dA|zl_;~l(KROyR*{nq0_ISHafdqLblL+~B>1t5k`dI5f-rryU ze*09=7i4D9;`KO)hr+FHJ@C=+JuWujUid47FTam>qQ*DP?{M8G&NRSu+0i#L{Feg< zOdw8SAQT2Tx3#mQr|`BmjE76l(}p# zALFvK*FQCJg$D=m{be2>%YU}|ij#@Y<5ZFr*~>7Sm|dq@zECMYG>|Yzg2dj{Hj;?b zCvZw^JkYG9=r2gEM7Vo5;w>9l?}|mnI+*Ve8~jB|&&)Ex8^`62og5bdFe!uh0^R=x z^;;GRlapLWB#hhyk&%6uwEng{`sV~2ui(V!I;4ox{n}O@h%qut@J8Rqj5>HkIwm0l zq>+G;Kq1Ss0S^P7wz zC8eFkU7>Iya$SMoXJ&D6R&t%2HQWt%mM#h^hPca=JaQVvsDwlYT965xtu~|->$sOJ zWfKJl3=tRbUmoasJv%zxU{-P~sTKVOXfoygE-KQio_qTPs+%^X3%I-2DWLfd9S7Z# zrmMB1?a&1Y%E|F>YWCn=aZMw6J80kkywCE40l1#w(g}UEBLlmNAW^;)lzcPxaJ=+k zY6%n?I-vIN#KgoGim&?I-{Z{`6%|=oriXTC$s;0|PS5CD{R`7|xidp&Q*40S&%?PPw?#(cS(1Q%ApS?<`nDz+NewRW0~ib2TSi^K ztPo1@Sl8jLt@$$mhM284Ndkzs;=TUKd!Mn)60)+SNzqKq&7(p>kO?O#E5VGg+vL{< zGK%C{r|hjyWGraQnjau}CAzTkF`g~;sg*rW!YW!-CeTDQ8d7jWeyV~#7s8eSsPo#I zScu5P(?lED<)#B>o?ByjT1!;hnivl}lZb*78oVqn^5j@8K>B4u@z`25R`>8wmdK zTY2?mOBis-y~D6gTJYAPcj zTxLN)@ZwJ8hr)+rCy>Q?Vi-ZA&4L!s8dyTBcdAUg39Zc(ffxF{kZTf4l2-Op{CSeU zxcF9c+{6Ao?>+^-LXcs~v8B#ok_ygqt;xW5W(&aV zWxxvyxwkvG2I*e0Y|NrbCKw?S5?~~9LQcHM5B_WOvNQ(aYOeR@Pk`1wZ4|tz zsmoX~C0Ozp*v+J^O$(On#i!BOHK3K3uT?PEog!227v?9B3*=z^zQHFTG0h85##>4- zqWNr-z#ka7>pMwUdHBN>0-v7d)}pLkj|W#(lP`Pj6Z$ZRw)UEdqixJl5PP(IW!-1^ z_?*O^Uwz4hysCwJ=@oYz-$=E%n+|M>8=HQITA%4tU8B=qOfwmCb3KTuB;QU zPK@6neIF}_c7GFpY<7I&mR{bX)*0#g3|49{*>E?a-Yi{%elamP9e-BQBw-5{q&;D_Yg9% zWVg~}^qa!Ct4x!3NN0Fa@!Ig8m*BCn+cYOmbb+DbmMtKhjM{cW0P4yDcrj8IVkNwi zwEw{KiN7}!v)%EoyNfaYz$8i$S58K%br#w*783py!7Dp7$i(VubT5d~YX|{^Y7DBh zM}6taW~S)S_ZV%UO>j!E&CF*1zxAtWisNb-S8Gr#YeYrT(uJ+2$-Q|-2}B|=ufVXgiJ z`eN&n>PQGc2FkY{%E(EjU#-X3!x)#TDMXx)e`+oVr=j_gO1um9=L4q;S$3gkrGTChwVwzN`8#>uhSI;LmxLy>eX{S6<zlK zR<(8nsQ?R%G z(jfE&ZbeJ0+Z>iw7DY7$BVXW)xRa{%o-_NpO2P)LeK94yPB0fTg9=8z?K}3_8z(>- z5cy0;Ps;=gFnHzlC=O397e!SSLQ^%J^YPJ2qp0NK{br?)=GN|bW`rU;VS`rSClJ|z zUQSyMXREbltA)YT<-&fFmUx1q%V+B&o4Pe7elcc=?zNI3k=YH*ntOICpwOa_ILUeVgE^iLE77Ws17@fqf0D#u|l0grZ50_qkfu%1U>nY zOhL!F&=PdHVwhu*_6s{fU;)bd`h~dzq|)IzyYj0`Lfyl|Ec~5zH@9`4Yu@^{-ryAF z?wsog*c)Q;5XvkEmiNhtX7vfPEt%2Cn3;3MeuDY%0u@KXl8A=>gbar$?!f!&WU}F{ z##5r-iw6R5_lSBEW%!x^*1q%ZTw#Aa4{>`v{wW8uQCYd`$KPJEecuPf4DOKY&rrde zvW$vTtvh60f41!E7>0KNK>F^f%MXOE{$?6yE>&Ay{YS?|@q@nSS5t;b0{LRbFOZCd zMG8Jea&l@yVxkBohKaXL!se#`Aa&8af{JvIvnh2O<~&hDJTf3O^%o=%z&!NuL+^3Z|3uSM~U8s_LE{fuLEW zpayYze9f}AyeGnwA`;84p$mtQS8P;Tu1eP6(K7~1iSHanGFawS%)M|jb7zK_s32$y zKa>Q06}q`z4htBX$KYXkw32+udJX8hQ3ShlSi6dU#)~-SzEH4B$W%?{w!7VDwJtma ziie@4Q}A(@D8`BB|H91|F>{C36m}%~hw1RUP0R_c2!vqa8wfDZ^t2d0o@huV8=`rw zJJfZ`{*mS6T-k^;2**WB+qT$2CLpEwstA%GUMWGbm>lj@3XU(x9kqI0kW0l9&BUyd zumyd)N!zMkI{V}EXl2(rbvpVZCd&SgOW^I1(k{A}7)OOL8OkCIQY+><0?_2~fJdCY zC*zX~30QxP`gbrt;=Q4a!nybg3!rI!)&|M!Rf#IvV+UOC zFv37mP(T8g!~n3hfg41v5BM6t4i3@W{$oiM98#IQkXm?ayEAx#YTyrr7hifsZ zM7WP}j2YY&RajC3b=Pv;dVE!o?YwHm>b$!LKdJwlmGo5f6eJw44AG}zNa zz(ukCE9n1OfN_K$Nz>HA@|*3xq2`9_{J;l?5ewENS#y416wajM*(wYe|03e9*c9`t z^Rn+IF4bz;m~SnYMPNS6`ch3zzrPSsflyGj+}4pb?o&uFpL4<^%^%pMK$Py`;|iTe z!HZLKH}m9k+gMo0Pvsr8wXg&jaD>Vvpfv2+1Wz3tz1L{#=Dzf8Dl^G>k-NX%T7Q37SPd4)(6m`c0WZs#Gk%%*;$hS6|N0w2uJT zeyrTy+B`MnXLDfwbalo=!otcr@b-e*;`hR?p=rVEl^;5mno&|-KK;^B?GSAEaSBmc zxxv8Tu&XHljn_!q3(u=nTSr2o_ZJjE+R5Snwshlgj|nFQs4B>i=hZk`S`=}Te8oT~ zOLJ3OwslvX@9Ge5Y*kGzE-a)2;&L;y(iT|?7aH9}$z<-G6LU^fP+imEd@$Yv9yb5+ zPI8Rl3yfry%9}@~kJzTyo)6j(9zSz+z8QbizIju*TTpc76rI?VG1ci?Bz%#>W*7UB zz{@@9x0$q0t~sSqPzfKR&m{66XlmVM>g&*tA{!DE56(SlCCpWV*DFmPBUU{1VAgN< z-d}I@7UYY-*|Q+2zPXlbM?z)`&4G;OA|}#-kNIr?h2&IRzmkM0EQ3s~HK%wN?))m6 ztu61#!QU8)+a491ry<^Xp2khkB`D!Oa%`H3l(VzA`*&O7#uBfjeKVU2%78BXp*dyn zS!zpW!gz?sTZS>bNz@g6-D-FI7|HO@r z@O08ZY(~UbZ*9 zLl*X~7&E%q(NVg)hr7rbWv|c5`o<1Gcez1emwM&D(SX0Fr}$uCP4rr`(BSE)Kt|>( zk6Rf@*gt;pXF>M%;H{4bDnZYWPCa4R`p@@2Cyvigh4u9tD}p}nL#k;*z5JQcd{_Q3 z6S^V=@;n_}vKL*~YVY~F+t@>S zgi$$pSRu^G5e#D?z^lVK?mOa4=6;Q&2m^lyE#%@kCPmM5bww2K%ngM4g=lfQpCi{^ zuZJ7$o{w)YX&GrEw4G5JVJO7}cDS}2Bj*A}3Vo)u-Ny4h{rS`?{gIo@XZ-uaICEqd z-Kp_ntrW_lJwf{HU7Pm140>VNSdQOi!g7^xYce^vwSJ;3>B#m%E+c2D9WKy_u+O9a zg~V2dFgRcSj4N~GCcQtuG;=X;lGpfmOmnkmD9`&TXhusGtK=)xMfSI;U$$5E+@~K5 z0I5#kP4fjc2SQ*TD_{dr4~?iDiqVWB+tQ`e%YQ40H1u`)Ib+)AiG@j@FZT9ma-`Ah zWgPGP$nfF(@C1H{vMUVr($vomovWO9LgCx-sg<~#3$m}Ef#w(5cj&N#c@Y?3m@B=8 zK*7k@2EyYKdFOggB{;|!;;{jW3Tk?3trQpJssja#zKTKQ-gy6}LYg}>s@3jKv$63e zCh>D6@euTfZ3bhm3u?800{$<$6L7+o;*5TPjWzV|Ea3UN?Fl%~rH_O#s-=bkZ=2w0 zLn94Q2M6XhK7M8G6P!d+@7U-Ocwq>TaCaCuAiw+Zn!7dB%09GnznY8_20UXN;&5N@ zuW(o#F2>8_pj|BuPx(Rt2Ax9&^su0mZY)S=J1c*C1maW~tfRa9V(sD4Q!4+DOoFEk z2cg0FaSQ}L3jBMRw1EOWjqpUqBimPXUQ2Iye@0*kU0j7@3{_))u5Xfh$h()kD(vvT&ZIuq( zoJC4y%I>~4)h{VW9NrsqI!V2?%tWS&`aI(aNg>93HD}lv=CRctHV|Tt>uk-z_w%@# ztzgVSxbbT&osXiZs|}I2y3U>GT0Olc%D>ej2*fPx@^X6uY~cwqB?gl*$6o?)aJE!b z2Pfu_?*%a1mdvu!2lqT{c|+X%t~{y=j~|4ytsS7;o4Y?1oSUYQ4GkvgE8kOwZ#ePa zX_)_ZMsEtyPWZGAJu|SmkPs8T>L8O6LZi$=kc3-dKLp7GFXr|{N&B4pQas2=b|+V1 z5){N?7vZ|))6+9S^+!`XmCc)?0S?TBD4(Bo-f8Cga^WD3`+88EJUwwe{;o?>c7&YT zpnA7w!T|H?UdGMk3ryGn=#i0JB7t;K5)dFO2HFu{4-%xEnZzUbi#Uj@-MejLy+6+Q zZ+_5#Jd^-Dkn|A*39R}srhwLN&`;I? zX&d=x-)kM;Bq^XH!0VmR40v)FH#9~;lmfnegTOnesHifrjTRQM252NL_HSa}Pjp)x zA9%{j>5MqbYY?l*a;blU1C10oenA4dQ(x5%nO0w3J^ld7_K@!ye!%;a z&lfBN#97~eceGU02Ev-7dFAa8L$Qx};2X`(G}GqG#*pXH5{ZeKt>n1YDM6;=@i19K zBi9H#Y3_(kE3n)APZshdHXtcr^{+A#m@E?EsW%5On7X)#x##1RYa3wxUXFnS7ZQaF z(>NFU^mjx$wYpIXoR^yVC3%RWz%P>R@e>2zqjpWF{beB9o4$xT)#;_+e>7cXS5$4= z-ZQ|^Dc#cD(g;f4NJ@8icf-(KD%~aB-6h@K-6^S*@Xqt${R6Z1T667lpVyJ$4-b2Y z5fXhR)uq2?x_C*?tUgI+QTWHp|Cv5HmHwOw>qA(gtB3Vv_YTDmI-Sj+!kW_GXN~Ml z=PBs6yAx}$=lr0gHwe}FdbuA_{Gq%zLdKII{x|xLsQ(Q~$8)crt-Wp3fAK@6Vp+l0 zowO~iwD9MG4QhnbXMA~MHeyAg=7MrfdoFCUPRV)!1CPH2dQtOOHnw|&XFHXSGO0_Ou@eBG}~i+~jZ zivl#q5YXp?87Ac+&;aMlsmHhR@t7JAd{7|N03J$4c416fv_w){+scRrfO; zin%bK_)*-1QZ*q1i+nY;O;HlUV1rPyqe--F#I5eIzyfKSO&1I9i0ec~VKU;OTLKj> zUPtYiW9y3Ekym%pOKa$qN$ARFke-%CDM9t~{e@nPLUp9d_67Z3YN`(QpPl8}kGid% zI7bk~>6Jw!MFdo21V_j|ilnVQg45fp%F7Y^D>TC+`@g&LD%b^2_b04PuU^5k0>a}J zLs-JK>lyor#p&!E_h`nhg!0p;(R1l&%w+ghYUBn(LI}R%SIzu|^zHn69 z7b8KqjIIzHR(Jq%hlm7lMZ5!)BHs{*3q;h#5VAVqf!A}s)IZwi-AHDwxx{=|3LMV= zK3PccoBX=^N#30^w=-x>UTy`)1a9Q_I_2?yzT%!E?bypsYVft^SXuzt`RShnHziJBDhq490kY?3sne|#`M^$ zEVpp9%zfsT0uYIyQ-}bC{{z-vB%lKxFa@kRKga{Qgh1zJ2O?l8C5~U%vHHMwHuPt! z1&da8)f5Nlxqhz!c(JKqim^kZP^!rI@(Mc9-Q4c$>bn~osnL200cZ{Gb5}O6@5QPB z%$^9|Ad|mB^sN!7*j*Lmu8%41|DKwCFvXJ3)RUX%e|P8q6)qR(dRoqKBlA>ukbu6$ zHa}F~>a_eBd^wq!Ir6-_0;wk-D(R>Ma$Cel_|YGIizkoS*64l${*t2^F%t$3oryaH zu&=IZ8-383x5mcPUOl+65`}hOqDsMT@_?Yzh>ngH0kP=!IBG1%g7S7`R@VEvx$cgZ zNa^???C4@;9fR=2Kk5(VU-s28c1BM^Qkf1sMg(LjcH8=LC z|L^CenOW`l)@g4mz5o7&u_I zP*%|kJ)(a1a4$q5L)Wu=1ChfgSrvl0!!|Ma-j&@+fuf?!Rd07wX7+lckC?qvy80+w zuz&Apw!bsK1*5A@{LJWi~c5GYd=zsXq?>xMQ82 zWdyD6UF&&@xMvcb4`Fuw#gEG-g%1Gt23WP_!}kJT(2OQZq$c>!XB=r}7teN; za2Iqj5p-`P;3le#{cr1Yy)&$!QcEFY=k`P6a2pxcSVm1k!|q5N42L_jnqP@}FwY?0 zvOXHli})G{h;ahdV8CEU=S}*p#Lr)R?Q3ohRDpi`ztLRJ_a!mlNc1p_w0sZ=GTdb~ z(4Ee-ed&!abOI(-C?0q1zOQuHS#7jA{;iQ*ap2YitHF`M?)K!2O57`J;bOIHq)>?7?>FRn(LStHa2* z&Nwt6Bc2P`Hb-nEvwmkql&7R*2A*Gl6_!}rhHPAlG2pJi0f{n53gLJc7qKm#mxbD( z3kPXGKRi-}j2KG~cd9y+mJa;S96zwu4p-Bqu0gqEA9{~ohhSe}X$p)0<}Jqr?Sknr zN+`klP_z9`mcc*LRyj0_N%Dc_?pype!8J~ydP?s0zoIR%1n+K*Mc1b18E#9&iYVO6 z$si)%Porc}mGI51g!*!%V$Bemp88S*Te<Z6c)oXz zx~b5#0dyK}ftE}RRW5B7 zk+(lwZ!9a14$i};X7VMS`{S!0h6_$})YXw7H9oDX`O|9Ii>l57t~Y$3XDH)?vGr0E zA_?8PCX}`K^pGX%{-sFJs=2ralr~g zZ1{4RrUL=yEn;I8jg6gg5*?8++KDbM?)aMq?Y`IeS5NV_B?5OfvO@eO)Ycv?)cku}^!48s z7E0CLuMvOW--rf7*CydL^^L(>ZPX0| zQNOF$JXCv-8yj(klv#H{CQ3@LQGjjyoFav?{&Jn{lO=ad+)wRHf!WyJ{;XrGYH7V(uzNiSzd--oPivX4 znVK+7dq5h~V0*Lvzi}3)Wh;j2SN(xRimN-H(BT{=h*IT|elP zM#zHL`%H}980>dO+%PoK$ptwT!)#`k5e6#!MFwiZnO}t+x?YkyQ5AjIqDGdVMa_=H zYTMNYm0t|aLDzUHWYJz`=|9HLuqIBiCV^U(iD;p4rKGX+U^s8uU6%EU?V-)xY;OSQJ0Z;&XmPHDO1voN8 zx1sNCP4%n>CN&Kq-tvl5#>Upfz1zu}BF)Voc6LKQX(5sx+lkx7V)B+-IlzS+O)BsQ z4ir%?E*5a4>D3`mFV8cWg#FvCzC2ASYV<+L6y585JbF_LfU!dL`m>%aVTgYzwqaF; z0pI<00|VWCkA#*S|EweLb7}cL?C8Dhru^O=tPI!OK+4O{#~~xju?9B>*06|qq01h`9aJ6fYE+bZhl$PXf0)-9(R^Ir0_xh0UGShMQ_a%wb1lcf+t*| z1(dXa6Hm1J1^Y~qg~;#0dX7F>sj2!y>|0(TkB>FuZ0&97$~roXNJ4}$h9+5ji*&oS zdLxGPK9tnZy?6n0Dbf0`dTJzsLePA>AGl!eja$@HdXY(b|T|Ke8M zYZYYvaotf!j%%*yf~y&<-ef|B)N$>I+rM|a9Qli8Y~##H7AJMW`bSmISzW=ZL0}t` zs4qFat@*nO{CDdLBuq@}pYbf51;(qxu1tLq6s3-8nrcE$XW8POzw)c34CR&Klx3pL z?x5s6sf;3bK8F%eUQ}AaEn~j}2&3~+ich9YmxG?+foNJeD_~oPOwhM{9KdynC>8)e z+=76KL37NGlC~SSQh43lU`pK=rrt2%SKj<(bJGA9}a#_n(;HPr(Z5`PQ+!^ku2 zAZ0L_m=wSuVWgVcO?EWk18^6lK_xb@%n*Q(w3pk&XsK4YN&TOV+`;wn459s&f6PTC z84usm_G+UGA*nFUlxT*!eUOiEylEiw1Y9TO{=r;|VO_ceb6rhCoX=lr$G6Q0-{02- z8^`Cip}nSkH>bQ(L*^WO-9d76n9W1cVo;!m^+-}-P#*CE?K7o3j*Qvi)c^@~zZL|_;1yt!1DW zcQ5<&ZzSboE|w0J1NUb~PCL7~Ei1~BueSyr(J=TgwlvLb0NL--A8P&_h)D6Y<%nqv+n}Ww;b2#lz0WrsY{uLk9R=DoDZw z&ysk)KLL$r;0b|+3S6b;qCE+m!^YxD;e`!Uwo8EuE9 zP?0!?ofuEGG*7X#aItt8eyck(lW)?u7wN5vD|=Fsj878APHDj~p)xF>%!NPTRTzUz zkcRu3ofu&nl3H%aJ}7le~oQW)%t%2n!fyNZk9$1uP4F#7JjLI+72dpxhn_5$s{Mym#f}A z>h_LV@oFnlD`;*;mzQ_LDf;zX3aJqj`Bb;kfL3z$~E!EL%_C1%j&I6Od@iz#KiHtpiN()`_5FiH)Swaqelw)NoI)zd+ZeZza%Vq zynXIW1|uOz#Q=0eIDs=gfmoaNyYqnQV;>f#E}G$5><}|7^tuF`|Kb~Cv9jYQ zjZ95ZMm%xkbGrfqB_!^n}$)m}Rh*b;?}D(zawE^fnll-q{cmwy@}l0KlGhZ<(seJwG)I z)7b0-sJ;;l7mk_N*hqwNM8FBa_{^LR>c=my;K?jHdb+C_X$oU6Cx}8gayVqw>2&{n ztChwQ@AdV?5X=Kk5gjY<^plUdbixwtQZ5>&HoC#C3|`SgI&;=Z){H-H#sMh0qC0WF2M7RM3r-2n!p*`6kLTlWqKs_bX3J;=h-oLl66zgu6dL|0|e!g$E3`jJ2cy+PITH zAi&`>EF1Ap=igT{7PhMVCSItGflxFmL3}}eU(s?0Sc7*#M7Eyk0A8lR@Dv5FZTJ^^} zQ+P8x`x0OIyQ0FxPH%ycus2s!E5a;nGrmFCcSbOEQB5t^G$hZ2hr=&NH;=}X3YHZx zNx;wo*MVPX2szS!=;wAk4ZJ26z?~vL6rVydCbRT^zKm{*H6X6iBXAo)czzf-!>BV& z*)~Da-kX~;21o8le&R9#@bNcnXunDS@h>j_r|9R@%*~*sBXJ9h=yg}$NfMGZ&2)pl z!$F8^k+62Uwd27Ja>u`mv18G7^pyTUU%`0QZ`45Dd%V8gTKgk;H1w(M z>p5h`Al$W&Ms(et(FnM&s1Jo6|!mgD>(+h=in3wH|2tBUSm!t zZf^fvr91+jwk_HM00{V`=$4%um=9MP$Xvl;qu zKp&wd%hwmHE^$Ha$5MtIKWa?Xa&#?*~-|pEL*V;Os1ly1IIz{J@Or-aso1fbgn=Q;1gsdIDZw*aioecAVR0rZwTJ zmty63gJUOHZ5=KtQ$})UkCJ(KweR#hJkjjz(7AG^EKr9FAH9#w;B)yLH`By<(tG;) z=q@({;xO%nv6du>QJwy1Qy^{6o`|g(LE3Akj?IYXa&@J!`Krce=O%gEu&r_^MaYfMcbkTrdm{O{T%Vaonf zeC7zkat8-Llc7_Kp-Zcg$J&m&_RjUP@{SuUIujJX_TF&HIRB|F#FZ=Bk|prU9xZQ! zkk_3`Qw!7B-ige`rF?mLIk5i{7aafr8eqjt{`XJmq9nld33mLE@NetX@HaT3}BZ#{r9ri+`Gchu`oam6fbi z;KD|(YS{3N1K@$_=6wK;LkyCeP7NRccMx+++}`6Op}(+Y+!KUfj=A;phtKI|-bq#c zX%m1hslg?Tm~wQtga~=5QQ%Ntveq?ZkFvL!~C@Fgd(@urQw$NysF zBSht1FO;WeTIY3qY>xLOLd?v}jI6z#v$aNZ93A5R2dzX&uhSM~Sb^w7rqj9Dh2L~g za*u4%j8Tbtqlg!Alv*ZVOYKjIfZ>eBc#!xji-iqE1^t0>_tN8U6@aU4dk-nBUsFr3 z|7jHxwSudC`obUZ6OkTKXs4{k*wz?X^l`-wP1GQ4#5A;e7A|9g<^5;XOK17fz5L!U zs0!%hgOByn9MfAtWo0O-v2^>llKacXL62~xDY%J~g|(e{gZukjm+L-pLYQG3oFBrK zJT||e(xEu3Ei4JzA}xa%!9h1)B3iPw5)?0e3HoDe*$VKH2)Sk ziM3AKOmz8feUw-?;NDQ_vsuEjvaZ@Iee9BDUYD(%<1?l<>67|e^g!!Odn`xi`7f#N z>A$z|Q)1CF>z9%{?$Z^ddhEW@h?d!3V9SJ~cX2;!-^Cc4P=^d8xv{WS8VM05J_o-S zHl5*b%iI2amDkT7u+tF%v|{ zfNBgosAs4-d)K48J+!q|lJN<)2@f2M(bJMfoE4Y>xnHUNf}qag>xe*%@g^ml7;t4w zJ_5_Ncm2toHlew;+*>d-C8|ayeDrlC)@h^Z8l)bQN|ARgCvOE zuk>ZXe}^CvXgwXNk6e=Z@}<5ak}0s{(-?Z{!0arzju@^7yGP9$2mviG0W~XBKyJ!d zIE6@WzqAS%@PCLG?RiACpmo?rhr3GW0&ss+IM^Cn9utuZcf?=UD%0e@SAE{#7oLt> zToh~(aZfY5nPWN>r8BKZa7vFpA54__Srl9VfeMwK7ZMPpU?WS1xTuBZJh{(SvV;(w zpz+_19?Cp^DhXhgMl`SIfD##x>GVyP5q?i5MBOp@ZV=+DX(841u%xI4Xz54V6#5YpaI0iKkm>)2#)+``#TEr`^# zut8y3CaN9&(Gl7ki-2LD6aQa z{3|{*8m=th+@!lQCZUuju&VL99R6eD$1(;7E{b^;X9H0k;HvrO94;wR-^*nswMiw z;7)7wgaISlbAhn%u!JI{n%;POJ9MQAXg3Xz3nc%k@%SCL{qOJPFcP%kt!RwiX{V2K zg~iAdt9l2v2U7r+n_wRR`qNNw28gkuhDyYM8<}|c7NVAIZG<9({)S(@K6_xH&?*^h z(Ihvlvrx6jn0>`D`BG*bAac7+`g9Kl)*nhruJT)3|I071%92ZVvGF0{R+%#<$^5U_ zbo?{+_QF^(E>LnEnV3raiHH_I{Ve5omj{K%@7R9h+g*d#1L+pugM9vUSe;%qBVZUl z(fL(s`=h7W^JIqS#}~9x3EU4KlAH-W*Kzq;Y1~GSDxqU1Kl;X2I2rw-Kz6*7!uOve zhm1KNY1(@(vv(=VvR3T&>%3_8kl}-kY8&=Tpx!|^;e&@Q|F-W z-T77R*bVLw?IYND2A7xbv!=e*(E2PDUGb5blptSom>~nWc_1vh`1z{SA-iwkOZd#@ z*YYyrEc0LIig?bm*HqcFjE<^5pBK8CXl^ZiwnuTp-n3r@FYi>GdsD*mL=!EE|F{xfE~9j9=>K|De^;g#!^}oiP9&tvUChq;ShmnKWovmR?n z6XvR4L|zw6JvR_{xgWW=i!{8uH9Jd%>yS3^)Y0@IYa{|2%MXyso*ALhHAG_`eqoZw{t8)b1kct)WqoIjmT=3Hjv-@9e zza$`kOGf)NUCKUe&1m!Y&>Ws!pCzJMk|kZjPaIEBh` zZwKf7>^(Cr1Bgv4Lc~l6_xlcp0~IBm@&7JGy(x46ALBu}c#Z;C5hOTw;kjfSfjCpT z|6$Monwp=Pk|gY6DUK#dhmx3s`JG$dq2Gfz-}2cBr(}2qrlgBuJN+{lKLbttht_K|nR*+6%@^%x>TFXoCBuP)mIdL~HtBxV#&BL)_%mG6Y{dOud{ zl-P#{-zug&Ox@01)Qt)2AwSNq8my2G+j5p)uA3%bQKAGR0fZVEaz&D=gQ&3x-?Crw z43TzZR5ihjsSPCfaQK(A7P#DEhhn-Du3Y^V#|UqtjY#kxR9nY#yv%}`7h7_!m4C({ zGd$eC{6;B;>(rZQaoxd!D7yC^93mNl-X3ptU})lZ@hT=I#-{RnH?^-LaMwsE{cFDmzC+Pme;s%)!nhh5t~1<)OT0G26uUyz2)W2zUW9TftYaVpEXTQ z$lo_9C!t#%?qCN!;gG6iLF~<>T`g=gvh|7Ng0ynK1DrAu0kxFUW!_;+Nw-lRwV5uZ zKYe&e9Lm)Rh+#u1S3a|$9u&Q}+I`J}(DE#G9yP!mj@lsNBZIRF0Hu>M4>rWHHA5pr zCUSI;54Sj@mH0->BN%8iA(&alp0C{i|MCjH`pQXPzl&0FrcN-1Jf4v-3qTP2YWjs-xq{z z%sC`Wg8N2&*CxK)ygU>(dW04O9004K_?FP?V=y9SwuzUOir{^JxRBGGOiGCHO2zsO zC#?7EbV8Y$_O%lYKywzcb+|A#Hb&kvLCq&9t3=IhFGjvc2Nlj*t+$JYyuFP0r0Oh7 zQ7VOJcaih(Ear!ha+Nl`kQ)W;YpbURi_9H#+9g&i@!SxQVs)SZHHhb=0MoX^@qKKIympFm{WhC;TSJXym@+k)LKe7U8xk$W zorJf``rBDRqQ$&^jV62cB3~5nn0oY6=hwr~LN#q*8*qMEVL4w5hb-yv z(aC+w^wvh$*bxjlY-6okyqn7jh>1M;pw)bKV*M$=KxlQ1czSg+fp*p2N9pK)W!HbU`3hEO>BFvmocQDC4Rj_my0j6z^S9VyA4V7UX3F{0TdjrIe|~O1kjQ z!rtRPd$^iJ$`&RK;;f^~?>r+@Z_r5IHk75rJj4-L_gboi&pG4Q zQ{PNgf6Ym*%oLM35KHaL@tWT8(#X<1?)&?X>_S&g0vGfGzm3G)q`*DTSmX2%980R9P2j%>6-T# zfl1BD)_LL1@wwgS5GpPYYm#{L_tA2TjVCt2_xuu|B_hQtC8Uy@*dt1qk9pV-dS-uB<` z0J&kL?HvC*MHsk_4lr!FR@1^M`QMytTQdEx1SGMno{2}1Wv!<({(y16f}C3u zBW|=;syqbyA~Bgt^3;*(C-ivEzJR_J#9Q^nOV?5GqQ-Hs+RZ~(i<&=oC1Sz+TY!bp z)WL!jNCWu-7eNr_V@{Bx>S~YnYRNRvid>W&9CH3i||Hgv*b64*ZC6Jyjm-uyg#k`G-%2>(ukh8tg0Q&SUm zM9obYz!`m!#p-3~1`>U0OP^j^hzKKQXMw=U>b|{;YLi8i`&#Tx&op}!lVV)m4=w=*P86>CWw-LrgyrQAo~hFnU757l*BCL;p|QkVwd zNQy`WdHc2$4w)ttV8E?1yYg%4{n{BNEhF_hzL(T$-aF08lfcSt@zc^_2~N4$n`;YL zSxO<6`Wd0#Az8Z?d*CW_c!xwAU6(^KNu0o`tz6fh*xZ)5sFTRIYDmRV>DX(a7Ab}o z{FQVU+{1~MHGk*rOe|SQJ1iaUTgC8sOjDRzeQYO-5~r7vYlq_|^WZxj<6+*>Uwkf( z{dx|(I>&TSj(9i<$#w$+u#M+q&fT=_Hq?zv!pa&cJ0HY~?aENpUB_>)` zR9y~R!f1AK5fOPLcqABoNeU0FP9EuVDPhz4eR8FNCu&c`RZkAm)La&0APk)|lhi?^ zZaCY2YJYPieEYL!V01o!!ql;Fe0d>dqQaUx_P(4G0IPedb%21HwXE4k?#RZ{|3ENc z$lUx89ta6Ca;mj0s~%h^4}KV2nlieYe?Pyd`e~e=-+T=Yz=Q!pQ-Lehu%>$Dc#a5T zJ9+gTLW%cTE}z||3NM%QRDKY|UXG$U`}xU}mh#tYNH;5l`05@Mz>yslou8k49?B&K zgS0@Vd7N`a3Y-Wp4MHvb3Q^jnr6+X9RgTfX;N?#~!36p5posTr5o23kShDoYEYQ`` zczUk#bs|}v%*MB!_P%bIJ~+a4Cgp4;FPmOkY}JJ zKY0!LM7kyJ-ni?+zDJD0lSCJ2q95nCyx;&a(bPqk-MKyc-ZE?XYe5|j0+v)2K-v96 zk0uuQ5s*w};DkYfqeNGR;_;aHs(%gkI1Fo~;(ODI{{L3%bO0c}m)tuQ-pUxJ44UZKkA8 za#HZ|?x@?fXG%s(z5T`x41FdDOtyk86@trhf|}@pEtQa3BYljcD^uF&p$rHMHQ;du zDCm2m9_0V023}GUl zgi>DKaocfu+qqo=+s;D}o(K2FYlU*yocqRuvz4-!wvzh9GD6Re={sId(6GH+0|aKb zO5M9|G0&{W1aR|8D&!yE13i0E0Wi4Hib~9#Ll@5Xs5!p&ot%kbE@}!JY5z_?8P}!E zk#irft=*+zY#Lyb0rR%@GV~>;#sCi^*a&H;{)92>CApqoBN-pp&3=|SJqmXa-SnRD zcRnNMwB=FBC=h?#8={npk;WnXaUX`o~eXJ}=j|6Jh5x zQrA#Ymf>E_amt)8BieZFzIuY_CTwugY?v8ra4wvzdR>XsoB(e<7_e_AXN$(*r8eZd z{vM_Yja=%|M=X}qTZ-;wA!j*oa+r$<{fc+a8t%B;rRD4as_j%e=KSVOq4b8 z_XjmQYz@X@ib@DJGV}HnEBq(|klq#J1}aTi7-TpFlMxLjGth7A6i4yUahBvD}qyTrYqs1k!W96>Q$ ze|zZdtozE>6h!WT=gk9%p#y=PnsV0H0}h0+L!SEy4v0krfDLJlntFL4;Zst#F(#l( z30RgWW5msW>NEoMy&O6h0cd!^YP&{|0Bz=2bSY*i!@8CRnwYx!!QtT%r?4=U-tez| z_}%McdVRwW-D5foup<)E=mt}}^Zjq@d!h_kBfKi~d>VO+W8cqwdXF#LU_5p7 zh2XRMI#n`m*&5|pD4spNFdnY9vu=Jz2Of77yi*kMLWnOhkYJHt#GVWjO9g&x3kVp-16XM<0h{j1v< zGQQB`s2={PM}5gca^)x=SVyhabDxZ(Fn?&sy}$prOicvAQ=*ec>A_{M!z}#WIXMg)Io&P({Y{9F0h-}vdoy4@k zkQroKZbtVPt>YUnO*e!Vbjg+&uT)ne!Y@{-s9MX>0-k6Ho~*QYHFQhS=OmaKusdjoQ5%cbXhOlIP8kCt zHOYGo!R6&TNTKfAm9Dv!1>~0~^itW1I|gqAL{J1zrm|^fVyNIM5IGs%^R<2Sz=;VR zTEXHAKJL1adn5kf*863?V<1A5NS~1qWO;=ac^o>%yxd{GundNi93}RUc5%1G)^G9 zna|QDv;S^??*8S}{vm0A@}}?fvTGCA9ggszq*4A8bo}i@&vmKU%Pt=#hfp(Py-!$` zqvW^yc*m*7}0_wFV!BnpkBMU1zOb za|`7?c5ybWb|PQ0F7B?8T%n#k34?mI6GB=IQdq>DIb+Tp)y8=?V8TN2{<#Y(|4(Gl z1Ffamw&zzI28If9up6ze1M9A(8o9Z+{+h1gPVqa6cehZ9CK}_9c;)5&ynC*5-V)s2 z5?tOVcj6~FL8VlEr8vf3WH%7*ad*UZJl&;o=+qhZ)h|c7k4dBx-<(PLa1*A?54>e( zvbfSdGiHS4C4>(XScZ2@vT=g#D1uLb5g3U&$ z3rG>iS$}}dEf$cVXuv0L9Utmp;DPy~W(}#Q6tvA7mp)d$AbeplI>lC&q(Sz32M6bx z)V*m>Q&V&3@K8`#Ur4YmgT~O-*ce0f^_rc7iz_}V%KGl^KEJjUBP4M}RaSlJ4-xdn zJQ|iH+>CHlGIi``x?vj6xbAQ{y7U9V;?KdHkU3 z3ZW^L)v}~~Fz=O(6sGrwJ*K9WO}n(g*{|_$P#n zfqX9{Q!K@wroV-}5%@23C4~1OXob0nn2gnt(b=v<)OSjF&DnE*FMJFxT z71ESxqDu%v;C#(Rgz?Ep)yY^?>vUp|Z$R|cQT#Xz`7?Q>z=*`Y8|}Gi;7J6zc!syI z)(1mo3{?SH{spDJgP&AS|GZM&OiAWtjjIf?q5`-f-$9#oTCS&6&>5BSshq#MpkKuNc-R2i$Sb{bS`%?W=LqT(ZX4&+;1!=+|x z;oInNX^Zfbl$Q66-+^E64FckJb_9%ow&$mrW!36R5Zzy20C#YDk!b9!lFRRbhx_L3 z?B^S*|1AX^AUI|N<;@@jO-y0|N^n>bwJ^DEFibQpME9pBA4FN8Gj5{;7|?))YoZFw z!aJ@(52*U20i^~Lh7?h6hXk-b<%h$G3{PHR7UOqiX^eM!y`LLDik4Drza(?}U%&9V zY&zgth;8;2eqy|{v9EwZFvSqS+NiM(YO`pktCr`4Dzq@o#>>YTf*R>owz|Vk-)b4i zCagK|A>luNPL}ElWa3SX&<3ub3@+r3g?(O@37wP(nF>We;-M8ojEJO9NTw3729bVq zaR;4uY&kITizL7y5dZeqf@1e%IA;3Elv+ZVKAc;u8t#>3#1BBxyB1>lrsTpGDIiQYQSm#u4%>pOS(Dmyv&c zx3aYjgL&m?>^J@6EDBtfS67m>I;O0};@2X~Q$7hAGr>~XXHg;Ztw?|@znY3faWTLw z^zk^6<)nsiZtozwV=sp!Wr3PmLH8ubG-4;m~`@mOyLae9%T7>OS=vE%zMK~eEBfi&=5%_65)0lzg znEK`Goz}G0aHl$%wXRfyC)AuiG}22|^NZnXU9ZySx9xhSGFR~lcWqMK18q)A{f7>^ z56m_fehmH9!G&lB9&wNdUJeOMZnM7nSe(tQ(d`0BxH81JJw(wb(W}niU9p>&af)!z zZ~Fg7(>b=s)plWcPi)(^)tHTK8x0yY_9Sg=+iL7Kwv(oD(x9=;#(C%Y@cxB4?z#8g zYhBlQ)~=fIe~TPrY$G44cCaE45)$GntE#H&`@=or@;ED>!~ZurEsUv^l<&`e!WELK zkfT=9Qu9Pj;bha{v4B7uxbRc*HnjL08dy%zZmA{(-`%4@c{p+CLM41H z*RJNDHf?MXgnBedy(>iIHzAO5F@xQv%TI#0$zN>Sra>>7C?eUxbEM*4&g5AJL?2}n zewX0@`~cf78AkX7^ju;OHpb;106-W=4*&+hf#&V00u4}_BRV)RT`g+E0#k_p6*3@b z; zOG^c1W%j=%)8_>%ygh4G;O(4#eqSY3S$V2N%jW=(YtO#NqVn20)neXIocAcQWv{K$ z>N9GdN-Es%7tfS%Az7@t7GNjTDq>?@n<ra-F|k+HNmTh%cQk1mJj@GeqhSezLXc!3A?UdBux?D+_TV6fXO z9iXr*1{BatVhcikU5FtO22ZBuT$ zt@>c!L%i~Sq1*NAIZb^0T5lNDsAY1$z6*P(xP0#6a-ZW|ByVtSmd^bVMNnAKsDgXj zr5E96CP+Y9>09t)1{$u;=EoYegOljPn?3UnT!d=za#P>%B}AO+fPXsC%L=K}r!&Q? zhLY6C)seSBn6SB^hEB{5Lg)}X(vS+QA|KM2HIl;DnuW;q5W=bkDxCrQf;SsjnlKU*E69uD+7{kfX3}+sHA5R8+|O`~O2b|JxNi zlX$SKXNr#s-ElcCUW%ZpnqTI(0X+E`s1bkvCjTj=0n>O>i>}0AgW3545p0d){sWA^ z;Fb8OlmAwo1hgc#n*2nEJ z*oO~7b8mEfT^{7nv$Bp$ZC_8~gTh8s>C9XFX8x?R0=-s?#d-xd^oVe0!S)vFv^?`R z%zn{>b?wk^Pw(#%z~vYRMI6vdDBgpy2R$7OM+Ev)-MBEwzsUtHewIcA%6WnTC?L5S zakAnaZtsg%_||`5Q6TlP7CJCsk!dA7*GFY9|~!PgY%7RRXuClG;4A0rOgpWQI;LG z-VCjn!Lah<&6D}K7@MX(qb{^;={s+g1|G={Zt-b?;^tA_>TN(-lNAk5Jw=lWnTyOJ zia&|(peMDSvHsB0ahNwr{h>j%4uLzI{Aa^m0&{EFt9AZkrdNKyB7FLIuW^LUp6^+cb@e8I|BG6&kj&l|b*L+>Yk;! zifYE!Z$CTGzwH#!Zyte|$i6@#+m6a0$6GL2D*Ho((ries!(bTq<|NiP(@ZbJqTI-d zmKxkB#f0$Arc7WYzj?ETAxa26YahQO z`+oN6VFv!9xVG%eyToMOPD`?__^UtpSVtRB={$=KpcH0aZdcW8xZt=hnEG8W) zEoER~!(in2T?aPKOK9a{Puivd#OLDPzyKf-JeSF&(+dehX5rSuR#iDbmauJ&Y&5;Q zFq?G{7_zH>Aqc2a&IXJ`Gk{K5V8aUgpOnR9UY z)N0)+GeBWb>nlviz%(iC!p^c!;^sCtdR4Mn9M87(kV#ikDu{Ulk7+|0tzO#e>S<)* zyP#ZNhWq}g+)xSmJ$an(0;I#x3SCf|Zio-hbBCLLV7j}!BZV{&W!k$2I+fVBj)s_UngzL-j2_%AwJv zZ6t~Kh`tbGy$0N--fRvk8;*V(%7gx>c^sir3xO(Gega5NpHD|;5yJ2Z1uw;W^H8Dq zHwEuXlAeaae13xY4Ci_2YPEbf>PoaJKQrL?Rf+ivsUS}I^*bVwp0M6}Bp0LUJR)VH zw1~o~Q2NL?gZ4Uq3;3dtU0S%;2vdAePMi^y$@wuW4!JhbIop&~2hS5t1 z0xjR;&bkqffnhZ4>##g0?myBc*&Z7x@qWhG&}Q7;ICSJ_rS_b@{%x+=HMIE;S_Q2P z=o5-34|jFl;uBS%1mEqkDH#*<+Dn*f3$v1R&C~}F6u1Pv_w=;d3gq&-^Q9Dm6(fYR zO5rzCXb=ExYH<_28UjEK*ziiD8od7SP%hTDP=zloapMVf3H=M|p?$j_9u5T5(22dj zkdcYD#_tUYq~IKE$zE*qLrCd~=S6#tFbxc>c5NLxFnlYo2A@$B%{f)Vyby@x+cD4o zK2CK7VmXi9s8jz#=u_BrfQRE9Z$9|_q1t|_w%zcYJa!rx;Gcv@siz`);?9$V5+uez1pCW+CzL zXjR3you_HCxCoqPqef_`H2>wityYKv( z&MG0`%#oiA1pjgr8!p$GS>X-Vb(G2=Ba>C}#=S^AbSWPEW|1zz^T3XW{a_&){Hq=f z)=qHV`uH1qJwEilXYdiLnH6=|)h~p_ds{>Y@!*lj7k42ePi09P3UO{~`$h_jW{FQN zeQ6e<$##)u^u%e0%VuWim_b1By77ajC+7XLSwyJW+{h-!NrJ@;bt;_jKEF{J!R(}K ziN5=2^AQY8>mV4uKB4ndh(8}*i+-;h6T9!EtZba-aX8S1*abeP>dUn{Cu!(;yt zrwm`4tbR(qEZ10Xo)Whx#%#zyb3=CMpCTvEA6ndxdr(P9-7Ea@17;{x0Lx_X*$C(@ z#06yEkDs&w2>MWK{q*#yp|kUAWTX!ZYh7QejjV@91F-k2#@PSuk7B1SVehbxc#f#Z zAHq?yodk>2)SMjZCy-po9{MLJ7XpB02h7dIMav(h3Gflq6gxS6HnX>fo11ImLWRKM zM#rXlTO8=G&W*=`WD+1wt2kn?_|Ousw@cUit&v=&37P!$)^e@Y2iK=fz?4>J9F0XF zNr{hsLz?L0uIyIw{OO%Dn{F*(Nf1Mn%k(b&K6c5|W_y>|!(}V#T_3s1sR89s3l? zXOi%B|I(|K`?*p+Zr*Tah7qrM#s>bDj)k?lsJIFLcb=D-iy4Vd7ou{@5ELM{X83nm z=H!Hv#$AU*WG13`geWmPo3%%b+@CIh(XfOuAhDUM&zD9 zyK%F8Nw2m?jR>{1F|z<;g*}FZb_X~#0AHA15Io^}4Sm36E=5(n3FxG+_LptKBSO(k3PQ|KKQ(9f3>JxSi z)R-4VeeqD!dK^zVu2VMX%2v;FIA#I${G1B&a)M0^6Rj@?VZt_F&>zpMd$7pc*wVrQVN9mFSADAT6)@XMGKZnO=++8O5xtvIViMB_Vv`&9c%K2kOOalQwDJ&S3zO48laY!-mEmv11iJN~-K;0gi?` zGAI`n73MQjVcfKPX0W|22(ovLnLXUv%4G`0ffY8e~VZcl*Q1_>wugjv; z)zpBWLZ~vy5~H;c;}b;OhbhnZs4wv6sMYgq9)k6+1bm-IE{_h_FL(9X3sn2y$pgTv zUQTlJ9FBkfkvBPmdcCf`zaG4jvCQ%S7K^v|rfVZze)*PPEO7E-wAMOZF}<8jKWh5~ z7x<1(GB!miBAH6Ibzbc&*Pft_#m!?1C@HV9zY{%vOlBCHJ64l;soLazlyE#{4rjRUm=A3)`jY7(x@GdO`pzGvlriH-8D*Vn4NpU#!}iU2 z$~TuI;dsa@!ewPXu|RP`;{3PnsGCiyFM-E%S7`uQ}q^rMno7(UzQ6(&Sty58v&8_w4G(hz}Za&3jf;T zyBu{nSnOxq1j|Re(#gRdXoP?GD!D&;%96xoPt2@+TRM|_=Mp&rXW+jf#qIQmiw&Kj z|CN%GVpVcyjTzaz@tv7ljSojB-&v@_JKXMQbuA@Zsw0syF~QSW^1RyBM-RMN9f5e; zrD(`xrKK@zO+>!_+vthf-)ZTOk4Q*Sc(?NDtl}UYf>rAz5&088ZRr>Q-{htU8Asv( zy%Sm*FO|sZ42WMnL61D~8b&0r-Kn&t8h;Rg>6svEsFwdf&pr^${E~RnRcGLQNHBEeD6BXZq@(W>mY~Se^;tPpB2O; zw103Q!EE-HYbFShn?OeKCbestG`h(T!a_pf4V<+k2Mzd_ltMzJOLcj}9TzWuV8p#C z)NgNNH&ydRN7CavFd{Rr&fzb%&({qLIul9^N(B|hWB#fDe|wMK>#niFJ5={-R5eHw z_XgO>x06*x`^ui6RciXRbyvQf7tE2k5tFSq}bF>+y_L2_^J+%EpFZEn^s!Dv){?qFXS*qSP+?cPj~XY&9~1SZW;F z%eg5+a$C40k+W+KRb>x3f5xhF6B-5>P7$wDIEwWQaXLglJn1zz0%{i`NtfgP`V;DU zqC1VtTpQ9HI)vzr&vLzTA4H+CnXt{?Vp=aaPvwa3FKx%2Oyx?)h2?ETS4tu{z{yYs zOYlX4lg}}SCM}y2gw!i(+fepvi~Mocv@SIqVc7bdIHh!Er7RjFMo>^-ew3Vj5}t}@ zL#EUp-hfl+2~@AsV)VtpI2#P`@&&lu=P7#3MR&cCz1Vq}q2r&l*&1VEXD_U&fkr16 zfn-V1*HlPFTUTSM(&PGb^TH}JdDq?>vEQ$r=?Mt3Fve&QJ&k_9?(PWj`;}pOMypge z!Ajz)SN=Z>09{qX?-JQ3Rm2Yc3vG3?M`IgB)*FQMg& zh{yNJg7*~-xs5q$bJ5})A-QLeHs4R_aYbk3Bt!w+Yai%Cf03B`DG4Pd_C9ii0ee*m z8ymV=BYB{pEc99lBgd5j+MgS_>Ec;MYs0i=7Y8VqAsTr*eM5x$@$;v&{@_&p&U;P{ z2?)^1mKI-pSre9#8Rp~_fX#P?*VjLS2#+S0puyfaB3;xEJM^koLtoKOLvLGO&mGqS z4)}*gwJ+5`)3hxEN-dDc9AMocC+bUe`<0Al1m$yFjaB%b={~4JYe%l$5Ga65G-MzgPY_g;U z)pr&FgoH<2I%zK1ayVb5u)Uv3P}hxLIf$@Zea>K}aw@;l5725RAzJQ81$3RKiO_Af>75O=(3jGO_c)heH%9(R>`U70%~FatwJnj`+*NdwB@? zHnW6zmhpE4P8A_rII5iragHbTB;9!8eL@6`d6cZV>c_2*Fh|1#jiiXXrG$w)^VD;B z;+2eW*_>?h$ta?Y1Oy*)64VHDe{>7*>)F%S^_D+%X{n3O|N73Xu31~Pkdz3+-_=NJ zaz)J9YSaJ9*o8qx?b5F1uRXllu4lBV96`kR3EIGiot6Y|U>uDzSl((|i2a-R5>^^25(~=bi1)Vi&;}sHsp$Q;z~0 zc&iAMQ3>%zz5JnXY&^1i%R*PS-_Y0|`>`MV@*+IHm|9fAVAu&@xh8r0yxOm2)w$@V zjDOq6F4OMAC>`{}3TtU-p)S)A&?ihXRINi_0eQKjS@_#yngpo<;F09eX03Dp`#KaN z0y+Te^T!KJdTxcIFpb3Or2$5#rtpA-emfMbB3mLNlD_3-0#C1> z348J*u_vG2nIOaZ{JhP-_>PxnpbyR)gX><-#T6BxOhUqE&l3gsXUGRA9Qo+`W_nUH z$HIq;Peb%r2yjx~SK9(_J7RCp5D&RD#~}m(huRu&0~JSJg9-GGnqFsy=wP-acHJ0pdMn?0zd6=ai#bo9+6u7W7jSO{wzW%9R(PfF0SaL4eigaxc7@)3n=m-7lTJddr4}rdtq5Fm9f(&$liSb`=Dm6>^VOs_7-L zzMV8Tl%}$bL0V`SiM9w0{IQ0upLqJM8hbxCkBUZLi!Q7Y$(Ww4c7~w5Tpb z^e9#DjQn{NBH_!_<7l=b2Tj;`N`i-V0FZ_ut>dTZ{Oo{5N-nNM%|nHO zVrgqdhEDFW^=HBaC3Y%80IP#jz%qP310IfYJFy%kmj~ak9|T8SYH-Woaulj;dJcCD zVO%LN|79Q<&R7}HbgtX+Ca))&w>5ENm&qaBD^!#$DU$!x4efN$r=Rxwbz(^^$*epO zpH>QIC{hLf-2{sD2Jyuc$5!8hEEsge2xr8?v1!vlR^DXE;3;GF;ksRiEeUG(zOHfi zgejrX87l>5QEpTvk0gbc{1T!Pf!Z0B@LWgC=?FyCtu>O-_9?B75;XBDs;a_PMCO)j z7*y9yi!8o-lv8!Hm>}+3p5z-Y`&nP#85=p~6M1P9Zeo%KQ8Q$_ZW&=mA&ba)tXQo` z{Gk@WMB1x@Q>6ns$wB|siS2FBs4X=!vP}AG*<;pnK9dL;M6YC7SlRIJk!U)ViRYaH zXvVenEh#)2RKW7zyRqLgYJCn2VoP7Q`;9XMyzz~~`o{-* z&1#eRN!Y*{Z%-`pes+82TilX-8qr@b$VX()+Y-daX{|}-1l9(t$}0rg z(Ma@M51MsA7GE!Kuv2;z>u5_-nW-dvM|PHn888;L49S$N!2bRI zktL4u_~w(lcT34Yjww6L=*}OwH5SfIi$JJUHW?yW^XZud4nzQlVTK_${PzC19HYq! z6(d7=emxroXjTfnn&{(~DI&Ad;@etFt!ni>V>&)Lrja|=HY9#}Zr@tfmrx0VMNQTJ z&fq@r+Sd9bJabRv^Z|7`TZ2QaC#J9vv$~e0@2GyX%jfMgwtZD}LhfGJLO(AlqJP$U ziRVJ%=aF#Hi}bTx$H^&nGjDgKVoNu@jY~>yZs=e1$1~Gvai7s;Z*uk-FWp>H&99g|>;8JMfYO`P&ZwJb4h z>|Zzl@Q?-M$yp@E#YJ@?4=WBK1YX~uLxZ*Wb5tl#F#(hpQeZP0{tOA|ECzwY;H+BL zodp1~c|>r+?XEE{Os>jV*yG~gzrm(&*ZAJIdr}Xtt6ZQ~Y7#IJ_P-=ni^M=cq=#dCqPZr^VHM(E7fKGe(!N% zwMY}>ZiOl!9N+Fo5?tXy>+NlobF?1=@k7)Fh+s5iC;&2`OTnX9uK~a`=yagoX&jlb zvWAY9(9iKwfVg=#JQ)-~?6C>C^f56;Kr~Qq)ck;f-7Jvr9zr9lfdwbB_~F&|f@tUf z-QeoMC%t|^dqncb&vu#lWAKovG~tcd!fRqc9a7CIiLAOk$zC&z=W&7pyeM>}Kg%0u z0xARbZ3&%*L%DS|`$tjS5B~K9g2G-8_OZGrB>{IEreS}v8VAVZ4?_H5huF<9KM|B!yk9a8DiHo&aK}!{m~4W-r`?f;wjwZ+E!1=>*29cFWQ-s6Baei{K%ChiS0i7| zDgE@RQ3!;@FhR|B$)=u3sP@bj|082ul4=U_Cx zaYmLt2ChWqKyZJja7vn*!besIw(;?6b)%&47^QTI0Bb)*V=n9=wD!n%|3GaIH9#7d zjO!1taWY?=5*{5ZpLdYLAP7oIO7qg`g5m=`ZmM+~!}vdnfiv*Jc%mm3z+ogU zU%&g$x0ps;du`tE3;pC(vxHnC$rgIt)b`&2K7Zc}T;Jz0F5Q{Q7cQA!Wy?n|8BiU@ z9_-^&dJU6f=@k0Eog(@i}VWBeI)fB?C7fiumXY>Get|?V#afp?qK(qU1o$U zFfs*RSJoaYa*9Il^LU+?Eqz@X_BJu)9I|$u{sfdODW9Yu%R@?MqB!eBTJIPMX;xD( zQhF4e4P^?>M=0Iy5$(i-<9>^84C4GEn+Nh%E>tor3UtDRZfYqnctWh*jqy-q$jf-@PYMuZ4^3Z|WI*p7SQk|`B4iRe zv9Q(cJWj9)2hA`JN;M6|t*i*z;eD4cZ}^1{3(&}eS)NYc+Ti4%048b$#fgtqzk60s z`5Gt>xLwR$kHFBEtU7=*JzyG77FZ8#n&ITLAXJWC#{!!NJr4q+?=RfdZ0v>YjRY4x zUZjv%prnVRz$6~B%_qFe2iGdOO@0ss<(Sh?Dt3BgSRegus^P=GJYGypmBbNXs9HRSd zW=zrVz^6uhQ{mH(&nM=Ik(e+EnT}0a38_bt^5%G4u%m?9dT6ASv_xqpPApOChZg1( zc-yCXCD2Hhc2l>II^0J({ggop1*}to{^FX*Br|D4AsUdxwV!LJa^}7XM@cBBokoik zcJQvasDRY821E0p9B)^|2^PW#$dn)C%)oXnkcE+2I;^&D_00u}Em=WuH(PC_Wjb;`iATk_U;Y-NX4dp&yqri*b-kV7GzCFaG8UeOrC+x@Vz5jt;yyHedmM5deU0G4VCgJKTdLM$>`T1!0 zz*JaT_a8Ab)?O z2jGREG-zRgmw}NH6PqFgR)zl2zf8%`#rDC_4fqQM{t0aUj_VDssTBuHed(Q=QlSLR zBAfa8Vm%6EdS9$N^z%6JYf!6L3`l7{+|JQM5)7gInu&eN|LQBFB)z%j>YH{(uE)!8 zA{rYljJn;4=(A1|(#|o4z<2@W`a84({_|huInz=+7#+P*+tr5RzZkLRC!*kB$h7L1 zCFKl5kXQ6UB5@bgGZ}ixak0N5@O{1hVc2|1hgl}EV;T4}$NRl{6q|QobQEeI?`Oe> z?8Gg3DW^Eu(+`Y2UzX4Mznc9M?%B!e%BOM1(7M9U_vlv zwI<1N^&K6=@#JDjya4uH9FNY{Vr&zCpwgI{Wn#S&5*h%`@|PpwyZu7``N9_#KtWM~ zF#17sO@y-XI>ilzB#&*7RBJ2|pf-F_T^mo;(N5hPaF*#Mln6S>@b0`W_t= zVo<6cDYYP_)cIZkn2n+^$zlNhs>x&dis;A_kBBk%IkH9_MkNUpzIj)&(c!3*vl0XuzMB;vihGA$2 z;T%?4j2NXdk#~vkd$ z!n{02_kYTkBlzG2CutQYy76(O89m*|{bB^_V|x@yE;uo^V~qVp~UYyc&Vx zBnWC&dhSdzKpXS=Mr5|3B2KMg{12kyiz5jFCoBgXC&@OXfNPtaBAPi@B{_wsdNdm= zDc7t&$&nd5-lE1)#J8wRHp8@*#ulV5?L-X}bms)3yx;`Z{P`#rMbjYeK$moU3ab8Fj3F? zF7C#ClBB-3(Lv(i7=Y9tvNLdppUgM-UN_gGHnNd89mMz{d#*E8fCr(h4e6Sr>7j~( z9268u;Qt1c*`$5bI=q9Uxl6BQ$(5@QQAe&MCLeWM`xf1MO)>%Q&LyAls$7LMiIs&0-+pY^Lc7o@^ER-;S{C z4=Mx6XKAjB-DO$mkiOLH{h0qel0Gxq*I?sZ8}4IN3qNKsINzsH(ERiyc2Xri$_F#? zc5yLoIjvHJ{_g%*Igpt(Os_pip4D*Zbd3uSPlv`&ga9ehs^L)&)oDXGcz-QnUseIAzPl~aOAMTat$5}OO1t#6^i0Sw47>7Q8NQFEv)|Nb!#Yl z-}boHM?AvwSZ&VzhsR%We7q}ZKhSmGWeWy-iG0`DYtIXuUGVBw5P>ibE>UKXI*c++ zQ=7&a!}tw_$N=Mr!u@f|ysJntsY4P{CYF3&Xd;mu;~Nq{GR;khRXWVe!jF>tMSwI3 zMfREqmpbW!W*qU?7g?mr+3cq0gVs!D08U9=%BdxbwqVSLQ=U^{SpJ4L2}%S+xsn#y zr_?XBd50g*$c7}LNW2%KQSJ2DaIQ`5;}?aTSN(Z+cfU7xKk3AheN#GXF68MLDo4!tYx2m% zRz30bf>4xSye}tDL+I&?Jp`&RCZQ=M@*+wOVR{CuioN1=bs3LN{O%2UcfQzKxr=5P zy`jLn9#EC1r&s0jj*?JyqjiPniBg(AL5@JV)Hciq0}AH9^Mu0Y%8AttQkbungwY4J z+?#iUnql$6hrWTHAPm2kZs8@rLXkXU zyS<}YT1d6Dv`!*UqaOYvsd%KAA5Pl3@kV^SW zWiMe9Xl(z0ZU!NQ*j7z_i-I{K z-N8JCB}|iO+Y-dvUm9}Ac{Xi)II^3{r9_PE4Cdqe(Hj?oS?!+?U=39u(l20Rg_OH= zlI~ji`ygH2ngJ&bo>+hWVqGM(sk~~B^6ljjBTx8bWNn-2zMs-{bYkom7U1$aONg_( zCzmeF#TQ(W$=FcCI;kvWr_P6TEdntg_1l*Z%9BTb-LmtyyuuG$BlZ_U0krhBp8TT! zFvy3_r~gBl+_XMPpn;83osv)QpUR^CL?q7Hy<|(5sqQ0F4^)+mM4)`hKs$0Tqu@=o zlE6yGS=%~^_#&?95W$&}hAFNMcV<>m{~xqO@B6|*I&F?ypx>Hk~)-uL4Z()=;`^>Hx}Y#543e)rzCX73z7sb9Q;}!IQ&W@R6LMlMU9g2;&X|Gm6zan>;$d=ISpOc>jyIUvjqYF}FXt^eO=@96 zLdkBe(oM*$){lSheWAxXNhzIXt3ou+D&=n;nXu2xN0}JzIS3J+B^j}IZ=(DgZ!OS! z@NjJ&?Y&K2$K2O)qx`*s35Po&{I}m#a{vOdkc5_Q`t}Zb?biL>+_tf@B@XDx;-E4U z`l^pA7pViWRP{hF$j91P=C+u6E+ZpjU}d;gc>3^oIGht1Ba!>2p=+fzOIm_6x5vOd z8HX;A)KW9`S+bS4^uydvujf4&9KfkB5hh4QhV66%Tf`DMPh)Dqwhsu%X zpLIpuKQ!o|cak*;2uYcL8sTS%hOJ^;jWU2R%KuyGVqX>XrZu6Ukx2PgprlwL_W73$~TaVFOOXo6{tDokT;2^K7%iL#=)X zXmMl}>0Lg~s^o!pC#E|edLDWE&B;aI9@s=*F43}xsuCDrw8)w9r|KzJwTw=iQFX zJa6eP(k|Xw(4fIqNEFcEhpCU^CVsa71;D__7EC_@UG=LHXqH$P3gQML+{Q6vRNpyl zVPB5A@T#5RT(@SW*Sh_X=~Z*Y%>%o6+=!s~m($O(MZ31(=e>ePd#;4uz}i41_j5a9 z@BV(+?y9E6?d_3fOnhunSsB9n{hUzim%C=U&?jG+tJMvW-t>6G&5b|O`i1Z##}n!q zCyAJTpEh9N=<$X;TPhl`$h-Xzb=k<$B_;78h35?aUPWFtIHsh(pEO)cnGFdDGx3th zq`Zdd%NtsDlJm1dzkW#JzYZN(wk-44<6I1#e)zO=w_7^NnKh9a@=}db(vdSO;pFtp zA<`4l@{3h#31{=QgWh$|U*r@ISx|_MledMg;~dhGdrakJsr@`^uv1LFK3uU+mr-M* zG&NaN7lc8~?BF6a`Mq*9Rf|`()=&pXR6}`+P)QzgjZPFdib;F}IUDfDWC3b;V-V3+ zeRC)qgi}h=8?74vSvw`bf0UOGj&WUg!tYNUeH;818Wa$K?QoJ^RGHAkVBGd4N0VCh z*N+cJ>&*1qz1*q5;uqnk|OnWOx(j<=vx66Im${hNKqVk*c z_jxM^jB!w7_AFGV!-)KhzlyVIGp}Jvj*e9LNp&(}Nq$%2v>*u3L-FINN`t@|R=CTK ze1xmq_>y`nGSv5yIRvNjh00HKwgc#;-y&p7zjIF0VnmoZihyS#Y2ELX<`SfNk_=v9%Nr$4&LDv zC)^;6M4a=#Z6V3@#0mN7XxT#%t<_4B5hIUHuFbV{06buZVk#OKnwGW%)$6?03a-+f zDrhXyyC%ijhVJ#_jcWbKO0ERBH$qKE8uZ%EQj?&XTiAo@I%MlxTj839z)`cpJd3)N z)ZECHJ2wy8eTu??D{+sH+K_*QnwAj_WbF}mkT;?T0uL;Wi*1TN#+hn_CS7IXrtjN0 zIywfu{MII3GM|*$JQovVC$~H2aYdm4_HWJ&p#euINQ_2gm|Qd0ndEW4jH)!iO#$WZ=9cidKVYzAROAO?MGw~U|CH4y^^U{HOQA(w>B@;b^YOx zrQ81!Dn9?Gxu>Uzh5lSFT1iID@?B_s_l^`lS$bm7%@xsF>ldt%tjaApf#G{(2HpsKqlRXXO=Jo)7v{@lisT4?6t-B;=&$reFN#SE z>ZZrwH ztk*+VHxuPgMBv5kAI z*WusvkOO)F%5%O>lLL11Vd8Tb_6`n;OGbLjkJ6=J)-!@*a zILpd(XWVxYoHn{cnbX+|Yk%Mo5)wl4#2@n7g8ryJC<1240|Qb>fUr;0Od_RL%E4Co zyC<=(v(ZOSC$>f1pB&5F;It)?LqdY#(_1P}K2OZ+a7?rl8tm?Re#N8Xc%3b|0NQKh zYqNSi>ouj>%)Ae6*HoejuY>|Je9;Y)56e_5nUsH5qGuZ9$7n}y`PB>#F=g7_=}A1K z<(({+z8{V95JNsi(moH#v2YzG9M@A&{{m$%KsX^J*mEb|i-I9b0XvsgLaxtGoNHY( zG207E`#JWs(H>x1bo%0QsWR z0#Y9R28ThZ?Z}c&Eh@WYJBV-PJ1)=wpSjZM*;==E91^Nm!-zn_(_ieV;7FIOl*2Gl z927#mKvyWBShY$(mMN>c(ds_=^0$RIwAG~>gg>=VSk?&W6eC7A8D`{NMZwk&9Z5*o z!5$xL*nVYj|ke=3#eKOOaKulOW zgY?xn__^ZBf3IG>_`olI_@SmL#dyjIi6=mAX{xavitpxsWl4-^{UNAOu7NRBU3ny6 zvaqFw-0eou;+r%e9$7@s3_rmvba+T2Y1q-;-FmF3=taG-mjpFx`CNwtAUGia-z&|L zC}iJL-e-Ua2P#28;~6q@?U_rKm{(fi9qF0#e05F&4cpm6r~)Ay*ucvXCtbPD^z?Fs z5DcKpR@~ifa=Nmi0=!uxzkGPLP%sWq3&eppbMP}CgtL+hTqmetq zbTti~Fg=>E*dgg#Ri$l@4U8xFVNULbh+O6TQ#iZQ)oHbu;#lkNRZKDxPI#XgRR&|> zJ~pq5?P)Vz8w%_smVPccLW-1iB^{Q$TbGf5J+45;KlK#jK-~>HAm(P z1>rHijfI9)tF*#XPP{mB6uvXAzFG{prYraZc9H?7}@cywR@smtP6b2 zin2KUd}i)95beSN&TR8(c1J7d@`9?3VSyZOp;iWLFwW#8%VvubfVbJ4siv73{sg(n zF#(D&wFI1--Ki8#Xm!_NO=o8;faZ~GoLKb>h{YaOoN%)jqhpq`xfw00P?4WR+D0bp zL5ReWLE6{@)Yz26b*}>xa31)p{?F+(z5dli)rp>g$SS<@Bl~@b z#Fj}yf_zBkOYR?}1_G-29ogdRb{hO^%e9JfLom`$G+d`JWJdh%k1@G?#!vH1UkAs# zTFDG0x&ZL6F8)q)>)V0Kx`+s-M2*8>-*JpgbqQTr5h!(v-kBgtWx{H@+(E4DhZgxO ziW}sI_pDg1V3;})6+tT37Cwx4;8$}3Gg8>!l25IPNAglxLefPUANagViEZ#ZTUwZn zeJ!OJYmGh+hBn=OXZR&eLojUiE=*Vc6EkWxG1D+)e8pgXaUrUS3>isC7R#)oy&Xcl zvuys^Vh&LppEu)dfpSDVP&_}3j4K>=sZ`-m0@&I zuDk^R;zjZURsrl6Mok!&EJS3rkByJv<;xa4`tnQkc6T8&-HyArF5u>^OQ@x$m-ey2 z02VjaF)}$LW52nXW$bSIV9=RST$qKbihNX*zaeVO3IW*Li!0!!WV{J?H)J!;g+1`)N zfhnYC<>JQ#0Oy;9xjsETkFKtM%*`#rX*Wv;*H~YS{QPubV26T?I@Qa_RQ;|DX-THa zzgYlq;QT)le`p5l8@sYL$@aKWUYafMG&thO*Jv;y z#cr2?Bqo-zE9SAM`yAILM# z>)(^Y-;WYzfsZ8g@JIFVg#mvgfnb#S zbOiu7UFM3}NGY7gE$8*Z757d6SnvY#J{^299b8tvCXiv#!O680l?6Os8fTTqEBPLc z0b$DhqJS^L*9G?YZ}dcn>k%>7ptm_;Pj$fQvz?t61$4X~#N6BxOhz3_OL9?PUykgYENt)i zg!91YY1$8O?*w2^aUvr#Q#dAKN<|(959&S{?VB2ze~yn60I-;o?N6dL$N!uHaQ{#F zAIJX{6&1+KE0F0F-((dcq*cZT|9t=;IRPL5XlQK0?OQix0?<%j|8@oNLj?c_sQR$T zMinA|Ab{zaS-fg(!-EI+(c1D77E=P3&!51}8|QKCSUs|{(qS_jgcwKC-{$tNJhVfh zh{)$$4obUHB$|{g?PQlE4^1uNRS>?|j=A zVKu^31ST(Diz}@s&UFo3s6*$1CPfI zONtG#NEB03^Jr=5!Q&_G=eRtDJW={wEt*${{66Cctdr zgEfY+u?4((Ie?azeHa~`LNMe-VO}a4YYI_URV0c7XNnC5gOat0&8dN`aRVn4jOk;P4Dy z_l;qCVGTtkMfmB*@8QaY)3W28nNIF*a-nUVKs%|pW~ar>y-q$R%4jiRnfdD4hOQcvf*?(WkteNK9ezl z+KPN!I^Bc|ryEgJkcFj{H9UCQiMeGjJh`Pfdh8S$n~q9GJf)L|Nv{MEEG9Gt`tr-i zXlrZ5)YK$`!9AHSR8$nBx~dGdRpqFuDn)r&9&(Fvgu}40zJ;#NK|FlaDtsGqJ1Q#* zaq032T)uh&Rn;Z3Y76*6YTdSPtDMXQAbD2-0LmtrD#&>3ndv12d;#%K`hg3gYg`hV{K z$ps*g=J=lgfKvd10bVGyMHT>H(7y!$-xC7-!L9(3^uMGb%z-;Sm>E=e$1PQ6y$oO0~O;KT|$bw&Bn2` z>OfiSlR$%`Ztf{5|DvN^ip?ye;q~o3^o}gx(=T7+(Ti?*uwJ=%6z|?904T!t?k@TV zr!X)yE2DARrSAHJsHv^M|M=}s}B=1GoW&ZcEF7cLCN(sr!s_O(SQ-}Pt*Wp)${yIx1)tK5f~-|ez+$W(i{nQG!in={#SuDGvk731#B|GKtFg3 zOLtsAfiV$>!@>kYCoJS_1Oo{9y$A>VVx~h~{hrs0XfOyJ+4u1{_P9RS+5#d0@#s&p z>S5Kz5!wqPv`6w`6jn3fu;`IyHNbAx$?L57bQsyxVQj~M5DchI*Wq|Jt|1bbh9>siECj?M(0A{3YheL_Il1|0YHC7JVUh44 z7MA7_@NJ?bKLh7Z)Z$EYy>#weIsNX_r&!+DLuKtzT)A=`M~)tY)8UYUyDx3k+~wF= zGFp}gvMu^ps2pMDdX2L2+R|YAQ=nTU&-BM{7`8nlFY*!^4yK@=+@uK6r`M zl?^fPxqjme?!0pm4M(bxh(_Ss^&=K008pBAbsZ^}I+5iX=q?CsZu$f?Pfabz_u^+3 z7G|Ngp%hM63Rc&)(9<)DSFL^MADBiwW@^@Hp z*m%f_QnUZ1DxB{Sm2DSh6|K~ed`CJDmqb){=(-K`T|MqqQ@Ex8M?OVMC0Q){$ zNirb28rJU^CMG8F>1Ute|NQ*_!|L)J&Yo(*?Hd;a0C23wfEcyU<~q>`1LZ(zFBL0#Fl|U`y45gTtghrDCkG&&h+t}Z5$)~6c=4haot=Z2TUe0QfXAJR z+^lqDrgQ9UQTlHo_Zh?u&gHbrDBo&P4@tg`QLo(WT&Yg+=udT$O0L7^ZV*G`OL*|C z7cbiSWjeqS?CtBPP+L=iU4H-_-D7C&7)EE;Fs5e~Wt7cy!~glS4{-g;Ib^ugFh9S7 zj@JViot%J97eQ%JChDsSQIeM}Y;Kau&1WLl4g^R-(+BiZbF932~SqKFwE)oK(i;B z>2O5MqQ2)32*^|`ART^@Ziph)qJs%B?D+!N-u8;cZ#1G!2n;}q2{6PH zGQM9902^UF>}Dg5XB%-UM~~W!1hO45Sk3JGnQo|D@zjNtgtKa_qgDbs;USPzxEs<7 z0C+a9!^4>fIu}C-CV-mSI$XbY9Ssc)0suxvhp@ajg`7+~PBfL{SbYUtPAB>X$MKs# zKEakRffFas;m+N6apXvo9LJ=k?BVW`_Zzk41Oc6$uhHJ#j{g2WtgNoc-kE_-?D+Gt zvrtQ>|JfsGY^;`ln_pbT%a$(OzyDl_ta-UvxN-d)e)QpW96!|vBW-^D0Riv&nW;u&WTQOaj_f&Dj|}9A=xy&1pwcD z;ZJ_Yw*cTP03gW_S2rC!sz3Ye9{$(=`hT&!G=p5~okfBxr>asAqPWTt0e zX>JW|odXye9YZYcM{$0djC4!$b6_{yWd9%2#}N|%K=1i~6aY|wNYeml06@tw^+qz- z<5=C;MNjV(9zN>D%eG-Gu57}dVnI!H0Zt#ULTy#CfGnd?4EqJ}(bpjqj7Y)X*z#d{ zbsO`G>zJEg$I{BCI4KfTlI5M6YDb#W2D{A!Ge^gI@&(LD;lF33!0zC=HA_09%jH5A zuQjVlfCTvn`Px!sS8>&KDR^=Sjfhh{D1N0LTBrH&I-JeJINgkCMSSo$vq- z8uXAj6X`T$h2NalCxdiG_t_WP36s!Snt1uj9=5V@P$-5GW$1LP_(^ zE!ODW?F*^gkXef-rJ52-3K&q5B^@d%7VeyMOUE(Re0mWva~4 z-cA6%9}w^s0DMaT@XqZ^;(o`6GDq&>*hMKB-Pp)nPa=(uY?A3##JY%5L~ zdm^mGMO!36@Wc1M?|zCZ-EyZD}K>7KcARDD!Gd?pB2ru1OUab8m-9C{73+RBLCwdOa;Ur_L1{e z%W*N3S*~KuEBp&Bt!}b%fDex>;qIr;@$ktg<`&n)SKRBdqoKAGtxYwk z8gq7ENWe_Q)7Xu~v9Yy_>A4M25$ZwcU3BCY zD|C9J93Xsdt(rkWX}Je@FwV_xU|?_tgF`dYp62}{rA$HEv1H9e5cxo>y;X` z6lUPDrl8TWi$MpSBj7gw_Hmw}(u)5@Ad_qI z;wAj}Z~g`sFJ6>u_Uu_VW@m;`;MAa^#0ihnDzeeZsWl9at-xUM;Pkl*xP19CYHO+w z0Kn0EN3kDPfIHjD^qE(pW~cFdWCYLp`q1CkkCo+Ru_va2puDUY6%{3LI_=VK-q`YE zdTIf?dwb&8dAjpBZr!>hL15*jZt3`OD$j8TW3`o_C1nk>iNu47w^k$)!^Wl`bF(X0 zm|sOW9EI28!twS7RM(V=7vb2%0&d@Vf{#9Wh^@^ae7<7T)K;R<=Q&WN&S0Dk6vNV6Z#|MSK_N=$Gr4mr0s^WQ`T@R|hpJKrw@n!Yy8tc{v(!_W^uan7{2r7Wn4Jdj>-z3keTEV-H*#=N?&p2z$@nq zD>RiMSy<1QN-ZILfWA?_hRz4YPBr2!$f@ z^0>*-hIVaj6QR(aB1;zk>s(qKM-OBy3*u0c-#81UIR;-BTg==q=?ur#btIk?4Kv3I zCz`8puCo!XEj6$@?HHe0#)C&gc-l9Hm6a`NN4FfS#b5vBcX9K^C6t$yA{^Mq(C`$V zkBwtL7DP!=4gi$-U^83AR3@Y52tcv{zYzdHx&Q}*WTlFuLSr|)kNNp6^bgLXZ*WG8 zYPNQQh$Rxj5HIn01OU+Mp}fQmug5ACJ?(VaPS)v+2=Avbv#^QYzDW!`pTg?emb^#w z6eunB!lc(CuDR+#P{U+YiybaIK{GRJ=IonI5*dXmnl;^5yU zegv^N9GMu}oJkyar%>fg!D&iCqfY0l-(0rv!F6NfiX8y068jrUV>y_CKMIg>;7@9? z7}a7Xkik+&Q8Zk+aut93cmJ<^CIIN|d5qcVLAdNdk=q2LUW>?H0;}s`Y=+WsdCSmt z;v`O-IDwL4-xmUae7jjjZ)v(O?t`wLB%2Kk4q{+n0JAeQlAcM4CV??|7zEP{-O9T+ z@@HLc<`OhX7vS>clW43jMS;^I9s(r#rD&FrGgkU60ANfr^9^X@JvF%?Y6e;^pFMjV zO~-1a%Qrqbk56tt!ABoI#Kw9+k`b$`6#&3uLXLc47Uv89Z#MuCd2EzpsGxlCydWC;X!Y0J$3dAPe9iulM6Qe$32oU}k-bdl>`vQfllbskP4_#cQY0L1nN&ZL~pSvOsS#DH24B z2}~Cx^W5$*!sRf+Z8yt!XkmT>ef=|dKDr>GQWm=jwY8pKXntUw#y zf&*bV^a+@B95qnULLhmBjwY8gM}nmZQ6dX}G=rURRulng6|kSxB9zp?A0y9zkN~)H z^(y}M@Bdx^0H5$#&tuF_4Z`hE!DZLW!MwYhKrqa7B|Cg&wP9c`*&z+TMnL$B(VeE&1B^))uz5x8z{TKX@oLHr3(cg-%?# z+#$h4MP57f;fL-M+q2tgdaydw%2Q1)Msigcwat zEl42H?c3d0T@Aoh;6Yh=nMeWk2JR6OnR(=5fBUNc{I$$?0C?!LTS*=OK^Aj1@}W`$ z1Njb)0s`_st#o!M13ZWW9v#QjL5gmYz7?gi9AXaJ;on=D(uDr&jv_?dCR8DdTg8 zRL+uBva^{$mq<#bE;{5KNs*fyKS)61Mw|x=TiZdbt#4yva~ttE?O8dO+{eo52Il4# zBm$W2WT}{lw8gKUJcT&yHai;YD{%Hy1I~2Rp`zS{mDL?Qelm{xk4B{%kjkV`R8)X- zXWMb<;wiMXHcFoT#`-qKMkcYh8$zMSiu&4OR91RmF)QPSJi1rn5B_@rK)$+A-h3Lm zFgGt>cPQ-RXgrCnoiOGXw=q1jh~EBb3_fQvVo=)jHm2wq^^zE8H5pJ+>_%Np8LBJF zV6|C=OE5e-hhShAZl@KEb)~4UFPFo4Zeasm4~OxPplWd)22~uVyefRZA&bu9ES!c6 z;)yKwVrm2u25iRE*ovhQieX$67oZpi7N#@m=mD* z8XPKUMDrlzLjo3ot&A+D529 ztxUn^HNtMuis6pmA4M!}5cj{T+9p(1)uO1VP`BHu~b?0yZ}{h6&dx64(@%SF_inEMO^e+LUvV)C zJT3tMTrc!p;USodbNuBxq;j{1I=K;Wk;sfw?0Kkdk zc=OF$c;htykjwl>4FHsdbz~l|h`0{!zty!hi39%6|M(f6J?(+ns8ND_Zk)!&%N;1M zsl#q4hQ|;4@QeTY2p`{mgvI3*X|d;TW{<}$p5kwR=L#-gIw|dA(TC?!;@BE{*`}3u z0aLQu6@roC_n&tkQ*3N$n4wa3XkmkM-nbJ8NsKV(^#l#vMA#)*UE9R$>;ks712Xev zDj_%ZR3eQnKgS8{axBxi?Chx~oIlfm+DfM|njd#h;=$tyOwF#zC8Awwb8{^^J6q7! zQZKFTU|9S8tg?0!CI{mE}Ko9>UcOw zKAzBA)X1hJY#3&P1`ZoD0!S^)VmlBP3*@~$Zu&7HtMXCT(1dHjUnPgNlosW(H0A-yjYc!qF2(RYxlRm<8?R3!0BaLu$A3D7r4fWNy&e6fu(`cxx5HlHOzOxD!z3&T;!v&C^QH#Wg zn+xam3S&(MnYiNLc2j?~pFbP{9J&JXMX~y)DG)(P z1{88orl&RNu)CL#u%zzZDcrd~fS$e)q*8I=fRy;WBLDPrw6ftxk}i;-*^*8`*?y98 zzhXN#2pk|a}dPBympMB>PM)NC@KxWI|(GM{u4)LP2?sQc$gK!r>) z19dhd{s`=X6cjj+NTo40y@Zj;c`PiiBNz%vR4^Y7ryJ!JKl;&k@z$-25{$IGyejE~cklILW^My&oe6GF0bB(xag?NIM}ED0+X2AQ%Kkvw z$2~0<51c>vUvw`$?0oS17?sR@kVV;dk z!LjiPbag#OZ%;S&f}5zW^om93nR6##Fq!b+!83gF@gofMO&}E5h0|t6WqEYxOu1(z>%qWyS1DoYE+agPK%9@t<0P>}FJ>RWD1Aoa56s7wg&MKCz{3_ttNUtw%?LMph9_Ig}AcMJ{HUaYV0ptpYp zW0UKMCse4YC`EHq1xm}@C@Jy4<8?!)(PMKXh^dJ=gaQFrEIO2wI8j{Wk_wm>w49JC z1jszk^1nv~kfUKLLmCG-{#NX|e5(Vsv~3T~9`FmxfFuQ<4UFwzCB% z+Uljkrh6b~zW$wE1a|hYv%M=_82?^Kqyw2as4vdE|z-lIZ-VLk~p zwxhsyIE&r=4EB>ML{l2<#8p@gvty8zbijCqBvU0$IIGqnt=5TlKat9cDukv@Dizfv zMrl_Uc^s%I^P-``2ak&;JZdCa%^d{*nJipRtK1JRw*#SQ96bXQ=z97b!{f79Bljek z6oxy~E~!@Gh)l0l!|gDk^LQi9o@tY+aC&A*Mokun7eD;-KgWfOmxUzvbq@c}T4F1> zQ@QUXk0F_qmNY-JJwuYUC_eDu*rn4X!Dd-u%gR{Zb3{u5leaz@B}nN&(V7({}b z%k@yyB+8-2YL(YkBobSGA=xNMaZl_&10Dt=ZYq)f=17&5!ISv3pUP96U^I<^K^P6aE zYr~swzKJ(-Spcuo0RM=?fWB%3z**tc)C`_Hc`74-;La*4D++M&;z_i3wjrKO;upX8 z2%miN7%NMgaN8|tYpg`uu`+QEo1R_4)ciX3;u(}wlnV>^-05Rzsw)>M9$To)kAKz2 z!RD1~p&$NSZV^h-8%f#Rh}bcp2fgxL>>P+&p?JS4x@`~ufB+zjfxd41<3IfjJw1am z^KEOXkx-VF#xjILVLTsO!s2oeI=vYU4K+B{Tmg@l5;Y6V7BkXGHCC2)Fg7-gfPWii zlLo~;CyIS;shW&Bz7{ry`EitQ@v49Q@8bJj-T`)L5tz0i)TN*_{4Bd`|{`QXa(7G|cFF+R0`xusR$lJ|mAzM>*0oHhd-1{JJ`!<-7kkO;z*48W32!J*BfzyuUp zRq)!?a9LHb7$MyQt+ZLy2q#qt?Pml4L^&#mXAy{HM9FSQRIT%OgWa~mq0*CsTxUFv=gTPguB2Y9{U@C zJv{6k!|g`{=pCBG^2WAw6KI>vHhw%7lMVyPTI5Hxw$!1mwLv;&t7|)0+X%r|Qi&h_ z`Hyh++^?Z$-j24GUw&$`8%L7hyYIe>ciwpieSQ5%r4nd4R)fF(i|^sq z%}c1PES4asbdnhcN%3~z0WG$@IRIcLxCiijWC|aD{0LnS`vnMIINyou*Uq4-vINm+ z1cO840suzF<`7S1VRt&=Df9@@(Q38`D5ZIrw9j)n9}0Xq^7_9e0O05dlbaG>c7FVs zFK~GM4uJvzfTHH$XLj0nohj`cAD_VV^fY!uK?!yu0Qg^j`UWmvK85n~5(NNA%4QNn z&&MSW_`lx!6w`C-IM&iCVL)$OzlP(jt?+uhM{cNt_T>M#Af_)`HLp7W`3^w7EX~=% z@`6!IJUKOuM~`~&>}fYbfpy7)zj&zwZS5`C3GU)wfAU|rd*_KbtsSec#EnZQaK5t! znIzr5=J9lJ4)g0ln4B)0>}ba2^T%r)=jZpx=Q2#Uh!$1E5U0r>W&eqgWfvXpe`@+t}D< za+w{?O|@vKFM-{zhSAJ09Rv2GS~TmQP>{RIF(EP->bfH}W>jsR3zHC9%G=o{qxe+c&<4Pj<(8Kor!xN)fiH!h#V zv8GB`T^6Wl)RW3$ZFL*Zho>a%jj^vxe>;7$5#PIY9w*!Cg_CjTK|kL6@G&N*mJtcZ zq~%Lz$*QVish$l69q1hq-wh$^-$XjJ0ew6MyC#i7Qx+vQz~@lGYg55($iS)3ilZO9 zES#xx8)J2zN-)(Y6|GJqB)O8(A{b33(AbdoWBVS1> zKd;>TFMIH?p+^1g-MbPh#5BU zb1ap&lUBATWxXE|So43x?|Vk@vdi_t?>zbq$`_PI%i+Htbp$+k*|`e;P>!41mvS8d zz8`eFWOqi$(DZ89*uc#6tdKUN(J)*N8*bb+73)*a^mAGTBgHSBa`BFHGhPbb1o} zbO=Y%n3`P0v)&oi6FoWs0COE`Yf5D%Z!lYs%BaL7 zD7v?YbTkA*ItB|;u&Gn9s5sS+L!aK4f9Jmy=(F&e0FPY-hfN0?GXS)JmMMO`?qu($ zGDyU-2(#i(Kw^I*85P1*8bp`}kilkDjjfakXYH(*y$vT?>rhebR-}N5eX*%l z$dd#BJf;})%ti*mM;g1)eN3-xp?hc!51x(V`NX^=Ez%CRy}c1WZ-L|}EG?~LVQ~%q zz^-ic7P|%Rf&vs3m7uD+7AH=e#OYI=sHmtCx!BizysXLjG7zBf0)iMF9mTzS_i^vu zJ&cWwN_=uh`!U?SejaDf92YX6%ViZ??sztOaa^)0`AFq=U;PNuViv}ebkoMD*cGAT|Kok}DXFZk#?718@z$Gf;>?*dC@(8Na&`DO=B!%(TlS}~ zdxwAhpZnwP0LaaM*gnrQ@AH>aHiNNoJhcq*8HtdF@_|KpH z8jm0LB9%y>wW(ST&CcUhh=n8QADlvW-xL8qYTjGKzDV*=m5^Y!CyZzMf$L03UtQjqU9qD$5IT^U6v5 z;7=}~xY#4J@U5MFXmw`sH7F}DfYFo{$&yB+M>w3q`1lffdit@xwkFcQs>(vtRQW_J z&y+kaSc#LBmg%7x@~i&kzuWIStfO*SigGJRG?O|D4M!GgARJC$eIp?4!_lc_OwO)h zdxtiCJmC{Dz}nYS_^wZ0Z(e;;0%J1eM~HF;^Dvy9`#RR zW`0G?tr{CDaEVHo;v)F{dl(&?#lX;nkp4n@Vc6_;)YMiBQR`%Thg4`)RaJ00TtWc+ zx{p@{0Q^4k07(Ar?(UHwu>1G#V{3CAr9Lk%Upj>=mrmp4$!1hm6~koGBArSIk(Wvu z`Xta7#Ade%0GOGY$L&uZi{THQAZw~BaP`V5baXaJ9>?~MA5VKm@ZjMfre{|X*-t7- zi9Rpr$3cY-38mx|n9L@Ta`Gl6FW^Oj&k?{cz8qZ9!GSRM1o<1_1puJT?DHmQ`3Q6#;^FX~WFqj8SNKdcK2z=&UOz>C8I$!R24<2R z$b1b-2jlYZ1c@{g+TV|gs)$7tGaW8nJc;vX+R)TcDaKeTMtADSZ_;66d%o02FU^Y?$hmVTaQ5s;S&-EEKJ6KVf7=hI-GYXi5(&bIh9lzl zJu$t4y=WSx73H{au~P_yEzMPOaF7zu8~iAk|LQkYLDu=1T3#BMU*-8G;Sn(YnWt1z z>R7Gmj3#Id2JrTD6dpysf+6F6e?NghFoM<1AR(%^e*gd=07*naRAv{pFg!YsiHSvQZtfsW_Pfi0 z>RP6mvHHl!^;=wC$9^=1^3o!l?QBL{a}~@6J!WTD@$sj9lCQw_x8kG2-<=hM7^}rB zMm}bfNgVnL3heOt+$i+eVKwTIj>oaH6%bE>FB838T0;RSL${Z?` zSyciG+$Kf$ID3y0aN?ym1y@Z-E?$ zB*#7J8N%fBqLAho1>1h|B+j2Zi_TM>XliVP)8Q0eKt8eYtKZYlf5)o=0OinORUelO zfp^}05AVJEE+!_%B_*@{coWW@X~(HkZIUKf;&a0!3Ky}|l*5b_yU}U^X9P2o1OSil z;YSZKJ+q9`(qaJs7cZPZWu;Hj9Q*pl@X4L07#yC#);4Xvb>ao!blK&QWJZM9%zOyO zO&bmXz{@%S`FmC&B+5Cv%5#t9d%3Vh=PU0Q zfdsh=^dJcZgJJ;0!=58bCS)oAKv6C+CqU9I_xHuE^k^|A4wdO#G%yPnlL20@3$-=n z!W}u;-iYSLDir$|&}KlIhG-cr_G1~0j!fbG_iy99UwwkvnME;^x_;w2Zd|{PQ>Ra( zyuAD~g5>TheZyH zM4a=jSG!-tHIR!(&GbQr2C@2PYfy0yJbWC$`jNHx!Vgw{%A!pKIkVMj0G>-UQ7^$!y z+C%^jO&nfh7KIiy3QZ~$TCylKL&gMdqY5^IN@9UI?vSc7Nx~qo8qs28*NVwhG2p31 zRec>=8ky?o62?B;vNZeQQ74rilt3aH;_$Ue!enS4y<-dbRo4J|hNcnPi=e!;5LYgq z#I>tuWX?Z2HjPiao}s&USk{Tn;X+&630%5#0cX#i#j)llloS`g5c~Ue>#;B5Ie(d| zfQf>?_{BT;_kaJXSP1h`Ug|?*LydR?aGu}NT!ZrRBDh>O$%2sX7Dq^wXsFegot(#= zPaffy?>`V%K!?+XtCu_R=B*1je!O1Hlllk7@%{&0=3 zMxzNPvsr+U9M!q%K7X_3cdUFOA-e_=PWBmhJ!OF$t~o_Xq*VIS{LbX!%h_&cc$ox^ z9rYOY$k?cQV;B&MIH&0A!>C zzUz>FdRB&nHdXS>aU(vm{d*H@sav0BD4lp&WCdttGf#x?DU^N+~)tyQwp;4<)Qslzv_G6N7UtLxt-VDzM#&M6V z@KhFUtxc$_tB}KUX=z2A8ilkMO9)Ahof%d~2D1@PrvqM(8{Psp+zzXNFPnwepQbx1 zgmzT2wjJD0Qe&U{S%MPeZLrA(KiY z9Lr)QqQ&!&4O6LNs64f(uCGOFLpiEToY3hsNU$2C`OoJ70OYXZJ-8JNqpN=c|M~F~ zJRP1!BAG!$Z6&TXj>KX*nhy0o?pQ zduV-~E&0oYPG1B9rlzOy?mO?`CqMZK`uh6hWw1lzwA)Zp;={4#I-EUy0v#PKsIDp# z38Y@f^_Pamp!hZ{%r4;G-EO?|?x&&zU>?SWv+el7pWVWhtEVKfb8ui3@BQ)~x*iS4 zD1>{4PN#)d&kC6ii)u+mWM_atTaNGp@|<#Y@&r5X36xQqj3!vj78x6`(*7dufYKyT znD>0}Am$;>$mnP!irA5MeEzz>*i*>0%<~F`oFr04Y4YTXOJp*Y79*%UnNRt<@{W=m zX%IN@&{tajxxY$)kK5&f*XxFjd?lS0zQO`DHB_Uer4}`{rEt5fush5!S$?u*2vxfk$0l=340N$_x ze?TNBcW&Q7SJ!>)?rx*Lwp0u~Zr->EtJ8_~)lKw18^)t2eRw`PiBK>sRW@%ST9-0< z^u+OIw4Z1|bybnL8Rvafrd7Mv>QsVxJ8TyFvb5jj)=P4gi_t-+Ta&dv9o4 zs@KD6Fp3TA!|oCM>(6iF_Je+`u5QApQAs+VPOXvyl83w2U_ecEIj&yrz}b!_F@Itp zP}h?|+M9s&XXt~fUC_;(Q%rHESYC8xtCEOfWa zfH-1)IW&|}g3|bhw5xfb zZ2EU`@97Bs?U(oQ^!c>BwyKI!oIKu)`nqZaLLm$ek6>(k7JHGHwEnNYaSbFF8#@|VBFPk;LF=y}>B2b36Z(Uit$M4{J% zlP6knvi+E}qKgXMB8hd_P4IZ_Qo(O;?VzV;7{7kM3m<;?2mI*4}S0_-hA^i z3cYSTADP6j-@k{hhtDuQyCkv1;=HI+D}D)#h1TgsI+^#%7w{}y0Hr!V(9h@G^*BDV zSgbh!KrYJ>;o#A8jmB3pk3R|k_5}cNZ{h4-na3Xzb`P(9?su!{N1>5$DznKbJ`dtm zc4R-wlMxSrOYZq(48`W9c!P^Os(=}}&RW>478w^66?)*XSzyrVB&M0`iY8|$wo z19S6BSXo&U$1*-o{<)4aa1R#j3sV99t6Dtc)moiMnKsrpFfuxYx!EPDRDE7IE}d<~ z_uo2);-UgjH+*U1c@jPI@|Blx%fdk>#J7(ifS3q>XsN*r3~G-(8) zS!{;0Nb9X=XlcZseD5+k+iPWPGdezl+xMQ~QO_t0CM&L7KBFW{mU)oP#1Y>Q1KG69 zNy#4w1*2jq8w@EM9NV(2mSnTkX{0So(->})td=zzmHaFnAGZQ~;xM?j?#IriAE{^< z#%v5WRa$ZeTqYG9G9myk9NCA!@Bm}uGbk%A!kcf>5a=R`i;FNb zyMRybJi?Rie$31+O4o0wd#$?Kd!h3=NRBpFZDs_%8q`J>l z^-7GfLPt0{RhOSWTCn7RNdEP*+rev0oj*Y@IT#w11~!WY9(KW84j7Dj@l#k_Uc=1n z5~gMrg>bsGvMxkif^&`5fZEzRiJm6;ucf60B_$;=n>k{6+2iG1)34g2zpYs3^jcKrO}CI*M6rRy*F85%>Ue`_-OJ005RS$$x3DhBcw2q~4xrHI#<6C~ zwHl=gGUyE0+Sm~*V68d>yG;j|LkEjlBL+Asl~#1)N_T`EfS2VUe6yBPzWc(Bm2G_< zTK6B1;OFl>L|@NyWP^S*y47eYHbAFMV>yt*_+|#XY6luSPT(*8@)l0CRZ0*|ch3+$ zy8RT-24|qr8qt3I7*2N_la7+hVSvfVPJ>3dPk0ce88yu`$bAVE3Wb7FJ^MppA=*Xb zjI-5B+%yTO1um;7E{tX)BC#Zv*8`YljP&dZHaE5r-rYrNe;=A`3VKZj2CWJOCKW2} zfJ>i}_kDX`jm?x98fP);8yax#L_N;6RHD9=06-<-J}IgBb1dnD4uC4h)K_D}zl%?M zNAPd&-IEbOC>)go$!s=?vVnk;2Q9tto12?Oj>W^jp`igT*HOm5ayZM1%$;JtjT@lI z&FF%dYgH5AGXRT3T%|n?sS3H~=jS=rdn}#+0|Wh%Z=t-F98W~WjCz9*HaQv~5GyM! z5|50N?M zVlKp(XO0aEy@e?B6o}iM)oO%JPXM5(0F-K4sh0ECBrmSz*g!c*58L~Pt13rw%T?(4 z=TQ#n92gSP9Z8J}5m4zE=1|1J_(8c2yk2&@4Zh++l$965YIi8XUzrrL89GWT*DODx zl<+a7Z;`_;N-S8Ov&a!zUPYkQa`eWvpqAH@jPW@Y`*XEQgJg=bzyQW4<}freDFB<~ zTgG{FKZ8nxva$-CJ$Dv2ZV+IegWK&EVDa+G|7FG4Zw@%WSv%NQoC1H$X@D=vV?N&j z;H9Gz*Y4gPKKbNh{QT!X$L!1`%6uMt=LVy2&%sk*hS5aJbu~0>>uU^view#y8_kLi z=>#&8+?PZ;!G)Ep{K=x08~)25TmW2XycGkxaZwg@Js!f{PrLD~cL09T#437W#Q-BO z0m@ZTuOMg16M~eg3o_GeYpTYTv&T_iTP`hM2HOmc%;Nd@0yek(VuO3ErB>#;9qrBV z6?r95E*fSfn}peA|NhVF$VR?{xjpYFil{_WdnZYss<@*3`b`V@EWJ`G{}5D9*ZIx-h)3F!1`7IE1N-VZnIU(cxYM! z>rmh#LCTE+k5dll&Fx)G&#q&9atX5w>sVRe#%^d=3~b2O=6i0`Xi#EPNmqbX+g?JA zh}r~qVKLfU>Tso_5$D?~QD5SgfSQ;908Ner2+05-IZNic8ZA<3V0|Zu`@N(1j}N-g z`+ORKQ22!#oUU%H%1)o|l*9kT@e^|Rb93elTRG5j_pmIFLrwYD1ps+=zsSji;Fiwi z(+4CSkSuhz)VbD3M%&z2$IQ$$CML!N4D1GXb4i?suPc>dw}veCl-L@xyHQh9Dg1zn zavvN{E0XCnmRC11FffXt{xRv$RFs#XuC7|TBJ|*xo?XP;{Gz-L`UB7pqPeji6=kLH z6?)-z+F&-b18~?{&lCQH2+Vd{PDvu&j5H;Q8Oa6_#qA5KLFM&J$B*J+l*o5LgeAE7xbyL5lC=}BTd(^WD=<)nXh^DtFWiP>cLHk1Q@Q9z-|l^)2q1u zco28)K1N^fph#?(M^7tOt{bv$BT?#RX;RDQ&t;Y${Gy|XUbb!pY3p=~EGLx`f?0E2 z1umaEj^nNMQoXIL`|)gG5|4XEFflVPfil&VW#~NBinC`HbDC6Ef@oD6i?8AO!rPYoFh)c-;vC;)#?5{87URew-mvrvk5FDov7{X!2ka7+o-QD#O(AU?%wOclP5#Ml}MBAZ8V5YGHszr z2(yyVY<|f|V;@uO#-V z)YuEhvA!9^;?gGOmNu}s!p!>+l8M+6#e)_mrXSKUh#fB)BI!*iE%xDbTOF>RYQVYH zD%27HXf=o@l@7pB6#(UdyoV?!WanXFZASpWyLY-VG%+u)_2|RvEyC4nS0$G9)TvV_ z_W7jpKRou7ZiR)o9g-~c0q1`Z9yh9M6005r(d~T`WUjP6{_NaVZd0s7_;~iKm z7MSfM6|(@!ALs-Dd9aY*b9mr$Z_I;$T%iQM<_MBuhLuGn;+!As&X7~ZPRY{ZIyN>5 z*dk(9=I8sjzJ*N!+r5a~lNPHTB_*Y(t*b?ST^)`cYnG47%E}{VQeUv=9{g>uP%(Yg zru{AX`s)!u{*8Kx43J-9>xu2#_dj@F2tgC$BPcF(;?0|vCEByJv_PbRI-=*?Cdf87 z|65rIJc2n(OUvQPO_C9+3RCuwxBq4LOTGiZ1s>XqVRCjA4;~NU-n}PyJ~)DGDu$MZ zGL)AU$^zyB34|ipk0&Lxg)L7y+)2|mS5YbZg0d(zDwVL@sXGqthOre0%Fk4m`*8XE z37qL@77zE0%^-UFr|{{+K@5*hNFm@W@}T`h6E2+Z!10y_SWIR_g`l`6iV3?-i?UKD zydDSiWQhw2P}vl|4FEve@mdX{`w1*8GZuIecODF5WOxh+uAqXSJJJ;~8g-&x(Wp|wVWH6v<*NpE-(>cl ztA2AG5B@I!5y3Wr7!9Hr0u>H3`WVm|bkG}E45)-rAM}TWQ^a-8dx~>zjwHlLD3y`} zy{z1a<86&-ZD~MpQK0|{CMJ?=Ax?V8%6Q0RGQn!Iis=x629qnM;)EH}s0m;EPC!aK0P$sOLZH|8KQ_pXDlD=DPPK!_KJ*3(K?L9zSJ|Gcu# zaNWznP7s+=@(ska2PzrGP%5~ywI!0+c!CzdDY;LB!3Z|D{Mg*^!ynw00*8P+9!to7 z^BVGcxZDgUqeQt1^$qo?t*KE`Cp{iH{14myuK~c}vG-*fnQsY-`K?}NzSPU#;GcQ2 z0|4;;`}jXU{XZBT8AhSUiksIj;5%`Z^!VN(*ERkWKR%eY30oJWk@}F&cQ-su7MR zFuSmW?q_qj`(PO3BNNcXR zz+;2gZ9=ir1iP8$FhDpGhd&U8KM+AQ8b@qDE@3Lkf~4N9u14MdXnLk*LP@xn}1cg?%_cj z|7iO@hZuN8(n%!uqrx#EhluW$EOwNOrKBYC$|VwtG@93)pDC4=5-1B9ulfB!tgmm% zXOa*Zw#IvhDkXj}M}q)^BUFx?sK&5bZE!hV@OTQ~^O0y>in8)DG5GQMeA10M+F4Tm zvM=ho9(7s$txlD1%@6-^cK}}DZ6caw%kYB_Kf+Ic`csSy55VO#;@Xwdc~%M=(6O2$fcgQyopX zaxhIya664?Ypp(N?l5V_lo zUxkT1Gj>fSC~rNEix=9V)~N9O`6Qk{8^Hd`G-?eI)H~9!YFSGw7P9==eI6zmEuvXH zV$dU&H6jW#A{r~=dK=Uh8%$0+Tm^PXTC6E^qrBK9X?m1Mabt`p(&8<_4U}!~y|6MK z2uI`C-U-VXXK7^{D{FpiZ3W>E?I980SE^8%31`LHxw@ZwKn0M)_)P$Nb% zRt^Ag{;x$ECP{kKU}rCm@x^U)56=n!7#N+x#`caJe60L=_@6s>4%e=|fiq`lq*Wo6 z+aKaFHZ~?PzaPB+0ci3=lN;W@1NRi^v+>2~?cH4MxS!{}2 zn4DpPG_v%$Y)Jex8YuPSXw3|h*(e7;UlK<^JopRT>=@Bj+9V-O{IUQ56+x{5Znpz2 zuN!8o18TM6FerQ_dE~n;N=HEjQ}Kucu3B#?T&g>p}omz7C~5;-JHjpY2_?y!q&mK~7KKMtzCKg6x~js6|4 z0l-(hJp=&spZ?_bUHtrKKg09kept;KoIl%!8*iMGU>q(sE;6O$XP&&$c2gF-Qt@(= zC)-|_#0O=>SI__X@;(m$R`H-K2LL9fP*!NcU;f!8T)Ef`m&1(kUKF8FR2G&_tCt0D zpr%;DMRIPPBfL71hnMsI*PX}i4U+?$e_QU50?#0mBQiEG>bfB@JR9cYFN9XbJ zy?#9E9u?+vVSyX1&GnMy&Q1UgYuE~1T3nNs9;JXC?KP;cD}mWa0FawaeoFuVllj;I zh;Rh3w1d7O0sxKxCZGzgqsbY^g(@AI3-yS^vsl{GV>RtW+Es~)W34#R-hgmCj=ug0 zjQ0&dyFH83t{6`F0I!8ie5I=61{q0a5sa(Ek~b7nAsAO95ZA$z zxE%ci0(&wZp#5=qaUssOHQu_M7jiJoE_w-h1zt=p*DWo1Ob***36R3tD{f^s>l z)hy3RfI-krFv0zRod!=~fuv8;X-`}XX-bkC5z1IdR7{GGfNUEiJ#zgjNJy%1jvRSN z@9l-fKg1sl%9ukrxO00QRPz7yrP$dC$oB<;9EZeYk5bHv6kb4zQNAk0(1;@=f+GGm ziH6kf+wBgK@Ui!b4w7NDiVUltpx4h;f9A_hm1GC{|j0 zP)PvM)ZD5#hkbgt2a}_da9DJB^Lo4J&FQ(Gh$rNO)dMxObjxyBO|rqr#+6nW;8KTh zGt;YKw$sHXSPjLHQzidh_ zyA2I>mFR45Mtgg+Xrg!bqF7np5CGtEnbC2g8uhiG1pvx;dTb|+*hm`SPaBao zm|=6-QCjRmLyZqD$Er|QTPeD1?%T=zeI)iHGUJX$V+ii;V<#AeKNOR0(*Ax5;Ybu~ z8#|bpUB>k6vUCPKE(cDv)ZtoZ6V4y6L2a2wG~Y2MyX6@J(gDc8q9@?hVrw^!k-1Gg z8k)iVrz031o5FTL0RXJdPMEnSIjV5G1z2gr_xYnyo zRw>t$(Fm0vPMdgyF#mysS#}le4x6Y5_?&ASepy#aCqW}426{uVE5`ywx&xxirzwv? zvIA%a#C=JT5G$Mwe&RTh-2yEY1?xYDAHpsI}HXgBjVpfkAN8MdXq|o zIS=lu{t2gykfDV z003o9$IWGWZUqk?4dULXPw{+kTv~7^+Nw}jQzETQE<9Bx1FP8pkH?Ne58Iiv<5gOL z0swMc1a|Y(Iu*<|gOGEdk1pccc0p;K^cdsH?!K&K8{RY(a6U579^rE6bY*1p~0#^=NCYL|t{Ucp;Dja4-V+761Se z!+7l(2t)wzY%n(h7@mMBvW`=pINqqyqtvd!*k%S}yGHo+Uf3&Z&~&0j67WdCd)PII z@!o#ecbD*1Wfs?Jv;qKh>ci?Xl~oQChV8HlPi3+oPcM;C(O?#dtPa712FrUIOa|2$ z+sR@rszyR=@~bv&T{5F0jU{Ugsu@u2GgKK=AQ`ud*1 z@Aperi@#qEJCi{U7QN(bDDk^_S3AkLQS__w$Thsv-LLkQu9P1EpZ0`gS427ia zPSPja=6q1mqt!EklfPF676*)cj-+(_8~M5pVuty*k(VgWezjfuy_r z*uIQ6gdM>9GpUS@*rr#;NF+S7`jH;NL1-C4h&q2wj|@M>EX`~dz5{*vsR$`4Ekki} zF^US6!<}<}F*c%`XfFGNpT+jrL;$1z5=Xz^^^y5M>-k;-fL8zjM7~dZ`|!ypw=q6C z1U2^2)KG#mr;drWDN(3SZ$fByAM^7o7@wS#q&PBvneN6!xcb@(l=!?b&?lU&cUf$& z_BaXvIMbb)UB=_?A$szl#UgBJrm{WZYC@)r7r<}p0Bf=J5h>;W@@EJim| zmVc!@QSJq_>@ZhB9I%odp&!3YZmZqjAncosT^N{&{g8;UrXJ%*d_{kI8xqAl> zySgN{nunI2>I5@c^%j`TteEr2JU{!+9sIck`?3jg-olpaOMEy0S#Nf!<|*?u$zdyR zcvhMDvyx>6&f*fA zelC(kVfwSO&$k(K^ZWz#jqoV-1-5;n%ep9e2N4l8>xP0Cg7)Zz#HA?YA} ze&nH88S{OoT7jGfHy!-kE~(^6coe%dDjLj2Y2njHft?|e_jq3vxC>yn*(DD7<+J=( z+dp4_*B4)b*8t!Z0YLAwegObuBZELDf`&RDPMVsyuWYX?ZR{} z6o{GC?QPAta_N*rSMngH_CMbRcm*fm92!?f00aOe8TIszpzGlPdV5E)xUvSFPAv{_ zT8&;1JQucBofS`hqk(8yBQ0Fn+Ju~tpJDQBQ3=6|(q9^B(CLq?@pMXsLZ=7cy>%LI zzuAfMayJ&1H}K8}-FWZ)$8tyz)SNwY9Bo$G2Cft(aJ^a& zi%x~xb18KDjR@KbQQTCIj?=AZsx8IV+BTj&=)-*90KCyvyj2Zcs#U{jR1W?`R*Q7b zH$s<9K_?PHrIO1KATU)e=bXltDhcM~39N^+SlR`q1He>Bjrph^0a&26+MzRZ7OEAM z0A+}D8?31=gRfYb`;r`HqJKMOj$jKrhPBNQrsuctd~z8ptJ|;{^k}Rq#)& zpvfXZIcwevCdVJQSWF^goLSt&#}9|_i`!4pJv1TAZC05|)us}qiO1^|_dn|Y`O)0e z1aD#Cfei5X0R-5-CLwZWW)@Gn2>|Zm(Zh$>+}My|hTG|Y@Be4-&A;2a&MeUlkRS*W zAVC5g!2z7-L9=8@wk$iI;-rS8y4G9ohyL^Wbye5uRFXN0S?~z|*1Nb|sA*idVlw{3Xr(LLSHHxP0J-P3SRo|cOI*uFiiw7>pPwCA; zHZK}i6CDYfh-l!8Rd+%{b~uKZfY*D3%}o!y-a}yrWSrAfT#yfRK$_et*t$HeTQlsPctFY#ebGE=2g_9smXBtQ?Hd$Yk1^3J zDsEaCQ6K9O;o9LZKtP!UX=4c@QdBme>?anZrlJb(-Wb7$w@1<1>V)s;7+*Y?#+|QT zA{dNH$O|VTKK}S^Tzl&R%w<;WY;I#>Y#OVp8!#DD7#?axZ&#DFK%@omR|5d_Zmu#Y zEu=~HEOb^}ye7xNC|0))Fg~-6r;Ki0T0>Rj2p6i8xYVcs)T5m==A&guRyV*s(20@r zeduVdL%{3D!t*Kk=VsBE*vI>Az~xp0%FPBOGewAJ2mrWQXXWr006>PwU_jbvK$6wJ zfVwP96q(A$XFw`bgwwbITPMJRKZ99+1}n!|9L0+eNKrdrfT7p~yR%A0%iID0oN!cE zsJ?S$8LDliu$7vm*Bwh_a1e-MW#a%_+xsvX3}|n3Vz9#{Qvgi7O=VIt)GFRFRHPe> zGKOX-DaO*;9)9)3bNtWWJjC?kCamSlF~-H zS6Tw}eE&w}wtl1PWw`Q~&jB}W?jIu)TSB!e0g%8eUp)d5)r0urUfr+X-?djk4m7>Z0_>;B+?hp|VT@d&*5 z95M_7G~_ZB0)TwR!nfuG=&wgr4C*q|B+6JU{`&j_wjVaPJrY1g-AE`LlX&dolaTBm zROC~nH!?DWp}|4)_4T9G?Ur^>p%t$V1XM7QZev{FO8A{lIUSvSbAOeei$q#$E{NX* z1o%1>>#CAYzv&^L!ygD)_+x+no!-))@yR~`fH%0fYynJ6PT|Whzry&~a~vId;jFge z(uICpy*i4vb~iE^BNmr7@!98J$@P zWW@h?BS58)sf8GeCFN$@-118N?#AXG_79Jw7iSPPZLzq_sTpToZ5xsPq{`}6834SY zdC;?8DPV!Z9S${96i8ziRx<`8Y^CM6cBvQdzcYf)j(Rb5c{Z_(N6!`{^r*GPCG5tJ z-oJt23nM~1F3&IE!M!Jc7O9 zk=f?ijF^qY;#4ok;5j(K(xw+P3tO0-TZ3=QgYsAq?d55-+ZCBQf0V_c(FU8V5j_K) z=pXD5Z~h~X51Z5Th^#N6Iemz?TY(W5U^cO*Za^Yagbe8y9;n%r9RB)-t*^=oo2;Ad9S>GFcEml8RUq@&2L}c)G&qd@{(iKywxFt7 zIRdIw60xc2 zAZ-j+C*r92kl-98meWmi#D|})I&BJwV}5FhaE+>hpqM>z5$G8tKALnqr#J|<^h7;5 zv~}Yi?J&>#8R)M(e_!Z)m_j6)e@U)#Ad^!p_c*_UtOSjZ*q+$;9%Fa!2y=^DSYF!^ z#?0xgmC28{Z(hfR3l{|pP~i8csPtLLi0&Y%gobJuLwnVQM4m95n!};oP3qcmO>q2> zdo$f2^eVH;)Go9^l!t zr`X=w5L*4*Xb*0^a~VB7?Sgpc=U4Ihorn0%@9x3tJ&^t#)!66H4dCbh_%Ysn`y%Qb zc9axTIFy!3>P-N^E0LYaw1mSP9i77O4+shmhQo3*u&2vSoCud=IsU^V8N-rXc_zux z5QrildbhH-EFSZ5oQ0#}txcm19?WE;DUPBzER)D!xZjOiHwMw$(=2M}g%$RSHxY@Z z(9+b1Yga~axpotc=x?|yR+6XUaDU;Dv(=W+e&04gfVOY=!mCAytwg^Vhx28I5-Mo*K>@ut$lH|Tix_xcgKgblOQbF6lyF6 zILeHOCsWutNh4ckMN4}Nh6X#)(bj%;mBac+1OW)6HqrLBRQOGH;PHS|p#qe{cY= z$Ak6tO{}cY+nj;Mf7#VKICm&zK+wWX}+uZ;YL3xOo04lzY6Eaz&W|Bk?jlA^l z6(0-z)6xq<9V#dXPl`x6N~)~9X9C56qvb9k>J;oKm3s zBmuzU(w;b!j!i7We-uVlbq&s+Kabn*z9a3P=9U(r_62~v_VtHuWc{@gD8&2A7&QmGlpvK9z*9U9-kb#jLAKBZUF!EvyX85?JF7p;Qf}-0Kl77!up~kisiI{C~~85Ii!>94N_Pn zGrL7{u%AVu2%JzM9Mo2n~Np$IUy2kB$j+6Jwu6X@b7E^n+(Ie)G8c0~hGLXh%!sEGm|EJvuf7_`Z|+aR;}4^+s|6ixF6n7g$VR$&V{1>q0M`LW zyl4e{`_{X-{oZX14i1VEoQm(?0|0X9>4(2!s^p#!?Sulfyf?V!_xF9++uM^buh#>= zZy#RoK79KJ@=t;SW>vg(Z4f{Ir}yyQ`l@bnD`fRIGuIk;;D>HRDv^|XpA~pAq3$J8)&ywu ztk8joy2q60uu$WofTdy>#G;%dd)f$~N)#;6Ht0S;!b0in2mdf5alB+9=!4+fKf%oG zmc(5@c`*Zz?*!#GI|c^^as9@1X#vowkG+0^6`2}Hb5Byn zs*fA8eerFKfDUT(z4`|L@Ey13zt*R7vF`18FgZCX+2HeYvp5T%prgGJw{Ks;=t!Rk zoS6On*_}uD<*)BzYin1=a>xK&I6sJ=|LkMDd-Ia?89CCgGXO;E-}Rw_vUmf(DkfCp zK6EVO_?U7zqY7JGxpV^}8O>2QMKYDh1Aw3c0JH~AWis#|1+cKNf~kpl8Q(iU(uu+T zHgPHQ9|y7P4IrH^LPLEmh6Xw@JkkqSyIbDM__LSzRBflZ_w%D3WV= z5)NZ*ejUGiIEA~<7GxyQ-CB=YN2OG1LKFKAadH}x&7bR+J>rp(QT+ImPjLIachTl< z6CD6&+0{c;pRCCBDo~gQM$8&@3RYus=+_aAVR3mGGcz+-m|w)!)+P=QeTYTQkmS7( zOCTHy zwJcO0n^mMF^$`T*f_3s^gx|P+zwz+bs&(G8a$SlL4M%Z&bb_P96NJMNVfLs8kjQER z0KFoX%3iyU`k}6^ElC5UyP%BlsYAGM9qLY|ltS>mt0l^Ils21Upuo6TT=|m83=aJv zEH3X#P}s!u3cLr$Vl&*_+=_vLez@IknE)Wj)Uyv{U(yo^H5Nks8g(J`1C)Oy!Ar3y zLcySXh0o5A5Mv}hPm4Xy_b>F-qs1ljo>o2v6oaz*m&2d!tk+P7fa;3ixaO<@vXo{~q1|i74sPC?aQZ#1d&aWm4IUq->3i z&Eo#OXNaAhp{u=7007m}$#e#X$7hJe(?XB+bhTn|s0&S<1ONt%znH|YfAy8L04l5| z{Pd&Cc>ApZp_!!zC#{D3jsAuo!=L=LZwCOROfxwEpd87JI10q^a%vs-A5P-Y(`l@% zZwtN3L(1Lm!eDt`9G!mIZtb^|j*axgHsjoL|_+!)NoDTiO&CG`1L= zOlloy8*3qrsoI+AAdz0Ke7cYgLobze#4=$B`AAWeNm=SlWO{ z3Wz4@CBT(NaF{osCg@Shb*kPqdRluuj3PeQ+m83I4&m07e)M)Uz(mbLf&hT*MG;KY zoG=h4o`A=9gr_qrxbt)t&*nA}PNdP@*@QYrrNry{4^@gA&0i>F4F=CpSy_$Cm#^Yy zKl?|#``#^COQc!z6ssnV<7+O^{OKlqe5vf4a|WJaKN}mHn4X!z+}s>?wl@(9o}kE> zkx&Eh*LVN`AOJ~3K~x_eXk=~<4^MIEKNcoqXrLV*eQ*`;zH=TuosF=R7?Fv`rKO@q z*|o!0?xRAVc)b=@bMuN}&+8BfSj7BBRQgGk0idy7dM&P>%gSI#i|5q@xKa_z-U};`Hf1pp|n#d`GCxm$jlL`6=%L{osEcYHKTw;H_Ah{qS=X;2^Y8A^J2B zXK61$t(%Mnh zuyh2c-nMdWB}2)*o9lqigN?36vmmH6OCZ{e-0=TKW)g_DyY<`>p6F|`bj z_fY(;D=N$3b~j>VunQe+O|V)@WkZ))VS{P|eAfqWa8l3&0NlXyoS#0>rv6;i!m=^s zNIj`|_2-M?KgocSBoc8REE)0t*8#w@XEV6-`6Ku|KGZoY(A(3Bjt-X?l!PNm37#n} zF{91x!XPQ{F6M0;F+Mhl|M)dE0CTWgP58TyFXQI50a(jR3N}b+rxd#v0UB+hlS;6>0hgo}Wl$ z)u>N@@H3=Xll@C-J7@-V#vUjuHyZiGlQ=n5Hml)a_!VJ14}2vhQ$j@r02H9m_=j&? zeim~nhI-oY;f-_n@Wu#+dR!G%Vp%6p+y>cV(4e%7pV5uHc{l`M=@)58i{N)bg6LTHBxtGBgzJpMS~x z-P_wcn3|fx%a<>)w7d+T&x1@dhRTXkG&WX?$qw6Q9?v0GS9h_!EHsm91Rz^xlv<996Pkk*NIXsn66rYInr=OR9eT!swrO;o+~Z zeFZ8c5Qu?7HpYlsRp<~codrDTdH_xLp!tQUOQ8QuGG<2diJ%E#G?EZIX=Xnh22Mou zna&tcLIG;IRYv^uF=Xyb^w*$EX=Nqj)Jw&Sfw~szUkI|L5mC5TN$ZgNR9q@~9{$24 z>2nTx8%BSddLE0`9^!kF{0CYTOQwPjgajt2tOS}J#go#aB4g#;C_JKK};*@CH|t3xj#xD=W)*^7sj!JbHx9ja6~j`{a|i zaqI1iXmZsE!t@;+!|SCX2XBBZ%$5=f6{&SriXn)ZqdQsxmQ)!32{$}-Untb8JjqoB zl50h(C7nmrh3BkRsi^H=MR@W{6v$#FYLY+SKR6PPfxCB}Vr^v;W|I+}9Ss;9Bo*co zr@FnpBiSfvbTl;5gO;970RS(@r|=)Y{t7S0W?{1w;gcU-#Lc$`#HLuPB0UA{4X*w7 z`;E+i(`GukLTk{`1;W_Uc6isO261#EIs4FJ~99;s4BN& zXZHXv=T=}c1D7te;mUmEiQOy|Yb)&h_A=EIh1%+$c39XHK z*N-ENb~nVH#jjE^r0_#nvb z>1@IEtHZeQ))0mVT2WtPLum<9JxMuh06^|h9!xp_PzPXs7C-@6)$dm>eUWHV!hvY3 zys)$>7Rv{R0qHj@V6F~Uo&8ZPUE$i)M^XzhfCBXVJ_bJN8UVJWL|-6Df9jQe`y>B5 zsO4djV6C$XHO^{j?JW%0l#V53%LacKiv+j|18$p|r@!D_1z*Fqlt!^6WE z9UYbF2C@OlGeNa}^sn!C|N8!a+7AHW4X!Bx00UE&S61-o;UnC?cMmH|i>PswrJJrM^I1et=`Y4%Yd;3^Oj>FnAYyoA@DQpg&->Pw#6M_y?+7Cv9O z|7in(T7I||ZbD-cQ;GZt9w;+2tN8lCOUzC$Ar?J@%jLlN^W7L3>J$T$wKcCq&o(yH zVtBL{?!GRuhM9ahjo6p;Mu3DLRDFB$eQyma?X(XXd3Vp%?|D1Q~krn(7bf zN^)royJYzwTgidIMFC27LOHpW>5GKbGDq zt5V(bB3A(y9BQI(NhFof&*R11{2ZP=dxr5B&#|+;A?bbH?Jk@f>csG1Cz@LtkW8jA zzqE;`&*$)bY+j7C2y(kSnsN2=Ag*5>#OP2Pnj7rmp2=&&ym}eM)4;XXPb-kYQ3R>$ z0#uS8t#0`}fzt?T*ix+3z87%-9MCGJ1KA_TH`fj51qz8%KV2_F=KjZtioQo=Y{q87a1>~;FAqomDdGPY^rvVaMn6$lSB`g(qPH_1u z0C?py$tc@kf+M+yBwUQIMga)XZe;kSUN2i$WHtl<*lf~HtgCh80YEYN1g$0V3Nxys z0ljK3@CeZL0yzza1_)@i%+Mq`*fqv0hZnRo)&e$(g%qzPTLhf2+S>MDVQ~Ws3#(Y) z+=0h?ASs5-V&UG!>43qZL7Y2x4t>3SvUcg*NVbE4Xw1H#yWtOGfPdPK{a5kb0sz8c ztgfu!!Go`H_wJWin4g8Sx*Y%TkMHBd_phO&tx>9bBH=8JUBoeqU+Sh4%2h0Qwg1jB zihl|X{(AeM;AiFj>i1g=xi}MTZn;Q{3FTrfW>se}%3-szvW;iY=P>?q7QTZ+$rBhI zX~)$|JrbOza=VP;|;zy0k!Jbe5Dp-=z=eJ!|oZ4iAOt*Cca z$wtE}gU)6-3h%$*lP;{5^omZlJB@B7UCj+76p3MJWf%AEP2rcneTv1kZJ0`m6oqLk zM@g|svL6DcA+)vE;zzefarr_ILcth*@vEnpU)+|2x$9T^C0e<^w-vTB3qqk7e7<90 zjZRNPGD=7qnG*=KdF6qA95_WdawefYkw_YmGbLn7CeB2>XRo4Xd<9BM&2mOjz{cwJ zEF6=>wd11z0>`9^qtfEhTQBlH)y}LJSPC)!eAT9N{dwcCPOiz z^0z00H7zhN3duc>5jv_$Qx;Sd2<>y{G#6lHfhWFdDDNhw15QOifK=W_B9u>njMJ24E{U zi|$}#pacC~t#Zw|#+FuhFgCf2shKsbZS2YHIv?Gg&A4)D5ZA8^V05qz&8{kx3jkpM zJ|j8`vL;fm%R*JEom``hBX&Ie*pe&ec&$OQ0QP(*n4H?gljn;VpInmP$<|E)J1v_7 z?=^ZdR8?6;FH&FcKvPpanq0Lqp&?bNrUy{hLLI8=F3+n86pQ#Oi=Z8Y-&!~jWN{pn zeR{@h*C9~gi)IC!{tsX8S9V35e2J6~XSb{f@H7X19@AK>E;uA{Tfh0ZTYN z4Gpy5o$CW=sCB^OIYlIvhO?#$J$>zH>1+p3g1N~>0RUe;cmkh)AFZvmc>CHgE>H*2 z+<*$3Mfz~D1byPw2J+YQC}30!1{sf|?4FeFlgIP;w|{?x$76Fi4WG%YCR@ObnujZ^ z?Ec;seDdLCT)o_flan+2%fCIq{NffG>KwRsxepi5ccY=+A-&U3kQM!je1*;;vH_V& z%n|~`u}oGR1OOcAl!`QM6m}rXS^Nys9*a0D+gl8QGRJj2n^v53Xk z7T}noSk!72t;!t8z?e;|zOQDAB<8mn1C>}Xm4*5VO8OS(<}_0V(88O!9F(EHZe0jjitqT?0a{RN<~mzWfRk(p6*sL zAhO%a5R1mJx#hvw)RKf8ZEpLd6~kUK9}H@`c4-K2T^SVJhGGC@L`MSvJovQOU7?#* zg{wvr)Qr78Wp6B2G<-N3!|LWf9zR_Y0KoWcTII4m`09gM01WH0qsdi=Hg_YsyIaxM z+m4P7W;r;7K9_@C#u8MkE+-4nH8fh^FW;NjPPJEy=HHvSQTm~LSWjM1tTRLTSNlo{ zq52HDN8!Dj(?ROONS$TUG#q(Yp-ikevZz`oTK+%*Ve$Lwe7;^S)lgo8_Kx+}qG1k+ zJtk13zeyw}+9m>ePHB<#F!6V4QyFUhCojTeTS!eqPz;zwCYcezrN`?R0r33N8kSbJ zq&<2P2r8cxvBYGYbE%{m5&+QhcyMq40|NuX6zCDfbh%_3K@u8eqT`!g1_kQnam=4} zYy1HKyusz=g5v1N+S-}`fX_br9MjX2u-i-V-~Q=CeEcB+K$9>4Tr|iir>qQZL^S}Q z=5eKinWI?$>i|FjqR+*fs#l|`-ePgU^B^~H?Ixj>S!-|+FTNQN&rBQ^H=7M z-{7Z(Ub`!t-d>nVbo)ppBNiZbp?!w2=KpTGY$u(TN(vQH& z8UDw=eue3obvXow`r6Rd>5{}bx*^7*Dx#MM9BEh1RhL`Kq>o4npMOW;pK?6YM4i-q zuw9|`X_+CA0)?A2=`qO9O>(j$6q0c__UBo#@L*EPXH8IM$f5))%}>vMCkUWd)EQe3 z8KASZ5g)yM9zVU!7C;9qB_(S1I+K=BR(j@Vj9GY&&M>jChx^YK@ML@en|pgGx0d4K zg+6q4x@6Rl7SN)*Fcf2ba}SeKOW4@-AZsW_Pj4SS{`ez&^wCG?>+6-U7#TKW{(Lem zKxTK(gSCxytgNnJdwml=?+zm2fCv-oYAey!)`)IKbJsY8ognM6zOjp$xmC<9ZeV@O zi@@obOi$I2@oJdEp?6##J6SE9_qQZOR|ON!VO0AQuB?pvw0r9veuz!5*KOU}%O zObW-RVNB0&;ogH8JR4iW`sTjG_R9BYW4k(oz!nOfLOVNKFxcOPk>MUOkm~GcMopa) z24UlPDF^`4>Cx@Sm4RYmlAcG2LLYB0!WftrDHp{3(j6Er7B}rH3^e0zbl~e-rz-i&ri`MLsBmY zFi{OM@nL60o61VnxU+YFukMfG{=+dGA048ztrj2OzJSq@USzW-iK*qGRa@_Xqpnue z^YfF-!T{X8{{*|09F4-^w2Rn_EfNak z=>EqqI#(VZ9?P{en=NSX=)k+TZ{x!cK9Hawj#;Kt92bp>dVYIr2eS(cn4VEp|Ixud z%1VrAs<)%N!zFRlG+nY+S4jJ0d)JTYSx)0D$ygd0mLOXoT2!w7d9mUq0Jw2wNB}@n zLnX=y0B9r37J&Ex=q&(sM@z-1RjN$X)JRO_=fq zujl)CO8)jL5b>}^({cbP)``ZG*grVIm-ol;#oZ_H?C!~?`=fWxYa-aysm|eyI=F&Ud4)s}a@qazWhD*k3OI(62F-$+B61 z0?!ooeL*~YI)~5ijfv%{@8C#1)j)SW6GnzQ@WK1%ac;OBfs-(P@yjRTkXBw+iq@7o z)YaJK=^Uryf}kFPhorsAhRO<#OPQn}OA#1HENMt$;<#OrqM$RG6q4}-qG#+=o=KbF zz<+{+g8+{G0Yr|DVTcA`NGDY4BtK88t8-y6sw-MdTC^A_%ee?rsA@ngk;R5Tfwcf& zZ*bxI^^5rE)>T{_>_nM~03b@qx0ZFUG7JKt2v&FYF}=8fiTQO*FK=Oa!-KP!YVnwg zEvTqq)T0LjbJWV1Q_q^Rzd10O5iL_C8)Ad0n3A09rL#r?+< z!V-}oW2La&TWQX9ZSn69c8i$xA>GGoD0vRol?IwiQHhJh76 z*E>B4=H}N02=HF3tSA@rt_lJGhF_5_ps`kQk*pmvlLwh`AbtTU`Te}^jjnppWz^O< zV6CvC*lZE7ap*a~^5QCH=9aO#x+N?CBbg8UN21-Ku$TKA*@W_P8ya0MnH=b7Z%1ou z3uK`aX5wEV$S>q+Xj!uaPQF= z7MC~WV7WNliFdB`;oMN09D<}`&$I~9ztm#?&s;uTC`?q(4I&avHG8I17=N)us}XQL=FrbTg{ z73)A&{Q5AxQj`}PjVLWPfahJg39y*ev`QqA#lmhJ&-Z|g-G$Lh7jgTYD;OQA8ICc z_xxDh@L*wi8!Kx&@cNH`uj(&c15FJzxG>U(8`p+#-yBguBwn(MV$%$BkuaTfj zW61OYKq+jMcLeQs*{eSbC$YD8irKjxeD!D&&nMR#z@zMn_Vo20-3S-0C(J00B$nIudUpxU8XwyTmHX-r`M;8?~p=NDJt z@%V*~Cy3xv2>{e}aiH8GxvA{5Ti)<;0Ru? zUmPx}vtco?ySpz%&-Shlo_#-#PlEDZ%gd}X89+;6>I9?}P+cWVfWtv>T!Y5OMiCXV zRZ#kSo*3WH=k)qd`2hgD;dK=+fYVbOPhk;%npAoup3fX)~-!MO%pI-|&Th!_x!+2xG{tQwt0c zyD{zcig-~a6`lrTc>Hu0Uwru#%ZnQ@8-d|oQkHF~s;Pk0W`osMiRwxxYHMmxZY#sV z!4Y0g&f~%335-uH;NZtm zP-{uUYNpu>4}ay8F2t!u8}rb$6dPbGF~DY~Knh^OYf%YVjw}{8WB7ap2$Z_eF>)T) zZ(PRkKqo9_wzy)dCoQdTR-Gy@K7|y5(Fk^Y$Cz2(#r>zVc=~b)fp7xOx<(8R598eV zQM9+YQC4OaDm)sEAj#x9>G7InEwJMEcs$tI-H}nhOeQIAk_}EPnj0$7P|tp91x)4= zIoyN6hyX2*=LnnI``Fn##J=wsC&4pObSvP-4PW(r#i5UmipeCZDy)**aOGk@u3qX_ zUI4Y!AMjuzaAy&#eJ?d3ynd3-$Ti2mOvxCZAzO@-lQ>pZe0ct18DHEV$MnLoRO+4W zjktKO2YuZwC@CpIG!_?405v7_3gP{AcobCA9&$ebmNE;fsw>ghScBH)2DG=j;BIb2 zQ)4|G4m--qDIybbEXkv9H2j=Yj3Z`Zj_Tfxql#@VrS>8#z7$PO4FbSwYpY?aC{vNn4Dk?FI3;Z#f|1~9 zPz1Le7i3Yul-Bia4|eu^!c_3}Qm?=wg8hFrE@&4Jz-fZU#`>JO5Y2{Ylg;N*K*+Y) zpKBW62LSNO`SDF0SRNyX&%&6UoyV7V@8kZ1`|x_U(bd@~p5ojfTbmkCVXaUJTnuR` zErzAcjM6f*cxDTn6-2J1c7=o~@DXcZ?M8kbsViGi4J_9I6p#(GO=xOypt7nGB_&prmQ=t| zkcm5gdFuWsYvlPNs-`XyFZH__#;#ZNxGg!gap5Kyz(bhP`g004RR<(n#?Jjl{3 zByL0;nc@wZ%oyI4t0Vv*{Y;T$FciY^NkHcOQ;DpY>Cn|Kk&H_PT4e+p zEkKhMXs!U-tAN%jBdW{!n(5WA>M*)5$m}@#(M1N>%?8w!0oL*?45ln#=7KdM76Ufd zWBB*EEOrbHXy_fq#cLNaG|&NSc?k?ztv|~poF;rUN{V2y*@(0ugVS&nt6M%id_E^2 zzij)gD9agB*^9AJUxt=5xG>Tsf>MGO9!#OLm;eBd+p_wl(wzT14ulbnCdH+a z>y1|8jdf1hTRJ=F#Mz4G=2|!$d|f8MK<7YZH!Q|aGV`7f0LmMUy=D=l&%|pZe|(;D zp46;)HKQ?oBv$zHToRx@JE!&dxvo-aX-!4WB4Vb)*CXtNm?Uv}B_m>2j#D$Tn7w{p z2d;UhLlOWiEpK3Xc>{+uO%et`GdnXvJ_GjC8LLb%$F)o#%PAdtKd_a?2;b6@Qk0tc z-(|u!P_%j)JVhW7P~)>HifiKto}P&{HJKj%?5<8Xh6cOQ(?h#+2P|bJuvpA+R94Ek zua({m)B`baNxn=liVsGScwEFI3edA9=kp!O!N0XjKk0gFK7;jiJ*qnfF?wkf!-E}gR#DKW$wxWtLh71{fTUC@Rx@!NlB)e6 zCTCai;Kdv^yg_74R#eqBpt`nJDC|^<{o#%u<=UO$%BcCfvBAeP${+HozBN~Q?4%xV>_0V(5ZXANwXteUOD2E?OL z93A@M-P^(Gu^%Nx1~fN11-K3NwV|%gE^)`Ci)(8gXlkw(npR44N!`@E0F0dQ$--bZ z%QS%B7sAZ+CceBsiO;@xisjWUSZ!upJl};My?X&~UG9gox*|6+$|)NjM3RdTI>S*w z0h+DdLu_sP;oU!$HNnGzeQN3m2mnS$`*HqUFS@##QBzZi(o!R`DcWnRX%X5q69CY2 zL4bgaF6xk1^D__+2t~`wiWiZC1^`S96jBtqN?bH54GG1;Vs~69>{Bg7QYEQaTn=`L zC_iKbd06goQPi7?1@IpSf^ragJp1CsAiz%!=rf5m_xq0o6n|qnmh7oTat|sWff6{J zRp{zc_T!CPmvS15fQxCTK^do|$N%AB5WBkv*xc}7Z_g)&S#9oS zT)H%jD_2L+KhS~NI^|blHX3CZQ}#pZ2AH3~41|(m7$xGFV2dMzDS1C^*HPTc&?~+t zP7e^=t*&fgW_AUOi|gVFsXxe0v1MT`r{K^otpOhV3?b_7=|*o4CuusQE%2({aQ>Vs zoVt*`UXM0bgwP*+{0##DrTonI!StJ?phK=lu4$L>G)Q;6Io!Sb74F=*gO}su(#xa( zuA{vb9qlb}R#W7ag}I~{RaF&29dXmQRg}x3QPjI)09ZdURE4OLZeZ*MQ|P0Ro(@RV zND4oE8fNg{)d#K}Q2MczO9w2Rw$&&%HjRyq9hi!;I5*OYo7el`YN$mtnuY&3ff92$`Ul+dz7Ko>JbFBXU;oDg zJbp5UW|tj5|LF}Gk?ZYh5l?Q8r~Ov|fP5{a3m|o4R*jvJ>P`(P3UzEWBAH|hD2AP# zBfJ=2#FMdEEUj&e$c(f1maD0X&zm|Wb#;`TB2gGq#vKvX6dB8Wx#-s55& zt8yq3!T>PTC!UDO+92>^-?zKF9Rt1XXlZi7Qc{G|zzJ5?cd)X)ClxcrW3LDjh1-Hd_0 zPW1J<(bnFG`uZwVRFuM8qDJK;dN^Z1I&DBYMd@NL(nv9f^0ISQU}}TViV128cz{vK zuCt89dU@G1dYAvU2Eqy*}*w`~vvM zn$b{<^YJ`bInI|#@OQ8f(hf3hW}g}u6(XhDW^6IAavmP;#+A#180hanb7MU!Z8j0j z(glzc0sMCACE|%F5@~fv)6-*RWe2mftC*i##lF`sLcFdnH%3PLB-eyvr4DB$Y^4<9 zs(qQ)NjxdSY(2!}{2&v+eVGg)TMz_11Y%s@oE!^tQs+2`tu3!O3vx1Hb8`>JC;VK4 zvKNpQ(rtuU=~Gk1^-GK4f&Kxp9Oif|fdShag^!$Lqh`#cf1Wu|@B;w&W&otBeC@E* zD&fLDOJ10!)rQ%u^d!f}U*e0qck$)jFEKkiBZn#%0DC#26tz;6r20`DIT5!wisj05 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

Lei@4|B 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 Td+=$}OndyV@~;*6*(>mWSwiVZ literal 0 HcmV?d00001 diff --git a/public/404.html b/public/404.html index c41e858..3f6f8a4 100644 --- a/public/404.html +++ b/public/404.html @@ -1,49 +1,883 @@ -404 Page not found | -Comprofix

404 Page not found
- - -

404: Page not found

Sorry, we've misplaced that URL or it's pointing to something that doesn't exist.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 404 Page not found | + + Comprofix + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + + + + +
+ 404 Page not found +
+ + + + + + + + +
+
+
+
+ +

404: Page not found

+
+

Sorry, we've misplaced that URL or it's pointing to something that doesn't exist.

+
+ +
+ + + +
+ +
+ +
+ + +
+

+ © + + + + + Comprofix. + + + + Some rights reserved. +

+ +

Using the Chirpy theme for Hugo. +

+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Trending Tags

+
+ + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+ +
\ No newline at end of file + `; + }).join(''); + + this.resultsContainer.innerHTML = searchItems; + } + + + checkFieldsForMatch(item, term) { + const matches = { + inTitle: false, + inDesc: false, + inSection: false, + inContents: false + }; + + + if (DEFAULT_CONFIG.search.fields.title && this.containsTerm(item.searchableTitle, term)) { + matches.inTitle = true; + } + + if (DEFAULT_CONFIG.search.fields.description && this.containsTerm(item.searchableDesc, term)) { + matches.inDesc = true; + } + + if (DEFAULT_CONFIG.search.fields.section && this.containsTerm(item.searchableSection, term)) { + matches.inSection = true; + } + + if (DEFAULT_CONFIG.search.fields.contents && this.containsTerm(item.searchableContents, term)) { + matches.inContents = true; + } + + + if (matches.inTitle || matches.inDesc || matches.inSection || matches.inContents) { + return matches; + } + + + return false; + } + } + + const search = new FastSearch({ + searchInput: document.getElementById('search-input'), + resultsContainer: document.getElementById('search-results'), + json: `\/index.json` + }); + + +
+ + +
+ +
+ + \ No newline at end of file diff --git a/public/about/index.html b/public/about/index.html index a0bc083..f4d3e7d 100644 --- a/public/about/index.html +++ b/public/about/index.html @@ -1,53 +1,950 @@ -About | -Comprofix
About
- - -

About

Chirpy is a blog theme originally based on Jekyll. Due to Jekyll’s design limitations, it does not natively support internationalization (i18n) and requires third-party plugins for i18n functionality. To enable i18n support for Chirpy without the hassle of relying on third-party plugins, the hugo-theme-chirpy project migrated the Chirpy theme to Hugo with minimal adaptations. All features of Chirpy are available in hugo-theme-chirpy (though some functionalities may operate differently within the Hugo framework).

Follow the posts in the demo site to quickly set up a free personal blog!

Features -

  • Dark Mode: Enhanced readability in low-light environments.
  • Multilingual UI: Easily switch between different languages.
  • Efficient Post Organization: Use hierarchical categories, trending tags, recommended reading, and search functionalities.
  • Optimized Layout: Includes TOC, syntax highlighting, prompts, and more.
  • Rich Writing Extensions: Support for mathematical formulas, charts, flowcharts, and embedded media.
  • Multiple Comment Systems: Choose from various commenting options.
  • Web Analysis Tools: Integrated with multiple analytics tools.
  • Modern Web Technologies: Built for SEO and web performance.
  • RSS Feed Support: Keep your readers updated with RSS feeds.
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + About | + + Comprofix + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + + + + +
+ About +
+ + + + + + + + +
+
+
+
+ +
+ + + +

+ About +

+
+

Chirpy is a blog theme originally based on Jekyll. Due to Jekyll’s design limitations, it does not natively support internationalization (i18n) and requires third-party plugins for i18n functionality. To enable i18n support for Chirpy without the hassle of relying on third-party plugins, the hugo-theme-chirpy project migrated the Chirpy theme to Hugo with minimal adaptations. All features of Chirpy are available in hugo-theme-chirpy (though some functionalities may operate differently within the Hugo framework).

+

Follow the posts in the demo site to quickly set up a free personal blog!

+

+ + Features + + +

    +
  • Dark Mode: Enhanced readability in low-light environments.
  • +
  • Multilingual UI: Easily switch between different languages.
  • +
  • Efficient Post Organization: Use hierarchical categories, trending tags, recommended reading, and search functionalities.
  • +
  • Optimized Layout: Includes TOC, syntax highlighting, prompts, and more.
  • +
  • Rich Writing Extensions: Support for mathematical formulas, charts, flowcharts, and embedded media.
  • +
  • Multiple Comment Systems: Choose from various commenting options.
  • +
  • Web Analysis Tools: Integrated with multiple analytics tools.
  • +
  • Modern Web Technologies: Built for SEO and web performance.
  • +
  • RSS Feed Support: Keep your readers updated with RSS feeds.
  • +
+ +
+ +
+ +
+ + + +
+ +
+ +
+ + +
+

+ © + + + + + Comprofix. + + + + Some rights reserved. +

+ +

Using the Chirpy theme for Hugo. +

+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Trending Tags

+
+ + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+ +
\ No newline at end of file + `; + }).join(''); + + this.resultsContainer.innerHTML = searchItems; + } + + + checkFieldsForMatch(item, term) { + const matches = { + inTitle: false, + inDesc: false, + inSection: false, + inContents: false + }; + + + if (DEFAULT_CONFIG.search.fields.title && this.containsTerm(item.searchableTitle, term)) { + matches.inTitle = true; + } + + if (DEFAULT_CONFIG.search.fields.description && this.containsTerm(item.searchableDesc, term)) { + matches.inDesc = true; + } + + if (DEFAULT_CONFIG.search.fields.section && this.containsTerm(item.searchableSection, term)) { + matches.inSection = true; + } + + if (DEFAULT_CONFIG.search.fields.contents && this.containsTerm(item.searchableContents, term)) { + matches.inContents = true; + } + + + if (matches.inTitle || matches.inDesc || matches.inSection || matches.inContents) { + return matches; + } + + + return false; + } + } + + const search = new FastSearch({ + searchInput: document.getElementById('search-input'), + resultsContainer: document.getElementById('search-results'), + json: `\/index.json` + }); + + +
+ + +
+ +
+ + \ No newline at end of file diff --git a/public/archives/index.html b/public/archives/index.html index 077b6cb..e044859 100644 --- a/public/archives/index.html +++ b/public/archives/index.html @@ -1,53 +1,962 @@ -Archives | -Comprofix
Archives
- - -
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Archives | + + Comprofix + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + + + + +
+ Archives +
+ + + + + + + + +
+
+
+
+ + + + + + +
+ + + +
+ +
+ +
+ + +
+

+ © + + + + + Comprofix. + + + + Some rights reserved. +

+ +

Using the Chirpy theme for Hugo. +

+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Trending Tags

+
+ + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+ +
\ No newline at end of file + `; + }).join(''); + + this.resultsContainer.innerHTML = searchItems; + } + + + checkFieldsForMatch(item, term) { + const matches = { + inTitle: false, + inDesc: false, + inSection: false, + inContents: false + }; + + + if (DEFAULT_CONFIG.search.fields.title && this.containsTerm(item.searchableTitle, term)) { + matches.inTitle = true; + } + + if (DEFAULT_CONFIG.search.fields.description && this.containsTerm(item.searchableDesc, term)) { + matches.inDesc = true; + } + + if (DEFAULT_CONFIG.search.fields.section && this.containsTerm(item.searchableSection, term)) { + matches.inSection = true; + } + + if (DEFAULT_CONFIG.search.fields.contents && this.containsTerm(item.searchableContents, term)) { + matches.inContents = true; + } + + + if (matches.inTitle || matches.inDesc || matches.inSection || matches.inContents) { + return matches; + } + + + return false; + } + } + + const search = new FastSearch({ + searchInput: document.getElementById('search-input'), + resultsContainer: document.getElementById('search-results'), + json: `\/index.json` + }); + + +
+ + +
+ +
+ + \ No newline at end of file diff --git a/public/categories/gitea/index.html b/public/categories/gitea/index.html index ddc7515..8f1e46a 100644 --- a/public/categories/gitea/index.html +++ b/public/categories/gitea/index.html @@ -1,54 +1,902 @@ -Gitea | -Comprofix
- - -
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gitea | + + Comprofix + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + + + + +
+ +
+ + + + + + + + +
+
+
+
+ +
+

+ + Gitea + 1 +

+ + +
+ +
+ + + +
+ +
+ +
+ + +
+

+ © + + + + + Comprofix. + + + + Some rights reserved. +

+ +

Using the Chirpy theme for Hugo. +

+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Trending Tags

+
+ + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+ +
\ No newline at end of file + `; + }).join(''); + + this.resultsContainer.innerHTML = searchItems; + } + + + checkFieldsForMatch(item, term) { + const matches = { + inTitle: false, + inDesc: false, + inSection: false, + inContents: false + }; + + + if (DEFAULT_CONFIG.search.fields.title && this.containsTerm(item.searchableTitle, term)) { + matches.inTitle = true; + } + + if (DEFAULT_CONFIG.search.fields.description && this.containsTerm(item.searchableDesc, term)) { + matches.inDesc = true; + } + + if (DEFAULT_CONFIG.search.fields.section && this.containsTerm(item.searchableSection, term)) { + matches.inSection = true; + } + + if (DEFAULT_CONFIG.search.fields.contents && this.containsTerm(item.searchableContents, term)) { + matches.inContents = true; + } + + + if (matches.inTitle || matches.inDesc || matches.inSection || matches.inContents) { + return matches; + } + + + return false; + } + } + + const search = new FastSearch({ + searchInput: document.getElementById('search-input'), + resultsContainer: document.getElementById('search-results'), + json: `\/index.json` + }); + + +
+ + +
+ +
+ + \ No newline at end of file diff --git a/public/categories/gitea/index.xml b/public/categories/gitea/index.xml index 936bbc8..ec02acf 100644 --- a/public/categories/gitea/index.xml +++ b/public/categories/gitea/index.xml @@ -1,8 +1,19 @@ -Gitea on Comprofixhttps://comprofix.com/categories/gitea/Recent content in Gitea on ComprofixHugoenSat, 06 Sep 2025 13:28:05 +1000Continuous Integration & Continuous Deploymenthttps://comprofix.com/post/2024-09-21-websitedeployment/Sat, 21 Sep 2024 00:00:00 +0000https://comprofix.com/post/2024-09-21-websitedeployment/<p>Since the reset of the website, I have been working on getting it to auto build and deploy using <a href="https://docs.gitea.com/usage/actions/overview">Gitea Actions</a>. Which is similar and compatible to <a href="https://github.com/features/actions">GitHub Actions</a></p> -<p>Before implementing the action it was a manual process which required using docker commands to login, build and push the image to the container registry.</p> -<h3 id="why-use-cicd" id=why-use-cicd> - - <span class="me-2">Why use CI/CD?</span> - <a href="#why-use-cicd" class="anchor text-muted"><i class="fas fa-hashtag"></i></a> - -</h3><p>It takes the manual process steps away and does them for you, helping you to avoid missing any steps and avoiding errors. This also makes the interaction seamless and automated.</p> \ No newline at end of file + + + + Gitea on Comprofix + http://localhost:1313/categories/gitea/ + Recent content in Gitea on Comprofix + Hugo + en + Sat, 21 Sep 2024 00:00:00 +0000 + + + Continuous Integration & Continuous Deployment + http://localhost:1313/post/2024-09-21-websitedeployment/ + Sat, 21 Sep 2024 00:00:00 +0000 + http://localhost:1313/post/2024-09-21-websitedeployment/ + <p>Since the reset of the website, I have been working on getting it to auto build and deploy using <a href="https://docs.gitea.com/usage/actions/overview">Gitea Actions</a>. Which is similar and compatible to <a href="https://github.com/features/actions">GitHub Actions</a></p> <p>Before implementing the action it was a manual process which required using docker commands to login, build and push the image to the container registry.</p> <h3 id="why-use-cicd" id=why-use-cicd> <span class="me-2">Why use CI/CD?</span> <a href="#why-use-cicd" class="anchor text-muted"><i class="fas fa-hashtag"></i></a> </h3><p>It takes the manual process steps away and does them for you, helping you to avoid missing any steps and avoiding errors. This also makes the interaction seamless and automated.</p> + + + diff --git a/public/categories/homelab/index.html b/public/categories/homelab/index.html index b8dfdbf..cec3e8d 100644 --- a/public/categories/homelab/index.html +++ b/public/categories/homelab/index.html @@ -1,56 +1,908 @@ -Homelab | -Comprofix
- - -
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Homelab | + + Comprofix + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + + + + +
+ +
+ + + + + + + + +
+
+
+
+ +
+

+ + Homelab + 2 +

+ + +
+ +
+ + + +
+ +
+ +
+ + +
+

+ © + + + + + Comprofix. + + + + Some rights reserved. +

+ +

Using the Chirpy theme for Hugo. +

+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Trending Tags

+
+ + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+ +
\ No newline at end of file + `; + }).join(''); + + this.resultsContainer.innerHTML = searchItems; + } + + + checkFieldsForMatch(item, term) { + const matches = { + inTitle: false, + inDesc: false, + inSection: false, + inContents: false + }; + + + if (DEFAULT_CONFIG.search.fields.title && this.containsTerm(item.searchableTitle, term)) { + matches.inTitle = true; + } + + if (DEFAULT_CONFIG.search.fields.description && this.containsTerm(item.searchableDesc, term)) { + matches.inDesc = true; + } + + if (DEFAULT_CONFIG.search.fields.section && this.containsTerm(item.searchableSection, term)) { + matches.inSection = true; + } + + if (DEFAULT_CONFIG.search.fields.contents && this.containsTerm(item.searchableContents, term)) { + matches.inContents = true; + } + + + if (matches.inTitle || matches.inDesc || matches.inSection || matches.inContents) { + return matches; + } + + + return false; + } + } + + const search = new FastSearch({ + searchInput: document.getElementById('search-input'), + resultsContainer: document.getElementById('search-results'), + json: `\/index.json` + }); + + +
+ + +
+ +
+ + \ No newline at end of file diff --git a/public/categories/homelab/index.xml b/public/categories/homelab/index.xml index 65102f2..a0c528f 100644 --- a/public/categories/homelab/index.xml +++ b/public/categories/homelab/index.xml @@ -1,10 +1,26 @@ -Homelab on Comprofixhttps://comprofix.com/categories/homelab/Recent content in Homelab on ComprofixHugoenSat, 06 Sep 2025 13:28:05 +1000Continuous Integration & Continuous Deploymenthttps://comprofix.com/post/2024-09-21-websitedeployment/Sat, 21 Sep 2024 00:00:00 +0000https://comprofix.com/post/2024-09-21-websitedeployment/<p>Since the reset of the website, I have been working on getting it to auto build and deploy using <a href="https://docs.gitea.com/usage/actions/overview">Gitea Actions</a>. Which is similar and compatible to <a href="https://github.com/features/actions">GitHub Actions</a></p> -<p>Before implementing the action it was a manual process which required using docker commands to login, build and push the image to the container registry.</p> -<h3 id="why-use-cicd" id=why-use-cicd> - - <span class="me-2">Why use CI/CD?</span> - <a href="#why-use-cicd" class="anchor text-muted"><i class="fas fa-hashtag"></i></a> - -</h3><p>It takes the manual process steps away and does them for you, helping you to avoid missing any steps and avoiding errors. This also makes the interaction seamless and automated.</p>Reset and Restarthttps://comprofix.com/post/2024-09-05-resetrestart/Thu, 05 Sep 2024 00:00:00 +0000https://comprofix.com/post/2024-09-05-resetrestart/<p>It&rsquo;s time to reset the website and start building my blog again. I have had this domain for a number of years and it has always been used for my E-Mail.</p> -<p>But the website has been more of a play ground for experimenting and testing.</p> -<p>I am now hoping to get into the habit of writing more blog posts as I document my journey as I experiment with my HomeLab.</p> \ No newline at end of file + + + + Homelab on Comprofix + http://localhost:1313/categories/homelab/ + Recent content in Homelab on Comprofix + Hugo + en + Sat, 21 Sep 2024 00:00:00 +0000 + + + Continuous Integration & Continuous Deployment + http://localhost:1313/post/2024-09-21-websitedeployment/ + Sat, 21 Sep 2024 00:00:00 +0000 + http://localhost:1313/post/2024-09-21-websitedeployment/ + <p>Since the reset of the website, I have been working on getting it to auto build and deploy using <a href="https://docs.gitea.com/usage/actions/overview">Gitea Actions</a>. Which is similar and compatible to <a href="https://github.com/features/actions">GitHub Actions</a></p> <p>Before implementing the action it was a manual process which required using docker commands to login, build and push the image to the container registry.</p> <h3 id="why-use-cicd" id=why-use-cicd> <span class="me-2">Why use CI/CD?</span> <a href="#why-use-cicd" class="anchor text-muted"><i class="fas fa-hashtag"></i></a> </h3><p>It takes the manual process steps away and does them for you, helping you to avoid missing any steps and avoiding errors. This also makes the interaction seamless and automated.</p> + + + Reset and Restart + http://localhost:1313/post/2024-09-05-resetrestart/ + Thu, 05 Sep 2024 00:00:00 +0000 + http://localhost:1313/post/2024-09-05-resetrestart/ + <p>It&rsquo;s time to reset the website and start building my blog again. I have had this domain for a number of years and it has always been used for my E-Mail.</p> <p>But the website has been more of a play ground for experimenting and testing.</p> <p>I am now hoping to get into the habit of writing more blog posts as I document my journey as I experiment with my HomeLab.</p> + + + diff --git a/public/categories/index.html b/public/categories/index.html index fca8150..a1f3f2f 100644 --- a/public/categories/index.html +++ b/public/categories/index.html @@ -1,58 +1,1002 @@ -Categories | -Comprofix
- - -
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Categories | + + Comprofix + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + + + + +
+ +
+ + + + + + + + +
+
+
+
+ +
+

+ Categories +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + homelab + + + 1 + + category, + + + 2 + + posts + + + + + + + +
+ + +
+
    + + + + + + + + + + + + + + + +
  • + + gitea + + 1 + + post + + +
  • + +
+
+ +
+ +
+
+ +
+ + + +
+ +
+ +
+ + +
+

+ © + + + + + Comprofix. + + + + Some rights reserved. +

+ +

Using the Chirpy theme for Hugo. +

+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Trending Tags

+
+ + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+ +
\ No newline at end of file + `; + }).join(''); + + this.resultsContainer.innerHTML = searchItems; + } + + + checkFieldsForMatch(item, term) { + const matches = { + inTitle: false, + inDesc: false, + inSection: false, + inContents: false + }; + + + if (DEFAULT_CONFIG.search.fields.title && this.containsTerm(item.searchableTitle, term)) { + matches.inTitle = true; + } + + if (DEFAULT_CONFIG.search.fields.description && this.containsTerm(item.searchableDesc, term)) { + matches.inDesc = true; + } + + if (DEFAULT_CONFIG.search.fields.section && this.containsTerm(item.searchableSection, term)) { + matches.inSection = true; + } + + if (DEFAULT_CONFIG.search.fields.contents && this.containsTerm(item.searchableContents, term)) { + matches.inContents = true; + } + + + if (matches.inTitle || matches.inDesc || matches.inSection || matches.inContents) { + return matches; + } + + + return false; + } + } + + const search = new FastSearch({ + searchInput: document.getElementById('search-input'), + resultsContainer: document.getElementById('search-results'), + json: `\/index.json` + }); + + +
+ + +
+ +
+ + \ No newline at end of file diff --git a/public/categories/index.xml b/public/categories/index.xml index cfc8052..d83a858 100644 --- a/public/categories/index.xml +++ b/public/categories/index.xml @@ -1 +1,26 @@ -Categories on Comprofixhttps://comprofix.com/categories/Recent content in Categories on ComprofixHugoenGiteahttps://comprofix.com/categories/gitea/Sat, 21 Sep 2024 00:00:00 +0000https://comprofix.com/categories/gitea/Homelabhttps://comprofix.com/categories/homelab/Sat, 21 Sep 2024 00:00:00 +0000https://comprofix.com/categories/homelab/ \ No newline at end of file + + + + Categories on Comprofix + http://localhost:1313/categories/ + Recent content in Categories on Comprofix + Hugo + en + Sat, 21 Sep 2024 00:00:00 +0000 + + + Gitea + http://localhost:1313/categories/gitea/ + Sat, 21 Sep 2024 00:00:00 +0000 + http://localhost:1313/categories/gitea/ + + + + Homelab + http://localhost:1313/categories/homelab/ + Sat, 21 Sep 2024 00:00:00 +0000 + http://localhost:1313/categories/homelab/ + + + + diff --git a/public/img/favicons/apple-touch-icon.png b/public/img/favicons/apple-touch-icon.png index 648097f4fc765c1d9f927535bac2d2165a6a8123..c173316446f5013691613235b7c71e110f5add93 100644 GIT binary patch literal 45114 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

Lei@4|B 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%0AKd}u#mAizaXi! zzk%MdI2O%RF3BgCIkeO$bQFeKsaIZOP$KzI{n#yeb1kc#Lp`${wnT?Uo+T`XPoi}YiVeeYX zrVx@rT>if+!*te~snZTeGlGFEjpPjmfE!-nZz#{-Ey7v=i|2hN80!ac~EBX3-<0#C*63Sc_K{YhdnD| zi!JJ2_!@C_*{>wYa2P7gMI?EU_W=}J7zO*YgbSGxk#gXe54wt!Af>90AFU*?hQmlT z<%n<=Bj?tMF&}*2Ythu7Nav#{Z%FG1&$S44*60!s~F{QRyg*I5Gi&ch_sy{D7)XM+dB;bsb z&d7mxDz3%c6*dBJZ5g~=*KJA6! zwb5v%9(6kx-N$F1bI10iWPk=D@+TFh$dOnkIE*o2L{jS9Qjgz=#1yhizjI*3MM;qr zMwR;kL+w$3`4+!AlO=;420fG`F=(DMQ@l}Rl%0aD&E;mUz0Je=!8e8-21k^ioJVa2 zb|{FFW%wIMGE#<6klxk2sf{iwcDm=Y7Cpb%Gwd1MrXT0(HZu%aJLZ$0B9fZQc=1I4 zbxXzI51k#iMbsqJpq3C02oCOJ8F_puu36`AIu5CxzQJDngSRCb*L|0~IxD2_n@mT01V-JOAh~A{& zQ9dRF4T@@#q=%jN@>JDqvovK2EB-@-6!Y&_KMA&qZ> zO|kRp@_1=^tvE&-=6@d`!Q>Z}mPHcwLP)Vc$gENjxuh_d8N@!!tFqaBvP*cD$+Upq z#my(Q;d061WqcB^^jNL-`0dtWa0ccLm6V~8ip!Zcgl=@)5kWCWMgsTnR3gV&K7I5$ zo%CRT^7G?wO|CmXSpPEnJj-A8FJZ+|Nrw zE^;KFTG}>?-6lc#xi|IW2sop9S&ZpxTzOa=O3EvPEV}Oe(no=-=if@-^J+ab71ZL6 z+;X1(*-X6uK^`&f0- z$C?zF+yAg-2j4L#M!tG7@N0=wbSDFC;~Tf|bt3|bL{EduCRpXe#7L4GQHo6zKW?Ot zmTv~-RV5@ZfB${KOih-=?Pk{}QC^2;$}j!G)QkQ6sJdR^jmmt$;u`x&%Kg)(Z;&0pB912ehx+{2nCjTnW$`6^k{0V z;i$&}c*dzi>hr%pHn#q8$dgv-75}x~f9o;-2*Wl)u|$<5KC77DQLnH%_#>TEO-u&I zXNqglRT?T)@&c0(spx+g2CO|p`;LviWaM{NZ^{-%1W^m~Hv_4jvfJ?`*yw~ps920K zp_~y0jAfdn5vnyY(~O(uJfnV|VaiX+EO>AN_h>WMzetA17O`L{bpFPV3ZgtXzStA# z+d5w~2&&BYb`6`K^ygn0P{?6;NJvOaL&dyYECf`+r?1@OuW*#=n5#5KXXG=r`YJTt z4C6Spir7C`2*mflPqE#KlOJaA)Bf~fg+9Tn4>FIFl!FzAFkqlZZ=>VWU!aC165oaq ztx1WpVW5UlnnrI5lbD1{KJ>6<P>vZj!*rizDL9tV)%@ip0^%z=cEJ90%G@CtyV{;~Mk&#y3Z36GYkpIqDU` zm3nOWk@MOPd=03O&ol4(BJ_WM-RJ+~dqF?%(dvqK*KfJ#d4Q!w>mjA%VPWcFDPZnq z32q=xc1{i!c5W6e8vHUyK8QIMBKuyR75YO=;Bk!PNdq4N$w?_oRwGTq F{tp(By7K@4 diff --git a/public/img/favicons/favicon-16x16.png b/public/img/favicons/favicon-16x16.png index f44237a9a42f93a98c435c3fc958cc9a52c2e38c..ca78139f31ce1419f0090a3a0422c72adb81ea8c 100644 GIT binary patch delta 796 zcmV+%1LOSP38)5;8Gi-<001BJ|6u?C00DDSM?wIu&K&6g00QDkL_t(IPkqyENRw+E z$MNqy+r3#^Zlhz%Eu0BOWNu`Zg#}hKBIresC=nGwa1Mt9MR3lGPD*sZdKdISPY^_4 zNX;J6vcl3tmjyaGHF&U7NfSd z7K6b+Wo0EMlPO&p!jAywn-)}&w~UOAQ}yR%+#U})oo*hI7V!K1v_EsOWU-pDpr1?k zUeWNl35`bcb6_|UM3N*jMI}?dW~A6GD@|IO+j}Uh_>FAyiu6D*FvPQ`k9gPJjjb@B zygV~Ow};}DOMjV7B=HU>u~!^Lty%V~e}3H?+E#WE{J zrR8K~Wc)ZpkK4tCi&tSL&PH1JMXi!a3|I+JBi2RM57XFmB`{O14^Yb z1*Ss$diUy@)2M`5OgaVokL<&F>k4siCwax&uvGoSqko2*^!7_A1cAKV9FG2ad=8kN zp5oNW6HLUvut-d>X1R`R=M5H$3BpPvi$`Rc~rjmUaO(r_X&of9@YNH{M3c z1i?UnZKbO@S#zD7$pJ(;$=ZW|BPwTj{PaD7Adsn+sXcrCd!Vi50U7*<*Yk;8Wd+pN zH4<^ZM}MDNz}9`g)B2*0(XmM~HCjyOe9E@(#%Rp>)BmaD}#s(=Lo8>|-8qJkcGKcY&7CBFzEnM}%#`s<93MbPWD1OgF^29fZ@A{_B5 z*2!%gC|`xQZ-9x(FE|<;6s<2#&B*6I-&_U*pMO6RlX{R5$Wl!b8WE`OETO_CaM-?r zj*bpWN=mqT?Hc8FI~I!tr_(tHghN9}5g&<}DE%MWc-_*9EBh}j)2*yAj8nY*0Gl># zrm?9BtJTUfqmizzuKCj#jgD~VN;T1-A9H~n$@h{0*Ar~JPH^atGlW7Rj7DSXIm6*F a{}lr|U|7#y*o=_?000014Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>YRSpT$B!RBc<^9PPY+N*S63I%ZFY8c zWo2cjPoH*ianaDwsIRYYsBf4%ckbcChbK&!z{SfhAi%@M!45PbJUm=bP%x+4yW7Xl zPhMMDKvcs-cCt&rNsp`;YqOv(2cVgidERRZlk*Ea7&IAX9?iV^e=@%~pQ4tes=kbw zr{>~|g>z2i0Dao9))(l_$@`P197yrcGRm3k6kBVV+2uCvaN5Lui8GI8fx=;(A5cx} zrr^4j{%xB>dUwVEg9Rc8Br6tq=1p~}UFnlE$q7gTRo1Ton&}G+cA(3FUenUj0(x!s z?AceYTmgCw7&89;{+^zmz_{4Fd2?lDWl&I%gM)*Qj}I_pmMvT6dZ*~uuJ9?G;p&rS2#igev$wwjJ=t0k-RjftT|)dbe^xNF zu{-Qpp(4%B!YEm=d}?d&x`R2zq6)iy{QG@Vjoq$n_QqWsXO~&CXwLGN90NPZ!4!iOb0e z2?;4v!UIxLLW05)Q<8w(q@*Q&-OKA04+s*Ddbe=9-$ne|{!h`^3(2j*m-BAf<_uqqXH6CwIR<8+V6` z+u7c}PSIA*j-yA_Rn%0MFIm><&A_U1+1P0FrsAT{pSZcYmozY4I;y(#^E3U39V^!C zSro+fBL3#8SF>*In)Ivf*s^D0mTU~uW|=--XIj_*^s;J+YeY#(Vo9o1a#1RfVlXl= zGSoFN(KRv)F*LI>Ft9SQ&^9mvGD6KA{7^LH=BH$)RpQp5lJ(;gP(yfCNJL3cV!1*= zQGQxxPO3slWkIS!W2I`Q&6e6=(&6r>mdKI;Vst0Gj@< AT>t<8 diff --git a/public/img/favicons/favicon-32x32.png b/public/img/favicons/favicon-32x32.png index d5d021d85c808e4ae23408203e5e34223d752de2..a9f37549895d387ef8464cae104df691af5b1db8 100644 GIT binary patch delta 2305 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 Td+=$}OndyV@~;*6*(>mWSwiVZ literal 15086 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 Xzm)TfVf8Kqig90xcU%sOkih=~MJbl= diff --git a/public/index.html b/public/index.html index f934e8e..37327d9 100644 --- a/public/index.html +++ b/public/index.html @@ -1,57 +1,1062 @@ -Comprofix

- - -
Preview Image

Continuous Integration & Continuous Deployment

Since the reset of the website, I have been working on getting it to auto build and deploy using Gitea Actions. Which is similar and compatible to GitHub Actions + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Comprofix + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ +
+
+ +
+
+ + + + + +
+ +
+ + + + + + + + +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + +
+ Preview Image +
+ + + + +
+
+

Continuous Integration & Continuous Deployment

+ +
+

Since the reset of the website, I have been working on getting it to auto build and deploy using Gitea Actions. Which is similar and compatible to GitHub Actions Before implementing the action it was a manual process which required using docker commands to login, build and push the image to the container registry. -Why use CI/CD? It takes the manual process steps away and does them for you, helping you to avoid missing any steps and avoiding errors. This also makes the interaction seamless and automated.

+ +
\ No newline at end of file + `; + }).join(''); + + this.resultsContainer.innerHTML = searchItems; + } + + + checkFieldsForMatch(item, term) { + const matches = { + inTitle: false, + inDesc: false, + inSection: false, + inContents: false + }; + + + if (DEFAULT_CONFIG.search.fields.title && this.containsTerm(item.searchableTitle, term)) { + matches.inTitle = true; + } + + if (DEFAULT_CONFIG.search.fields.description && this.containsTerm(item.searchableDesc, term)) { + matches.inDesc = true; + } + + if (DEFAULT_CONFIG.search.fields.section && this.containsTerm(item.searchableSection, term)) { + matches.inSection = true; + } + + if (DEFAULT_CONFIG.search.fields.contents && this.containsTerm(item.searchableContents, term)) { + matches.inContents = true; + } + + + if (matches.inTitle || matches.inDesc || matches.inSection || matches.inContents) { + return matches; + } + + + return false; + } + } + + const search = new FastSearch({ + searchInput: document.getElementById('search-input'), + resultsContainer: document.getElementById('search-results'), + json: `\/index.json` + }); + + +
+ + +
+ +
+ + \ No newline at end of file diff --git a/public/index.json b/public/index.json index 0903e97..269c964 100644 --- a/public/index.json +++ b/public/index.json @@ -1 +1 @@ -[{"categories":["homelab","gitea"],"contents":"Since the reset of the website, I have been working on getting it to auto build and deploy using Gitea Actions. Which is similar and compatible to GitHub Actions\nBefore implementing the action it was a manual process which required using docker commands to login, build and push the image to the container registry.\nWhy use CI/CD? It takes the manual process steps away and does them for you, helping you to avoid missing any steps and avoiding errors. This also makes the interaction seamless and automated.\nSetting up the Aciton To setup the action we first needed to create some \u0026ldquo;secrets\u0026rdquo; in the repo. Secrets are secure variables that are requied to interact with systems. Such as passwords, usernames, SSH Keys etc.\nAfter populating our secrets file we can then create our .gitea/workflows/build.yml file. This file contains all the steps to build, test and deploy the container.\n{% raw %}\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 on: push jobs: build-node: runs-on: ubuntu-latest container: image: catthehacker/ubuntu:act-latest steps: - name: checkout repo uses: actions/checkout@v4 - name: Use Node.js uses: actions/setup-node@v4 - name: Install Node Dependencies run: npm ci - name: Build 11ty Site run: npm run build --if-present - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to DockerHub uses: docker/login-action@v3 with: registry: git.comprofix.com username: ${{ secrets.REGISTRY_USERNAME }} password: ${{ secrets.REGISTRY_TOKEN }} - name: Build and push uses: docker/build-push-action@v6 with: context: ./ file: ./Dockerfile push: true tags: git.comprofix.com/mmckinnon/comprofix.com:latest publish: runs-on: ubuntu-latest steps: - name: checkout repo uses: actions/checkout@v4 - name: Publish Website run: | mkdir ~/.ssh echo \u0026#34;${{ secrets.SSH_KNOWN_HOSTS }}\u0026#34; \u0026gt;\u0026gt; ~/.ssh/known_hosts chmod 644 ~/.ssh/known_hosts eval $(ssh-agent -s) ssh-add \u0026lt;(echo \u0026#34;${{ secrets.SSH_PRIVATE_KEY }}\u0026#34;) ssh administrator@comprofix.com \u0026#34;cd /opt/comprofix; docker compose down\u0026#34; || true scp docker-compose.yml administrator@comprofix.com:/opt/comprofix ssh administrator@comprofix.com \u0026#34;cd /opt/comprofix; docker compose pull; docker compose up -d\u0026#34; {% endraw %}\nbuild.yml explained 1 on: push This tells the action to run when code is pushed to the repo. 1 2 3 runs-on: ubuntu-latest container: image: catthehacker/ubuntu:act-latest This specified the \u0026ldquo;container\u0026rdquo; to use to run all the steps on. This was crucial as running without a \u0026ldquo;conatiner\u0026rdquo; would fail as not all required dependencies where available 1 2 3 4 jobs: build-node: ... publish: These are the names of the separate jobs for the build action. The build node will build the site and create the new docker container and push to the registry. The publish will connect the host running the container and restart using the new container. 1 steps: Each job has a list of steps it performs on the code. Most of these a pretty self explaining on what they do. Everything from check out the code. Setup Node environment and build. Run the docker commands to login to the registry, build the container and push. Then the last job steps connect the host and pull the new container and start. Gitea Action Completes Once the new code was commited to the repo the Action was able to complete successfully.\n","permalink":"https://comprofix.com/post/2024-09-21-websitedeployment/","tags":["homelab","git","docker","ci","cd","continuous integration","continuous deployment"],"title":"Continuous Integration \u0026 Continuous Deployment"},{"categories":["homelab"],"contents":"It\u0026rsquo;s time to reset the website and start building my blog again. I have had this domain for a number of years and it has always been used for my E-Mail.\nBut the website has been more of a play ground for experimenting and testing.\nI am now hoping to get into the habit of writing more blog posts as I document my journey as I experiment with my HomeLab.\n","permalink":"https://comprofix.com/post/2024-09-05-resetrestart/","tags":["homelab"],"title":"Reset and Restart"},{"categories":null,"contents":"Chirpy is a blog theme originally based on Jekyll. Due to Jekyll\u0026rsquo;s design limitations, it does not natively support internationalization (i18n) and requires third-party plugins for i18n functionality. To enable i18n support for Chirpy without the hassle of relying on third-party plugins, the hugo-theme-chirpy project migrated the Chirpy theme to Hugo with minimal adaptations. All features of Chirpy are available in hugo-theme-chirpy (though some functionalities may operate differently within the Hugo framework).\nFollow the posts in the demo site to quickly set up a free personal blog!\nFeatures Dark Mode: Enhanced readability in low-light environments. Multilingual UI: Easily switch between different languages. Efficient Post Organization: Use hierarchical categories, trending tags, recommended reading, and search functionalities. Optimized Layout: Includes TOC, syntax highlighting, prompts, and more. Rich Writing Extensions: Support for mathematical formulas, charts, flowcharts, and embedded media. Multiple Comment Systems: Choose from various commenting options. Web Analysis Tools: Integrated with multiple analytics tools. Modern Web Technologies: Built for SEO and web performance. RSS Feed Support: Keep your readers updated with RSS feeds. ","permalink":"https://comprofix.com/about/","tags":null,"title":"About"},{"categories":null,"contents":"","permalink":"https://comprofix.com/archives/","tags":null,"title":"Archives"}] \ No newline at end of file +[{"categories":["homelab","gitea"],"contents":"Since the reset of the website, I have been working on getting it to auto build and deploy using Gitea Actions. Which is similar and compatible to GitHub Actions\nBefore implementing the action it was a manual process which required using docker commands to login, build and push the image to the container registry.\nWhy use CI/CD? It takes the manual process steps away and does them for you, helping you to avoid missing any steps and avoiding errors. This also makes the interaction seamless and automated.\nSetting up the Aciton To setup the action we first needed to create some \u0026ldquo;secrets\u0026rdquo; in the repo. Secrets are secure variables that are requied to interact with systems. Such as passwords, usernames, SSH Keys etc.\nAfter populating our secrets file we can then create our .gitea/workflows/build.yml file. This file contains all the steps to build, test and deploy the container.\n{% raw %}\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 on: push jobs: build-node: runs-on: ubuntu-latest container: image: catthehacker/ubuntu:act-latest steps: - name: checkout repo uses: actions/checkout@v4 - name: Use Node.js uses: actions/setup-node@v4 - name: Install Node Dependencies run: npm ci - name: Build 11ty Site run: npm run build --if-present - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to DockerHub uses: docker/login-action@v3 with: registry: git.comprofix.com username: ${{ secrets.REGISTRY_USERNAME }} password: ${{ secrets.REGISTRY_TOKEN }} - name: Build and push uses: docker/build-push-action@v6 with: context: ./ file: ./Dockerfile push: true tags: git.comprofix.com/mmckinnon/comprofix.com:latest publish: runs-on: ubuntu-latest steps: - name: checkout repo uses: actions/checkout@v4 - name: Publish Website run: | mkdir ~/.ssh echo \u0026#34;${{ secrets.SSH_KNOWN_HOSTS }}\u0026#34; \u0026gt;\u0026gt; ~/.ssh/known_hosts chmod 644 ~/.ssh/known_hosts eval $(ssh-agent -s) ssh-add \u0026lt;(echo \u0026#34;${{ secrets.SSH_PRIVATE_KEY }}\u0026#34;) ssh administrator@comprofix.com \u0026#34;cd /opt/comprofix; docker compose down\u0026#34; || true scp docker-compose.yml administrator@comprofix.com:/opt/comprofix ssh administrator@comprofix.com \u0026#34;cd /opt/comprofix; docker compose pull; docker compose up -d\u0026#34; {% endraw %}\nbuild.yml explained 1 on: push This tells the action to run when code is pushed to the repo. 1 2 3 runs-on: ubuntu-latest container: image: catthehacker/ubuntu:act-latest This specified the \u0026ldquo;container\u0026rdquo; to use to run all the steps on. This was crucial as running without a \u0026ldquo;conatiner\u0026rdquo; would fail as not all required dependencies where available 1 2 3 4 jobs: build-node: ... publish: These are the names of the separate jobs for the build action. The build node will build the site and create the new docker container and push to the registry. The publish will connect the host running the container and restart using the new container. 1 steps: Each job has a list of steps it performs on the code. Most of these a pretty self explaining on what they do. Everything from check out the code. Setup Node environment and build. Run the docker commands to login to the registry, build the container and push. Then the last job steps connect the host and pull the new container and start. Gitea Action Completes Once the new code was commited to the repo the Action was able to complete successfully.\n","permalink":"http://localhost:1313/post/2024-09-21-websitedeployment/","tags":["homelab","git","docker","ci","cd","continuous integration","continuous deployment"],"title":"Continuous Integration \u0026 Continuous Deployment"},{"categories":["homelab"],"contents":"It\u0026rsquo;s time to reset the website and start building my blog again. I have had this domain for a number of years and it has always been used for my E-Mail.\nBut the website has been more of a play ground for experimenting and testing.\nI am now hoping to get into the habit of writing more blog posts as I document my journey as I experiment with my HomeLab.\n","permalink":"http://localhost:1313/post/2024-09-05-resetrestart/","tags":["homelab"],"title":"Reset and Restart"},{"categories":null,"contents":"Chirpy is a blog theme originally based on Jekyll. Due to Jekyll\u0026rsquo;s design limitations, it does not natively support internationalization (i18n) and requires third-party plugins for i18n functionality. To enable i18n support for Chirpy without the hassle of relying on third-party plugins, the hugo-theme-chirpy project migrated the Chirpy theme to Hugo with minimal adaptations. All features of Chirpy are available in hugo-theme-chirpy (though some functionalities may operate differently within the Hugo framework).\nFollow the posts in the demo site to quickly set up a free personal blog!\nFeatures Dark Mode: Enhanced readability in low-light environments. Multilingual UI: Easily switch between different languages. Efficient Post Organization: Use hierarchical categories, trending tags, recommended reading, and search functionalities. Optimized Layout: Includes TOC, syntax highlighting, prompts, and more. Rich Writing Extensions: Support for mathematical formulas, charts, flowcharts, and embedded media. Multiple Comment Systems: Choose from various commenting options. Web Analysis Tools: Integrated with multiple analytics tools. Modern Web Technologies: Built for SEO and web performance. RSS Feed Support: Keep your readers updated with RSS feeds. ","permalink":"http://localhost:1313/about/","tags":null,"title":"About"},{"categories":null,"contents":"","permalink":"http://localhost:1313/archives/","tags":null,"title":"Archives"}] \ No newline at end of file diff --git a/public/index.xml b/public/index.xml index 66c4497..45bbff1 100644 --- a/public/index.xml +++ b/public/index.xml @@ -1,11 +1,40 @@ -Comprofixhttps://comprofix.com/Recent content on ComprofixHugoenContinuous Integration & Continuous Deploymenthttps://comprofix.com/post/2024-09-21-websitedeployment/Sat, 21 Sep 2024 00:00:00 +0000https://comprofix.com/post/2024-09-21-websitedeployment/<p>Since the reset of the website, I have been working on getting it to auto build and deploy using <a href="https://docs.gitea.com/usage/actions/overview">Gitea Actions</a>. Which is similar and compatible to <a href="https://github.com/features/actions">GitHub Actions</a></p> -<p>Before implementing the action it was a manual process which required using docker commands to login, build and push the image to the container registry.</p> -<h3 id="why-use-cicd" id=why-use-cicd> - - <span class="me-2">Why use CI/CD?</span> - <a href="#why-use-cicd" class="anchor text-muted"><i class="fas fa-hashtag"></i></a> - -</h3><p>It takes the manual process steps away and does them for you, helping you to avoid missing any steps and avoiding errors. This also makes the interaction seamless and automated.</p>Reset and Restarthttps://comprofix.com/post/2024-09-05-resetrestart/Thu, 05 Sep 2024 00:00:00 +0000https://comprofix.com/post/2024-09-05-resetrestart/<p>It&rsquo;s time to reset the website and start building my blog again. I have had this domain for a number of years and it has always been used for my E-Mail.</p> -<p>But the website has been more of a play ground for experimenting and testing.</p> -<p>I am now hoping to get into the habit of writing more blog posts as I document my journey as I experiment with my HomeLab.</p>Abouthttps://comprofix.com/about/Thu, 20 Apr 2023 00:00:00 +0000https://comprofix.com/about/<p><a href="https://github.com/cotes2020/jekyll-theme-chirpy">Chirpy</a> is a blog theme originally based on <a href="https://jekyllrb.com/">Jekyll</a>. Due to Jekyll&rsquo;s design limitations, it does not natively support internationalization (i18n) and requires third-party plugins for i18n functionality. To enable i18n support for Chirpy without the hassle of relying on third-party plugins, the <a href="https://github.com/geekifan/hugo-theme-chirpy">hugo-theme-chirpy</a> project migrated the Chirpy theme to <a href="https://gohugo.io/">Hugo</a> with minimal adaptations. All features of Chirpy are available in hugo-theme-chirpy (though some functionalities may operate differently within the Hugo framework).</p> -<p>Follow the posts in the demo site to quickly set up a free personal blog!</p>Archiveshttps://comprofix.com/archives/Mon, 01 Jan 0001 00:00:00 +0000https://comprofix.com/archives/ \ No newline at end of file + + + + Comprofix + http://localhost:1313/ + Recent content on Comprofix + Hugo + en + Sat, 21 Sep 2024 00:00:00 +0000 + + + Continuous Integration & Continuous Deployment + http://localhost:1313/post/2024-09-21-websitedeployment/ + Sat, 21 Sep 2024 00:00:00 +0000 + http://localhost:1313/post/2024-09-21-websitedeployment/ + <p>Since the reset of the website, I have been working on getting it to auto build and deploy using <a href="https://docs.gitea.com/usage/actions/overview">Gitea Actions</a>. Which is similar and compatible to <a href="https://github.com/features/actions">GitHub Actions</a></p> <p>Before implementing the action it was a manual process which required using docker commands to login, build and push the image to the container registry.</p> <h3 id="why-use-cicd" id=why-use-cicd> <span class="me-2">Why use CI/CD?</span> <a href="#why-use-cicd" class="anchor text-muted"><i class="fas fa-hashtag"></i></a> </h3><p>It takes the manual process steps away and does them for you, helping you to avoid missing any steps and avoiding errors. This also makes the interaction seamless and automated.</p> + + + Reset and Restart + http://localhost:1313/post/2024-09-05-resetrestart/ + Thu, 05 Sep 2024 00:00:00 +0000 + http://localhost:1313/post/2024-09-05-resetrestart/ + <p>It&rsquo;s time to reset the website and start building my blog again. I have had this domain for a number of years and it has always been used for my E-Mail.</p> <p>But the website has been more of a play ground for experimenting and testing.</p> <p>I am now hoping to get into the habit of writing more blog posts as I document my journey as I experiment with my HomeLab.</p> + + + About + http://localhost:1313/about/ + Thu, 20 Apr 2023 00:00:00 +0000 + http://localhost:1313/about/ + <p><a href="https://github.com/cotes2020/jekyll-theme-chirpy">Chirpy</a> is a blog theme originally based on <a href="https://jekyllrb.com/">Jekyll</a>. Due to Jekyll&rsquo;s design limitations, it does not natively support internationalization (i18n) and requires third-party plugins for i18n functionality. To enable i18n support for Chirpy without the hassle of relying on third-party plugins, the <a href="https://github.com/geekifan/hugo-theme-chirpy">hugo-theme-chirpy</a> project migrated the Chirpy theme to <a href="https://gohugo.io/">Hugo</a> with minimal adaptations. All features of Chirpy are available in hugo-theme-chirpy (though some functionalities may operate differently within the Hugo framework).</p> <p>Follow the posts in the demo site to quickly set up a free personal blog!</p> + + + Archives + http://localhost:1313/archives/ + Mon, 01 Jan 0001 00:00:00 +0000 + http://localhost:1313/archives/ + + + + diff --git a/public/js/categories.js b/public/js/categories.js index 8984e2f..48f0943 100644 --- a/public/js/categories.js +++ b/public/js/categories.js @@ -1 +1,3379 @@ -(()=>{var Tn=Object.create;var le=Object.defineProperty,On=Object.defineProperties,Sn=Object.getOwnPropertyDescriptor,xn=Object.getOwnPropertyDescriptors,Cn=Object.getOwnPropertyNames,fr=Object.getOwnPropertySymbols,Ln=Object.getPrototypeOf,pr=Object.prototype.hasOwnProperty,Dn=Object.prototype.propertyIsEnumerable;var dr=e=>{throw TypeError(e)};var ce=(e,t,r)=>t in e?le(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,N=(e,t)=>{for(var r in t||(t={}))pr.call(t,r)&&ce(e,r,t[r]);if(fr)for(var r of fr(t))Dn.call(t,r)&&ce(e,r,t[r]);return e},hr=(e,t)=>On(e,xn(t));var Nn=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var In=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Cn(t))!pr.call(e,o)&&o!==r&&le(e,o,{get:()=>t[o],enumerable:!(n=Sn(t,o))||n.enumerable});return e};var Pn=(e,t,r)=>(r=e!=null?Tn(Ln(e)):{},In(t||!e||!e.__esModule?le(r,"default",{value:e,enumerable:!0}):r,e));var Et=(e,t,r)=>ce(e,typeof t!="symbol"?t+"":t,r),mr=(e,t,r)=>t.has(e)||dr("Cannot "+r);var U=(e,t,r)=>(mr(e,t,"read from private field"),r?r.call(e):t.get(e)),_t=(e,t,r)=>t.has(e)?dr("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),Bt=(e,t,r,n)=>(mr(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r);var en=Nn(D=>{"use strict";Object.defineProperty(D,"__esModule",{value:!0});function H(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function ct(e){var t=H(e).Element;return e instanceof t||e instanceof Element}function k(e){var t=H(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function Fr(e){if(typeof ShadowRoot=="undefined")return!1;var t=H(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}var ot=Math.max,Gt=Math.min,lt=Math.round;function ut(e,t){t===void 0&&(t=!1);var r=e.getBoundingClientRect(),n=1,o=1;if(k(e)&&t){var s=e.offsetHeight,i=e.offsetWidth;i>0&&(n=lt(r.width)/i||1),s>0&&(o=lt(r.height)/s||1)}return{width:r.width/n,height:r.height/o,top:r.top/o,right:r.right/n,bottom:r.bottom/o,left:r.left/n,x:r.left/n,y:r.top/o}}function Le(e){var t=H(e),r=t.pageXOffset,n=t.pageYOffset;return{scrollLeft:r,scrollTop:n}}function fo(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function po(e){return e===H(e)||!k(e)?Le(e):fo(e)}function q(e){return e?(e.nodeName||"").toLowerCase():null}function J(e){return((ct(e)?e.ownerDocument:e.document)||window.document).documentElement}function De(e){return ut(J(e)).left+Le(e).scrollLeft}function W(e){return H(e).getComputedStyle(e)}function Ne(e){var t=W(e),r=t.overflow,n=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(r+o+n)}function ho(e){var t=e.getBoundingClientRect(),r=lt(t.width)/e.offsetWidth||1,n=lt(t.height)/e.offsetHeight||1;return r!==1||n!==1}function mo(e,t,r){r===void 0&&(r=!1);var n=k(t),o=k(t)&&ho(t),s=J(t),i=ut(e,o),a={scrollLeft:0,scrollTop:0},c={x:0,y:0};return(n||!n&&!r)&&((q(t)!=="body"||Ne(s))&&(a=po(t)),k(t)?(c=ut(t,!0),c.x+=t.clientLeft,c.y+=t.clientTop):s&&(c.x=De(s))),{x:i.left+a.scrollLeft-c.x,y:i.top+a.scrollTop-c.y,width:i.width,height:i.height}}function Ie(e){var t=ut(e),r=e.offsetWidth,n=e.offsetHeight;return Math.abs(t.width-r)<=1&&(r=t.width),Math.abs(t.height-n)<=1&&(n=t.height),{x:e.offsetLeft,y:e.offsetTop,width:r,height:n}}function Kt(e){return q(e)==="html"?e:e.assignedSlot||e.parentNode||(Fr(e)?e.host:null)||J(e)}function Hr(e){return["html","body","#document"].indexOf(q(e))>=0?e.ownerDocument.body:k(e)&&Ne(e)?e:Hr(Kt(e))}function Ot(e,t){var r;t===void 0&&(t=[]);var n=Hr(e),o=n===((r=e.ownerDocument)==null?void 0:r.body),s=H(n),i=o?[s].concat(s.visualViewport||[],Ne(n)?n:[]):n,a=t.concat(i);return o?a:a.concat(Ot(Kt(i)))}function go(e){return["table","td","th"].indexOf(q(e))>=0}function Nr(e){return!k(e)||W(e).position==="fixed"?null:e.offsetParent}function vo(e){var t=navigator.userAgent.toLowerCase().indexOf("firefox")!==-1,r=navigator.userAgent.indexOf("Trident")!==-1;if(r&&k(e)){var n=W(e);if(n.position==="fixed")return null}for(var o=Kt(e);k(o)&&["html","body"].indexOf(q(o))<0;){var s=W(o);if(s.transform!=="none"||s.perspective!=="none"||s.contain==="paint"||["transform","perspective"].indexOf(s.willChange)!==-1||t&&s.willChange==="filter"||t&&s.filter&&s.filter!=="none")return o;o=o.parentNode}return null}function Ct(e){for(var t=H(e),r=Nr(e);r&&go(r)&&W(r).position==="static";)r=Nr(r);return r&&(q(r)==="html"||q(r)==="body"&&W(r).position==="static")?t:r||vo(e)||t}var I="top",$="bottom",B="right",P="left",Pe="auto",Lt=[I,$,B,P],ft="start",xt="end",bo="clippingParents",Vr="viewport",Tt="popper",yo="reference",Ir=Lt.reduce(function(e,t){return e.concat([t+"-"+ft,t+"-"+xt])},[]),qr=[].concat(Lt,[Pe]).reduce(function(e,t){return e.concat([t,t+"-"+ft,t+"-"+xt])},[]),Eo="beforeRead",_o="read",wo="afterRead",Ao="beforeMain",To="main",Oo="afterMain",So="beforeWrite",xo="write",Co="afterWrite",Lo=[Eo,_o,wo,Ao,To,Oo,So,xo,Co];function Do(e){var t=new Map,r=new Set,n=[];e.forEach(function(s){t.set(s.name,s)});function o(s){r.add(s.name);var i=[].concat(s.requires||[],s.requiresIfExists||[]);i.forEach(function(a){if(!r.has(a)){var c=t.get(a);c&&o(c)}}),n.push(s)}return e.forEach(function(s){r.has(s.name)||o(s)}),n}function No(e){var t=Do(e);return Lo.reduce(function(r,n){return r.concat(t.filter(function(o){return o.phase===n}))},[])}function Io(e){var t;return function(){return t||(t=new Promise(function(r){Promise.resolve().then(function(){t=void 0,r(e())})})),t}}function V(e){return e.split("-")[0]}function Po(e){var t=e.reduce(function(r,n){var o=r[n.name];return r[n.name]=o?Object.assign({},o,n,{options:Object.assign({},o.options,n.options),data:Object.assign({},o.data,n.data)}):n,r},{});return Object.keys(t).map(function(r){return t[r]})}function Mo(e){var t=H(e),r=J(e),n=t.visualViewport,o=r.clientWidth,s=r.clientHeight,i=0,a=0;return n&&(o=n.width,s=n.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(i=n.offsetLeft,a=n.offsetTop)),{width:o,height:s,x:i+De(e),y:a}}function Ro(e){var t,r=J(e),n=Le(e),o=(t=e.ownerDocument)==null?void 0:t.body,s=ot(r.scrollWidth,r.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),i=ot(r.scrollHeight,r.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-n.scrollLeft+De(e),c=-n.scrollTop;return W(o||r).direction==="rtl"&&(a+=ot(r.clientWidth,o?o.clientWidth:0)-s),{width:s,height:i,x:a,y:c}}function Wr(e,t){var r=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(r&&Fr(r)){var n=t;do{if(n&&e.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function Ce(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function ko(e){var t=ut(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}function Pr(e,t){return t===Vr?Ce(Mo(e)):ct(t)?ko(t):Ce(Ro(J(e)))}function $o(e){var t=Ot(Kt(e)),r=["absolute","fixed"].indexOf(W(e).position)>=0,n=r&&k(e)?Ct(e):e;return ct(n)?t.filter(function(o){return ct(o)&&Wr(o,n)&&q(o)!=="body"&&(r?W(o).position!=="static":!0)}):[]}function Bo(e,t,r){var n=t==="clippingParents"?$o(e):[].concat(t),o=[].concat(n,[r]),s=o[0],i=o.reduce(function(a,c){var u=Pr(e,c);return a.top=ot(u.top,a.top),a.right=Gt(u.right,a.right),a.bottom=Gt(u.bottom,a.bottom),a.left=ot(u.left,a.left),a},Pr(e,s));return i.width=i.right-i.left,i.height=i.bottom-i.top,i.x=i.left,i.y=i.top,i}function pt(e){return e.split("-")[1]}function Me(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function zr(e){var t=e.reference,r=e.element,n=e.placement,o=n?V(n):null,s=n?pt(n):null,i=t.x+t.width/2-r.width/2,a=t.y+t.height/2-r.height/2,c;switch(o){case I:c={x:i,y:t.y-r.height};break;case $:c={x:i,y:t.y+t.height};break;case B:c={x:t.x+t.width,y:a};break;case P:c={x:t.x-r.width,y:a};break;default:c={x:t.x,y:t.y}}var u=o?Me(o):null;if(u!=null){var l=u==="y"?"height":"width";switch(s){case ft:c[u]=c[u]-(t[l]/2-r[l]/2);break;case xt:c[u]=c[u]+(t[l]/2-r[l]/2);break}}return c}function Ur(){return{top:0,right:0,bottom:0,left:0}}function Yr(e){return Object.assign({},Ur(),e)}function Gr(e,t){return t.reduce(function(r,n){return r[n]=e,r},{})}function dt(e,t){t===void 0&&(t={});var r=t,n=r.placement,o=n===void 0?e.placement:n,s=r.boundary,i=s===void 0?bo:s,a=r.rootBoundary,c=a===void 0?Vr:a,u=r.elementContext,l=u===void 0?Tt:u,f=r.altBoundary,g=f===void 0?!1:f,p=r.padding,h=p===void 0?0:p,m=Yr(typeof h!="number"?h:Gr(h,Lt)),d=l===Tt?yo:Tt,w=e.rects.popper,A=e.elements[g?d:l],T=Bo(ct(A)?A:A.contextElement||J(e.elements.popper),i,c),v=ut(e.elements.reference),E=zr({reference:v,element:w,strategy:"absolute",placement:o}),b=Ce(Object.assign({},w,E)),y=l===Tt?b:v,O={top:T.top-y.top+m.top,bottom:y.bottom-T.bottom+m.bottom,left:T.left-y.left+m.left,right:y.right-T.right+m.right},x=e.modifiersData.offset;if(l===Tt&&x){var C=x[o];Object.keys(O).forEach(function(_){var L=[B,$].indexOf(_)>=0?1:-1,tt=[I,$].indexOf(_)>=0?"y":"x";O[_]+=C[tt]*L})}return O}var Mr={placement:"bottom",modifiers:[],strategy:"absolute"};function Rr(){for(var e=arguments.length,t=new Array(e),r=0;r=0?-1:1,s=typeof r=="function"?r(Object.assign({},t,{placement:e})):r,i=s[0],a=s[1];return i=i||0,a=(a||0)*o,[P,B].indexOf(n)>=0?{x:a,y:i}:{x:i,y:a}}function Yo(e){var t=e.state,r=e.options,n=e.name,o=r.offset,s=o===void 0?[0,0]:o,i=qr.reduce(function(l,f){return l[f]=Uo(f,t.rects,s),l},{}),a=i[t.placement],c=a.x,u=a.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=c,t.modifiersData.popperOffsets.y+=u),t.modifiersData[n]=i}var Kr={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:Yo},Go={left:"right",right:"left",bottom:"top",top:"bottom"};function Yt(e){return e.replace(/left|right|bottom|top/g,function(t){return Go[t]})}var Ko={start:"end",end:"start"};function $r(e){return e.replace(/start|end/g,function(t){return Ko[t]})}function Qo(e,t){t===void 0&&(t={});var r=t,n=r.placement,o=r.boundary,s=r.rootBoundary,i=r.padding,a=r.flipVariations,c=r.allowedAutoPlacements,u=c===void 0?qr:c,l=pt(n),f=l?a?Ir:Ir.filter(function(h){return pt(h)===l}):Lt,g=f.filter(function(h){return u.indexOf(h)>=0});g.length===0&&(g=f);var p=g.reduce(function(h,m){return h[m]=dt(e,{placement:m,boundary:o,rootBoundary:s,padding:i})[V(m)],h},{});return Object.keys(p).sort(function(h,m){return p[h]-p[m]})}function Xo(e){if(V(e)===Pe)return[];var t=Yt(e);return[$r(e),t,$r(t)]}function Jo(e){var t=e.state,r=e.options,n=e.name;if(!t.modifiersData[n]._skip){for(var o=r.mainAxis,s=o===void 0?!0:o,i=r.altAxis,a=i===void 0?!0:i,c=r.fallbackPlacements,u=r.padding,l=r.boundary,f=r.rootBoundary,g=r.altBoundary,p=r.flipVariations,h=p===void 0?!0:p,m=r.allowedAutoPlacements,d=t.options.placement,w=V(d),A=w===d,T=c||(A||!h?[Yt(d)]:Xo(d)),v=[d].concat(T).reduce(function(st,G){return st.concat(V(G)===Pe?Qo(t,{placement:G,boundary:l,rootBoundary:f,padding:u,flipVariations:h,allowedAutoPlacements:m}):G)},[]),E=t.rects.reference,b=t.rects.popper,y=new Map,O=!0,x=v[0],C=0;C=0,vt=gt?"width":"height",R=dt(t,{placement:_,boundary:l,rootBoundary:f,altBoundary:g,padding:u}),j=gt?tt?B:P:tt?$:I;E[vt]>b[vt]&&(j=Yt(j));var Pt=Yt(j),et=[];if(s&&et.push(R[L]<=0),a&&et.push(R[j]<=0,R[Pt]<=0),et.every(function(st){return st})){x=_,O=!1;break}y.set(_,et)}if(O)for(var Mt=h?3:1,oe=function(G){var yt=v.find(function(kt){var rt=y.get(kt);if(rt)return rt.slice(0,G).every(function(ie){return ie})});if(yt)return x=yt,"break"},bt=Mt;bt>0;bt--){var Rt=oe(bt);if(Rt==="break")break}t.placement!==x&&(t.modifiersData[n]._skip=!0,t.placement=x,t.reset=!0)}}var Qr={name:"flip",enabled:!0,phase:"main",fn:Jo,requiresIfExists:["offset"],data:{_skip:!1}};function Zo(e){return e==="x"?"y":"x"}function St(e,t,r){return ot(e,Gt(t,r))}function ti(e,t,r){var n=St(e,t,r);return n>r?r:n}function ei(e){var t=e.state,r=e.options,n=e.name,o=r.mainAxis,s=o===void 0?!0:o,i=r.altAxis,a=i===void 0?!1:i,c=r.boundary,u=r.rootBoundary,l=r.altBoundary,f=r.padding,g=r.tether,p=g===void 0?!0:g,h=r.tetherOffset,m=h===void 0?0:h,d=dt(t,{boundary:c,rootBoundary:u,padding:f,altBoundary:l}),w=V(t.placement),A=pt(t.placement),T=!A,v=Me(w),E=Zo(v),b=t.modifiersData.popperOffsets,y=t.rects.reference,O=t.rects.popper,x=typeof m=="function"?m(Object.assign({},t.rects,{placement:t.placement})):m,C=typeof x=="number"?{mainAxis:x,altAxis:x}:Object.assign({mainAxis:0,altAxis:0},x),_=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,L={x:0,y:0};if(b){if(s){var tt,gt=v==="y"?I:P,vt=v==="y"?$:B,R=v==="y"?"height":"width",j=b[v],Pt=j+d[gt],et=j-d[vt],Mt=p?-O[R]/2:0,oe=A===ft?y[R]:O[R],bt=A===ft?-O[R]:-y[R],Rt=t.elements.arrow,st=p&&Rt?Ie(Rt):{width:0,height:0},G=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:Ur(),yt=G[gt],kt=G[vt],rt=St(0,y[R],st[R]),ie=T?y[R]/2-Mt-rt-yt-C.mainAxis:oe-rt-yt-C.mainAxis,bn=T?-y[R]/2+Mt+rt+kt+C.mainAxis:bt+rt+kt+C.mainAxis,se=t.elements.arrow&&Ct(t.elements.arrow),yn=se?v==="y"?se.clientTop||0:se.clientLeft||0:0,rr=(tt=_==null?void 0:_[v])!=null?tt:0,En=j+ie-rr-yn,_n=j+bn-rr,nr=St(p?Gt(Pt,En):Pt,j,p?ot(et,_n):et);b[v]=nr,L[v]=nr-j}if(a){var or,wn=v==="x"?I:P,An=v==="x"?$:B,nt=b[E],$t=E==="y"?"height":"width",ir=nt+d[wn],sr=nt-d[An],ae=[I,P].indexOf(w)!==-1,ar=(or=_==null?void 0:_[E])!=null?or:0,cr=ae?ir:nt-y[$t]-O[$t]-ar+C.altAxis,lr=ae?nt+y[$t]+O[$t]-ar-C.altAxis:sr,ur=p&&ae?ti(cr,nt,lr):St(p?cr:ir,nt,p?lr:sr);b[E]=ur,L[E]=ur-nt}t.modifiersData[n]=L}}var Xr={name:"preventOverflow",enabled:!0,phase:"main",fn:ei,requiresIfExists:["offset"]},ri=function(t,r){return t=typeof t=="function"?t(Object.assign({},r.rects,{placement:r.placement})):t,Yr(typeof t!="number"?t:Gr(t,Lt))};function ni(e){var t,r=e.state,n=e.name,o=e.options,s=r.elements.arrow,i=r.modifiersData.popperOffsets,a=V(r.placement),c=Me(a),u=[P,B].indexOf(a)>=0,l=u?"height":"width";if(!(!s||!i)){var f=ri(o.padding,r),g=Ie(s),p=c==="y"?I:P,h=c==="y"?$:B,m=r.rects.reference[l]+r.rects.reference[c]-i[c]-r.rects.popper[l],d=i[c]-r.rects.reference[c],w=Ct(s),A=w?c==="y"?w.clientHeight||0:w.clientWidth||0:0,T=m/2-d/2,v=f[p],E=A-g[l]-f[h],b=A/2-g[l]/2+T,y=St(v,b,E),O=c;r.modifiersData[n]=(t={},t[O]=y,t.centerOffset=y-b,t)}}function oi(e){var t=e.state,r=e.options,n=r.element,o=n===void 0?"[data-popper-arrow]":n;o!=null&&(typeof o=="string"&&(o=t.elements.popper.querySelector(o),!o)||Wr(t.elements.popper,o)&&(t.elements.arrow=o))}var Jr={name:"arrow",enabled:!0,phase:"main",fn:ni,effect:oi,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Br(e,t,r){return r===void 0&&(r={x:0,y:0}),{top:e.top-t.height-r.y,right:e.right-t.width+r.x,bottom:e.bottom-t.height+r.y,left:e.left-t.width-r.x}}function jr(e){return[I,B,$,P].some(function(t){return e[t]>=0})}function ii(e){var t=e.state,r=e.name,n=t.rects.reference,o=t.rects.popper,s=t.modifiersData.preventOverflow,i=dt(t,{elementContext:"reference"}),a=dt(t,{altBoundary:!0}),c=Br(i,n),u=Br(a,o,s),l=jr(c),f=jr(u);t.modifiersData[r]={referenceClippingOffsets:c,popperEscapeOffsets:u,isReferenceHidden:l,hasPopperEscaped:f},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":l,"data-popper-escaped":f})}var Zr={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:ii},si=[ke,$e,Be,je],ai=Re({defaultModifiers:si}),tn=[ke,$e,Be,je,Kr,Qr,Xr,Jr,Zr],ci=Re({defaultModifiers:tn});D.applyStyles=je;D.arrow=Jr;D.computeStyles=Be;D.createPopper=ci;D.createPopperLite=ai;D.defaultModifiers=tn;D.detectOverflow=dt;D.eventListeners=ke;D.flip=Qr;D.hide=Zr;D.offset=Kr;D.popperGenerator=Re;D.popperOffsets=$e;D.preventOverflow=Xr});var K=new Map,jt={set(e,t,r){K.has(e)||K.set(e,new Map);let n=K.get(e);if(!n.has(t)&&n.size!==0){console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`);return}n.set(t,r)},get(e,t){return K.has(e)&&K.get(e).get(t)||null},remove(e,t){if(!K.has(e))return;let r=K.get(e);r.delete(t),r.size===0&&K.delete(e)}};var fe="transitionend",pe=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,(t,r)=>`#${CSS.escape(r)}`)),e),gr=e=>e==null?`${e}`:Object.prototype.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase(),vr=e=>{do e+=Math.floor(Math.random()*1e6);while(document.getElementById(e));return e},Mn=e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:r}=window.getComputedStyle(e),n=Number.parseFloat(t),o=Number.parseFloat(r);return!n&&!o?0:(t=t.split(",")[0],r=r.split(",")[0],(Number.parseFloat(t)+Number.parseFloat(r))*1e3)},Rn=e=>{e.dispatchEvent(new Event(fe))},X=e=>!e||typeof e!="object"?!1:(typeof e.jquery!="undefined"&&(e=e[0]),typeof e.nodeType!="undefined"),Y=e=>X(e)?e.jquery?e[0]:e:typeof e=="string"&&e.length>0?document.querySelector(pe(e)):null,br=e=>{if(!X(e)||e.getClientRects().length===0)return!1;let t=getComputedStyle(e).getPropertyValue("visibility")==="visible",r=e.closest("details:not([open])");if(!r)return t;if(r!==e){let n=e.closest("summary");if(n&&n.parentNode!==r||n===null)return!1}return t},yr=e=>!e||e.nodeType!==Node.ELEMENT_NODE||e.classList.contains("disabled")?!0:typeof e.disabled!="undefined"?e.disabled:e.hasAttribute("disabled")&&e.getAttribute("disabled")!=="false",de=e=>{if(!document.documentElement.attachShadow)return null;if(typeof e.getRootNode=="function"){let t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?de(e.parentNode):null},he=()=>{},Er=e=>{e.offsetHeight},me=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,ue=[],kn=e=>{document.readyState==="loading"?(ue.length||document.addEventListener("DOMContentLoaded",()=>{for(let t of ue)t()}),ue.push(e)):e()},ge=()=>document.documentElement.dir==="rtl",Ft=e=>{kn(()=>{let t=me();if(t){let r=e.NAME,n=t.fn[r];t.fn[r]=e.jQueryInterface,t.fn[r].Constructor=e,t.fn[r].noConflict=()=>(t.fn[r]=n,e.jQueryInterface)}})},Q=(e,t=[],r=e)=>typeof e=="function"?e.call(...t):r,_r=(e,t,r=!0)=>{if(!r){Q(e);return}let o=Mn(t)+5,s=!1,i=({target:a})=>{a===t&&(s=!0,t.removeEventListener(fe,i),Q(e))};t.addEventListener(fe,i),setTimeout(()=>{s||Rn(t)},o)};var $n=/[^.]*(?=\..*)\.|.*/,Bn=/\..*/,jn=/::\d+$/,ve={},wr=1,Tr={mouseenter:"mouseover",mouseleave:"mouseout"},Fn=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function Or(e,t){return t&&`${t}::${wr++}`||e.uidEvent||wr++}function Sr(e){let t=Or(e);return e.uidEvent=t,ve[t]=ve[t]||{},ve[t]}function Hn(e,t){return function r(n){return Ee(n,{delegateTarget:e}),r.oneOff&&ye.off(e,n.type,t),t.apply(e,[n])}}function Vn(e,t,r){return function n(o){let s=e.querySelectorAll(t);for(let{target:i}=o;i&&i!==this;i=i.parentNode)for(let a of s)if(a===i)return Ee(o,{delegateTarget:i}),n.oneOff&&ye.off(e,o.type,t,r),r.apply(i,[o])}}function xr(e,t,r=null){return Object.values(e).find(n=>n.callable===t&&n.delegationSelector===r)}function Cr(e,t,r){let n=typeof t=="string",o=n?r:t||r,s=Lr(e);return Fn.has(s)||(s=e),[n,o,s]}function Ar(e,t,r,n,o){if(typeof t!="string"||!e)return;let[s,i,a]=Cr(t,r,n);t in Tr&&(i=(h=>function(m){if(!m.relatedTarget||m.relatedTarget!==m.delegateTarget&&!m.delegateTarget.contains(m.relatedTarget))return h.call(this,m)})(i));let c=Sr(e),u=c[a]||(c[a]={}),l=xr(u,i,s?r:null);if(l){l.oneOff=l.oneOff&&o;return}let f=Or(i,t.replace($n,"")),g=s?Vn(e,r,i):Hn(e,i);g.delegationSelector=s?r:null,g.callable=i,g.oneOff=o,g.uidEvent=f,u[f]=g,e.addEventListener(a,g,s)}function be(e,t,r,n,o){let s=xr(t[r],n,o);s&&(e.removeEventListener(r,s,!!o),delete t[r][s.uidEvent])}function qn(e,t,r,n){let o=t[r]||{};for(let[s,i]of Object.entries(o))s.includes(n)&&be(e,t,r,i.callable,i.delegationSelector)}function Lr(e){return e=e.replace(Bn,""),Tr[e]||e}var ye={on(e,t,r,n){Ar(e,t,r,n,!1)},one(e,t,r,n){Ar(e,t,r,n,!0)},off(e,t,r,n){if(typeof t!="string"||!e)return;let[o,s,i]=Cr(t,r,n),a=i!==t,c=Sr(e),u=c[i]||{},l=t.startsWith(".");if(typeof s!="undefined"){if(!Object.keys(u).length)return;be(e,c,i,s,o?r:null);return}if(l)for(let f of Object.keys(c))qn(e,c,f,t.slice(1));for(let[f,g]of Object.entries(u)){let p=f.replace(jn,"");(!a||t.includes(p))&&be(e,c,i,g.callable,g.delegationSelector)}},trigger(e,t,r){if(typeof t!="string"||!e)return null;let n=me(),o=Lr(t),s=t!==o,i=null,a=!0,c=!0,u=!1;s&&n&&(i=n.Event(t,r),n(e).trigger(i),a=!i.isPropagationStopped(),c=!i.isImmediatePropagationStopped(),u=i.isDefaultPrevented());let l=Ee(new Event(t,{bubbles:a,cancelable:!0}),r);return u&&l.preventDefault(),c&&e.dispatchEvent(l),l.defaultPrevented&&i&&i.preventDefault(),l}};function Ee(e,t={}){for(let[r,n]of Object.entries(t))try{e[r]=n}catch(o){Object.defineProperty(e,r,{configurable:!0,get(){return n}})}return e}var S=ye;function Dr(e){if(e==="true")return!0;if(e==="false")return!1;if(e===Number(e).toString())return Number(e);if(e===""||e==="null")return null;if(typeof e!="string")return e;try{return JSON.parse(decodeURIComponent(e))}catch(t){return e}}function _e(e){return e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}var Wn={setDataAttribute(e,t,r){e.setAttribute(`data-bs-${_e(t)}`,r)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${_e(t)}`)},getDataAttributes(e){if(!e)return{};let t={},r=Object.keys(e.dataset).filter(n=>n.startsWith("bs")&&!n.startsWith("bsConfig"));for(let n of r){let o=n.replace(/^bs/,"");o=o.charAt(0).toLowerCase()+o.slice(1),t[o]=Dr(e.dataset[n])}return t},getDataAttribute(e,t){return Dr(e.getAttribute(`data-bs-${_e(t)}`))}},wt=Wn;var we=class{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,r){let n=X(r)?wt.getDataAttribute(r,"config"):{};return N(N(N(N({},this.constructor.Default),typeof n=="object"?n:{}),X(r)?wt.getDataAttributes(r):{}),typeof t=="object"?t:{})}_typeCheckConfig(t,r=this.constructor.DefaultType){for(let[n,o]of Object.entries(r)){let s=t[n],i=X(s)?"element":gr(s);if(!new RegExp(o).test(i))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${i}" but expected type "${o}".`)}}},Ht=we;var zn="5.3.8",Ae=class extends Ht{constructor(t,r){super(),t=Y(t),t&&(this._element=t,this._config=this._getConfig(r),jt.set(this._element,this.constructor.DATA_KEY,this))}dispose(){jt.remove(this._element,this.constructor.DATA_KEY),S.off(this._element,this.constructor.EVENT_KEY);for(let t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,r,n=!0){_r(t,r,n)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return jt.get(Y(t),this.DATA_KEY)}static getOrCreateInstance(t,r={}){return this.getInstance(t)||new this(t,typeof r=="object"?r:null)}static get VERSION(){return zn}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}},Vt=Ae;var Te=e=>{let t=e.getAttribute("data-bs-target");if(!t||t==="#"){let r=e.getAttribute("href");if(!r||!r.includes("#")&&!r.startsWith("."))return null;r.includes("#")&&!r.startsWith("#")&&(r=`#${r.split("#")[1]}`),t=r&&r!=="#"?r.trim():null}return t?t.split(",").map(r=>pe(r)).join(","):null},qt={find(e,t=document.documentElement){return[].concat(...Element.prototype.querySelectorAll.call(t,e))},findOne(e,t=document.documentElement){return Element.prototype.querySelector.call(t,e)},children(e,t){return[].concat(...e.children).filter(r=>r.matches(t))},parents(e,t){let r=[],n=e.parentNode.closest(t);for(;n;)r.push(n),n=n.parentNode.closest(t);return r},prev(e,t){let r=e.previousElementSibling;for(;r;){if(r.matches(t))return[r];r=r.previousElementSibling}return[]},next(e,t){let r=e.nextElementSibling;for(;r;){if(r.matches(t))return[r];r=r.nextElementSibling}return[]},focusableChildren(e){let t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(r=>`${r}:not([tabindex^="-"])`).join(",");return this.find(t,e).filter(r=>!yr(r)&&br(r))},getSelectorFromElement(e){let t=Te(e);return t&&qt.findOne(t)?t:null},getElementFromSelector(e){let t=Te(e);return t?qt.findOne(t):null},getMultipleElementsFromSelector(e){let t=Te(e);return t?qt.find(t):[]}},F=qt;var Un="collapse",Yn="bs.collapse",At=`.${Yn}`,Gn=".data-api",Kn=`show${At}`,Qn=`shown${At}`,Xn=`hide${At}`,Jn=`hidden${At}`,Zn=`click${At}${Gn}`,Oe="show",at="collapse",Wt="collapsing",to="collapsed",eo=`:scope .${at} .${at}`,ro="collapse-horizontal",no="width",oo="height",io=".collapse.show, .collapse.collapsing",Se='[data-bs-toggle="collapse"]',so={parent:null,toggle:!0},ao={parent:"(null|element)",toggle:"boolean"},zt=class e extends Vt{constructor(t,r){super(t,r),this._isTransitioning=!1,this._triggerArray=[];let n=F.find(Se);for(let o of n){let s=F.getSelectorFromElement(o),i=F.find(s).filter(a=>a===this._element);s!==null&&i.length&&this._triggerArray.push(o)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return so}static get DefaultType(){return ao}static get NAME(){return Un}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(io).filter(a=>a!==this._element).map(a=>e.getOrCreateInstance(a,{toggle:!1}))),t.length&&t[0]._isTransitioning||S.trigger(this._element,Kn).defaultPrevented)return;for(let a of t)a.hide();let n=this._getDimension();this._element.classList.remove(at),this._element.classList.add(Wt),this._element.style[n]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;let o=()=>{this._isTransitioning=!1,this._element.classList.remove(Wt),this._element.classList.add(at,Oe),this._element.style[n]="",S.trigger(this._element,Qn)},i=`scroll${n[0].toUpperCase()+n.slice(1)}`;this._queueCallback(o,this._element,!0),this._element.style[n]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown()||S.trigger(this._element,Xn).defaultPrevented)return;let r=this._getDimension();this._element.style[r]=`${this._element.getBoundingClientRect()[r]}px`,Er(this._element),this._element.classList.add(Wt),this._element.classList.remove(at,Oe);for(let o of this._triggerArray){let s=F.getElementFromSelector(o);s&&!this._isShown(s)&&this._addAriaAndCollapsedClass([o],!1)}this._isTransitioning=!0;let n=()=>{this._isTransitioning=!1,this._element.classList.remove(Wt),this._element.classList.add(at),S.trigger(this._element,Jn)};this._element.style[r]="",this._queueCallback(n,this._element,!0)}_isShown(t=this._element){return t.classList.contains(Oe)}_configAfterMerge(t){return t.toggle=!!t.toggle,t.parent=Y(t.parent),t}_getDimension(){return this._element.classList.contains(ro)?no:oo}_initializeChildren(){if(!this._config.parent)return;let t=this._getFirstLevelChildren(Se);for(let r of t){let n=F.getElementFromSelector(r);n&&this._addAriaAndCollapsedClass([r],this._isShown(n))}}_getFirstLevelChildren(t){let r=F.find(eo,this._config.parent);return F.find(t,this._config.parent).filter(n=>!r.includes(n))}_addAriaAndCollapsedClass(t,r){if(t.length)for(let n of t)n.classList.toggle(to,!r),n.setAttribute("aria-expanded",r)}static jQueryInterface(t){let r={};return typeof t=="string"&&/show|hide/.test(t)&&(r.toggle=!1),this.each(function(){let n=e.getOrCreateInstance(this,r);if(typeof t=="string"){if(typeof n[t]=="undefined")throw new TypeError(`No method named "${t}"`);n[t]()}})}};S.on(document,Zn,Se,function(e){(e.target.tagName==="A"||e.delegateTarget&&e.delegateTarget.tagName==="A")&&e.preventDefault();for(let t of F.getMultipleElementsFromSelector(this))zt.getOrCreateInstance(t,{toggle:!1}).toggle()});Ft(zt);var co="l_",lo="h_",uo=document.getElementsByClassName("collapse");function xe(){[...uo].forEach(e=>{let t=lo+e.id.substring(co.length),r=document.getElementById(t);e.addEventListener("hide.bs.collapse",()=>{r&&(r.querySelector(".far.fa-folder-open").className="far fa-folder fa-fw",r.querySelector(".fas.fa-angle-down").classList.add("rotate"),r.classList.remove("hide-border-bottom"))}),e.addEventListener("show.bs.collapse",()=>{r&&(r.querySelector(".far.fa-folder").className="far fa-folder-open fa-fw",r.querySelector(".fas.fa-angle-down").classList.remove("rotate"),r.classList.add("hide-border-bottom"))})})}var We=Pn(en());var li=/^aria-[\w-]*$/i,Qt={"*":["class","dir","id","lang","role",li],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},ui=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),fi=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,pi=(e,t)=>{let r=e.nodeName.toLowerCase();return t.includes(r)?ui.has(r)?!!fi.test(e.nodeValue):!0:t.filter(n=>n instanceof RegExp).some(n=>n.test(r))};function rn(e,t,r){if(!e.length)return e;if(r&&typeof r=="function")return r(e);let o=new window.DOMParser().parseFromString(e,"text/html"),s=[].concat(...o.body.querySelectorAll("*"));for(let i of s){let a=i.nodeName.toLowerCase();if(!Object.keys(t).includes(a)){i.remove();continue}let c=[].concat(...i.attributes),u=[].concat(t["*"]||[],t[a]||[]);for(let l of c)pi(l,u)||i.removeAttribute(l.nodeName)}return o.body.innerHTML}var di="TemplateFactory",hi={allowList:Qt,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},mi={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},gi={entry:"(string|element|function|null)",selector:"(string|element)"},Fe=class extends Ht{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return hi}static get DefaultType(){return mi}static get NAME(){return di}getContent(){return Object.values(this._config.content).map(t=>this._resolvePossibleFunction(t)).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content=N(N({},this._config.content),t),this}toHtml(){let t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(let[o,s]of Object.entries(this._config.content))this._setContent(t,s,o);let r=t.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&r.classList.add(...n.split(" ")),r}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(let[r,n]of Object.entries(t))super._typeCheckConfig({selector:r,entry:n},gi)}_setContent(t,r,n){let o=F.findOne(n,t);if(o){if(r=this._resolvePossibleFunction(r),!r){o.remove();return}if(X(r)){this._putElementInTemplate(Y(r),o);return}if(this._config.html){o.innerHTML=this._maybeSanitize(r);return}o.textContent=r}}_maybeSanitize(t){return this._config.sanitize?rn(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return Q(t,[void 0,this])}_putElementInTemplate(t,r){if(this._config.html){r.innerHTML="",r.append(t);return}r.textContent=t.textContent}},nn=Fe;var vi="tooltip",bi=new Set(["sanitize","allowList","sanitizeFn"]),He="fade",yi="modal",Xt="show",Ei=".tooltip-inner",on=`.${yi}`,sn="hide.bs.modal",Dt="hover",Ve="focus",qe="click",_i="manual",wi="hide",Ai="hidden",Ti="show",Oi="shown",Si="inserted",xi="click",Ci="focusin",Li="focusout",Di="mouseenter",Ni="mouseleave",Ii={AUTO:"auto",TOP:"top",RIGHT:ge()?"left":"right",BOTTOM:"bottom",LEFT:ge()?"right":"left"},Pi={allowList:Qt,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},Mi={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"},Jt=class e extends Vt{constructor(t,r){if(typeof We=="undefined")throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org/docs/v2/)");super(t,r),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Pi}static get DefaultType(){return Mi}static get NAME(){return vi}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){if(this._isEnabled){if(this._isShown()){this._leave();return}this._enter()}}dispose(){clearTimeout(this._timeout),S.off(this._element.closest(on),sn,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if(this._element.style.display==="none")throw new Error("Please use show on visible elements");if(!(this._isWithContent()&&this._isEnabled))return;let t=S.trigger(this._element,this.constructor.eventName(Ti)),n=(de(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!n)return;this._disposePopper();let o=this._getTipElement();this._element.setAttribute("aria-describedby",o.getAttribute("id"));let{container:s}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(s.append(o),S.trigger(this._element,this.constructor.eventName(Si))),this._popper=this._createPopper(o),o.classList.add(Xt),"ontouchstart"in document.documentElement)for(let a of[].concat(...document.body.children))S.on(a,"mouseover",he);let i=()=>{S.trigger(this._element,this.constructor.eventName(Oi)),this._isHovered===!1&&this._leave(),this._isHovered=!1};this._queueCallback(i,this.tip,this._isAnimated())}hide(){if(!this._isShown()||S.trigger(this._element,this.constructor.eventName(wi)).defaultPrevented)return;if(this._getTipElement().classList.remove(Xt),"ontouchstart"in document.documentElement)for(let o of[].concat(...document.body.children))S.off(o,"mouseover",he);this._activeTrigger[qe]=!1,this._activeTrigger[Ve]=!1,this._activeTrigger[Dt]=!1,this._isHovered=null;let n=()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),S.trigger(this._element,this.constructor.eventName(Ai)))};this._queueCallback(n,this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return!!this._getTitle()}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){let r=this._getTemplateFactory(t).toHtml();if(!r)return null;r.classList.remove(He,Xt),r.classList.add(`bs-${this.constructor.NAME}-auto`);let n=vr(this.constructor.NAME).toString();return r.setAttribute("id",n),this._isAnimated()&&r.classList.add(He),r}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new nn(hr(N({},this._config),{content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)})),this._templateFactory}_getContentForTemplate(){return{[Ei]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(He)}_isShown(){return this.tip&&this.tip.classList.contains(Xt)}_createPopper(t){let r=Q(this._config.placement,[this,t,this._element]),n=Ii[r.toUpperCase()];return We.createPopper(this._element,t,this._getPopperConfig(n))}_getOffset(){let{offset:t}=this._config;return typeof t=="string"?t.split(",").map(r=>Number.parseInt(r,10)):typeof t=="function"?r=>t(r,this._element):t}_resolvePossibleFunction(t){return Q(t,[this._element,this._element])}_getPopperConfig(t){let r={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:n=>{this._getTipElement().setAttribute("data-popper-placement",n.state.placement)}}]};return N(N({},r),Q(this._config.popperConfig,[void 0,r]))}_setListeners(){let t=this._config.trigger.split(" ");for(let r of t)if(r==="click")S.on(this._element,this.constructor.eventName(xi),this._config.selector,n=>{let o=this._initializeOnDelegatedTarget(n);o._activeTrigger[qe]=!(o._isShown()&&o._activeTrigger[qe]),o.toggle()});else if(r!==_i){let n=r===Dt?this.constructor.eventName(Di):this.constructor.eventName(Ci),o=r===Dt?this.constructor.eventName(Ni):this.constructor.eventName(Li);S.on(this._element,n,this._config.selector,s=>{let i=this._initializeOnDelegatedTarget(s);i._activeTrigger[s.type==="focusin"?Ve:Dt]=!0,i._enter()}),S.on(this._element,o,this._config.selector,s=>{let i=this._initializeOnDelegatedTarget(s);i._activeTrigger[s.type==="focusout"?Ve:Dt]=i._element.contains(s.relatedTarget),i._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},S.on(this._element.closest(on),sn,this._hideModalHandler)}_fixTitle(){let t=this._element.getAttribute("title");t&&(!this._element.getAttribute("aria-label")&&!this._element.textContent.trim()&&this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){if(this._isShown()||this._isHovered){this._isHovered=!0;return}this._isHovered=!0,this._setTimeout(()=>{this._isHovered&&this.show()},this._config.delay.show)}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout(()=>{this._isHovered||this.hide()},this._config.delay.hide))}_setTimeout(t,r){clearTimeout(this._timeout),this._timeout=setTimeout(t,r)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){let r=wt.getDataAttributes(this._element);for(let n of Object.keys(r))bi.has(n)&&delete r[n];return t=N(N({},r),typeof t=="object"&&t?t:{}),t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=t.container===!1?document.body:Y(t.container),typeof t.delay=="number"&&(t.delay={show:t.delay,hide:t.delay}),typeof t.title=="number"&&(t.title=t.title.toString()),typeof t.content=="number"&&(t.content=t.content.toString()),t}_getDelegateConfig(){let t={};for(let[r,n]of Object.entries(this._config))this.constructor.Default[r]!==n&&(t[r]=n);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each(function(){let r=e.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof r[t]=="undefined")throw new TypeError(`No method named "${t}"`);r[t]()}})}};Ft(Jt);var ze=Jt;var Ri=document.getElementById("toc-bar"),ki=document.getElementById("toc-solo-trigger"),$i=document.getElementsByClassName("toc-trigger"),z=document.getElementById("toc-popup"),Bi=document.getElementById("toc-popup-close"),an="overflow-hidden",Ue="closing",Nt,It,ht=class ht{static initBar(){new IntersectionObserver(r=>{r.forEach(n=>{Ri.classList.toggle("invisible",n.isIntersecting)})},{rootMargin:`-${U(this,It)}px 0px 0px 0px`}).observe(ki),Bt(this,Nt,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach(r=>{r.onclick=()=>this.hidePopup()})}static refresh(){U(this,Nt)&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return z.open}static showPopup(){this.lockScroll(!0),z.showModal(),z.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){z.toggleAttribute(Ue),z.addEventListener("animationend",()=>{z.toggleAttribute(Ue),z.close()},{once:!0}),this.lockScroll(!1)}static lockScroll(t){document.documentElement.classList.toggle(an,t),document.body.classList.toggle(an,t)}static clickBackdrop(t){if(z.hasAttribute(Ue))return;let r=t.target.getBoundingClientRect();(t.clientXr.right||t.clientYr.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...$i].forEach(t=>{t.onclick=()=>this.showPopup()}),z.onclick=t=>this.clickBackdrop(t),Bi.onclick=()=>this.hidePopup(),z.oncancel=t=>{t.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}};Nt=new WeakMap,It=new WeakMap,_t(ht,Nt,!0),_t(ht,It,48),Et(ht,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:U(ht,It)});var Ye=ht;var Hs=matchMedia("(min-width: 1200px)");var qs=Theme.getThemeMapper("default","dark");var cn=document.getElementById("mode-toggle");function Ge(){cn&&cn.addEventListener("click",()=>{Theme.flip()})}function Ke(){let e=document.getElementById("back-to-top");window.addEventListener("scroll",()=>{window.scrollY>50?e.classList.add("show"):e.classList.remove("show")}),e.addEventListener("click",()=>{window.scrollTo({top:0})})}function Qe(){[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map(t=>new ze(t))}function Xe(){Ge(),Ke(),Qe()}var ji="sidebar-display",Fi=document.getElementById("sidebar"),Hi=document.getElementById("sidebar-trigger"),ln=document.getElementById("mask"),Z,Zt=class{static toggle(){Bt(this,Z,!U(this,Z)),document.body.toggleAttribute(ji,U(this,Z)),Fi.classList.toggle("z-2",U(this,Z)),ln.classList.toggle("d-none",!U(this,Z))}};Z=new WeakMap,_t(Zt,Z,!1);function Je(){Hi.onclick=ln.onclick=()=>Zt.toggle()}var un=document.getElementById("sidebar-trigger"),Ze=document.getElementById("search-trigger"),te=document.getElementById("search-cancel"),fn=document.querySelectorAll("#main-wrapper>.container>.row"),pn=document.getElementById("topbar-title"),ee=document.getElementById("search"),dn=document.getElementById("search-result-wrapper"),Vi=document.getElementById("search-results"),mt=document.getElementById("search-input"),re=document.getElementById("search-hints"),tr="d-block",M="d-none",hn="input-focus",mn="d-flex",ne=class{static on(){un.classList.add(M),pn.classList.add(M),Ze.classList.add(M),ee.classList.add(mn),te.classList.add(tr)}static off(){te.classList.remove(tr),ee.classList.remove(mn),un.classList.remove(M),pn.classList.remove(M),Ze.classList.remove(M)}},it=class{static on(){this.resultVisible||(dn.classList.remove(M),fn.forEach(t=>{t.classList.add(M)}),this.resultVisible=!0)}static off(){this.resultVisible&&(Vi.innerHTML="",re.classList.contains(M)&&re.classList.remove(M),dn.classList.add(M),fn.forEach(t=>{t.classList.remove(M)}),mt.textContent="",this.resultVisible=!1)}};Et(it,"resultVisible",!1);function gn(){return te.classList.contains(tr)}function vn(){Ze.addEventListener("click",()=>{ne.on(),it.on(),mt.focus()}),te.addEventListener("click",()=>{ne.off(),it.off()}),mt.addEventListener("focus",()=>{ee.classList.add(hn)}),mt.addEventListener("focusout",()=>{ee.classList.remove(hn)}),mt.addEventListener("input",()=>{mt.value===""?gn()?re.classList.remove(M):it.off():(it.on(),gn()&&re.classList.add(M))})}function er(){vn()}Xe();Je();er();xe();})(); +(() => { + var __create = Object.create; + var __defProp = Object.defineProperty; + var __defProps = Object.defineProperties; + var __getOwnPropDesc = Object.getOwnPropertyDescriptor; + var __getOwnPropDescs = Object.getOwnPropertyDescriptors; + var __getOwnPropNames = Object.getOwnPropertyNames; + var __getOwnPropSymbols = Object.getOwnPropertySymbols; + var __getProtoOf = Object.getPrototypeOf; + var __hasOwnProp = Object.prototype.hasOwnProperty; + var __propIsEnum = Object.prototype.propertyIsEnumerable; + var __typeError = (msg) => { + throw TypeError(msg); + }; + var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; + var __spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + if (__getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(b)) { + if (__propIsEnum.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + } + return a; + }; + var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); + var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; + }; + var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; + }; + var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod + )); + var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg); + var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj)); + var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value); + var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/gohugoio/hugo-mod-jslibs-dist/popperjs/v2@v2.21100.20000/package/dist/cjs/popper.js + var require_popper = __commonJS({ + "ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/gohugoio/hugo-mod-jslibs-dist/popperjs/v2@v2.21100.20000/package/dist/cjs/popper.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + function getWindow(node) { + if (node == null) { + return window; + } + if (node.toString() !== "[object Window]") { + var ownerDocument = node.ownerDocument; + return ownerDocument ? ownerDocument.defaultView || window : window; + } + return node; + } + function isElement2(node) { + var OwnElement = getWindow(node).Element; + return node instanceof OwnElement || node instanceof Element; + } + function isHTMLElement(node) { + var OwnElement = getWindow(node).HTMLElement; + return node instanceof OwnElement || node instanceof HTMLElement; + } + function isShadowRoot(node) { + if (typeof ShadowRoot === "undefined") { + return false; + } + var OwnElement = getWindow(node).ShadowRoot; + return node instanceof OwnElement || node instanceof ShadowRoot; + } + var max = Math.max; + var min = Math.min; + var round = Math.round; + function getBoundingClientRect(element, includeScale) { + if (includeScale === void 0) { + includeScale = false; + } + var rect = element.getBoundingClientRect(); + var scaleX = 1; + var scaleY = 1; + if (isHTMLElement(element) && includeScale) { + var offsetHeight = element.offsetHeight; + var offsetWidth = element.offsetWidth; + if (offsetWidth > 0) { + scaleX = round(rect.width) / offsetWidth || 1; + } + if (offsetHeight > 0) { + scaleY = round(rect.height) / offsetHeight || 1; + } + } + return { + width: rect.width / scaleX, + height: rect.height / scaleY, + top: rect.top / scaleY, + right: rect.right / scaleX, + bottom: rect.bottom / scaleY, + left: rect.left / scaleX, + x: rect.left / scaleX, + y: rect.top / scaleY + }; + } + function getWindowScroll(node) { + var win = getWindow(node); + var scrollLeft = win.pageXOffset; + var scrollTop = win.pageYOffset; + return { + scrollLeft, + scrollTop + }; + } + function getHTMLElementScroll(element) { + return { + scrollLeft: element.scrollLeft, + scrollTop: element.scrollTop + }; + } + function getNodeScroll(node) { + if (node === getWindow(node) || !isHTMLElement(node)) { + return getWindowScroll(node); + } else { + return getHTMLElementScroll(node); + } + } + function getNodeName(element) { + return element ? (element.nodeName || "").toLowerCase() : null; + } + function getDocumentElement(element) { + return ((isElement2(element) ? element.ownerDocument : ( + // $FlowFixMe[prop-missing] + element.document + )) || window.document).documentElement; + } + function getWindowScrollBarX(element) { + return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft; + } + function getComputedStyle2(element) { + return getWindow(element).getComputedStyle(element); + } + function isScrollParent(element) { + var _getComputedStyle = getComputedStyle2(element), overflow = _getComputedStyle.overflow, overflowX = _getComputedStyle.overflowX, overflowY = _getComputedStyle.overflowY; + return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX); + } + function isElementScaled(element) { + var rect = element.getBoundingClientRect(); + var scaleX = round(rect.width) / element.offsetWidth || 1; + var scaleY = round(rect.height) / element.offsetHeight || 1; + return scaleX !== 1 || scaleY !== 1; + } + function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) { + if (isFixed === void 0) { + isFixed = false; + } + var isOffsetParentAnElement = isHTMLElement(offsetParent); + var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent); + var documentElement = getDocumentElement(offsetParent); + var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled); + var scroll = { + scrollLeft: 0, + scrollTop: 0 + }; + var offsets = { + x: 0, + y: 0 + }; + if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { + if (getNodeName(offsetParent) !== "body" || // https://github.com/popperjs/popper-core/issues/1078 + isScrollParent(documentElement)) { + scroll = getNodeScroll(offsetParent); + } + if (isHTMLElement(offsetParent)) { + offsets = getBoundingClientRect(offsetParent, true); + offsets.x += offsetParent.clientLeft; + offsets.y += offsetParent.clientTop; + } else if (documentElement) { + offsets.x = getWindowScrollBarX(documentElement); + } + } + return { + x: rect.left + scroll.scrollLeft - offsets.x, + y: rect.top + scroll.scrollTop - offsets.y, + width: rect.width, + height: rect.height + }; + } + function getLayoutRect(element) { + var clientRect = getBoundingClientRect(element); + var width = element.offsetWidth; + var height = element.offsetHeight; + if (Math.abs(clientRect.width - width) <= 1) { + width = clientRect.width; + } + if (Math.abs(clientRect.height - height) <= 1) { + height = clientRect.height; + } + return { + x: element.offsetLeft, + y: element.offsetTop, + width, + height + }; + } + function getParentNode(element) { + if (getNodeName(element) === "html") { + return element; + } + return ( + // this is a quicker (but less type safe) way to save quite some bytes from the bundle + // $FlowFixMe[incompatible-return] + // $FlowFixMe[prop-missing] + element.assignedSlot || // step into the shadow DOM of the parent of a slotted node + element.parentNode || // DOM Element detected + (isShadowRoot(element) ? element.host : null) || // ShadowRoot detected + // $FlowFixMe[incompatible-call]: HTMLElement is a Node + getDocumentElement(element) + ); + } + function getScrollParent(node) { + if (["html", "body", "#document"].indexOf(getNodeName(node)) >= 0) { + return node.ownerDocument.body; + } + if (isHTMLElement(node) && isScrollParent(node)) { + return node; + } + return getScrollParent(getParentNode(node)); + } + function listScrollParents(element, list) { + var _element$ownerDocumen; + if (list === void 0) { + list = []; + } + var scrollParent = getScrollParent(element); + var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body); + var win = getWindow(scrollParent); + var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent; + var updatedList = list.concat(target); + return isBody ? updatedList : ( + // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here + updatedList.concat(listScrollParents(getParentNode(target))) + ); + } + function isTableElement(element) { + return ["table", "td", "th"].indexOf(getNodeName(element)) >= 0; + } + function getTrueOffsetParent(element) { + if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837 + getComputedStyle2(element).position === "fixed") { + return null; + } + return element.offsetParent; + } + function getContainingBlock(element) { + var isFirefox = navigator.userAgent.toLowerCase().indexOf("firefox") !== -1; + var isIE = navigator.userAgent.indexOf("Trident") !== -1; + if (isIE && isHTMLElement(element)) { + var elementCss = getComputedStyle2(element); + if (elementCss.position === "fixed") { + return null; + } + } + var currentNode = getParentNode(element); + while (isHTMLElement(currentNode) && ["html", "body"].indexOf(getNodeName(currentNode)) < 0) { + var css = getComputedStyle2(currentNode); + if (css.transform !== "none" || css.perspective !== "none" || css.contain === "paint" || ["transform", "perspective"].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === "filter" || isFirefox && css.filter && css.filter !== "none") { + return currentNode; + } else { + currentNode = currentNode.parentNode; + } + } + return null; + } + function getOffsetParent(element) { + var window2 = getWindow(element); + var offsetParent = getTrueOffsetParent(element); + while (offsetParent && isTableElement(offsetParent) && getComputedStyle2(offsetParent).position === "static") { + offsetParent = getTrueOffsetParent(offsetParent); + } + if (offsetParent && (getNodeName(offsetParent) === "html" || getNodeName(offsetParent) === "body" && getComputedStyle2(offsetParent).position === "static")) { + return window2; + } + return offsetParent || getContainingBlock(element) || window2; + } + var top = "top"; + var bottom = "bottom"; + var right = "right"; + var left = "left"; + var auto = "auto"; + var basePlacements = [top, bottom, right, left]; + var start = "start"; + var end = "end"; + var clippingParents = "clippingParents"; + var viewport = "viewport"; + var popper = "popper"; + var reference = "reference"; + var variationPlacements = /* @__PURE__ */ basePlacements.reduce(function(acc, placement) { + return acc.concat([placement + "-" + start, placement + "-" + end]); + }, []); + var placements = /* @__PURE__ */ [].concat(basePlacements, [auto]).reduce(function(acc, placement) { + return acc.concat([placement, placement + "-" + start, placement + "-" + end]); + }, []); + var beforeRead = "beforeRead"; + var read = "read"; + var afterRead = "afterRead"; + var beforeMain = "beforeMain"; + var main = "main"; + var afterMain = "afterMain"; + var beforeWrite = "beforeWrite"; + var write = "write"; + var afterWrite = "afterWrite"; + var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite]; + function order(modifiers) { + var map = /* @__PURE__ */ new Map(); + var visited = /* @__PURE__ */ new Set(); + var result = []; + modifiers.forEach(function(modifier) { + map.set(modifier.name, modifier); + }); + function sort(modifier) { + visited.add(modifier.name); + var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []); + requires.forEach(function(dep) { + if (!visited.has(dep)) { + var depModifier = map.get(dep); + if (depModifier) { + sort(depModifier); + } + } + }); + result.push(modifier); + } + modifiers.forEach(function(modifier) { + if (!visited.has(modifier.name)) { + sort(modifier); + } + }); + return result; + } + function orderModifiers(modifiers) { + var orderedModifiers = order(modifiers); + return modifierPhases.reduce(function(acc, phase) { + return acc.concat(orderedModifiers.filter(function(modifier) { + return modifier.phase === phase; + })); + }, []); + } + function debounce(fn) { + var pending; + return function() { + if (!pending) { + pending = new Promise(function(resolve) { + Promise.resolve().then(function() { + pending = void 0; + resolve(fn()); + }); + }); + } + return pending; + }; + } + function format(str) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + return [].concat(args).reduce(function(p, c) { + return p.replace(/%s/, c); + }, str); + } + var INVALID_MODIFIER_ERROR = 'Popper: modifier "%s" provided an invalid %s property, expected %s but got %s'; + var MISSING_DEPENDENCY_ERROR = 'Popper: modifier "%s" requires "%s", but "%s" modifier is not available'; + var VALID_PROPERTIES = ["name", "enabled", "phase", "fn", "effect", "requires", "options"]; + function validateModifiers(modifiers) { + modifiers.forEach(function(modifier) { + [].concat(Object.keys(modifier), VALID_PROPERTIES).filter(function(value, index, self) { + return self.indexOf(value) === index; + }).forEach(function(key) { + switch (key) { + case "name": + if (typeof modifier.name !== "string") { + console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '"name"', '"string"', '"' + String(modifier.name) + '"')); + } + break; + case "enabled": + if (typeof modifier.enabled !== "boolean") { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"enabled"', '"boolean"', '"' + String(modifier.enabled) + '"')); + } + break; + case "phase": + if (modifierPhases.indexOf(modifier.phase) < 0) { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + modifierPhases.join(", "), '"' + String(modifier.phase) + '"')); + } + break; + case "fn": + if (typeof modifier.fn !== "function") { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"fn"', '"function"', '"' + String(modifier.fn) + '"')); + } + break; + case "effect": + if (modifier.effect != null && typeof modifier.effect !== "function") { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"effect"', '"function"', '"' + String(modifier.fn) + '"')); + } + break; + case "requires": + if (modifier.requires != null && !Array.isArray(modifier.requires)) { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requires"', '"array"', '"' + String(modifier.requires) + '"')); + } + break; + case "requiresIfExists": + if (!Array.isArray(modifier.requiresIfExists)) { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requiresIfExists"', '"array"', '"' + String(modifier.requiresIfExists) + '"')); + } + break; + case "options": + case "data": + break; + default: + console.error('PopperJS: an invalid property has been provided to the "' + modifier.name + '" modifier, valid properties are ' + VALID_PROPERTIES.map(function(s) { + return '"' + s + '"'; + }).join(", ") + '; but "' + key + '" was provided.'); + } + modifier.requires && modifier.requires.forEach(function(requirement) { + if (modifiers.find(function(mod) { + return mod.name === requirement; + }) == null) { + console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement)); + } + }); + }); + }); + } + function uniqueBy(arr, fn) { + var identifiers = /* @__PURE__ */ new Set(); + return arr.filter(function(item) { + var identifier = fn(item); + if (!identifiers.has(identifier)) { + identifiers.add(identifier); + return true; + } + }); + } + function getBasePlacement(placement) { + return placement.split("-")[0]; + } + function mergeByName(modifiers) { + var merged = modifiers.reduce(function(merged2, current) { + var existing = merged2[current.name]; + merged2[current.name] = existing ? Object.assign({}, existing, current, { + options: Object.assign({}, existing.options, current.options), + data: Object.assign({}, existing.data, current.data) + }) : current; + return merged2; + }, {}); + return Object.keys(merged).map(function(key) { + return merged[key]; + }); + } + function getViewportRect(element) { + var win = getWindow(element); + var html = getDocumentElement(element); + var visualViewport = win.visualViewport; + var width = html.clientWidth; + var height = html.clientHeight; + var x = 0; + var y = 0; + if (visualViewport) { + width = visualViewport.width; + height = visualViewport.height; + if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) { + x = visualViewport.offsetLeft; + y = visualViewport.offsetTop; + } + } + return { + width, + height, + x: x + getWindowScrollBarX(element), + y + }; + } + function getDocumentRect(element) { + var _element$ownerDocumen; + var html = getDocumentElement(element); + var winScroll = getWindowScroll(element); + var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body; + var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); + var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); + var x = -winScroll.scrollLeft + getWindowScrollBarX(element); + var y = -winScroll.scrollTop; + if (getComputedStyle2(body || html).direction === "rtl") { + x += max(html.clientWidth, body ? body.clientWidth : 0) - width; + } + return { + width, + height, + x, + y + }; + } + function contains(parent, child) { + var rootNode = child.getRootNode && child.getRootNode(); + if (parent.contains(child)) { + return true; + } else if (rootNode && isShadowRoot(rootNode)) { + var next = child; + do { + if (next && parent.isSameNode(next)) { + return true; + } + next = next.parentNode || next.host; + } while (next); + } + return false; + } + function rectToClientRect(rect) { + return Object.assign({}, rect, { + left: rect.x, + top: rect.y, + right: rect.x + rect.width, + bottom: rect.y + rect.height + }); + } + function getInnerBoundingClientRect(element) { + var rect = getBoundingClientRect(element); + rect.top = rect.top + element.clientTop; + rect.left = rect.left + element.clientLeft; + rect.bottom = rect.top + element.clientHeight; + rect.right = rect.left + element.clientWidth; + rect.width = element.clientWidth; + rect.height = element.clientHeight; + rect.x = rect.left; + rect.y = rect.top; + return rect; + } + function getClientRectFromMixedType(element, clippingParent) { + return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isElement2(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element))); + } + function getClippingParents(element) { + var clippingParents2 = listScrollParents(getParentNode(element)); + var canEscapeClipping = ["absolute", "fixed"].indexOf(getComputedStyle2(element).position) >= 0; + var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element; + if (!isElement2(clipperElement)) { + return []; + } + return clippingParents2.filter(function(clippingParent) { + return isElement2(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== "body" && (canEscapeClipping ? getComputedStyle2(clippingParent).position !== "static" : true); + }); + } + function getClippingRect(element, boundary, rootBoundary) { + var mainClippingParents = boundary === "clippingParents" ? getClippingParents(element) : [].concat(boundary); + var clippingParents2 = [].concat(mainClippingParents, [rootBoundary]); + var firstClippingParent = clippingParents2[0]; + var clippingRect = clippingParents2.reduce(function(accRect, clippingParent) { + var rect = getClientRectFromMixedType(element, clippingParent); + accRect.top = max(rect.top, accRect.top); + accRect.right = min(rect.right, accRect.right); + accRect.bottom = min(rect.bottom, accRect.bottom); + accRect.left = max(rect.left, accRect.left); + return accRect; + }, getClientRectFromMixedType(element, firstClippingParent)); + clippingRect.width = clippingRect.right - clippingRect.left; + clippingRect.height = clippingRect.bottom - clippingRect.top; + clippingRect.x = clippingRect.left; + clippingRect.y = clippingRect.top; + return clippingRect; + } + function getVariation(placement) { + return placement.split("-")[1]; + } + function getMainAxisFromPlacement(placement) { + return ["top", "bottom"].indexOf(placement) >= 0 ? "x" : "y"; + } + function computeOffsets(_ref) { + var reference2 = _ref.reference, element = _ref.element, placement = _ref.placement; + var basePlacement = placement ? getBasePlacement(placement) : null; + var variation = placement ? getVariation(placement) : null; + var commonX = reference2.x + reference2.width / 2 - element.width / 2; + var commonY = reference2.y + reference2.height / 2 - element.height / 2; + var offsets; + switch (basePlacement) { + case top: + offsets = { + x: commonX, + y: reference2.y - element.height + }; + break; + case bottom: + offsets = { + x: commonX, + y: reference2.y + reference2.height + }; + break; + case right: + offsets = { + x: reference2.x + reference2.width, + y: commonY + }; + break; + case left: + offsets = { + x: reference2.x - element.width, + y: commonY + }; + break; + default: + offsets = { + x: reference2.x, + y: reference2.y + }; + } + var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null; + if (mainAxis != null) { + var len = mainAxis === "y" ? "height" : "width"; + switch (variation) { + case start: + offsets[mainAxis] = offsets[mainAxis] - (reference2[len] / 2 - element[len] / 2); + break; + case end: + offsets[mainAxis] = offsets[mainAxis] + (reference2[len] / 2 - element[len] / 2); + break; + } + } + return offsets; + } + function getFreshSideObject() { + return { + top: 0, + right: 0, + bottom: 0, + left: 0 + }; + } + function mergePaddingObject(paddingObject) { + return Object.assign({}, getFreshSideObject(), paddingObject); + } + function expandToHashMap(value, keys) { + return keys.reduce(function(hashMap, key) { + hashMap[key] = value; + return hashMap; + }, {}); + } + function detectOverflow(state, options) { + if (options === void 0) { + options = {}; + } + var _options = options, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, _options$elementConte = _options.elementContext, elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, _options$altBoundary = _options.altBoundary, altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, _options$padding = _options.padding, padding = _options$padding === void 0 ? 0 : _options$padding; + var paddingObject = mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements)); + var altContext = elementContext === popper ? reference : popper; + var popperRect = state.rects.popper; + var element = state.elements[altBoundary ? altContext : elementContext]; + var clippingClientRect = getClippingRect(isElement2(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary); + var referenceClientRect = getBoundingClientRect(state.elements.reference); + var popperOffsets2 = computeOffsets({ + reference: referenceClientRect, + element: popperRect, + strategy: "absolute", + placement + }); + var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets2)); + var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; + var overflowOffsets = { + top: clippingClientRect.top - elementClientRect.top + paddingObject.top, + bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom, + left: clippingClientRect.left - elementClientRect.left + paddingObject.left, + right: elementClientRect.right - clippingClientRect.right + paddingObject.right + }; + var offsetData = state.modifiersData.offset; + if (elementContext === popper && offsetData) { + var offset2 = offsetData[placement]; + Object.keys(overflowOffsets).forEach(function(key) { + var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1; + var axis = [top, bottom].indexOf(key) >= 0 ? "y" : "x"; + overflowOffsets[key] += offset2[axis] * multiply; + }); + } + return overflowOffsets; + } + var INVALID_ELEMENT_ERROR = "Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element."; + var INFINITE_LOOP_ERROR = "Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash."; + var DEFAULT_OPTIONS = { + placement: "bottom", + modifiers: [], + strategy: "absolute" + }; + function areValidElements() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + return !args.some(function(element) { + return !(element && typeof element.getBoundingClientRect === "function"); + }); + } + function popperGenerator(generatorOptions) { + if (generatorOptions === void 0) { + generatorOptions = {}; + } + var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers2 = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2; + return function createPopper3(reference2, popper2, options) { + if (options === void 0) { + options = defaultOptions; + } + var state = { + placement: "bottom", + orderedModifiers: [], + options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions), + modifiersData: {}, + elements: { + reference: reference2, + popper: popper2 + }, + attributes: {}, + styles: {} + }; + var effectCleanupFns = []; + var isDestroyed = false; + var instance = { + state, + setOptions: function setOptions(setOptionsAction) { + var options2 = typeof setOptionsAction === "function" ? setOptionsAction(state.options) : setOptionsAction; + cleanupModifierEffects(); + state.options = Object.assign({}, defaultOptions, state.options, options2); + state.scrollParents = { + reference: isElement2(reference2) ? listScrollParents(reference2) : reference2.contextElement ? listScrollParents(reference2.contextElement) : [], + popper: listScrollParents(popper2) + }; + var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers2, state.options.modifiers))); + state.orderedModifiers = orderedModifiers.filter(function(m) { + return m.enabled; + }); + if (true) { + var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function(_ref) { + var name = _ref.name; + return name; + }); + validateModifiers(modifiers); + if (getBasePlacement(state.options.placement) === auto) { + var flipModifier = state.orderedModifiers.find(function(_ref2) { + var name = _ref2.name; + return name === "flip"; + }); + if (!flipModifier) { + console.error(['Popper: "auto" placements require the "flip" modifier be', "present and enabled to work."].join(" ")); + } + } + var _getComputedStyle = getComputedStyle2(popper2), marginTop = _getComputedStyle.marginTop, marginRight = _getComputedStyle.marginRight, marginBottom = _getComputedStyle.marginBottom, marginLeft = _getComputedStyle.marginLeft; + if ([marginTop, marginRight, marginBottom, marginLeft].some(function(margin) { + return parseFloat(margin); + })) { + console.warn(['Popper: CSS "margin" styles cannot be used to apply padding', "between the popper and its reference element or boundary.", "To replicate margin, use the `offset` modifier, as well as", "the `padding` option in the `preventOverflow` and `flip`", "modifiers."].join(" ")); + } + } + runModifierEffects(); + return instance.update(); + }, + // Sync update – it will always be executed, even if not necessary. This + // is useful for low frequency updates where sync behavior simplifies the + // logic. + // For high frequency updates (e.g. `resize` and `scroll` events), always + // prefer the async Popper#update method + forceUpdate: function forceUpdate() { + if (isDestroyed) { + return; + } + var _state$elements = state.elements, reference3 = _state$elements.reference, popper3 = _state$elements.popper; + if (!areValidElements(reference3, popper3)) { + if (true) { + console.error(INVALID_ELEMENT_ERROR); + } + return; + } + state.rects = { + reference: getCompositeRect(reference3, getOffsetParent(popper3), state.options.strategy === "fixed"), + popper: getLayoutRect(popper3) + }; + state.reset = false; + state.placement = state.options.placement; + state.orderedModifiers.forEach(function(modifier) { + return state.modifiersData[modifier.name] = Object.assign({}, modifier.data); + }); + var __debug_loops__ = 0; + for (var index = 0; index < state.orderedModifiers.length; index++) { + if (true) { + __debug_loops__ += 1; + if (__debug_loops__ > 100) { + console.error(INFINITE_LOOP_ERROR); + break; + } + } + if (state.reset === true) { + state.reset = false; + index = -1; + continue; + } + var _state$orderedModifie = state.orderedModifiers[index], fn = _state$orderedModifie.fn, _state$orderedModifie2 = _state$orderedModifie.options, _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, name = _state$orderedModifie.name; + if (typeof fn === "function") { + state = fn({ + state, + options: _options, + name, + instance + }) || state; + } + } + }, + // Async and optimistically optimized update – it will not be executed if + // not necessary (debounced to run at most once-per-tick) + update: debounce(function() { + return new Promise(function(resolve) { + instance.forceUpdate(); + resolve(state); + }); + }), + destroy: function destroy() { + cleanupModifierEffects(); + isDestroyed = true; + } + }; + if (!areValidElements(reference2, popper2)) { + if (true) { + console.error(INVALID_ELEMENT_ERROR); + } + return instance; + } + instance.setOptions(options).then(function(state2) { + if (!isDestroyed && options.onFirstUpdate) { + options.onFirstUpdate(state2); + } + }); + function runModifierEffects() { + state.orderedModifiers.forEach(function(_ref3) { + var name = _ref3.name, _ref3$options = _ref3.options, options2 = _ref3$options === void 0 ? {} : _ref3$options, effect2 = _ref3.effect; + if (typeof effect2 === "function") { + var cleanupFn = effect2({ + state, + name, + instance, + options: options2 + }); + var noopFn = function noopFn2() { + }; + effectCleanupFns.push(cleanupFn || noopFn); + } + }); + } + function cleanupModifierEffects() { + effectCleanupFns.forEach(function(fn) { + return fn(); + }); + effectCleanupFns = []; + } + return instance; + }; + } + var passive = { + passive: true + }; + function effect$2(_ref) { + var state = _ref.state, instance = _ref.instance, options = _ref.options; + var _options$scroll = options.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options.resize, resize = _options$resize === void 0 ? true : _options$resize; + var window2 = getWindow(state.elements.popper); + var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper); + if (scroll) { + scrollParents.forEach(function(scrollParent) { + scrollParent.addEventListener("scroll", instance.update, passive); + }); + } + if (resize) { + window2.addEventListener("resize", instance.update, passive); + } + return function() { + if (scroll) { + scrollParents.forEach(function(scrollParent) { + scrollParent.removeEventListener("scroll", instance.update, passive); + }); + } + if (resize) { + window2.removeEventListener("resize", instance.update, passive); + } + }; + } + var eventListeners = { + name: "eventListeners", + enabled: true, + phase: "write", + fn: function fn() { + }, + effect: effect$2, + data: {} + }; + function popperOffsets(_ref) { + var state = _ref.state, name = _ref.name; + state.modifiersData[name] = computeOffsets({ + reference: state.rects.reference, + element: state.rects.popper, + strategy: "absolute", + placement: state.placement + }); + } + var popperOffsets$1 = { + name: "popperOffsets", + enabled: true, + phase: "read", + fn: popperOffsets, + data: {} + }; + var unsetSides = { + top: "auto", + right: "auto", + bottom: "auto", + left: "auto" + }; + function roundOffsetsByDPR(_ref) { + var x = _ref.x, y = _ref.y; + var win = window; + var dpr = win.devicePixelRatio || 1; + return { + x: round(x * dpr) / dpr || 0, + y: round(y * dpr) / dpr || 0 + }; + } + function mapToStyles(_ref2) { + var _Object$assign2; + var popper2 = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, variation = _ref2.variation, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets, isFixed = _ref2.isFixed; + var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === "function" ? roundOffsets(offsets) : offsets, _ref3$x = _ref3.x, x = _ref3$x === void 0 ? 0 : _ref3$x, _ref3$y = _ref3.y, y = _ref3$y === void 0 ? 0 : _ref3$y; + var hasX = offsets.hasOwnProperty("x"); + var hasY = offsets.hasOwnProperty("y"); + var sideX = left; + var sideY = top; + var win = window; + if (adaptive) { + var offsetParent = getOffsetParent(popper2); + var heightProp = "clientHeight"; + var widthProp = "clientWidth"; + if (offsetParent === getWindow(popper2)) { + offsetParent = getDocumentElement(popper2); + if (getComputedStyle2(offsetParent).position !== "static" && position === "absolute") { + heightProp = "scrollHeight"; + widthProp = "scrollWidth"; + } + } + offsetParent = offsetParent; + if (placement === top || (placement === left || placement === right) && variation === end) { + sideY = bottom; + var offsetY = isFixed && win.visualViewport ? win.visualViewport.height : ( + // $FlowFixMe[prop-missing] + offsetParent[heightProp] + ); + y -= offsetY - popperRect.height; + y *= gpuAcceleration ? 1 : -1; + } + if (placement === left || (placement === top || placement === bottom) && variation === end) { + sideX = right; + var offsetX = isFixed && win.visualViewport ? win.visualViewport.width : ( + // $FlowFixMe[prop-missing] + offsetParent[widthProp] + ); + x -= offsetX - popperRect.width; + x *= gpuAcceleration ? 1 : -1; + } + } + var commonStyles = Object.assign({ + position + }, adaptive && unsetSides); + if (gpuAcceleration) { + var _Object$assign; + return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? "0" : "", _Object$assign[sideX] = hasX ? "0" : "", _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); + } + return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : "", _Object$assign2[sideX] = hasX ? x + "px" : "", _Object$assign2.transform = "", _Object$assign2)); + } + function computeStyles(_ref4) { + var state = _ref4.state, options = _ref4.options; + var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets; + if (true) { + var transitionProperty = getComputedStyle2(state.elements.popper).transitionProperty || ""; + if (adaptive && ["transform", "top", "right", "bottom", "left"].some(function(property) { + return transitionProperty.indexOf(property) >= 0; + })) { + console.warn(["Popper: Detected CSS transitions on at least one of the following", 'CSS properties: "transform", "top", "right", "bottom", "left".', "\n\n", 'Disable the "computeStyles" modifier\'s `adaptive` option to allow', "for smooth transitions, or remove these properties from the CSS", "transition declaration on the popper element if only transitioning", "opacity or background-color for example.", "\n\n", "We recommend using the popper element as a wrapper around an inner", "element that can have any CSS property transitioned for animations."].join(" ")); + } + } + var commonStyles = { + placement: getBasePlacement(state.placement), + variation: getVariation(state.placement), + popper: state.elements.popper, + popperRect: state.rects.popper, + gpuAcceleration, + isFixed: state.options.strategy === "fixed" + }; + if (state.modifiersData.popperOffsets != null) { + state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, { + offsets: state.modifiersData.popperOffsets, + position: state.options.strategy, + adaptive, + roundOffsets + }))); + } + if (state.modifiersData.arrow != null) { + state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, { + offsets: state.modifiersData.arrow, + position: "absolute", + adaptive: false, + roundOffsets + }))); + } + state.attributes.popper = Object.assign({}, state.attributes.popper, { + "data-popper-placement": state.placement + }); + } + var computeStyles$1 = { + name: "computeStyles", + enabled: true, + phase: "beforeWrite", + fn: computeStyles, + data: {} + }; + function applyStyles(_ref) { + var state = _ref.state; + Object.keys(state.elements).forEach(function(name) { + var style = state.styles[name] || {}; + var attributes = state.attributes[name] || {}; + var element = state.elements[name]; + if (!isHTMLElement(element) || !getNodeName(element)) { + return; + } + Object.assign(element.style, style); + Object.keys(attributes).forEach(function(name2) { + var value = attributes[name2]; + if (value === false) { + element.removeAttribute(name2); + } else { + element.setAttribute(name2, value === true ? "" : value); + } + }); + }); + } + function effect$1(_ref2) { + var state = _ref2.state; + var initialStyles = { + popper: { + position: state.options.strategy, + left: "0", + top: "0", + margin: "0" + }, + arrow: { + position: "absolute" + }, + reference: {} + }; + Object.assign(state.elements.popper.style, initialStyles.popper); + state.styles = initialStyles; + if (state.elements.arrow) { + Object.assign(state.elements.arrow.style, initialStyles.arrow); + } + return function() { + Object.keys(state.elements).forEach(function(name) { + var element = state.elements[name]; + var attributes = state.attributes[name] || {}; + var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); + var style = styleProperties.reduce(function(style2, property) { + style2[property] = ""; + return style2; + }, {}); + if (!isHTMLElement(element) || !getNodeName(element)) { + return; + } + Object.assign(element.style, style); + Object.keys(attributes).forEach(function(attribute) { + element.removeAttribute(attribute); + }); + }); + }; + } + var applyStyles$1 = { + name: "applyStyles", + enabled: true, + phase: "write", + fn: applyStyles, + effect: effect$1, + requires: ["computeStyles"] + }; + function distanceAndSkiddingToXY(placement, rects, offset2) { + var basePlacement = getBasePlacement(placement); + var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1; + var _ref = typeof offset2 === "function" ? offset2(Object.assign({}, rects, { + placement + })) : offset2, skidding = _ref[0], distance = _ref[1]; + skidding = skidding || 0; + distance = (distance || 0) * invertDistance; + return [left, right].indexOf(basePlacement) >= 0 ? { + x: distance, + y: skidding + } : { + x: skidding, + y: distance + }; + } + function offset(_ref2) { + var state = _ref2.state, options = _ref2.options, name = _ref2.name; + var _options$offset = options.offset, offset2 = _options$offset === void 0 ? [0, 0] : _options$offset; + var data = placements.reduce(function(acc, placement) { + acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset2); + return acc; + }, {}); + var _data$state$placement = data[state.placement], x = _data$state$placement.x, y = _data$state$placement.y; + if (state.modifiersData.popperOffsets != null) { + state.modifiersData.popperOffsets.x += x; + state.modifiersData.popperOffsets.y += y; + } + state.modifiersData[name] = data; + } + var offset$1 = { + name: "offset", + enabled: true, + phase: "main", + requires: ["popperOffsets"], + fn: offset + }; + var hash$1 = { + left: "right", + right: "left", + bottom: "top", + top: "bottom" + }; + function getOppositePlacement(placement) { + return placement.replace(/left|right|bottom|top/g, function(matched) { + return hash$1[matched]; + }); + } + var hash = { + start: "end", + end: "start" + }; + function getOppositeVariationPlacement(placement) { + return placement.replace(/start|end/g, function(matched) { + return hash[matched]; + }); + } + function computeAutoPlacement(state, options) { + if (options === void 0) { + options = {}; + } + var _options = options, placement = _options.placement, boundary = _options.boundary, rootBoundary = _options.rootBoundary, padding = _options.padding, flipVariations = _options.flipVariations, _options$allowedAutoP = _options.allowedAutoPlacements, allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP; + var variation = getVariation(placement); + var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function(placement2) { + return getVariation(placement2) === variation; + }) : basePlacements; + var allowedPlacements = placements$1.filter(function(placement2) { + return allowedAutoPlacements.indexOf(placement2) >= 0; + }); + if (allowedPlacements.length === 0) { + allowedPlacements = placements$1; + if (true) { + console.error(["Popper: The `allowedAutoPlacements` option did not allow any", "placements. Ensure the `placement` option matches the variation", "of the allowed placements.", 'For example, "auto" cannot be used to allow "bottom-start".', 'Use "auto-start" instead.'].join(" ")); + } + } + var overflows = allowedPlacements.reduce(function(acc, placement2) { + acc[placement2] = detectOverflow(state, { + placement: placement2, + boundary, + rootBoundary, + padding + })[getBasePlacement(placement2)]; + return acc; + }, {}); + return Object.keys(overflows).sort(function(a, b) { + return overflows[a] - overflows[b]; + }); + } + function getExpandedFallbackPlacements(placement) { + if (getBasePlacement(placement) === auto) { + return []; + } + var oppositePlacement = getOppositePlacement(placement); + return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)]; + } + function flip(_ref) { + var state = _ref.state, options = _ref.options, name = _ref.name; + if (state.modifiersData[name]._skip) { + return; + } + var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, specifiedFallbackPlacements = options.fallbackPlacements, padding = options.padding, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, _options$flipVariatio = options.flipVariations, flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, allowedAutoPlacements = options.allowedAutoPlacements; + var preferredPlacement = state.options.placement; + var basePlacement = getBasePlacement(preferredPlacement); + var isBasePlacement = basePlacement === preferredPlacement; + var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement)); + var placements2 = [preferredPlacement].concat(fallbackPlacements).reduce(function(acc, placement2) { + return acc.concat(getBasePlacement(placement2) === auto ? computeAutoPlacement(state, { + placement: placement2, + boundary, + rootBoundary, + padding, + flipVariations, + allowedAutoPlacements + }) : placement2); + }, []); + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var checksMap = /* @__PURE__ */ new Map(); + var makeFallbackChecks = true; + var firstFittingPlacement = placements2[0]; + for (var i = 0; i < placements2.length; i++) { + var placement = placements2[i]; + var _basePlacement = getBasePlacement(placement); + var isStartVariation = getVariation(placement) === start; + var isVertical = [top, bottom].indexOf(_basePlacement) >= 0; + var len = isVertical ? "width" : "height"; + var overflow = detectOverflow(state, { + placement, + boundary, + rootBoundary, + altBoundary, + padding + }); + var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top; + if (referenceRect[len] > popperRect[len]) { + mainVariationSide = getOppositePlacement(mainVariationSide); + } + var altVariationSide = getOppositePlacement(mainVariationSide); + var checks = []; + if (checkMainAxis) { + checks.push(overflow[_basePlacement] <= 0); + } + if (checkAltAxis) { + checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0); + } + if (checks.every(function(check) { + return check; + })) { + firstFittingPlacement = placement; + makeFallbackChecks = false; + break; + } + checksMap.set(placement, checks); + } + if (makeFallbackChecks) { + var numberOfChecks = flipVariations ? 3 : 1; + var _loop = function _loop2(_i2) { + var fittingPlacement = placements2.find(function(placement2) { + var checks2 = checksMap.get(placement2); + if (checks2) { + return checks2.slice(0, _i2).every(function(check) { + return check; + }); + } + }); + if (fittingPlacement) { + firstFittingPlacement = fittingPlacement; + return "break"; + } + }; + for (var _i = numberOfChecks; _i > 0; _i--) { + var _ret = _loop(_i); + if (_ret === "break") break; + } + } + if (state.placement !== firstFittingPlacement) { + state.modifiersData[name]._skip = true; + state.placement = firstFittingPlacement; + state.reset = true; + } + } + var flip$1 = { + name: "flip", + enabled: true, + phase: "main", + fn: flip, + requiresIfExists: ["offset"], + data: { + _skip: false + } + }; + function getAltAxis(axis) { + return axis === "x" ? "y" : "x"; + } + function within(min$1, value, max$1) { + return max(min$1, min(value, max$1)); + } + function withinMaxClamp(min2, value, max2) { + var v = within(min2, value, max2); + return v > max2 ? max2 : v; + } + function preventOverflow(_ref) { + var state = _ref.state, options = _ref.options, name = _ref.name; + var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, padding = options.padding, _options$tether = options.tether, tether = _options$tether === void 0 ? true : _options$tether, _options$tetherOffset = options.tetherOffset, tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset; + var overflow = detectOverflow(state, { + boundary, + rootBoundary, + padding, + altBoundary + }); + var basePlacement = getBasePlacement(state.placement); + var variation = getVariation(state.placement); + var isBasePlacement = !variation; + var mainAxis = getMainAxisFromPlacement(basePlacement); + var altAxis = getAltAxis(mainAxis); + var popperOffsets2 = state.modifiersData.popperOffsets; + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var tetherOffsetValue = typeof tetherOffset === "function" ? tetherOffset(Object.assign({}, state.rects, { + placement: state.placement + })) : tetherOffset; + var normalizedTetherOffsetValue = typeof tetherOffsetValue === "number" ? { + mainAxis: tetherOffsetValue, + altAxis: tetherOffsetValue + } : Object.assign({ + mainAxis: 0, + altAxis: 0 + }, tetherOffsetValue); + var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null; + var data = { + x: 0, + y: 0 + }; + if (!popperOffsets2) { + return; + } + if (checkMainAxis) { + var _offsetModifierState$; + var mainSide = mainAxis === "y" ? top : left; + var altSide = mainAxis === "y" ? bottom : right; + var len = mainAxis === "y" ? "height" : "width"; + var offset2 = popperOffsets2[mainAxis]; + var min$1 = offset2 + overflow[mainSide]; + var max$1 = offset2 - overflow[altSide]; + var additive = tether ? -popperRect[len] / 2 : 0; + var minLen = variation === start ? referenceRect[len] : popperRect[len]; + var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; + var arrowElement = state.elements.arrow; + var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : { + width: 0, + height: 0 + }; + var arrowPaddingObject = state.modifiersData["arrow#persistent"] ? state.modifiersData["arrow#persistent"].padding : getFreshSideObject(); + var arrowPaddingMin = arrowPaddingObject[mainSide]; + var arrowPaddingMax = arrowPaddingObject[altSide]; + var arrowLen = within(0, referenceRect[len], arrowRect[len]); + var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis; + var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis; + var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow); + var clientOffset = arrowOffsetParent ? mainAxis === "y" ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0; + var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0; + var tetherMin = offset2 + minOffset - offsetModifierValue - clientOffset; + var tetherMax = offset2 + maxOffset - offsetModifierValue; + var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset2, tether ? max(max$1, tetherMax) : max$1); + popperOffsets2[mainAxis] = preventedOffset; + data[mainAxis] = preventedOffset - offset2; + } + if (checkAltAxis) { + var _offsetModifierState$2; + var _mainSide = mainAxis === "x" ? top : left; + var _altSide = mainAxis === "x" ? bottom : right; + var _offset = popperOffsets2[altAxis]; + var _len = altAxis === "y" ? "height" : "width"; + var _min = _offset + overflow[_mainSide]; + var _max = _offset - overflow[_altSide]; + var isOriginSide = [top, left].indexOf(basePlacement) !== -1; + var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0; + var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis; + var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max; + var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max); + popperOffsets2[altAxis] = _preventedOffset; + data[altAxis] = _preventedOffset - _offset; + } + state.modifiersData[name] = data; + } + var preventOverflow$1 = { + name: "preventOverflow", + enabled: true, + phase: "main", + fn: preventOverflow, + requiresIfExists: ["offset"] + }; + var toPaddingObject = function toPaddingObject2(padding, state) { + padding = typeof padding === "function" ? padding(Object.assign({}, state.rects, { + placement: state.placement + })) : padding; + return mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements)); + }; + function arrow(_ref) { + var _state$modifiersData$; + var state = _ref.state, name = _ref.name, options = _ref.options; + var arrowElement = state.elements.arrow; + var popperOffsets2 = state.modifiersData.popperOffsets; + var basePlacement = getBasePlacement(state.placement); + var axis = getMainAxisFromPlacement(basePlacement); + var isVertical = [left, right].indexOf(basePlacement) >= 0; + var len = isVertical ? "height" : "width"; + if (!arrowElement || !popperOffsets2) { + return; + } + var paddingObject = toPaddingObject(options.padding, state); + var arrowRect = getLayoutRect(arrowElement); + var minProp = axis === "y" ? top : left; + var maxProp = axis === "y" ? bottom : right; + var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets2[axis] - state.rects.popper[len]; + var startDiff = popperOffsets2[axis] - state.rects.reference[axis]; + var arrowOffsetParent = getOffsetParent(arrowElement); + var clientSize = arrowOffsetParent ? axis === "y" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0; + var centerToReference = endDiff / 2 - startDiff / 2; + var min2 = paddingObject[minProp]; + var max2 = clientSize - arrowRect[len] - paddingObject[maxProp]; + var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference; + var offset2 = within(min2, center, max2); + var axisProp = axis; + state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset2, _state$modifiersData$.centerOffset = offset2 - center, _state$modifiersData$); + } + function effect(_ref2) { + var state = _ref2.state, options = _ref2.options; + var _options$element = options.element, arrowElement = _options$element === void 0 ? "[data-popper-arrow]" : _options$element; + if (arrowElement == null) { + return; + } + if (typeof arrowElement === "string") { + arrowElement = state.elements.popper.querySelector(arrowElement); + if (!arrowElement) { + return; + } + } + if (true) { + if (!isHTMLElement(arrowElement)) { + console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).', "To use an SVG arrow, wrap it in an HTMLElement that will be used as", "the arrow."].join(" ")); + } + } + if (!contains(state.elements.popper, arrowElement)) { + if (true) { + console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper', "element."].join(" ")); + } + return; + } + state.elements.arrow = arrowElement; + } + var arrow$1 = { + name: "arrow", + enabled: true, + phase: "main", + fn: arrow, + effect, + requires: ["popperOffsets"], + requiresIfExists: ["preventOverflow"] + }; + function getSideOffsets(overflow, rect, preventedOffsets) { + if (preventedOffsets === void 0) { + preventedOffsets = { + x: 0, + y: 0 + }; + } + return { + top: overflow.top - rect.height - preventedOffsets.y, + right: overflow.right - rect.width + preventedOffsets.x, + bottom: overflow.bottom - rect.height + preventedOffsets.y, + left: overflow.left - rect.width - preventedOffsets.x + }; + } + function isAnySideFullyClipped(overflow) { + return [top, right, bottom, left].some(function(side) { + return overflow[side] >= 0; + }); + } + function hide(_ref) { + var state = _ref.state, name = _ref.name; + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var preventedOffsets = state.modifiersData.preventOverflow; + var referenceOverflow = detectOverflow(state, { + elementContext: "reference" + }); + var popperAltOverflow = detectOverflow(state, { + altBoundary: true + }); + var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect); + var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets); + var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets); + var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets); + state.modifiersData[name] = { + referenceClippingOffsets, + popperEscapeOffsets, + isReferenceHidden, + hasPopperEscaped + }; + state.attributes.popper = Object.assign({}, state.attributes.popper, { + "data-popper-reference-hidden": isReferenceHidden, + "data-popper-escaped": hasPopperEscaped + }); + } + var hide$1 = { + name: "hide", + enabled: true, + phase: "main", + requiresIfExists: ["preventOverflow"], + fn: hide + }; + var defaultModifiers$1 = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1]; + var createPopper$1 = /* @__PURE__ */ popperGenerator({ + defaultModifiers: defaultModifiers$1 + }); + var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1]; + var createPopper2 = /* @__PURE__ */ popperGenerator({ + defaultModifiers + }); + exports.applyStyles = applyStyles$1; + exports.arrow = arrow$1; + exports.computeStyles = computeStyles$1; + exports.createPopper = createPopper2; + exports.createPopperLite = createPopper$1; + exports.defaultModifiers = defaultModifiers; + exports.detectOverflow = detectOverflow; + exports.eventListeners = eventListeners; + exports.flip = flip$1; + exports.hide = hide$1; + exports.offset = offset$1; + exports.popperGenerator = popperGenerator; + exports.popperOffsets = popperOffsets$1; + exports.preventOverflow = preventOverflow$1; + } + }); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/dom/data.js + var elementMap = /* @__PURE__ */ new Map(); + var data_default = { + set(element, key, instance) { + if (!elementMap.has(element)) { + elementMap.set(element, /* @__PURE__ */ new Map()); + } + const instanceMap = elementMap.get(element); + if (!instanceMap.has(key) && instanceMap.size !== 0) { + console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`); + return; + } + instanceMap.set(key, instance); + }, + get(element, key) { + if (elementMap.has(element)) { + return elementMap.get(element).get(key) || null; + } + return null; + }, + remove(element, key) { + if (!elementMap.has(element)) { + return; + } + const instanceMap = elementMap.get(element); + instanceMap.delete(key); + if (instanceMap.size === 0) { + elementMap.delete(element); + } + } + }; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/util/index.js + var MAX_UID = 1e6; + var MILLISECONDS_MULTIPLIER = 1e3; + var TRANSITION_END = "transitionend"; + var parseSelector = (selector) => { + if (selector && window.CSS && window.CSS.escape) { + selector = selector.replace(/#([^\s"#']+)/g, (match, id) => `#${CSS.escape(id)}`); + } + return selector; + }; + var toType = (object) => { + if (object === null || object === void 0) { + return `${object}`; + } + return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase(); + }; + var getUID = (prefix) => { + do { + prefix += Math.floor(Math.random() * MAX_UID); + } while (document.getElementById(prefix)); + return prefix; + }; + var getTransitionDurationFromElement = (element) => { + if (!element) { + return 0; + } + let { transitionDuration, transitionDelay } = window.getComputedStyle(element); + const floatTransitionDuration = Number.parseFloat(transitionDuration); + const floatTransitionDelay = Number.parseFloat(transitionDelay); + if (!floatTransitionDuration && !floatTransitionDelay) { + return 0; + } + transitionDuration = transitionDuration.split(",")[0]; + transitionDelay = transitionDelay.split(",")[0]; + return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; + }; + var triggerTransitionEnd = (element) => { + element.dispatchEvent(new Event(TRANSITION_END)); + }; + var isElement = (object) => { + if (!object || typeof object !== "object") { + return false; + } + if (typeof object.jquery !== "undefined") { + object = object[0]; + } + return typeof object.nodeType !== "undefined"; + }; + var getElement = (object) => { + if (isElement(object)) { + return object.jquery ? object[0] : object; + } + if (typeof object === "string" && object.length > 0) { + return document.querySelector(parseSelector(object)); + } + return null; + }; + var isVisible = (element) => { + if (!isElement(element) || element.getClientRects().length === 0) { + return false; + } + const elementIsVisible = getComputedStyle(element).getPropertyValue("visibility") === "visible"; + const closedDetails = element.closest("details:not([open])"); + if (!closedDetails) { + return elementIsVisible; + } + if (closedDetails !== element) { + const summary = element.closest("summary"); + if (summary && summary.parentNode !== closedDetails) { + return false; + } + if (summary === null) { + return false; + } + } + return elementIsVisible; + }; + var isDisabled = (element) => { + if (!element || element.nodeType !== Node.ELEMENT_NODE) { + return true; + } + if (element.classList.contains("disabled")) { + return true; + } + if (typeof element.disabled !== "undefined") { + return element.disabled; + } + return element.hasAttribute("disabled") && element.getAttribute("disabled") !== "false"; + }; + var findShadowRoot = (element) => { + if (!document.documentElement.attachShadow) { + return null; + } + if (typeof element.getRootNode === "function") { + const root = element.getRootNode(); + return root instanceof ShadowRoot ? root : null; + } + if (element instanceof ShadowRoot) { + return element; + } + if (!element.parentNode) { + return null; + } + return findShadowRoot(element.parentNode); + }; + var noop = () => { + }; + var reflow = (element) => { + element.offsetHeight; + }; + var getjQuery = () => { + if (window.jQuery && !document.body.hasAttribute("data-bs-no-jquery")) { + return window.jQuery; + } + return null; + }; + var DOMContentLoadedCallbacks = []; + var onDOMContentLoaded = (callback) => { + if (document.readyState === "loading") { + if (!DOMContentLoadedCallbacks.length) { + document.addEventListener("DOMContentLoaded", () => { + for (const callback2 of DOMContentLoadedCallbacks) { + callback2(); + } + }); + } + DOMContentLoadedCallbacks.push(callback); + } else { + callback(); + } + }; + var isRTL = () => document.documentElement.dir === "rtl"; + var defineJQueryPlugin = (plugin) => { + onDOMContentLoaded(() => { + const $ = getjQuery(); + if ($) { + const name = plugin.NAME; + const JQUERY_NO_CONFLICT = $.fn[name]; + $.fn[name] = plugin.jQueryInterface; + $.fn[name].Constructor = plugin; + $.fn[name].noConflict = () => { + $.fn[name] = JQUERY_NO_CONFLICT; + return plugin.jQueryInterface; + }; + } + }); + }; + var execute = (possibleCallback, args = [], defaultValue = possibleCallback) => { + return typeof possibleCallback === "function" ? possibleCallback.call(...args) : defaultValue; + }; + var executeAfterTransition = (callback, transitionElement, waitForTransition = true) => { + if (!waitForTransition) { + execute(callback); + return; + } + const durationPadding = 5; + const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding; + let called = false; + const handler = ({ target }) => { + if (target !== transitionElement) { + return; + } + called = true; + transitionElement.removeEventListener(TRANSITION_END, handler); + execute(callback); + }; + transitionElement.addEventListener(TRANSITION_END, handler); + setTimeout(() => { + if (!called) { + triggerTransitionEnd(transitionElement); + } + }, emulatedDuration); + }; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/dom/event-handler.js + var namespaceRegex = /[^.]*(?=\..*)\.|.*/; + var stripNameRegex = /\..*/; + var stripUidRegex = /::\d+$/; + var eventRegistry = {}; + var uidEvent = 1; + var customEvents = { + mouseenter: "mouseover", + mouseleave: "mouseout" + }; + var nativeEvents = /* @__PURE__ */ new Set([ + "click", + "dblclick", + "mouseup", + "mousedown", + "contextmenu", + "mousewheel", + "DOMMouseScroll", + "mouseover", + "mouseout", + "mousemove", + "selectstart", + "selectend", + "keydown", + "keypress", + "keyup", + "orientationchange", + "touchstart", + "touchmove", + "touchend", + "touchcancel", + "pointerdown", + "pointermove", + "pointerup", + "pointerleave", + "pointercancel", + "gesturestart", + "gesturechange", + "gestureend", + "focus", + "blur", + "change", + "reset", + "select", + "submit", + "focusin", + "focusout", + "load", + "unload", + "beforeunload", + "resize", + "move", + "DOMContentLoaded", + "readystatechange", + "error", + "abort", + "scroll" + ]); + function makeEventUid(element, uid) { + return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++; + } + function getElementEvents(element) { + const uid = makeEventUid(element); + element.uidEvent = uid; + eventRegistry[uid] = eventRegistry[uid] || {}; + return eventRegistry[uid]; + } + function bootstrapHandler(element, fn) { + return function handler(event) { + hydrateObj(event, { delegateTarget: element }); + if (handler.oneOff) { + EventHandler.off(element, event.type, fn); + } + return fn.apply(element, [event]); + }; + } + function bootstrapDelegationHandler(element, selector, fn) { + return function handler(event) { + const domElements = element.querySelectorAll(selector); + for (let { target } = event; target && target !== this; target = target.parentNode) { + for (const domElement of domElements) { + if (domElement !== target) { + continue; + } + hydrateObj(event, { delegateTarget: target }); + if (handler.oneOff) { + EventHandler.off(element, event.type, selector, fn); + } + return fn.apply(target, [event]); + } + } + }; + } + function findHandler(events, callable, delegationSelector = null) { + return Object.values(events).find((event) => event.callable === callable && event.delegationSelector === delegationSelector); + } + function normalizeParameters(originalTypeEvent, handler, delegationFunction) { + const isDelegated = typeof handler === "string"; + const callable = isDelegated ? delegationFunction : handler || delegationFunction; + let typeEvent = getTypeEvent(originalTypeEvent); + if (!nativeEvents.has(typeEvent)) { + typeEvent = originalTypeEvent; + } + return [isDelegated, callable, typeEvent]; + } + function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) { + if (typeof originalTypeEvent !== "string" || !element) { + return; + } + let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); + if (originalTypeEvent in customEvents) { + const wrapFunction = (fn2) => { + return function(event) { + if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) { + return fn2.call(this, event); + } + }; + }; + callable = wrapFunction(callable); + } + const events = getElementEvents(element); + const handlers = events[typeEvent] || (events[typeEvent] = {}); + const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null); + if (previousFunction) { + previousFunction.oneOff = previousFunction.oneOff && oneOff; + return; + } + const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, "")); + const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable); + fn.delegationSelector = isDelegated ? handler : null; + fn.callable = callable; + fn.oneOff = oneOff; + fn.uidEvent = uid; + handlers[uid] = fn; + element.addEventListener(typeEvent, fn, isDelegated); + } + function removeHandler(element, events, typeEvent, handler, delegationSelector) { + const fn = findHandler(events[typeEvent], handler, delegationSelector); + if (!fn) { + return; + } + element.removeEventListener(typeEvent, fn, Boolean(delegationSelector)); + delete events[typeEvent][fn.uidEvent]; + } + function removeNamespacedHandlers(element, events, typeEvent, namespace) { + const storeElementEvent = events[typeEvent] || {}; + for (const [handlerKey, event] of Object.entries(storeElementEvent)) { + if (handlerKey.includes(namespace)) { + removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); + } + } + } + function getTypeEvent(event) { + event = event.replace(stripNameRegex, ""); + return customEvents[event] || event; + } + var EventHandler = { + on(element, event, handler, delegationFunction) { + addHandler(element, event, handler, delegationFunction, false); + }, + one(element, event, handler, delegationFunction) { + addHandler(element, event, handler, delegationFunction, true); + }, + off(element, originalTypeEvent, handler, delegationFunction) { + if (typeof originalTypeEvent !== "string" || !element) { + return; + } + const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); + const inNamespace = typeEvent !== originalTypeEvent; + const events = getElementEvents(element); + const storeElementEvent = events[typeEvent] || {}; + const isNamespace = originalTypeEvent.startsWith("."); + if (typeof callable !== "undefined") { + if (!Object.keys(storeElementEvent).length) { + return; + } + removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null); + return; + } + if (isNamespace) { + for (const elementEvent of Object.keys(events)) { + removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1)); + } + } + for (const [keyHandlers, event] of Object.entries(storeElementEvent)) { + const handlerKey = keyHandlers.replace(stripUidRegex, ""); + if (!inNamespace || originalTypeEvent.includes(handlerKey)) { + removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); + } + } + }, + trigger(element, event, args) { + if (typeof event !== "string" || !element) { + return null; + } + const $ = getjQuery(); + const typeEvent = getTypeEvent(event); + const inNamespace = event !== typeEvent; + let jQueryEvent = null; + let bubbles = true; + let nativeDispatch = true; + let defaultPrevented = false; + if (inNamespace && $) { + jQueryEvent = $.Event(event, args); + $(element).trigger(jQueryEvent); + bubbles = !jQueryEvent.isPropagationStopped(); + nativeDispatch = !jQueryEvent.isImmediatePropagationStopped(); + defaultPrevented = jQueryEvent.isDefaultPrevented(); + } + const evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args); + if (defaultPrevented) { + evt.preventDefault(); + } + if (nativeDispatch) { + element.dispatchEvent(evt); + } + if (evt.defaultPrevented && jQueryEvent) { + jQueryEvent.preventDefault(); + } + return evt; + } + }; + function hydrateObj(obj, meta = {}) { + for (const [key, value] of Object.entries(meta)) { + try { + obj[key] = value; + } catch (e) { + Object.defineProperty(obj, key, { + configurable: true, + get() { + return value; + } + }); + } + } + return obj; + } + var event_handler_default = EventHandler; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/dom/manipulator.js + function normalizeData(value) { + if (value === "true") { + return true; + } + if (value === "false") { + return false; + } + if (value === Number(value).toString()) { + return Number(value); + } + if (value === "" || value === "null") { + return null; + } + if (typeof value !== "string") { + return value; + } + try { + return JSON.parse(decodeURIComponent(value)); + } catch (e) { + return value; + } + } + function normalizeDataKey(key) { + return key.replace(/[A-Z]/g, (chr) => `-${chr.toLowerCase()}`); + } + var Manipulator = { + setDataAttribute(element, key, value) { + element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value); + }, + removeDataAttribute(element, key) { + element.removeAttribute(`data-bs-${normalizeDataKey(key)}`); + }, + getDataAttributes(element) { + if (!element) { + return {}; + } + const attributes = {}; + const bsKeys = Object.keys(element.dataset).filter((key) => key.startsWith("bs") && !key.startsWith("bsConfig")); + for (const key of bsKeys) { + let pureKey = key.replace(/^bs/, ""); + pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1); + attributes[pureKey] = normalizeData(element.dataset[key]); + } + return attributes; + }, + getDataAttribute(element, key) { + return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`)); + } + }; + var manipulator_default = Manipulator; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/util/config.js + var Config = class { + // Getters + static get Default() { + return {}; + } + static get DefaultType() { + return {}; + } + static get NAME() { + throw new Error('You have to implement the static method "NAME", for each component!'); + } + _getConfig(config) { + config = this._mergeConfigObj(config); + config = this._configAfterMerge(config); + this._typeCheckConfig(config); + return config; + } + _configAfterMerge(config) { + return config; + } + _mergeConfigObj(config, element) { + const jsonConfig = isElement(element) ? manipulator_default.getDataAttribute(element, "config") : {}; + return __spreadValues(__spreadValues(__spreadValues(__spreadValues({}, this.constructor.Default), typeof jsonConfig === "object" ? jsonConfig : {}), isElement(element) ? manipulator_default.getDataAttributes(element) : {}), typeof config === "object" ? config : {}); + } + _typeCheckConfig(config, configTypes = this.constructor.DefaultType) { + for (const [property, expectedTypes] of Object.entries(configTypes)) { + const value = config[property]; + const valueType = isElement(value) ? "element" : toType(value); + if (!new RegExp(expectedTypes).test(valueType)) { + throw new TypeError( + `${this.constructor.NAME.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".` + ); + } + } + } + }; + var config_default = Config; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/base-component.js + var VERSION = "5.3.8"; + var BaseComponent = class extends config_default { + constructor(element, config) { + super(); + element = getElement(element); + if (!element) { + return; + } + this._element = element; + this._config = this._getConfig(config); + data_default.set(this._element, this.constructor.DATA_KEY, this); + } + // Public + dispose() { + data_default.remove(this._element, this.constructor.DATA_KEY); + event_handler_default.off(this._element, this.constructor.EVENT_KEY); + for (const propertyName of Object.getOwnPropertyNames(this)) { + this[propertyName] = null; + } + } + // Private + _queueCallback(callback, element, isAnimated = true) { + executeAfterTransition(callback, element, isAnimated); + } + _getConfig(config) { + config = this._mergeConfigObj(config, this._element); + config = this._configAfterMerge(config); + this._typeCheckConfig(config); + return config; + } + // Static + static getInstance(element) { + return data_default.get(getElement(element), this.DATA_KEY); + } + static getOrCreateInstance(element, config = {}) { + return this.getInstance(element) || new this(element, typeof config === "object" ? config : null); + } + static get VERSION() { + return VERSION; + } + static get DATA_KEY() { + return `bs.${this.NAME}`; + } + static get EVENT_KEY() { + return `.${this.DATA_KEY}`; + } + static eventName(name) { + return `${name}${this.EVENT_KEY}`; + } + }; + var base_component_default = BaseComponent; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/dom/selector-engine.js + var getSelector = (element) => { + let selector = element.getAttribute("data-bs-target"); + if (!selector || selector === "#") { + let hrefAttribute = element.getAttribute("href"); + if (!hrefAttribute || !hrefAttribute.includes("#") && !hrefAttribute.startsWith(".")) { + return null; + } + if (hrefAttribute.includes("#") && !hrefAttribute.startsWith("#")) { + hrefAttribute = `#${hrefAttribute.split("#")[1]}`; + } + selector = hrefAttribute && hrefAttribute !== "#" ? hrefAttribute.trim() : null; + } + return selector ? selector.split(",").map((sel) => parseSelector(sel)).join(",") : null; + }; + var SelectorEngine = { + find(selector, element = document.documentElement) { + return [].concat(...Element.prototype.querySelectorAll.call(element, selector)); + }, + findOne(selector, element = document.documentElement) { + return Element.prototype.querySelector.call(element, selector); + }, + children(element, selector) { + return [].concat(...element.children).filter((child) => child.matches(selector)); + }, + parents(element, selector) { + const parents = []; + let ancestor = element.parentNode.closest(selector); + while (ancestor) { + parents.push(ancestor); + ancestor = ancestor.parentNode.closest(selector); + } + return parents; + }, + prev(element, selector) { + let previous = element.previousElementSibling; + while (previous) { + if (previous.matches(selector)) { + return [previous]; + } + previous = previous.previousElementSibling; + } + return []; + }, + // TODO: this is now unused; remove later along with prev() + next(element, selector) { + let next = element.nextElementSibling; + while (next) { + if (next.matches(selector)) { + return [next]; + } + next = next.nextElementSibling; + } + return []; + }, + focusableChildren(element) { + const focusables = [ + "a", + "button", + "input", + "textarea", + "select", + "details", + "[tabindex]", + '[contenteditable="true"]' + ].map((selector) => `${selector}:not([tabindex^="-"])`).join(","); + return this.find(focusables, element).filter((el) => !isDisabled(el) && isVisible(el)); + }, + getSelectorFromElement(element) { + const selector = getSelector(element); + if (selector) { + return SelectorEngine.findOne(selector) ? selector : null; + } + return null; + }, + getElementFromSelector(element) { + const selector = getSelector(element); + return selector ? SelectorEngine.findOne(selector) : null; + }, + getMultipleElementsFromSelector(element) { + const selector = getSelector(element); + return selector ? SelectorEngine.find(selector) : []; + } + }; + var selector_engine_default = SelectorEngine; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/collapse.js + var NAME = "collapse"; + var DATA_KEY = "bs.collapse"; + var EVENT_KEY = `.${DATA_KEY}`; + var DATA_API_KEY = ".data-api"; + var EVENT_SHOW = `show${EVENT_KEY}`; + var EVENT_SHOWN = `shown${EVENT_KEY}`; + var EVENT_HIDE = `hide${EVENT_KEY}`; + var EVENT_HIDDEN = `hidden${EVENT_KEY}`; + var EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`; + var CLASS_NAME_SHOW = "show"; + var CLASS_NAME_COLLAPSE = "collapse"; + var CLASS_NAME_COLLAPSING = "collapsing"; + var CLASS_NAME_COLLAPSED = "collapsed"; + var CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`; + var CLASS_NAME_HORIZONTAL = "collapse-horizontal"; + var WIDTH = "width"; + var HEIGHT = "height"; + var SELECTOR_ACTIVES = ".collapse.show, .collapse.collapsing"; + var SELECTOR_DATA_TOGGLE = '[data-bs-toggle="collapse"]'; + var Default = { + parent: null, + toggle: true + }; + var DefaultType = { + parent: "(null|element)", + toggle: "boolean" + }; + var Collapse = class _Collapse extends base_component_default { + constructor(element, config) { + super(element, config); + this._isTransitioning = false; + this._triggerArray = []; + const toggleList = selector_engine_default.find(SELECTOR_DATA_TOGGLE); + for (const elem of toggleList) { + const selector = selector_engine_default.getSelectorFromElement(elem); + const filterElement = selector_engine_default.find(selector).filter((foundElement) => foundElement === this._element); + if (selector !== null && filterElement.length) { + this._triggerArray.push(elem); + } + } + this._initializeChildren(); + if (!this._config.parent) { + this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()); + } + if (this._config.toggle) { + this.toggle(); + } + } + // Getters + static get Default() { + return Default; + } + static get DefaultType() { + return DefaultType; + } + static get NAME() { + return NAME; + } + // Public + toggle() { + if (this._isShown()) { + this.hide(); + } else { + this.show(); + } + } + show() { + if (this._isTransitioning || this._isShown()) { + return; + } + let activeChildren = []; + if (this._config.parent) { + activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter((element) => element !== this._element).map((element) => _Collapse.getOrCreateInstance(element, { toggle: false })); + } + if (activeChildren.length && activeChildren[0]._isTransitioning) { + return; + } + const startEvent = event_handler_default.trigger(this._element, EVENT_SHOW); + if (startEvent.defaultPrevented) { + return; + } + for (const activeInstance of activeChildren) { + activeInstance.hide(); + } + const dimension = this._getDimension(); + this._element.classList.remove(CLASS_NAME_COLLAPSE); + this._element.classList.add(CLASS_NAME_COLLAPSING); + this._element.style[dimension] = 0; + this._addAriaAndCollapsedClass(this._triggerArray, true); + this._isTransitioning = true; + const complete = () => { + this._isTransitioning = false; + this._element.classList.remove(CLASS_NAME_COLLAPSING); + this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW); + this._element.style[dimension] = ""; + event_handler_default.trigger(this._element, EVENT_SHOWN); + }; + const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); + const scrollSize = `scroll${capitalizedDimension}`; + this._queueCallback(complete, this._element, true); + this._element.style[dimension] = `${this._element[scrollSize]}px`; + } + hide() { + if (this._isTransitioning || !this._isShown()) { + return; + } + const startEvent = event_handler_default.trigger(this._element, EVENT_HIDE); + if (startEvent.defaultPrevented) { + return; + } + const dimension = this._getDimension(); + this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`; + reflow(this._element); + this._element.classList.add(CLASS_NAME_COLLAPSING); + this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW); + for (const trigger of this._triggerArray) { + const element = selector_engine_default.getElementFromSelector(trigger); + if (element && !this._isShown(element)) { + this._addAriaAndCollapsedClass([trigger], false); + } + } + this._isTransitioning = true; + const complete = () => { + this._isTransitioning = false; + this._element.classList.remove(CLASS_NAME_COLLAPSING); + this._element.classList.add(CLASS_NAME_COLLAPSE); + event_handler_default.trigger(this._element, EVENT_HIDDEN); + }; + this._element.style[dimension] = ""; + this._queueCallback(complete, this._element, true); + } + // Private + _isShown(element = this._element) { + return element.classList.contains(CLASS_NAME_SHOW); + } + _configAfterMerge(config) { + config.toggle = Boolean(config.toggle); + config.parent = getElement(config.parent); + return config; + } + _getDimension() { + return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT; + } + _initializeChildren() { + if (!this._config.parent) { + return; + } + const children2 = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE); + for (const element of children2) { + const selected = selector_engine_default.getElementFromSelector(element); + if (selected) { + this._addAriaAndCollapsedClass([element], this._isShown(selected)); + } + } + } + _getFirstLevelChildren(selector) { + const children2 = selector_engine_default.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); + return selector_engine_default.find(selector, this._config.parent).filter((element) => !children2.includes(element)); + } + _addAriaAndCollapsedClass(triggerArray, isOpen) { + if (!triggerArray.length) { + return; + } + for (const element of triggerArray) { + element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen); + element.setAttribute("aria-expanded", isOpen); + } + } + // Static + static jQueryInterface(config) { + const _config = {}; + if (typeof config === "string" && /show|hide/.test(config)) { + _config.toggle = false; + } + return this.each(function() { + const data = _Collapse.getOrCreateInstance(this, _config); + if (typeof config === "string") { + if (typeof data[config] === "undefined") { + throw new TypeError(`No method named "${config}"`); + } + data[config](); + } + }); + } + }; + event_handler_default.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function(event) { + if (event.target.tagName === "A" || event.delegateTarget && event.delegateTarget.tagName === "A") { + event.preventDefault(); + } + for (const element of selector_engine_default.getMultipleElementsFromSelector(this)) { + Collapse.getOrCreateInstance(element, { toggle: false }).toggle(); + } + }); + defineJQueryPlugin(Collapse); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/category-collapse.js + var childPrefix = "l_"; + var parentPrefix = "h_"; + var children = document.getElementsByClassName("collapse"); + function categoryCollapse() { + [...children].forEach((elem) => { + const id = parentPrefix + elem.id.substring(childPrefix.length); + const parent = document.getElementById(id); + elem.addEventListener("hide.bs.collapse", () => { + if (parent) { + parent.querySelector(".far.fa-folder-open").className = "far fa-folder fa-fw"; + parent.querySelector(".fas.fa-angle-down").classList.add("rotate"); + parent.classList.remove("hide-border-bottom"); + } + }); + elem.addEventListener("show.bs.collapse", () => { + if (parent) { + parent.querySelector(".far.fa-folder").className = "far fa-folder-open fa-fw"; + parent.querySelector(".fas.fa-angle-down").classList.remove("rotate"); + parent.classList.add("hide-border-bottom"); + } + }); + }); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/tooltip.js + var Popper = __toESM(require_popper()); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/util/sanitizer.js + var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; + var DefaultAllowlist = { + // Global attributes allowed on any supplied element below. + "*": ["class", "dir", "id", "lang", "role", ARIA_ATTRIBUTE_PATTERN], + a: ["target", "href", "title", "rel"], + area: [], + b: [], + br: [], + col: [], + code: [], + dd: [], + div: [], + dl: [], + dt: [], + em: [], + hr: [], + h1: [], + h2: [], + h3: [], + h4: [], + h5: [], + h6: [], + i: [], + img: ["src", "srcset", "alt", "title", "width", "height"], + li: [], + ol: [], + p: [], + pre: [], + s: [], + small: [], + span: [], + sub: [], + sup: [], + strong: [], + u: [], + ul: [] + }; + var uriAttributes = /* @__PURE__ */ new Set([ + "background", + "cite", + "href", + "itemtype", + "longdesc", + "poster", + "src", + "xlink:href" + ]); + var SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i; + var allowedAttribute = (attribute, allowedAttributeList) => { + const attributeName = attribute.nodeName.toLowerCase(); + if (allowedAttributeList.includes(attributeName)) { + if (uriAttributes.has(attributeName)) { + return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue)); + } + return true; + } + return allowedAttributeList.filter((attributeRegex) => attributeRegex instanceof RegExp).some((regex) => regex.test(attributeName)); + }; + function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) { + if (!unsafeHtml.length) { + return unsafeHtml; + } + if (sanitizeFunction && typeof sanitizeFunction === "function") { + return sanitizeFunction(unsafeHtml); + } + const domParser = new window.DOMParser(); + const createdDocument = domParser.parseFromString(unsafeHtml, "text/html"); + const elements = [].concat(...createdDocument.body.querySelectorAll("*")); + for (const element of elements) { + const elementName = element.nodeName.toLowerCase(); + if (!Object.keys(allowList).includes(elementName)) { + element.remove(); + continue; + } + const attributeList = [].concat(...element.attributes); + const allowedAttributes = [].concat(allowList["*"] || [], allowList[elementName] || []); + for (const attribute of attributeList) { + if (!allowedAttribute(attribute, allowedAttributes)) { + element.removeAttribute(attribute.nodeName); + } + } + } + return createdDocument.body.innerHTML; + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/util/template-factory.js + var NAME2 = "TemplateFactory"; + var Default2 = { + allowList: DefaultAllowlist, + content: {}, + // { selector : text , selector2 : text2 , } + extraClass: "", + html: false, + sanitize: true, + sanitizeFn: null, + template: "
" + }; + var DefaultType2 = { + allowList: "object", + content: "object", + extraClass: "(string|function)", + html: "boolean", + sanitize: "boolean", + sanitizeFn: "(null|function)", + template: "string" + }; + var DefaultContentType = { + entry: "(string|element|function|null)", + selector: "(string|element)" + }; + var TemplateFactory = class extends config_default { + constructor(config) { + super(); + this._config = this._getConfig(config); + } + // Getters + static get Default() { + return Default2; + } + static get DefaultType() { + return DefaultType2; + } + static get NAME() { + return NAME2; + } + // Public + getContent() { + return Object.values(this._config.content).map((config) => this._resolvePossibleFunction(config)).filter(Boolean); + } + hasContent() { + return this.getContent().length > 0; + } + changeContent(content2) { + this._checkContent(content2); + this._config.content = __spreadValues(__spreadValues({}, this._config.content), content2); + return this; + } + toHtml() { + const templateWrapper = document.createElement("div"); + templateWrapper.innerHTML = this._maybeSanitize(this._config.template); + for (const [selector, text] of Object.entries(this._config.content)) { + this._setContent(templateWrapper, text, selector); + } + const template = templateWrapper.children[0]; + const extraClass = this._resolvePossibleFunction(this._config.extraClass); + if (extraClass) { + template.classList.add(...extraClass.split(" ")); + } + return template; + } + // Private + _typeCheckConfig(config) { + super._typeCheckConfig(config); + this._checkContent(config.content); + } + _checkContent(arg) { + for (const [selector, content2] of Object.entries(arg)) { + super._typeCheckConfig({ selector, entry: content2 }, DefaultContentType); + } + } + _setContent(template, content2, selector) { + const templateElement = selector_engine_default.findOne(selector, template); + if (!templateElement) { + return; + } + content2 = this._resolvePossibleFunction(content2); + if (!content2) { + templateElement.remove(); + return; + } + if (isElement(content2)) { + this._putElementInTemplate(getElement(content2), templateElement); + return; + } + if (this._config.html) { + templateElement.innerHTML = this._maybeSanitize(content2); + return; + } + templateElement.textContent = content2; + } + _maybeSanitize(arg) { + return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg; + } + _resolvePossibleFunction(arg) { + return execute(arg, [void 0, this]); + } + _putElementInTemplate(element, templateElement) { + if (this._config.html) { + templateElement.innerHTML = ""; + templateElement.append(element); + return; + } + templateElement.textContent = element.textContent; + } + }; + var template_factory_default = TemplateFactory; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/tooltip.js + var NAME3 = "tooltip"; + var DISALLOWED_ATTRIBUTES = /* @__PURE__ */ new Set(["sanitize", "allowList", "sanitizeFn"]); + var CLASS_NAME_FADE = "fade"; + var CLASS_NAME_MODAL = "modal"; + var CLASS_NAME_SHOW2 = "show"; + var SELECTOR_TOOLTIP_INNER = ".tooltip-inner"; + var SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`; + var EVENT_MODAL_HIDE = "hide.bs.modal"; + var TRIGGER_HOVER = "hover"; + var TRIGGER_FOCUS = "focus"; + var TRIGGER_CLICK = "click"; + var TRIGGER_MANUAL = "manual"; + var EVENT_HIDE2 = "hide"; + var EVENT_HIDDEN2 = "hidden"; + var EVENT_SHOW2 = "show"; + var EVENT_SHOWN2 = "shown"; + var EVENT_INSERTED = "inserted"; + var EVENT_CLICK = "click"; + var EVENT_FOCUSIN = "focusin"; + var EVENT_FOCUSOUT = "focusout"; + var EVENT_MOUSEENTER = "mouseenter"; + var EVENT_MOUSELEAVE = "mouseleave"; + var AttachmentMap = { + AUTO: "auto", + TOP: "top", + RIGHT: isRTL() ? "left" : "right", + BOTTOM: "bottom", + LEFT: isRTL() ? "right" : "left" + }; + var Default3 = { + allowList: DefaultAllowlist, + animation: true, + boundary: "clippingParents", + container: false, + customClass: "", + delay: 0, + fallbackPlacements: ["top", "right", "bottom", "left"], + html: false, + offset: [0, 6], + placement: "top", + popperConfig: null, + sanitize: true, + sanitizeFn: null, + selector: false, + template: '', + title: "", + trigger: "hover focus" + }; + var DefaultType3 = { + allowList: "object", + animation: "boolean", + boundary: "(string|element)", + container: "(string|element|boolean)", + customClass: "(string|function)", + delay: "(number|object)", + fallbackPlacements: "array", + html: "boolean", + offset: "(array|string|function)", + placement: "(string|function)", + popperConfig: "(null|object|function)", + sanitize: "boolean", + sanitizeFn: "(null|function)", + selector: "(string|boolean)", + template: "string", + title: "(string|element|function)", + trigger: "string" + }; + var Tooltip = class _Tooltip extends base_component_default { + constructor(element, config) { + if (typeof Popper === "undefined") { + throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org/docs/v2/)"); + } + super(element, config); + this._isEnabled = true; + this._timeout = 0; + this._isHovered = null; + this._activeTrigger = {}; + this._popper = null; + this._templateFactory = null; + this._newContent = null; + this.tip = null; + this._setListeners(); + if (!this._config.selector) { + this._fixTitle(); + } + } + // Getters + static get Default() { + return Default3; + } + static get DefaultType() { + return DefaultType3; + } + static get NAME() { + return NAME3; + } + // Public + enable() { + this._isEnabled = true; + } + disable() { + this._isEnabled = false; + } + toggleEnabled() { + this._isEnabled = !this._isEnabled; + } + toggle() { + if (!this._isEnabled) { + return; + } + if (this._isShown()) { + this._leave(); + return; + } + this._enter(); + } + dispose() { + clearTimeout(this._timeout); + event_handler_default.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); + if (this._element.getAttribute("data-bs-original-title")) { + this._element.setAttribute("title", this._element.getAttribute("data-bs-original-title")); + } + this._disposePopper(); + super.dispose(); + } + show() { + if (this._element.style.display === "none") { + throw new Error("Please use show on visible elements"); + } + if (!(this._isWithContent() && this._isEnabled)) { + return; + } + const showEvent = event_handler_default.trigger(this._element, this.constructor.eventName(EVENT_SHOW2)); + const shadowRoot = findShadowRoot(this._element); + const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element); + if (showEvent.defaultPrevented || !isInTheDom) { + return; + } + this._disposePopper(); + const tip = this._getTipElement(); + this._element.setAttribute("aria-describedby", tip.getAttribute("id")); + const { container } = this._config; + if (!this._element.ownerDocument.documentElement.contains(this.tip)) { + container.append(tip); + event_handler_default.trigger(this._element, this.constructor.eventName(EVENT_INSERTED)); + } + this._popper = this._createPopper(tip); + tip.classList.add(CLASS_NAME_SHOW2); + if ("ontouchstart" in document.documentElement) { + for (const element of [].concat(...document.body.children)) { + event_handler_default.on(element, "mouseover", noop); + } + } + const complete = () => { + event_handler_default.trigger(this._element, this.constructor.eventName(EVENT_SHOWN2)); + if (this._isHovered === false) { + this._leave(); + } + this._isHovered = false; + }; + this._queueCallback(complete, this.tip, this._isAnimated()); + } + hide() { + if (!this._isShown()) { + return; + } + const hideEvent = event_handler_default.trigger(this._element, this.constructor.eventName(EVENT_HIDE2)); + if (hideEvent.defaultPrevented) { + return; + } + const tip = this._getTipElement(); + tip.classList.remove(CLASS_NAME_SHOW2); + if ("ontouchstart" in document.documentElement) { + for (const element of [].concat(...document.body.children)) { + event_handler_default.off(element, "mouseover", noop); + } + } + this._activeTrigger[TRIGGER_CLICK] = false; + this._activeTrigger[TRIGGER_FOCUS] = false; + this._activeTrigger[TRIGGER_HOVER] = false; + this._isHovered = null; + const complete = () => { + if (this._isWithActiveTrigger()) { + return; + } + if (!this._isHovered) { + this._disposePopper(); + } + this._element.removeAttribute("aria-describedby"); + event_handler_default.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN2)); + }; + this._queueCallback(complete, this.tip, this._isAnimated()); + } + update() { + if (this._popper) { + this._popper.update(); + } + } + // Protected + _isWithContent() { + return Boolean(this._getTitle()); + } + _getTipElement() { + if (!this.tip) { + this.tip = this._createTipElement(this._newContent || this._getContentForTemplate()); + } + return this.tip; + } + _createTipElement(content2) { + const tip = this._getTemplateFactory(content2).toHtml(); + if (!tip) { + return null; + } + tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW2); + tip.classList.add(`bs-${this.constructor.NAME}-auto`); + const tipId = getUID(this.constructor.NAME).toString(); + tip.setAttribute("id", tipId); + if (this._isAnimated()) { + tip.classList.add(CLASS_NAME_FADE); + } + return tip; + } + setContent(content2) { + this._newContent = content2; + if (this._isShown()) { + this._disposePopper(); + this.show(); + } + } + _getTemplateFactory(content2) { + if (this._templateFactory) { + this._templateFactory.changeContent(content2); + } else { + this._templateFactory = new template_factory_default(__spreadProps(__spreadValues({}, this._config), { + // the `content` var has to be after `this._config` + // to override config.content in case of popover + content: content2, + extraClass: this._resolvePossibleFunction(this._config.customClass) + })); + } + return this._templateFactory; + } + _getContentForTemplate() { + return { + [SELECTOR_TOOLTIP_INNER]: this._getTitle() + }; + } + _getTitle() { + return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute("data-bs-original-title"); + } + // Private + _initializeOnDelegatedTarget(event) { + return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig()); + } + _isAnimated() { + return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE); + } + _isShown() { + return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW2); + } + _createPopper(tip) { + const placement = execute(this._config.placement, [this, tip, this._element]); + const attachment = AttachmentMap[placement.toUpperCase()]; + return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment)); + } + _getOffset() { + const { offset } = this._config; + if (typeof offset === "string") { + return offset.split(",").map((value) => Number.parseInt(value, 10)); + } + if (typeof offset === "function") { + return (popperData) => offset(popperData, this._element); + } + return offset; + } + _resolvePossibleFunction(arg) { + return execute(arg, [this._element, this._element]); + } + _getPopperConfig(attachment) { + const defaultBsPopperConfig = { + placement: attachment, + modifiers: [ + { + name: "flip", + options: { + fallbackPlacements: this._config.fallbackPlacements + } + }, + { + name: "offset", + options: { + offset: this._getOffset() + } + }, + { + name: "preventOverflow", + options: { + boundary: this._config.boundary + } + }, + { + name: "arrow", + options: { + element: `.${this.constructor.NAME}-arrow` + } + }, + { + name: "preSetPlacement", + enabled: true, + phase: "beforeMain", + fn: (data) => { + this._getTipElement().setAttribute("data-popper-placement", data.state.placement); + } + } + ] + }; + return __spreadValues(__spreadValues({}, defaultBsPopperConfig), execute(this._config.popperConfig, [void 0, defaultBsPopperConfig])); + } + _setListeners() { + const triggers = this._config.trigger.split(" "); + for (const trigger of triggers) { + if (trigger === "click") { + event_handler_default.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, (event) => { + const context = this._initializeOnDelegatedTarget(event); + context._activeTrigger[TRIGGER_CLICK] = !(context._isShown() && context._activeTrigger[TRIGGER_CLICK]); + context.toggle(); + }); + } else if (trigger !== TRIGGER_MANUAL) { + const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN); + const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT); + event_handler_default.on(this._element, eventIn, this._config.selector, (event) => { + const context = this._initializeOnDelegatedTarget(event); + context._activeTrigger[event.type === "focusin" ? TRIGGER_FOCUS : TRIGGER_HOVER] = true; + context._enter(); + }); + event_handler_default.on(this._element, eventOut, this._config.selector, (event) => { + const context = this._initializeOnDelegatedTarget(event); + context._activeTrigger[event.type === "focusout" ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget); + context._leave(); + }); + } + } + this._hideModalHandler = () => { + if (this._element) { + this.hide(); + } + }; + event_handler_default.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); + } + _fixTitle() { + const title = this._element.getAttribute("title"); + if (!title) { + return; + } + if (!this._element.getAttribute("aria-label") && !this._element.textContent.trim()) { + this._element.setAttribute("aria-label", title); + } + this._element.setAttribute("data-bs-original-title", title); + this._element.removeAttribute("title"); + } + _enter() { + if (this._isShown() || this._isHovered) { + this._isHovered = true; + return; + } + this._isHovered = true; + this._setTimeout(() => { + if (this._isHovered) { + this.show(); + } + }, this._config.delay.show); + } + _leave() { + if (this._isWithActiveTrigger()) { + return; + } + this._isHovered = false; + this._setTimeout(() => { + if (!this._isHovered) { + this.hide(); + } + }, this._config.delay.hide); + } + _setTimeout(handler, timeout) { + clearTimeout(this._timeout); + this._timeout = setTimeout(handler, timeout); + } + _isWithActiveTrigger() { + return Object.values(this._activeTrigger).includes(true); + } + _getConfig(config) { + const dataAttributes = manipulator_default.getDataAttributes(this._element); + for (const dataAttribute of Object.keys(dataAttributes)) { + if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) { + delete dataAttributes[dataAttribute]; + } + } + config = __spreadValues(__spreadValues({}, dataAttributes), typeof config === "object" && config ? config : {}); + config = this._mergeConfigObj(config); + config = this._configAfterMerge(config); + this._typeCheckConfig(config); + return config; + } + _configAfterMerge(config) { + config.container = config.container === false ? document.body : getElement(config.container); + if (typeof config.delay === "number") { + config.delay = { + show: config.delay, + hide: config.delay + }; + } + if (typeof config.title === "number") { + config.title = config.title.toString(); + } + if (typeof config.content === "number") { + config.content = config.content.toString(); + } + return config; + } + _getDelegateConfig() { + const config = {}; + for (const [key, value] of Object.entries(this._config)) { + if (this.constructor.Default[key] !== value) { + config[key] = value; + } + } + config.selector = false; + config.trigger = "manual"; + return config; + } + _disposePopper() { + if (this._popper) { + this._popper.destroy(); + this._popper = null; + } + if (this.tip) { + this.tip.remove(); + this.tip = null; + } + } + // Static + static jQueryInterface(config) { + return this.each(function() { + const data = _Tooltip.getOrCreateInstance(this, config); + if (typeof config !== "string") { + return; + } + if (typeof data[config] === "undefined") { + throw new TypeError(`No method named "${config}"`); + } + data[config](); + }); + } + }; + defineJQueryPlugin(Tooltip); + var tooltip_default = Tooltip; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/toc/toc-mobile.js + var $tocBar = document.getElementById("toc-bar"); + var $soloTrigger = document.getElementById("toc-solo-trigger"); + var $triggers = document.getElementsByClassName("toc-trigger"); + var $popup = document.getElementById("toc-popup"); + var $btnClose = document.getElementById("toc-popup-close"); + var SCROLL_LOCK = "overflow-hidden"; + var CLOSING = "closing"; + var _invisible, _barHeight; + var _TocMobile = class _TocMobile { + static initBar() { + const observer = new IntersectionObserver( + (entries) => { + entries.forEach((entry) => { + $tocBar.classList.toggle("invisible", entry.isIntersecting); + }); + }, + { rootMargin: `-${__privateGet(this, _barHeight)}px 0px 0px 0px` } + ); + observer.observe($soloTrigger); + __privateSet(this, _invisible, false); + } + static listenAnchors() { + const $anchors = document.getElementsByClassName("toc-link"); + [...$anchors].forEach((anchor) => { + anchor.onclick = () => this.hidePopup(); + }); + } + static refresh() { + if (__privateGet(this, _invisible)) { + this.initComponents(); + } + tocbot.refresh(this.options); + this.listenAnchors(); + } + static get popupOpened() { + return $popup.open; + } + static showPopup() { + this.lockScroll(true); + $popup.showModal(); + const activeItem = $popup.querySelector("li.is-active-li"); + activeItem.scrollIntoView({ block: "center" }); + } + static hidePopup() { + $popup.toggleAttribute(CLOSING); + $popup.addEventListener( + "animationend", + () => { + $popup.toggleAttribute(CLOSING); + $popup.close(); + }, + { once: true } + ); + this.lockScroll(false); + } + static lockScroll(enable) { + document.documentElement.classList.toggle(SCROLL_LOCK, enable); + document.body.classList.toggle(SCROLL_LOCK, enable); + } + static clickBackdrop(event) { + if ($popup.hasAttribute(CLOSING)) { + return; + } + const rect = event.target.getBoundingClientRect(); + if (event.clientX < rect.left || event.clientX > rect.right || event.clientY < rect.top || event.clientY > rect.bottom) { + this.hidePopup(); + } + } + static initComponents() { + this.initBar(); + [...$triggers].forEach((trigger) => { + trigger.onclick = () => this.showPopup(); + }); + $popup.onclick = (e) => this.clickBackdrop(e); + $btnClose.onclick = () => this.hidePopup(); + $popup.oncancel = (e) => { + e.preventDefault(); + this.hidePopup(); + }; + } + static init() { + tocbot.init(this.options); + this.listenAnchors(); + this.initComponents(); + } + }; + _invisible = new WeakMap(); + _barHeight = new WeakMap(); + __privateAdd(_TocMobile, _invisible, true); + __privateAdd(_TocMobile, _barHeight, 16 * 3); + // 3rem + __publicField(_TocMobile, "options", { + tocSelector: "#toc-popup-content", + contentSelector: ".content", + ignoreSelector: "[data-toc-skip]", + headingSelector: "h2, h3, h4", + orderedList: false, + scrollSmooth: false, + collapseDepth: 4, + headingsOffset: __privateGet(_TocMobile, _barHeight) + }); + var TocMobile = _TocMobile; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/toc/toc-desktop.js + var TocDesktop = class { + static refresh() { + tocbot.refresh(this.options); + } + static init() { + tocbot.init(this.options); + } + }; + /* Tocbot options Ref: https://github.com/tscanlin/tocbot#usage */ + __publicField(TocDesktop, "options", { + tocSelector: "#toc", + contentSelector: ".content", + ignoreSelector: "[data-toc-skip]", + headingSelector: "h2, h3, h4", + orderedList: false, + scrollSmooth: false, + headingsOffset: 16 * 2 + // 2rem + }); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/toc.js + var desktopMode = matchMedia("(min-width: 1200px)"); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/mermaid.js + var themeMapper = Theme.getThemeMapper("default", "dark"); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/mode-toggle.js + var $toggle = document.getElementById("mode-toggle"); + function modeWatcher() { + if (!$toggle) { + return; + } + $toggle.addEventListener("click", () => { + Theme.flip(); + }); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/back-to-top.js + function back2top() { + const btn = document.getElementById("back-to-top"); + window.addEventListener("scroll", () => { + if (window.scrollY > 50) { + btn.classList.add("show"); + } else { + btn.classList.remove("show"); + } + }); + btn.addEventListener("click", () => { + window.scrollTo({ top: 0 }); + }); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/tooltip-loader.js + function loadTooptip() { + const tooltipTriggerList = document.querySelectorAll( + '[data-bs-toggle="tooltip"]' + ); + [...tooltipTriggerList].map( + (tooltipTriggerEl) => new tooltip_default(tooltipTriggerEl) + ); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/layouts/basic.js + function basic() { + modeWatcher(); + back2top(); + loadTooptip(); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/layouts/sidebar.js + var ATTR_DISPLAY = "sidebar-display"; + var $sidebar = document.getElementById("sidebar"); + var $trigger = document.getElementById("sidebar-trigger"); + var $mask = document.getElementById("mask"); + var _isExpanded; + var SidebarUtil = class { + static toggle() { + __privateSet(this, _isExpanded, !__privateGet(this, _isExpanded)); + document.body.toggleAttribute(ATTR_DISPLAY, __privateGet(this, _isExpanded)); + $sidebar.classList.toggle("z-2", __privateGet(this, _isExpanded)); + $mask.classList.toggle("d-none", !__privateGet(this, _isExpanded)); + } + }; + _isExpanded = new WeakMap(); + __privateAdd(SidebarUtil, _isExpanded, false); + function initSidebar() { + $trigger.onclick = $mask.onclick = () => SidebarUtil.toggle(); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/search-display.js + var btnSbTrigger = document.getElementById("sidebar-trigger"); + var btnSearchTrigger = document.getElementById("search-trigger"); + var btnCancel = document.getElementById("search-cancel"); + var content = document.querySelectorAll("#main-wrapper>.container>.row"); + var topbarTitle = document.getElementById("topbar-title"); + var search = document.getElementById("search"); + var resultWrapper = document.getElementById("search-result-wrapper"); + var results = document.getElementById("search-results"); + var input = document.getElementById("search-input"); + var hints = document.getElementById("search-hints"); + var LOADED = "d-block"; + var UNLOADED = "d-none"; + var FOCUS = "input-focus"; + var FLEX = "d-flex"; + var MobileSearchBar = class { + static on() { + btnSbTrigger.classList.add(UNLOADED); + topbarTitle.classList.add(UNLOADED); + btnSearchTrigger.classList.add(UNLOADED); + search.classList.add(FLEX); + btnCancel.classList.add(LOADED); + } + static off() { + btnCancel.classList.remove(LOADED); + search.classList.remove(FLEX); + btnSbTrigger.classList.remove(UNLOADED); + topbarTitle.classList.remove(UNLOADED); + btnSearchTrigger.classList.remove(UNLOADED); + } + }; + var ResultSwitch = class { + static on() { + if (!this.resultVisible) { + resultWrapper.classList.remove(UNLOADED); + content.forEach((el) => { + el.classList.add(UNLOADED); + }); + this.resultVisible = true; + } + } + static off() { + if (this.resultVisible) { + results.innerHTML = ""; + if (hints.classList.contains(UNLOADED)) { + hints.classList.remove(UNLOADED); + } + resultWrapper.classList.add(UNLOADED); + content.forEach((el) => { + el.classList.remove(UNLOADED); + }); + input.textContent = ""; + this.resultVisible = false; + } + } + }; + __publicField(ResultSwitch, "resultVisible", false); + function isMobileView() { + return btnCancel.classList.contains(LOADED); + } + function displaySearch() { + btnSearchTrigger.addEventListener("click", () => { + MobileSearchBar.on(); + ResultSwitch.on(); + input.focus(); + }); + btnCancel.addEventListener("click", () => { + MobileSearchBar.off(); + ResultSwitch.off(); + }); + input.addEventListener("focus", () => { + search.classList.add(FOCUS); + }); + input.addEventListener("focusout", () => { + search.classList.remove(FOCUS); + }); + input.addEventListener("input", () => { + if (input.value === "") { + if (isMobileView()) { + hints.classList.remove(UNLOADED); + } else { + ResultSwitch.off(); + } + } else { + ResultSwitch.on(); + if (isMobileView()) { + hints.classList.add(UNLOADED); + } + } + }); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/layouts/topbar.js + function initTopbar() { + displaySearch(); + } + + // + basic(); + initSidebar(); + initTopbar(); + categoryCollapse(); +})(); diff --git a/public/js/commons.js b/public/js/commons.js index 056308e..6cde0a9 100644 --- a/public/js/commons.js +++ b/public/js/commons.js @@ -1 +1,3356 @@ -(()=>{var An=Object.create;var le=Object.defineProperty,Tn=Object.defineProperties,On=Object.getOwnPropertyDescriptor,Sn=Object.getOwnPropertyDescriptors,xn=Object.getOwnPropertyNames,ur=Object.getOwnPropertySymbols,Cn=Object.getPrototypeOf,fr=Object.prototype.hasOwnProperty,Ln=Object.prototype.propertyIsEnumerable;var pr=e=>{throw TypeError(e)};var ce=(e,t,r)=>t in e?le(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,N=(e,t)=>{for(var r in t||(t={}))fr.call(t,r)&&ce(e,r,t[r]);if(ur)for(var r of ur(t))Ln.call(t,r)&&ce(e,r,t[r]);return e},dr=(e,t)=>Tn(e,Sn(t));var Dn=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Nn=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of xn(t))!fr.call(e,o)&&o!==r&&le(e,o,{get:()=>t[o],enumerable:!(n=On(t,o))||n.enumerable});return e};var In=(e,t,r)=>(r=e!=null?An(Cn(e)):{},Nn(t||!e||!e.__esModule?le(r,"default",{value:e,enumerable:!0}):r,e));var Et=(e,t,r)=>ce(e,typeof t!="symbol"?t+"":t,r),hr=(e,t,r)=>t.has(e)||pr("Cannot "+r);var U=(e,t,r)=>(hr(e,t,"read from private field"),r?r.call(e):t.get(e)),_t=(e,t,r)=>t.has(e)?pr("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),Bt=(e,t,r,n)=>(hr(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r);var tn=Dn(D=>{"use strict";Object.defineProperty(D,"__esModule",{value:!0});function H(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function ct(e){var t=H(e).Element;return e instanceof t||e instanceof Element}function k(e){var t=H(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function jr(e){if(typeof ShadowRoot=="undefined")return!1;var t=H(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}var ot=Math.max,Gt=Math.min,lt=Math.round;function ut(e,t){t===void 0&&(t=!1);var r=e.getBoundingClientRect(),n=1,o=1;if(k(e)&&t){var s=e.offsetHeight,i=e.offsetWidth;i>0&&(n=lt(r.width)/i||1),s>0&&(o=lt(r.height)/s||1)}return{width:r.width/n,height:r.height/o,top:r.top/o,right:r.right/n,bottom:r.bottom/o,left:r.left/n,x:r.left/n,y:r.top/o}}function Ce(e){var t=H(e),r=t.pageXOffset,n=t.pageYOffset;return{scrollLeft:r,scrollTop:n}}function ao(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function co(e){return e===H(e)||!k(e)?Ce(e):ao(e)}function q(e){return e?(e.nodeName||"").toLowerCase():null}function J(e){return((ct(e)?e.ownerDocument:e.document)||window.document).documentElement}function Le(e){return ut(J(e)).left+Ce(e).scrollLeft}function W(e){return H(e).getComputedStyle(e)}function De(e){var t=W(e),r=t.overflow,n=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(r+o+n)}function lo(e){var t=e.getBoundingClientRect(),r=lt(t.width)/e.offsetWidth||1,n=lt(t.height)/e.offsetHeight||1;return r!==1||n!==1}function uo(e,t,r){r===void 0&&(r=!1);var n=k(t),o=k(t)&&lo(t),s=J(t),i=ut(e,o),a={scrollLeft:0,scrollTop:0},c={x:0,y:0};return(n||!n&&!r)&&((q(t)!=="body"||De(s))&&(a=co(t)),k(t)?(c=ut(t,!0),c.x+=t.clientLeft,c.y+=t.clientTop):s&&(c.x=Le(s))),{x:i.left+a.scrollLeft-c.x,y:i.top+a.scrollTop-c.y,width:i.width,height:i.height}}function Ne(e){var t=ut(e),r=e.offsetWidth,n=e.offsetHeight;return Math.abs(t.width-r)<=1&&(r=t.width),Math.abs(t.height-n)<=1&&(n=t.height),{x:e.offsetLeft,y:e.offsetTop,width:r,height:n}}function Kt(e){return q(e)==="html"?e:e.assignedSlot||e.parentNode||(jr(e)?e.host:null)||J(e)}function Fr(e){return["html","body","#document"].indexOf(q(e))>=0?e.ownerDocument.body:k(e)&&De(e)?e:Fr(Kt(e))}function Ot(e,t){var r;t===void 0&&(t=[]);var n=Fr(e),o=n===((r=e.ownerDocument)==null?void 0:r.body),s=H(n),i=o?[s].concat(s.visualViewport||[],De(n)?n:[]):n,a=t.concat(i);return o?a:a.concat(Ot(Kt(i)))}function fo(e){return["table","td","th"].indexOf(q(e))>=0}function Dr(e){return!k(e)||W(e).position==="fixed"?null:e.offsetParent}function po(e){var t=navigator.userAgent.toLowerCase().indexOf("firefox")!==-1,r=navigator.userAgent.indexOf("Trident")!==-1;if(r&&k(e)){var n=W(e);if(n.position==="fixed")return null}for(var o=Kt(e);k(o)&&["html","body"].indexOf(q(o))<0;){var s=W(o);if(s.transform!=="none"||s.perspective!=="none"||s.contain==="paint"||["transform","perspective"].indexOf(s.willChange)!==-1||t&&s.willChange==="filter"||t&&s.filter&&s.filter!=="none")return o;o=o.parentNode}return null}function Ct(e){for(var t=H(e),r=Dr(e);r&&fo(r)&&W(r).position==="static";)r=Dr(r);return r&&(q(r)==="html"||q(r)==="body"&&W(r).position==="static")?t:r||po(e)||t}var I="top",$="bottom",B="right",P="left",Ie="auto",Lt=[I,$,B,P],ft="start",xt="end",ho="clippingParents",Hr="viewport",Tt="popper",mo="reference",Nr=Lt.reduce(function(e,t){return e.concat([t+"-"+ft,t+"-"+xt])},[]),Vr=[].concat(Lt,[Ie]).reduce(function(e,t){return e.concat([t,t+"-"+ft,t+"-"+xt])},[]),go="beforeRead",vo="read",bo="afterRead",yo="beforeMain",Eo="main",_o="afterMain",wo="beforeWrite",Ao="write",To="afterWrite",Oo=[go,vo,bo,yo,Eo,_o,wo,Ao,To];function So(e){var t=new Map,r=new Set,n=[];e.forEach(function(s){t.set(s.name,s)});function o(s){r.add(s.name);var i=[].concat(s.requires||[],s.requiresIfExists||[]);i.forEach(function(a){if(!r.has(a)){var c=t.get(a);c&&o(c)}}),n.push(s)}return e.forEach(function(s){r.has(s.name)||o(s)}),n}function xo(e){var t=So(e);return Oo.reduce(function(r,n){return r.concat(t.filter(function(o){return o.phase===n}))},[])}function Co(e){var t;return function(){return t||(t=new Promise(function(r){Promise.resolve().then(function(){t=void 0,r(e())})})),t}}function V(e){return e.split("-")[0]}function Lo(e){var t=e.reduce(function(r,n){var o=r[n.name];return r[n.name]=o?Object.assign({},o,n,{options:Object.assign({},o.options,n.options),data:Object.assign({},o.data,n.data)}):n,r},{});return Object.keys(t).map(function(r){return t[r]})}function Do(e){var t=H(e),r=J(e),n=t.visualViewport,o=r.clientWidth,s=r.clientHeight,i=0,a=0;return n&&(o=n.width,s=n.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(i=n.offsetLeft,a=n.offsetTop)),{width:o,height:s,x:i+Le(e),y:a}}function No(e){var t,r=J(e),n=Ce(e),o=(t=e.ownerDocument)==null?void 0:t.body,s=ot(r.scrollWidth,r.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),i=ot(r.scrollHeight,r.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-n.scrollLeft+Le(e),c=-n.scrollTop;return W(o||r).direction==="rtl"&&(a+=ot(r.clientWidth,o?o.clientWidth:0)-s),{width:s,height:i,x:a,y:c}}function qr(e,t){var r=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(r&&jr(r)){var n=t;do{if(n&&e.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function xe(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function Io(e){var t=ut(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}function Ir(e,t){return t===Hr?xe(Do(e)):ct(t)?Io(t):xe(No(J(e)))}function Po(e){var t=Ot(Kt(e)),r=["absolute","fixed"].indexOf(W(e).position)>=0,n=r&&k(e)?Ct(e):e;return ct(n)?t.filter(function(o){return ct(o)&&qr(o,n)&&q(o)!=="body"&&(r?W(o).position!=="static":!0)}):[]}function Mo(e,t,r){var n=t==="clippingParents"?Po(e):[].concat(t),o=[].concat(n,[r]),s=o[0],i=o.reduce(function(a,c){var u=Ir(e,c);return a.top=ot(u.top,a.top),a.right=Gt(u.right,a.right),a.bottom=Gt(u.bottom,a.bottom),a.left=ot(u.left,a.left),a},Ir(e,s));return i.width=i.right-i.left,i.height=i.bottom-i.top,i.x=i.left,i.y=i.top,i}function pt(e){return e.split("-")[1]}function Pe(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Wr(e){var t=e.reference,r=e.element,n=e.placement,o=n?V(n):null,s=n?pt(n):null,i=t.x+t.width/2-r.width/2,a=t.y+t.height/2-r.height/2,c;switch(o){case I:c={x:i,y:t.y-r.height};break;case $:c={x:i,y:t.y+t.height};break;case B:c={x:t.x+t.width,y:a};break;case P:c={x:t.x-r.width,y:a};break;default:c={x:t.x,y:t.y}}var u=o?Pe(o):null;if(u!=null){var l=u==="y"?"height":"width";switch(s){case ft:c[u]=c[u]-(t[l]/2-r[l]/2);break;case xt:c[u]=c[u]+(t[l]/2-r[l]/2);break}}return c}function zr(){return{top:0,right:0,bottom:0,left:0}}function Ur(e){return Object.assign({},zr(),e)}function Yr(e,t){return t.reduce(function(r,n){return r[n]=e,r},{})}function dt(e,t){t===void 0&&(t={});var r=t,n=r.placement,o=n===void 0?e.placement:n,s=r.boundary,i=s===void 0?ho:s,a=r.rootBoundary,c=a===void 0?Hr:a,u=r.elementContext,l=u===void 0?Tt:u,f=r.altBoundary,g=f===void 0?!1:f,p=r.padding,h=p===void 0?0:p,m=Ur(typeof h!="number"?h:Yr(h,Lt)),d=l===Tt?mo:Tt,w=e.rects.popper,A=e.elements[g?d:l],T=Mo(ct(A)?A:A.contextElement||J(e.elements.popper),i,c),v=ut(e.elements.reference),E=Wr({reference:v,element:w,strategy:"absolute",placement:o}),b=xe(Object.assign({},w,E)),y=l===Tt?b:v,O={top:T.top-y.top+m.top,bottom:y.bottom-T.bottom+m.bottom,left:T.left-y.left+m.left,right:y.right-T.right+m.right},x=e.modifiersData.offset;if(l===Tt&&x){var C=x[o];Object.keys(O).forEach(function(_){var L=[B,$].indexOf(_)>=0?1:-1,tt=[I,$].indexOf(_)>=0?"y":"x";O[_]+=C[tt]*L})}return O}var Pr={placement:"bottom",modifiers:[],strategy:"absolute"};function Mr(){for(var e=arguments.length,t=new Array(e),r=0;r=0?-1:1,s=typeof r=="function"?r(Object.assign({},t,{placement:e})):r,i=s[0],a=s[1];return i=i||0,a=(a||0)*o,[P,B].indexOf(n)>=0?{x:a,y:i}:{x:i,y:a}}function qo(e){var t=e.state,r=e.options,n=e.name,o=r.offset,s=o===void 0?[0,0]:o,i=Vr.reduce(function(l,f){return l[f]=Vo(f,t.rects,s),l},{}),a=i[t.placement],c=a.x,u=a.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=c,t.modifiersData.popperOffsets.y+=u),t.modifiersData[n]=i}var Gr={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:qo},Wo={left:"right",right:"left",bottom:"top",top:"bottom"};function Yt(e){return e.replace(/left|right|bottom|top/g,function(t){return Wo[t]})}var zo={start:"end",end:"start"};function kr(e){return e.replace(/start|end/g,function(t){return zo[t]})}function Uo(e,t){t===void 0&&(t={});var r=t,n=r.placement,o=r.boundary,s=r.rootBoundary,i=r.padding,a=r.flipVariations,c=r.allowedAutoPlacements,u=c===void 0?Vr:c,l=pt(n),f=l?a?Nr:Nr.filter(function(h){return pt(h)===l}):Lt,g=f.filter(function(h){return u.indexOf(h)>=0});g.length===0&&(g=f);var p=g.reduce(function(h,m){return h[m]=dt(e,{placement:m,boundary:o,rootBoundary:s,padding:i})[V(m)],h},{});return Object.keys(p).sort(function(h,m){return p[h]-p[m]})}function Yo(e){if(V(e)===Ie)return[];var t=Yt(e);return[kr(e),t,kr(t)]}function Go(e){var t=e.state,r=e.options,n=e.name;if(!t.modifiersData[n]._skip){for(var o=r.mainAxis,s=o===void 0?!0:o,i=r.altAxis,a=i===void 0?!0:i,c=r.fallbackPlacements,u=r.padding,l=r.boundary,f=r.rootBoundary,g=r.altBoundary,p=r.flipVariations,h=p===void 0?!0:p,m=r.allowedAutoPlacements,d=t.options.placement,w=V(d),A=w===d,T=c||(A||!h?[Yt(d)]:Yo(d)),v=[d].concat(T).reduce(function(st,G){return st.concat(V(G)===Ie?Uo(t,{placement:G,boundary:l,rootBoundary:f,padding:u,flipVariations:h,allowedAutoPlacements:m}):G)},[]),E=t.rects.reference,b=t.rects.popper,y=new Map,O=!0,x=v[0],C=0;C=0,vt=gt?"width":"height",R=dt(t,{placement:_,boundary:l,rootBoundary:f,altBoundary:g,padding:u}),j=gt?tt?B:P:tt?$:I;E[vt]>b[vt]&&(j=Yt(j));var Pt=Yt(j),et=[];if(s&&et.push(R[L]<=0),a&&et.push(R[j]<=0,R[Pt]<=0),et.every(function(st){return st})){x=_,O=!1;break}y.set(_,et)}if(O)for(var Mt=h?3:1,oe=function(G){var yt=v.find(function(kt){var rt=y.get(kt);if(rt)return rt.slice(0,G).every(function(ie){return ie})});if(yt)return x=yt,"break"},bt=Mt;bt>0;bt--){var Rt=oe(bt);if(Rt==="break")break}t.placement!==x&&(t.modifiersData[n]._skip=!0,t.placement=x,t.reset=!0)}}var Kr={name:"flip",enabled:!0,phase:"main",fn:Go,requiresIfExists:["offset"],data:{_skip:!1}};function Ko(e){return e==="x"?"y":"x"}function St(e,t,r){return ot(e,Gt(t,r))}function Qo(e,t,r){var n=St(e,t,r);return n>r?r:n}function Xo(e){var t=e.state,r=e.options,n=e.name,o=r.mainAxis,s=o===void 0?!0:o,i=r.altAxis,a=i===void 0?!1:i,c=r.boundary,u=r.rootBoundary,l=r.altBoundary,f=r.padding,g=r.tether,p=g===void 0?!0:g,h=r.tetherOffset,m=h===void 0?0:h,d=dt(t,{boundary:c,rootBoundary:u,padding:f,altBoundary:l}),w=V(t.placement),A=pt(t.placement),T=!A,v=Pe(w),E=Ko(v),b=t.modifiersData.popperOffsets,y=t.rects.reference,O=t.rects.popper,x=typeof m=="function"?m(Object.assign({},t.rects,{placement:t.placement})):m,C=typeof x=="number"?{mainAxis:x,altAxis:x}:Object.assign({mainAxis:0,altAxis:0},x),_=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,L={x:0,y:0};if(b){if(s){var tt,gt=v==="y"?I:P,vt=v==="y"?$:B,R=v==="y"?"height":"width",j=b[v],Pt=j+d[gt],et=j-d[vt],Mt=p?-O[R]/2:0,oe=A===ft?y[R]:O[R],bt=A===ft?-O[R]:-y[R],Rt=t.elements.arrow,st=p&&Rt?Ne(Rt):{width:0,height:0},G=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:zr(),yt=G[gt],kt=G[vt],rt=St(0,y[R],st[R]),ie=T?y[R]/2-Mt-rt-yt-C.mainAxis:oe-rt-yt-C.mainAxis,vn=T?-y[R]/2+Mt+rt+kt+C.mainAxis:bt+rt+kt+C.mainAxis,se=t.elements.arrow&&Ct(t.elements.arrow),bn=se?v==="y"?se.clientTop||0:se.clientLeft||0:0,er=(tt=_==null?void 0:_[v])!=null?tt:0,yn=j+ie-er-bn,En=j+vn-er,rr=St(p?Gt(Pt,yn):Pt,j,p?ot(et,En):et);b[v]=rr,L[v]=rr-j}if(a){var nr,_n=v==="x"?I:P,wn=v==="x"?$:B,nt=b[E],$t=E==="y"?"height":"width",or=nt+d[_n],ir=nt-d[wn],ae=[I,P].indexOf(w)!==-1,sr=(nr=_==null?void 0:_[E])!=null?nr:0,ar=ae?or:nt-y[$t]-O[$t]-sr+C.altAxis,cr=ae?nt+y[$t]+O[$t]-sr-C.altAxis:ir,lr=p&&ae?Qo(ar,nt,cr):St(p?ar:or,nt,p?cr:ir);b[E]=lr,L[E]=lr-nt}t.modifiersData[n]=L}}var Qr={name:"preventOverflow",enabled:!0,phase:"main",fn:Xo,requiresIfExists:["offset"]},Jo=function(t,r){return t=typeof t=="function"?t(Object.assign({},r.rects,{placement:r.placement})):t,Ur(typeof t!="number"?t:Yr(t,Lt))};function Zo(e){var t,r=e.state,n=e.name,o=e.options,s=r.elements.arrow,i=r.modifiersData.popperOffsets,a=V(r.placement),c=Pe(a),u=[P,B].indexOf(a)>=0,l=u?"height":"width";if(!(!s||!i)){var f=Jo(o.padding,r),g=Ne(s),p=c==="y"?I:P,h=c==="y"?$:B,m=r.rects.reference[l]+r.rects.reference[c]-i[c]-r.rects.popper[l],d=i[c]-r.rects.reference[c],w=Ct(s),A=w?c==="y"?w.clientHeight||0:w.clientWidth||0:0,T=m/2-d/2,v=f[p],E=A-g[l]-f[h],b=A/2-g[l]/2+T,y=St(v,b,E),O=c;r.modifiersData[n]=(t={},t[O]=y,t.centerOffset=y-b,t)}}function ti(e){var t=e.state,r=e.options,n=r.element,o=n===void 0?"[data-popper-arrow]":n;o!=null&&(typeof o=="string"&&(o=t.elements.popper.querySelector(o),!o)||qr(t.elements.popper,o)&&(t.elements.arrow=o))}var Xr={name:"arrow",enabled:!0,phase:"main",fn:Zo,effect:ti,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function $r(e,t,r){return r===void 0&&(r={x:0,y:0}),{top:e.top-t.height-r.y,right:e.right-t.width+r.x,bottom:e.bottom-t.height+r.y,left:e.left-t.width-r.x}}function Br(e){return[I,B,$,P].some(function(t){return e[t]>=0})}function ei(e){var t=e.state,r=e.name,n=t.rects.reference,o=t.rects.popper,s=t.modifiersData.preventOverflow,i=dt(t,{elementContext:"reference"}),a=dt(t,{altBoundary:!0}),c=$r(i,n),u=$r(a,o,s),l=Br(c),f=Br(u);t.modifiersData[r]={referenceClippingOffsets:c,popperEscapeOffsets:u,isReferenceHidden:l,hasPopperEscaped:f},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":l,"data-popper-escaped":f})}var Jr={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:ei},ri=[Re,ke,$e,Be],ni=Me({defaultModifiers:ri}),Zr=[Re,ke,$e,Be,Gr,Kr,Qr,Xr,Jr],oi=Me({defaultModifiers:Zr});D.applyStyles=Be;D.arrow=Xr;D.computeStyles=$e;D.createPopper=oi;D.createPopperLite=ni;D.defaultModifiers=Zr;D.detectOverflow=dt;D.eventListeners=Re;D.flip=Kr;D.hide=Jr;D.offset=Gr;D.popperGenerator=Me;D.popperOffsets=ke;D.preventOverflow=Qr});var K=new Map,jt={set(e,t,r){K.has(e)||K.set(e,new Map);let n=K.get(e);if(!n.has(t)&&n.size!==0){console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`);return}n.set(t,r)},get(e,t){return K.has(e)&&K.get(e).get(t)||null},remove(e,t){if(!K.has(e))return;let r=K.get(e);r.delete(t),r.size===0&&K.delete(e)}};var fe="transitionend",pe=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,(t,r)=>`#${CSS.escape(r)}`)),e),mr=e=>e==null?`${e}`:Object.prototype.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase(),gr=e=>{do e+=Math.floor(Math.random()*1e6);while(document.getElementById(e));return e},Pn=e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:r}=window.getComputedStyle(e),n=Number.parseFloat(t),o=Number.parseFloat(r);return!n&&!o?0:(t=t.split(",")[0],r=r.split(",")[0],(Number.parseFloat(t)+Number.parseFloat(r))*1e3)},Mn=e=>{e.dispatchEvent(new Event(fe))},X=e=>!e||typeof e!="object"?!1:(typeof e.jquery!="undefined"&&(e=e[0]),typeof e.nodeType!="undefined"),Y=e=>X(e)?e.jquery?e[0]:e:typeof e=="string"&&e.length>0?document.querySelector(pe(e)):null,vr=e=>{if(!X(e)||e.getClientRects().length===0)return!1;let t=getComputedStyle(e).getPropertyValue("visibility")==="visible",r=e.closest("details:not([open])");if(!r)return t;if(r!==e){let n=e.closest("summary");if(n&&n.parentNode!==r||n===null)return!1}return t},br=e=>!e||e.nodeType!==Node.ELEMENT_NODE||e.classList.contains("disabled")?!0:typeof e.disabled!="undefined"?e.disabled:e.hasAttribute("disabled")&&e.getAttribute("disabled")!=="false",de=e=>{if(!document.documentElement.attachShadow)return null;if(typeof e.getRootNode=="function"){let t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?de(e.parentNode):null},he=()=>{},yr=e=>{e.offsetHeight},me=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,ue=[],Rn=e=>{document.readyState==="loading"?(ue.length||document.addEventListener("DOMContentLoaded",()=>{for(let t of ue)t()}),ue.push(e)):e()},ge=()=>document.documentElement.dir==="rtl",Ft=e=>{Rn(()=>{let t=me();if(t){let r=e.NAME,n=t.fn[r];t.fn[r]=e.jQueryInterface,t.fn[r].Constructor=e,t.fn[r].noConflict=()=>(t.fn[r]=n,e.jQueryInterface)}})},Q=(e,t=[],r=e)=>typeof e=="function"?e.call(...t):r,Er=(e,t,r=!0)=>{if(!r){Q(e);return}let o=Pn(t)+5,s=!1,i=({target:a})=>{a===t&&(s=!0,t.removeEventListener(fe,i),Q(e))};t.addEventListener(fe,i),setTimeout(()=>{s||Mn(t)},o)};var kn=/[^.]*(?=\..*)\.|.*/,$n=/\..*/,Bn=/::\d+$/,ve={},_r=1,Ar={mouseenter:"mouseover",mouseleave:"mouseout"},jn=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function Tr(e,t){return t&&`${t}::${_r++}`||e.uidEvent||_r++}function Or(e){let t=Tr(e);return e.uidEvent=t,ve[t]=ve[t]||{},ve[t]}function Fn(e,t){return function r(n){return Ee(n,{delegateTarget:e}),r.oneOff&&ye.off(e,n.type,t),t.apply(e,[n])}}function Hn(e,t,r){return function n(o){let s=e.querySelectorAll(t);for(let{target:i}=o;i&&i!==this;i=i.parentNode)for(let a of s)if(a===i)return Ee(o,{delegateTarget:i}),n.oneOff&&ye.off(e,o.type,t,r),r.apply(i,[o])}}function Sr(e,t,r=null){return Object.values(e).find(n=>n.callable===t&&n.delegationSelector===r)}function xr(e,t,r){let n=typeof t=="string",o=n?r:t||r,s=Cr(e);return jn.has(s)||(s=e),[n,o,s]}function wr(e,t,r,n,o){if(typeof t!="string"||!e)return;let[s,i,a]=xr(t,r,n);t in Ar&&(i=(h=>function(m){if(!m.relatedTarget||m.relatedTarget!==m.delegateTarget&&!m.delegateTarget.contains(m.relatedTarget))return h.call(this,m)})(i));let c=Or(e),u=c[a]||(c[a]={}),l=Sr(u,i,s?r:null);if(l){l.oneOff=l.oneOff&&o;return}let f=Tr(i,t.replace(kn,"")),g=s?Hn(e,r,i):Fn(e,i);g.delegationSelector=s?r:null,g.callable=i,g.oneOff=o,g.uidEvent=f,u[f]=g,e.addEventListener(a,g,s)}function be(e,t,r,n,o){let s=Sr(t[r],n,o);s&&(e.removeEventListener(r,s,!!o),delete t[r][s.uidEvent])}function Vn(e,t,r,n){let o=t[r]||{};for(let[s,i]of Object.entries(o))s.includes(n)&&be(e,t,r,i.callable,i.delegationSelector)}function Cr(e){return e=e.replace($n,""),Ar[e]||e}var ye={on(e,t,r,n){wr(e,t,r,n,!1)},one(e,t,r,n){wr(e,t,r,n,!0)},off(e,t,r,n){if(typeof t!="string"||!e)return;let[o,s,i]=xr(t,r,n),a=i!==t,c=Or(e),u=c[i]||{},l=t.startsWith(".");if(typeof s!="undefined"){if(!Object.keys(u).length)return;be(e,c,i,s,o?r:null);return}if(l)for(let f of Object.keys(c))Vn(e,c,f,t.slice(1));for(let[f,g]of Object.entries(u)){let p=f.replace(Bn,"");(!a||t.includes(p))&&be(e,c,i,g.callable,g.delegationSelector)}},trigger(e,t,r){if(typeof t!="string"||!e)return null;let n=me(),o=Cr(t),s=t!==o,i=null,a=!0,c=!0,u=!1;s&&n&&(i=n.Event(t,r),n(e).trigger(i),a=!i.isPropagationStopped(),c=!i.isImmediatePropagationStopped(),u=i.isDefaultPrevented());let l=Ee(new Event(t,{bubbles:a,cancelable:!0}),r);return u&&l.preventDefault(),c&&e.dispatchEvent(l),l.defaultPrevented&&i&&i.preventDefault(),l}};function Ee(e,t={}){for(let[r,n]of Object.entries(t))try{e[r]=n}catch(o){Object.defineProperty(e,r,{configurable:!0,get(){return n}})}return e}var S=ye;function Lr(e){if(e==="true")return!0;if(e==="false")return!1;if(e===Number(e).toString())return Number(e);if(e===""||e==="null")return null;if(typeof e!="string")return e;try{return JSON.parse(decodeURIComponent(e))}catch(t){return e}}function _e(e){return e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}var qn={setDataAttribute(e,t,r){e.setAttribute(`data-bs-${_e(t)}`,r)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${_e(t)}`)},getDataAttributes(e){if(!e)return{};let t={},r=Object.keys(e.dataset).filter(n=>n.startsWith("bs")&&!n.startsWith("bsConfig"));for(let n of r){let o=n.replace(/^bs/,"");o=o.charAt(0).toLowerCase()+o.slice(1),t[o]=Lr(e.dataset[n])}return t},getDataAttribute(e,t){return Lr(e.getAttribute(`data-bs-${_e(t)}`))}},wt=qn;var we=class{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,r){let n=X(r)?wt.getDataAttribute(r,"config"):{};return N(N(N(N({},this.constructor.Default),typeof n=="object"?n:{}),X(r)?wt.getDataAttributes(r):{}),typeof t=="object"?t:{})}_typeCheckConfig(t,r=this.constructor.DefaultType){for(let[n,o]of Object.entries(r)){let s=t[n],i=X(s)?"element":mr(s);if(!new RegExp(o).test(i))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${i}" but expected type "${o}".`)}}},Ht=we;var Wn="5.3.8",Ae=class extends Ht{constructor(t,r){super(),t=Y(t),t&&(this._element=t,this._config=this._getConfig(r),jt.set(this._element,this.constructor.DATA_KEY,this))}dispose(){jt.remove(this._element,this.constructor.DATA_KEY),S.off(this._element,this.constructor.EVENT_KEY);for(let t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,r,n=!0){Er(t,r,n)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return jt.get(Y(t),this.DATA_KEY)}static getOrCreateInstance(t,r={}){return this.getInstance(t)||new this(t,typeof r=="object"?r:null)}static get VERSION(){return Wn}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}},Vt=Ae;var Te=e=>{let t=e.getAttribute("data-bs-target");if(!t||t==="#"){let r=e.getAttribute("href");if(!r||!r.includes("#")&&!r.startsWith("."))return null;r.includes("#")&&!r.startsWith("#")&&(r=`#${r.split("#")[1]}`),t=r&&r!=="#"?r.trim():null}return t?t.split(",").map(r=>pe(r)).join(","):null},qt={find(e,t=document.documentElement){return[].concat(...Element.prototype.querySelectorAll.call(t,e))},findOne(e,t=document.documentElement){return Element.prototype.querySelector.call(t,e)},children(e,t){return[].concat(...e.children).filter(r=>r.matches(t))},parents(e,t){let r=[],n=e.parentNode.closest(t);for(;n;)r.push(n),n=n.parentNode.closest(t);return r},prev(e,t){let r=e.previousElementSibling;for(;r;){if(r.matches(t))return[r];r=r.previousElementSibling}return[]},next(e,t){let r=e.nextElementSibling;for(;r;){if(r.matches(t))return[r];r=r.nextElementSibling}return[]},focusableChildren(e){let t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(r=>`${r}:not([tabindex^="-"])`).join(",");return this.find(t,e).filter(r=>!br(r)&&vr(r))},getSelectorFromElement(e){let t=Te(e);return t&&qt.findOne(t)?t:null},getElementFromSelector(e){let t=Te(e);return t?qt.findOne(t):null},getMultipleElementsFromSelector(e){let t=Te(e);return t?qt.find(t):[]}},F=qt;var zn="collapse",Un="bs.collapse",At=`.${Un}`,Yn=".data-api",Gn=`show${At}`,Kn=`shown${At}`,Qn=`hide${At}`,Xn=`hidden${At}`,Jn=`click${At}${Yn}`,Oe="show",at="collapse",Wt="collapsing",Zn="collapsed",to=`:scope .${at} .${at}`,eo="collapse-horizontal",ro="width",no="height",oo=".collapse.show, .collapse.collapsing",Se='[data-bs-toggle="collapse"]',io={parent:null,toggle:!0},so={parent:"(null|element)",toggle:"boolean"},zt=class e extends Vt{constructor(t,r){super(t,r),this._isTransitioning=!1,this._triggerArray=[];let n=F.find(Se);for(let o of n){let s=F.getSelectorFromElement(o),i=F.find(s).filter(a=>a===this._element);s!==null&&i.length&&this._triggerArray.push(o)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return io}static get DefaultType(){return so}static get NAME(){return zn}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(oo).filter(a=>a!==this._element).map(a=>e.getOrCreateInstance(a,{toggle:!1}))),t.length&&t[0]._isTransitioning||S.trigger(this._element,Gn).defaultPrevented)return;for(let a of t)a.hide();let n=this._getDimension();this._element.classList.remove(at),this._element.classList.add(Wt),this._element.style[n]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;let o=()=>{this._isTransitioning=!1,this._element.classList.remove(Wt),this._element.classList.add(at,Oe),this._element.style[n]="",S.trigger(this._element,Kn)},i=`scroll${n[0].toUpperCase()+n.slice(1)}`;this._queueCallback(o,this._element,!0),this._element.style[n]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown()||S.trigger(this._element,Qn).defaultPrevented)return;let r=this._getDimension();this._element.style[r]=`${this._element.getBoundingClientRect()[r]}px`,yr(this._element),this._element.classList.add(Wt),this._element.classList.remove(at,Oe);for(let o of this._triggerArray){let s=F.getElementFromSelector(o);s&&!this._isShown(s)&&this._addAriaAndCollapsedClass([o],!1)}this._isTransitioning=!0;let n=()=>{this._isTransitioning=!1,this._element.classList.remove(Wt),this._element.classList.add(at),S.trigger(this._element,Xn)};this._element.style[r]="",this._queueCallback(n,this._element,!0)}_isShown(t=this._element){return t.classList.contains(Oe)}_configAfterMerge(t){return t.toggle=!!t.toggle,t.parent=Y(t.parent),t}_getDimension(){return this._element.classList.contains(eo)?ro:no}_initializeChildren(){if(!this._config.parent)return;let t=this._getFirstLevelChildren(Se);for(let r of t){let n=F.getElementFromSelector(r);n&&this._addAriaAndCollapsedClass([r],this._isShown(n))}}_getFirstLevelChildren(t){let r=F.find(to,this._config.parent);return F.find(t,this._config.parent).filter(n=>!r.includes(n))}_addAriaAndCollapsedClass(t,r){if(t.length)for(let n of t)n.classList.toggle(Zn,!r),n.setAttribute("aria-expanded",r)}static jQueryInterface(t){let r={};return typeof t=="string"&&/show|hide/.test(t)&&(r.toggle=!1),this.each(function(){let n=e.getOrCreateInstance(this,r);if(typeof t=="string"){if(typeof n[t]=="undefined")throw new TypeError(`No method named "${t}"`);n[t]()}})}};S.on(document,Jn,Se,function(e){(e.target.tagName==="A"||e.delegateTarget&&e.delegateTarget.tagName==="A")&&e.preventDefault();for(let t of F.getMultipleElementsFromSelector(this))zt.getOrCreateInstance(t,{toggle:!1}).toggle()});Ft(zt);var cs=document.getElementsByClassName("collapse");var qe=In(tn());var ii=/^aria-[\w-]*$/i,Qt={"*":["class","dir","id","lang","role",ii],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},si=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),ai=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,ci=(e,t)=>{let r=e.nodeName.toLowerCase();return t.includes(r)?si.has(r)?!!ai.test(e.nodeValue):!0:t.filter(n=>n instanceof RegExp).some(n=>n.test(r))};function en(e,t,r){if(!e.length)return e;if(r&&typeof r=="function")return r(e);let o=new window.DOMParser().parseFromString(e,"text/html"),s=[].concat(...o.body.querySelectorAll("*"));for(let i of s){let a=i.nodeName.toLowerCase();if(!Object.keys(t).includes(a)){i.remove();continue}let c=[].concat(...i.attributes),u=[].concat(t["*"]||[],t[a]||[]);for(let l of c)ci(l,u)||i.removeAttribute(l.nodeName)}return o.body.innerHTML}var li="TemplateFactory",ui={allowList:Qt,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},fi={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},pi={entry:"(string|element|function|null)",selector:"(string|element)"},je=class extends Ht{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return ui}static get DefaultType(){return fi}static get NAME(){return li}getContent(){return Object.values(this._config.content).map(t=>this._resolvePossibleFunction(t)).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content=N(N({},this._config.content),t),this}toHtml(){let t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(let[o,s]of Object.entries(this._config.content))this._setContent(t,s,o);let r=t.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&r.classList.add(...n.split(" ")),r}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(let[r,n]of Object.entries(t))super._typeCheckConfig({selector:r,entry:n},pi)}_setContent(t,r,n){let o=F.findOne(n,t);if(o){if(r=this._resolvePossibleFunction(r),!r){o.remove();return}if(X(r)){this._putElementInTemplate(Y(r),o);return}if(this._config.html){o.innerHTML=this._maybeSanitize(r);return}o.textContent=r}}_maybeSanitize(t){return this._config.sanitize?en(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return Q(t,[void 0,this])}_putElementInTemplate(t,r){if(this._config.html){r.innerHTML="",r.append(t);return}r.textContent=t.textContent}},rn=je;var di="tooltip",hi=new Set(["sanitize","allowList","sanitizeFn"]),Fe="fade",mi="modal",Xt="show",gi=".tooltip-inner",nn=`.${mi}`,on="hide.bs.modal",Dt="hover",He="focus",Ve="click",vi="manual",bi="hide",yi="hidden",Ei="show",_i="shown",wi="inserted",Ai="click",Ti="focusin",Oi="focusout",Si="mouseenter",xi="mouseleave",Ci={AUTO:"auto",TOP:"top",RIGHT:ge()?"left":"right",BOTTOM:"bottom",LEFT:ge()?"right":"left"},Li={allowList:Qt,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},Di={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"},Jt=class e extends Vt{constructor(t,r){if(typeof qe=="undefined")throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org/docs/v2/)");super(t,r),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Li}static get DefaultType(){return Di}static get NAME(){return di}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){if(this._isEnabled){if(this._isShown()){this._leave();return}this._enter()}}dispose(){clearTimeout(this._timeout),S.off(this._element.closest(nn),on,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if(this._element.style.display==="none")throw new Error("Please use show on visible elements");if(!(this._isWithContent()&&this._isEnabled))return;let t=S.trigger(this._element,this.constructor.eventName(Ei)),n=(de(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!n)return;this._disposePopper();let o=this._getTipElement();this._element.setAttribute("aria-describedby",o.getAttribute("id"));let{container:s}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(s.append(o),S.trigger(this._element,this.constructor.eventName(wi))),this._popper=this._createPopper(o),o.classList.add(Xt),"ontouchstart"in document.documentElement)for(let a of[].concat(...document.body.children))S.on(a,"mouseover",he);let i=()=>{S.trigger(this._element,this.constructor.eventName(_i)),this._isHovered===!1&&this._leave(),this._isHovered=!1};this._queueCallback(i,this.tip,this._isAnimated())}hide(){if(!this._isShown()||S.trigger(this._element,this.constructor.eventName(bi)).defaultPrevented)return;if(this._getTipElement().classList.remove(Xt),"ontouchstart"in document.documentElement)for(let o of[].concat(...document.body.children))S.off(o,"mouseover",he);this._activeTrigger[Ve]=!1,this._activeTrigger[He]=!1,this._activeTrigger[Dt]=!1,this._isHovered=null;let n=()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),S.trigger(this._element,this.constructor.eventName(yi)))};this._queueCallback(n,this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return!!this._getTitle()}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){let r=this._getTemplateFactory(t).toHtml();if(!r)return null;r.classList.remove(Fe,Xt),r.classList.add(`bs-${this.constructor.NAME}-auto`);let n=gr(this.constructor.NAME).toString();return r.setAttribute("id",n),this._isAnimated()&&r.classList.add(Fe),r}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new rn(dr(N({},this._config),{content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)})),this._templateFactory}_getContentForTemplate(){return{[gi]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(Fe)}_isShown(){return this.tip&&this.tip.classList.contains(Xt)}_createPopper(t){let r=Q(this._config.placement,[this,t,this._element]),n=Ci[r.toUpperCase()];return qe.createPopper(this._element,t,this._getPopperConfig(n))}_getOffset(){let{offset:t}=this._config;return typeof t=="string"?t.split(",").map(r=>Number.parseInt(r,10)):typeof t=="function"?r=>t(r,this._element):t}_resolvePossibleFunction(t){return Q(t,[this._element,this._element])}_getPopperConfig(t){let r={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:n=>{this._getTipElement().setAttribute("data-popper-placement",n.state.placement)}}]};return N(N({},r),Q(this._config.popperConfig,[void 0,r]))}_setListeners(){let t=this._config.trigger.split(" ");for(let r of t)if(r==="click")S.on(this._element,this.constructor.eventName(Ai),this._config.selector,n=>{let o=this._initializeOnDelegatedTarget(n);o._activeTrigger[Ve]=!(o._isShown()&&o._activeTrigger[Ve]),o.toggle()});else if(r!==vi){let n=r===Dt?this.constructor.eventName(Si):this.constructor.eventName(Ti),o=r===Dt?this.constructor.eventName(xi):this.constructor.eventName(Oi);S.on(this._element,n,this._config.selector,s=>{let i=this._initializeOnDelegatedTarget(s);i._activeTrigger[s.type==="focusin"?He:Dt]=!0,i._enter()}),S.on(this._element,o,this._config.selector,s=>{let i=this._initializeOnDelegatedTarget(s);i._activeTrigger[s.type==="focusout"?He:Dt]=i._element.contains(s.relatedTarget),i._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},S.on(this._element.closest(nn),on,this._hideModalHandler)}_fixTitle(){let t=this._element.getAttribute("title");t&&(!this._element.getAttribute("aria-label")&&!this._element.textContent.trim()&&this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){if(this._isShown()||this._isHovered){this._isHovered=!0;return}this._isHovered=!0,this._setTimeout(()=>{this._isHovered&&this.show()},this._config.delay.show)}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout(()=>{this._isHovered||this.hide()},this._config.delay.hide))}_setTimeout(t,r){clearTimeout(this._timeout),this._timeout=setTimeout(t,r)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){let r=wt.getDataAttributes(this._element);for(let n of Object.keys(r))hi.has(n)&&delete r[n];return t=N(N({},r),typeof t=="object"&&t?t:{}),t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=t.container===!1?document.body:Y(t.container),typeof t.delay=="number"&&(t.delay={show:t.delay,hide:t.delay}),typeof t.title=="number"&&(t.title=t.title.toString()),typeof t.content=="number"&&(t.content=t.content.toString()),t}_getDelegateConfig(){let t={};for(let[r,n]of Object.entries(this._config))this.constructor.Default[r]!==n&&(t[r]=n);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each(function(){let r=e.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof r[t]=="undefined")throw new TypeError(`No method named "${t}"`);r[t]()}})}};Ft(Jt);var We=Jt;var Ni=document.getElementById("toc-bar"),Ii=document.getElementById("toc-solo-trigger"),Pi=document.getElementsByClassName("toc-trigger"),z=document.getElementById("toc-popup"),Mi=document.getElementById("toc-popup-close"),sn="overflow-hidden",ze="closing",Nt,It,ht=class ht{static initBar(){new IntersectionObserver(r=>{r.forEach(n=>{Ni.classList.toggle("invisible",n.isIntersecting)})},{rootMargin:`-${U(this,It)}px 0px 0px 0px`}).observe(Ii),Bt(this,Nt,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach(r=>{r.onclick=()=>this.hidePopup()})}static refresh(){U(this,Nt)&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return z.open}static showPopup(){this.lockScroll(!0),z.showModal(),z.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){z.toggleAttribute(ze),z.addEventListener("animationend",()=>{z.toggleAttribute(ze),z.close()},{once:!0}),this.lockScroll(!1)}static lockScroll(t){document.documentElement.classList.toggle(sn,t),document.body.classList.toggle(sn,t)}static clickBackdrop(t){if(z.hasAttribute(ze))return;let r=t.target.getBoundingClientRect();(t.clientXr.right||t.clientYr.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...Pi].forEach(t=>{t.onclick=()=>this.showPopup()}),z.onclick=t=>this.clickBackdrop(t),Mi.onclick=()=>this.hidePopup(),z.oncancel=t=>{t.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}};Nt=new WeakMap,It=new WeakMap,_t(ht,Nt,!0),_t(ht,It,48),Et(ht,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:U(ht,It)});var Ue=ht;var Bs=matchMedia("(min-width: 1200px)");var Fs=Theme.getThemeMapper("default","dark");var an=document.getElementById("mode-toggle");function Ye(){an&&an.addEventListener("click",()=>{Theme.flip()})}function Ge(){let e=document.getElementById("back-to-top");window.addEventListener("scroll",()=>{window.scrollY>50?e.classList.add("show"):e.classList.remove("show")}),e.addEventListener("click",()=>{window.scrollTo({top:0})})}function Ke(){[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map(t=>new We(t))}function Qe(){Ye(),Ge(),Ke()}var Ri="sidebar-display",ki=document.getElementById("sidebar"),$i=document.getElementById("sidebar-trigger"),cn=document.getElementById("mask"),Z,Zt=class{static toggle(){Bt(this,Z,!U(this,Z)),document.body.toggleAttribute(Ri,U(this,Z)),ki.classList.toggle("z-2",U(this,Z)),cn.classList.toggle("d-none",!U(this,Z))}};Z=new WeakMap,_t(Zt,Z,!1);function Xe(){$i.onclick=cn.onclick=()=>Zt.toggle()}var ln=document.getElementById("sidebar-trigger"),Je=document.getElementById("search-trigger"),te=document.getElementById("search-cancel"),un=document.querySelectorAll("#main-wrapper>.container>.row"),fn=document.getElementById("topbar-title"),ee=document.getElementById("search"),pn=document.getElementById("search-result-wrapper"),Bi=document.getElementById("search-results"),mt=document.getElementById("search-input"),re=document.getElementById("search-hints"),Ze="d-block",M="d-none",dn="input-focus",hn="d-flex",ne=class{static on(){ln.classList.add(M),fn.classList.add(M),Je.classList.add(M),ee.classList.add(hn),te.classList.add(Ze)}static off(){te.classList.remove(Ze),ee.classList.remove(hn),ln.classList.remove(M),fn.classList.remove(M),Je.classList.remove(M)}},it=class{static on(){this.resultVisible||(pn.classList.remove(M),un.forEach(t=>{t.classList.add(M)}),this.resultVisible=!0)}static off(){this.resultVisible&&(Bi.innerHTML="",re.classList.contains(M)&&re.classList.remove(M),pn.classList.add(M),un.forEach(t=>{t.classList.remove(M)}),mt.textContent="",this.resultVisible=!1)}};Et(it,"resultVisible",!1);function mn(){return te.classList.contains(Ze)}function gn(){Je.addEventListener("click",()=>{ne.on(),it.on(),mt.focus()}),te.addEventListener("click",()=>{ne.off(),it.off()}),mt.addEventListener("focus",()=>{ee.classList.add(dn)}),mt.addEventListener("focusout",()=>{ee.classList.remove(dn)}),mt.addEventListener("input",()=>{mt.value===""?mn()?re.classList.remove(M):it.off():(it.on(),mn()&&re.classList.add(M))})}function tr(){gn()}Xe();tr();Qe();})(); +(() => { + var __create = Object.create; + var __defProp = Object.defineProperty; + var __defProps = Object.defineProperties; + var __getOwnPropDesc = Object.getOwnPropertyDescriptor; + var __getOwnPropDescs = Object.getOwnPropertyDescriptors; + var __getOwnPropNames = Object.getOwnPropertyNames; + var __getOwnPropSymbols = Object.getOwnPropertySymbols; + var __getProtoOf = Object.getPrototypeOf; + var __hasOwnProp = Object.prototype.hasOwnProperty; + var __propIsEnum = Object.prototype.propertyIsEnumerable; + var __typeError = (msg) => { + throw TypeError(msg); + }; + var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; + var __spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + if (__getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(b)) { + if (__propIsEnum.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + } + return a; + }; + var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); + var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; + }; + var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; + }; + var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod + )); + var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg); + var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj)); + var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value); + var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/gohugoio/hugo-mod-jslibs-dist/popperjs/v2@v2.21100.20000/package/dist/cjs/popper.js + var require_popper = __commonJS({ + "ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/gohugoio/hugo-mod-jslibs-dist/popperjs/v2@v2.21100.20000/package/dist/cjs/popper.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + function getWindow(node) { + if (node == null) { + return window; + } + if (node.toString() !== "[object Window]") { + var ownerDocument = node.ownerDocument; + return ownerDocument ? ownerDocument.defaultView || window : window; + } + return node; + } + function isElement2(node) { + var OwnElement = getWindow(node).Element; + return node instanceof OwnElement || node instanceof Element; + } + function isHTMLElement(node) { + var OwnElement = getWindow(node).HTMLElement; + return node instanceof OwnElement || node instanceof HTMLElement; + } + function isShadowRoot(node) { + if (typeof ShadowRoot === "undefined") { + return false; + } + var OwnElement = getWindow(node).ShadowRoot; + return node instanceof OwnElement || node instanceof ShadowRoot; + } + var max = Math.max; + var min = Math.min; + var round = Math.round; + function getBoundingClientRect(element, includeScale) { + if (includeScale === void 0) { + includeScale = false; + } + var rect = element.getBoundingClientRect(); + var scaleX = 1; + var scaleY = 1; + if (isHTMLElement(element) && includeScale) { + var offsetHeight = element.offsetHeight; + var offsetWidth = element.offsetWidth; + if (offsetWidth > 0) { + scaleX = round(rect.width) / offsetWidth || 1; + } + if (offsetHeight > 0) { + scaleY = round(rect.height) / offsetHeight || 1; + } + } + return { + width: rect.width / scaleX, + height: rect.height / scaleY, + top: rect.top / scaleY, + right: rect.right / scaleX, + bottom: rect.bottom / scaleY, + left: rect.left / scaleX, + x: rect.left / scaleX, + y: rect.top / scaleY + }; + } + function getWindowScroll(node) { + var win = getWindow(node); + var scrollLeft = win.pageXOffset; + var scrollTop = win.pageYOffset; + return { + scrollLeft, + scrollTop + }; + } + function getHTMLElementScroll(element) { + return { + scrollLeft: element.scrollLeft, + scrollTop: element.scrollTop + }; + } + function getNodeScroll(node) { + if (node === getWindow(node) || !isHTMLElement(node)) { + return getWindowScroll(node); + } else { + return getHTMLElementScroll(node); + } + } + function getNodeName(element) { + return element ? (element.nodeName || "").toLowerCase() : null; + } + function getDocumentElement(element) { + return ((isElement2(element) ? element.ownerDocument : ( + // $FlowFixMe[prop-missing] + element.document + )) || window.document).documentElement; + } + function getWindowScrollBarX(element) { + return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft; + } + function getComputedStyle2(element) { + return getWindow(element).getComputedStyle(element); + } + function isScrollParent(element) { + var _getComputedStyle = getComputedStyle2(element), overflow = _getComputedStyle.overflow, overflowX = _getComputedStyle.overflowX, overflowY = _getComputedStyle.overflowY; + return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX); + } + function isElementScaled(element) { + var rect = element.getBoundingClientRect(); + var scaleX = round(rect.width) / element.offsetWidth || 1; + var scaleY = round(rect.height) / element.offsetHeight || 1; + return scaleX !== 1 || scaleY !== 1; + } + function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) { + if (isFixed === void 0) { + isFixed = false; + } + var isOffsetParentAnElement = isHTMLElement(offsetParent); + var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent); + var documentElement = getDocumentElement(offsetParent); + var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled); + var scroll = { + scrollLeft: 0, + scrollTop: 0 + }; + var offsets = { + x: 0, + y: 0 + }; + if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { + if (getNodeName(offsetParent) !== "body" || // https://github.com/popperjs/popper-core/issues/1078 + isScrollParent(documentElement)) { + scroll = getNodeScroll(offsetParent); + } + if (isHTMLElement(offsetParent)) { + offsets = getBoundingClientRect(offsetParent, true); + offsets.x += offsetParent.clientLeft; + offsets.y += offsetParent.clientTop; + } else if (documentElement) { + offsets.x = getWindowScrollBarX(documentElement); + } + } + return { + x: rect.left + scroll.scrollLeft - offsets.x, + y: rect.top + scroll.scrollTop - offsets.y, + width: rect.width, + height: rect.height + }; + } + function getLayoutRect(element) { + var clientRect = getBoundingClientRect(element); + var width = element.offsetWidth; + var height = element.offsetHeight; + if (Math.abs(clientRect.width - width) <= 1) { + width = clientRect.width; + } + if (Math.abs(clientRect.height - height) <= 1) { + height = clientRect.height; + } + return { + x: element.offsetLeft, + y: element.offsetTop, + width, + height + }; + } + function getParentNode(element) { + if (getNodeName(element) === "html") { + return element; + } + return ( + // this is a quicker (but less type safe) way to save quite some bytes from the bundle + // $FlowFixMe[incompatible-return] + // $FlowFixMe[prop-missing] + element.assignedSlot || // step into the shadow DOM of the parent of a slotted node + element.parentNode || // DOM Element detected + (isShadowRoot(element) ? element.host : null) || // ShadowRoot detected + // $FlowFixMe[incompatible-call]: HTMLElement is a Node + getDocumentElement(element) + ); + } + function getScrollParent(node) { + if (["html", "body", "#document"].indexOf(getNodeName(node)) >= 0) { + return node.ownerDocument.body; + } + if (isHTMLElement(node) && isScrollParent(node)) { + return node; + } + return getScrollParent(getParentNode(node)); + } + function listScrollParents(element, list) { + var _element$ownerDocumen; + if (list === void 0) { + list = []; + } + var scrollParent = getScrollParent(element); + var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body); + var win = getWindow(scrollParent); + var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent; + var updatedList = list.concat(target); + return isBody ? updatedList : ( + // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here + updatedList.concat(listScrollParents(getParentNode(target))) + ); + } + function isTableElement(element) { + return ["table", "td", "th"].indexOf(getNodeName(element)) >= 0; + } + function getTrueOffsetParent(element) { + if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837 + getComputedStyle2(element).position === "fixed") { + return null; + } + return element.offsetParent; + } + function getContainingBlock(element) { + var isFirefox = navigator.userAgent.toLowerCase().indexOf("firefox") !== -1; + var isIE = navigator.userAgent.indexOf("Trident") !== -1; + if (isIE && isHTMLElement(element)) { + var elementCss = getComputedStyle2(element); + if (elementCss.position === "fixed") { + return null; + } + } + var currentNode = getParentNode(element); + while (isHTMLElement(currentNode) && ["html", "body"].indexOf(getNodeName(currentNode)) < 0) { + var css = getComputedStyle2(currentNode); + if (css.transform !== "none" || css.perspective !== "none" || css.contain === "paint" || ["transform", "perspective"].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === "filter" || isFirefox && css.filter && css.filter !== "none") { + return currentNode; + } else { + currentNode = currentNode.parentNode; + } + } + return null; + } + function getOffsetParent(element) { + var window2 = getWindow(element); + var offsetParent = getTrueOffsetParent(element); + while (offsetParent && isTableElement(offsetParent) && getComputedStyle2(offsetParent).position === "static") { + offsetParent = getTrueOffsetParent(offsetParent); + } + if (offsetParent && (getNodeName(offsetParent) === "html" || getNodeName(offsetParent) === "body" && getComputedStyle2(offsetParent).position === "static")) { + return window2; + } + return offsetParent || getContainingBlock(element) || window2; + } + var top = "top"; + var bottom = "bottom"; + var right = "right"; + var left = "left"; + var auto = "auto"; + var basePlacements = [top, bottom, right, left]; + var start = "start"; + var end = "end"; + var clippingParents = "clippingParents"; + var viewport = "viewport"; + var popper = "popper"; + var reference = "reference"; + var variationPlacements = /* @__PURE__ */ basePlacements.reduce(function(acc, placement) { + return acc.concat([placement + "-" + start, placement + "-" + end]); + }, []); + var placements = /* @__PURE__ */ [].concat(basePlacements, [auto]).reduce(function(acc, placement) { + return acc.concat([placement, placement + "-" + start, placement + "-" + end]); + }, []); + var beforeRead = "beforeRead"; + var read = "read"; + var afterRead = "afterRead"; + var beforeMain = "beforeMain"; + var main = "main"; + var afterMain = "afterMain"; + var beforeWrite = "beforeWrite"; + var write = "write"; + var afterWrite = "afterWrite"; + var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite]; + function order(modifiers) { + var map = /* @__PURE__ */ new Map(); + var visited = /* @__PURE__ */ new Set(); + var result = []; + modifiers.forEach(function(modifier) { + map.set(modifier.name, modifier); + }); + function sort(modifier) { + visited.add(modifier.name); + var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []); + requires.forEach(function(dep) { + if (!visited.has(dep)) { + var depModifier = map.get(dep); + if (depModifier) { + sort(depModifier); + } + } + }); + result.push(modifier); + } + modifiers.forEach(function(modifier) { + if (!visited.has(modifier.name)) { + sort(modifier); + } + }); + return result; + } + function orderModifiers(modifiers) { + var orderedModifiers = order(modifiers); + return modifierPhases.reduce(function(acc, phase) { + return acc.concat(orderedModifiers.filter(function(modifier) { + return modifier.phase === phase; + })); + }, []); + } + function debounce(fn) { + var pending; + return function() { + if (!pending) { + pending = new Promise(function(resolve) { + Promise.resolve().then(function() { + pending = void 0; + resolve(fn()); + }); + }); + } + return pending; + }; + } + function format(str) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + return [].concat(args).reduce(function(p, c) { + return p.replace(/%s/, c); + }, str); + } + var INVALID_MODIFIER_ERROR = 'Popper: modifier "%s" provided an invalid %s property, expected %s but got %s'; + var MISSING_DEPENDENCY_ERROR = 'Popper: modifier "%s" requires "%s", but "%s" modifier is not available'; + var VALID_PROPERTIES = ["name", "enabled", "phase", "fn", "effect", "requires", "options"]; + function validateModifiers(modifiers) { + modifiers.forEach(function(modifier) { + [].concat(Object.keys(modifier), VALID_PROPERTIES).filter(function(value, index, self) { + return self.indexOf(value) === index; + }).forEach(function(key) { + switch (key) { + case "name": + if (typeof modifier.name !== "string") { + console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '"name"', '"string"', '"' + String(modifier.name) + '"')); + } + break; + case "enabled": + if (typeof modifier.enabled !== "boolean") { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"enabled"', '"boolean"', '"' + String(modifier.enabled) + '"')); + } + break; + case "phase": + if (modifierPhases.indexOf(modifier.phase) < 0) { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + modifierPhases.join(", "), '"' + String(modifier.phase) + '"')); + } + break; + case "fn": + if (typeof modifier.fn !== "function") { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"fn"', '"function"', '"' + String(modifier.fn) + '"')); + } + break; + case "effect": + if (modifier.effect != null && typeof modifier.effect !== "function") { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"effect"', '"function"', '"' + String(modifier.fn) + '"')); + } + break; + case "requires": + if (modifier.requires != null && !Array.isArray(modifier.requires)) { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requires"', '"array"', '"' + String(modifier.requires) + '"')); + } + break; + case "requiresIfExists": + if (!Array.isArray(modifier.requiresIfExists)) { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requiresIfExists"', '"array"', '"' + String(modifier.requiresIfExists) + '"')); + } + break; + case "options": + case "data": + break; + default: + console.error('PopperJS: an invalid property has been provided to the "' + modifier.name + '" modifier, valid properties are ' + VALID_PROPERTIES.map(function(s) { + return '"' + s + '"'; + }).join(", ") + '; but "' + key + '" was provided.'); + } + modifier.requires && modifier.requires.forEach(function(requirement) { + if (modifiers.find(function(mod) { + return mod.name === requirement; + }) == null) { + console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement)); + } + }); + }); + }); + } + function uniqueBy(arr, fn) { + var identifiers = /* @__PURE__ */ new Set(); + return arr.filter(function(item) { + var identifier = fn(item); + if (!identifiers.has(identifier)) { + identifiers.add(identifier); + return true; + } + }); + } + function getBasePlacement(placement) { + return placement.split("-")[0]; + } + function mergeByName(modifiers) { + var merged = modifiers.reduce(function(merged2, current) { + var existing = merged2[current.name]; + merged2[current.name] = existing ? Object.assign({}, existing, current, { + options: Object.assign({}, existing.options, current.options), + data: Object.assign({}, existing.data, current.data) + }) : current; + return merged2; + }, {}); + return Object.keys(merged).map(function(key) { + return merged[key]; + }); + } + function getViewportRect(element) { + var win = getWindow(element); + var html = getDocumentElement(element); + var visualViewport = win.visualViewport; + var width = html.clientWidth; + var height = html.clientHeight; + var x = 0; + var y = 0; + if (visualViewport) { + width = visualViewport.width; + height = visualViewport.height; + if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) { + x = visualViewport.offsetLeft; + y = visualViewport.offsetTop; + } + } + return { + width, + height, + x: x + getWindowScrollBarX(element), + y + }; + } + function getDocumentRect(element) { + var _element$ownerDocumen; + var html = getDocumentElement(element); + var winScroll = getWindowScroll(element); + var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body; + var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); + var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); + var x = -winScroll.scrollLeft + getWindowScrollBarX(element); + var y = -winScroll.scrollTop; + if (getComputedStyle2(body || html).direction === "rtl") { + x += max(html.clientWidth, body ? body.clientWidth : 0) - width; + } + return { + width, + height, + x, + y + }; + } + function contains(parent, child) { + var rootNode = child.getRootNode && child.getRootNode(); + if (parent.contains(child)) { + return true; + } else if (rootNode && isShadowRoot(rootNode)) { + var next = child; + do { + if (next && parent.isSameNode(next)) { + return true; + } + next = next.parentNode || next.host; + } while (next); + } + return false; + } + function rectToClientRect(rect) { + return Object.assign({}, rect, { + left: rect.x, + top: rect.y, + right: rect.x + rect.width, + bottom: rect.y + rect.height + }); + } + function getInnerBoundingClientRect(element) { + var rect = getBoundingClientRect(element); + rect.top = rect.top + element.clientTop; + rect.left = rect.left + element.clientLeft; + rect.bottom = rect.top + element.clientHeight; + rect.right = rect.left + element.clientWidth; + rect.width = element.clientWidth; + rect.height = element.clientHeight; + rect.x = rect.left; + rect.y = rect.top; + return rect; + } + function getClientRectFromMixedType(element, clippingParent) { + return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isElement2(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element))); + } + function getClippingParents(element) { + var clippingParents2 = listScrollParents(getParentNode(element)); + var canEscapeClipping = ["absolute", "fixed"].indexOf(getComputedStyle2(element).position) >= 0; + var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element; + if (!isElement2(clipperElement)) { + return []; + } + return clippingParents2.filter(function(clippingParent) { + return isElement2(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== "body" && (canEscapeClipping ? getComputedStyle2(clippingParent).position !== "static" : true); + }); + } + function getClippingRect(element, boundary, rootBoundary) { + var mainClippingParents = boundary === "clippingParents" ? getClippingParents(element) : [].concat(boundary); + var clippingParents2 = [].concat(mainClippingParents, [rootBoundary]); + var firstClippingParent = clippingParents2[0]; + var clippingRect = clippingParents2.reduce(function(accRect, clippingParent) { + var rect = getClientRectFromMixedType(element, clippingParent); + accRect.top = max(rect.top, accRect.top); + accRect.right = min(rect.right, accRect.right); + accRect.bottom = min(rect.bottom, accRect.bottom); + accRect.left = max(rect.left, accRect.left); + return accRect; + }, getClientRectFromMixedType(element, firstClippingParent)); + clippingRect.width = clippingRect.right - clippingRect.left; + clippingRect.height = clippingRect.bottom - clippingRect.top; + clippingRect.x = clippingRect.left; + clippingRect.y = clippingRect.top; + return clippingRect; + } + function getVariation(placement) { + return placement.split("-")[1]; + } + function getMainAxisFromPlacement(placement) { + return ["top", "bottom"].indexOf(placement) >= 0 ? "x" : "y"; + } + function computeOffsets(_ref) { + var reference2 = _ref.reference, element = _ref.element, placement = _ref.placement; + var basePlacement = placement ? getBasePlacement(placement) : null; + var variation = placement ? getVariation(placement) : null; + var commonX = reference2.x + reference2.width / 2 - element.width / 2; + var commonY = reference2.y + reference2.height / 2 - element.height / 2; + var offsets; + switch (basePlacement) { + case top: + offsets = { + x: commonX, + y: reference2.y - element.height + }; + break; + case bottom: + offsets = { + x: commonX, + y: reference2.y + reference2.height + }; + break; + case right: + offsets = { + x: reference2.x + reference2.width, + y: commonY + }; + break; + case left: + offsets = { + x: reference2.x - element.width, + y: commonY + }; + break; + default: + offsets = { + x: reference2.x, + y: reference2.y + }; + } + var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null; + if (mainAxis != null) { + var len = mainAxis === "y" ? "height" : "width"; + switch (variation) { + case start: + offsets[mainAxis] = offsets[mainAxis] - (reference2[len] / 2 - element[len] / 2); + break; + case end: + offsets[mainAxis] = offsets[mainAxis] + (reference2[len] / 2 - element[len] / 2); + break; + } + } + return offsets; + } + function getFreshSideObject() { + return { + top: 0, + right: 0, + bottom: 0, + left: 0 + }; + } + function mergePaddingObject(paddingObject) { + return Object.assign({}, getFreshSideObject(), paddingObject); + } + function expandToHashMap(value, keys) { + return keys.reduce(function(hashMap, key) { + hashMap[key] = value; + return hashMap; + }, {}); + } + function detectOverflow(state, options) { + if (options === void 0) { + options = {}; + } + var _options = options, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, _options$elementConte = _options.elementContext, elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, _options$altBoundary = _options.altBoundary, altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, _options$padding = _options.padding, padding = _options$padding === void 0 ? 0 : _options$padding; + var paddingObject = mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements)); + var altContext = elementContext === popper ? reference : popper; + var popperRect = state.rects.popper; + var element = state.elements[altBoundary ? altContext : elementContext]; + var clippingClientRect = getClippingRect(isElement2(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary); + var referenceClientRect = getBoundingClientRect(state.elements.reference); + var popperOffsets2 = computeOffsets({ + reference: referenceClientRect, + element: popperRect, + strategy: "absolute", + placement + }); + var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets2)); + var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; + var overflowOffsets = { + top: clippingClientRect.top - elementClientRect.top + paddingObject.top, + bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom, + left: clippingClientRect.left - elementClientRect.left + paddingObject.left, + right: elementClientRect.right - clippingClientRect.right + paddingObject.right + }; + var offsetData = state.modifiersData.offset; + if (elementContext === popper && offsetData) { + var offset2 = offsetData[placement]; + Object.keys(overflowOffsets).forEach(function(key) { + var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1; + var axis = [top, bottom].indexOf(key) >= 0 ? "y" : "x"; + overflowOffsets[key] += offset2[axis] * multiply; + }); + } + return overflowOffsets; + } + var INVALID_ELEMENT_ERROR = "Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element."; + var INFINITE_LOOP_ERROR = "Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash."; + var DEFAULT_OPTIONS = { + placement: "bottom", + modifiers: [], + strategy: "absolute" + }; + function areValidElements() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + return !args.some(function(element) { + return !(element && typeof element.getBoundingClientRect === "function"); + }); + } + function popperGenerator(generatorOptions) { + if (generatorOptions === void 0) { + generatorOptions = {}; + } + var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers2 = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2; + return function createPopper3(reference2, popper2, options) { + if (options === void 0) { + options = defaultOptions; + } + var state = { + placement: "bottom", + orderedModifiers: [], + options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions), + modifiersData: {}, + elements: { + reference: reference2, + popper: popper2 + }, + attributes: {}, + styles: {} + }; + var effectCleanupFns = []; + var isDestroyed = false; + var instance = { + state, + setOptions: function setOptions(setOptionsAction) { + var options2 = typeof setOptionsAction === "function" ? setOptionsAction(state.options) : setOptionsAction; + cleanupModifierEffects(); + state.options = Object.assign({}, defaultOptions, state.options, options2); + state.scrollParents = { + reference: isElement2(reference2) ? listScrollParents(reference2) : reference2.contextElement ? listScrollParents(reference2.contextElement) : [], + popper: listScrollParents(popper2) + }; + var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers2, state.options.modifiers))); + state.orderedModifiers = orderedModifiers.filter(function(m) { + return m.enabled; + }); + if (true) { + var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function(_ref) { + var name = _ref.name; + return name; + }); + validateModifiers(modifiers); + if (getBasePlacement(state.options.placement) === auto) { + var flipModifier = state.orderedModifiers.find(function(_ref2) { + var name = _ref2.name; + return name === "flip"; + }); + if (!flipModifier) { + console.error(['Popper: "auto" placements require the "flip" modifier be', "present and enabled to work."].join(" ")); + } + } + var _getComputedStyle = getComputedStyle2(popper2), marginTop = _getComputedStyle.marginTop, marginRight = _getComputedStyle.marginRight, marginBottom = _getComputedStyle.marginBottom, marginLeft = _getComputedStyle.marginLeft; + if ([marginTop, marginRight, marginBottom, marginLeft].some(function(margin) { + return parseFloat(margin); + })) { + console.warn(['Popper: CSS "margin" styles cannot be used to apply padding', "between the popper and its reference element or boundary.", "To replicate margin, use the `offset` modifier, as well as", "the `padding` option in the `preventOverflow` and `flip`", "modifiers."].join(" ")); + } + } + runModifierEffects(); + return instance.update(); + }, + // Sync update – it will always be executed, even if not necessary. This + // is useful for low frequency updates where sync behavior simplifies the + // logic. + // For high frequency updates (e.g. `resize` and `scroll` events), always + // prefer the async Popper#update method + forceUpdate: function forceUpdate() { + if (isDestroyed) { + return; + } + var _state$elements = state.elements, reference3 = _state$elements.reference, popper3 = _state$elements.popper; + if (!areValidElements(reference3, popper3)) { + if (true) { + console.error(INVALID_ELEMENT_ERROR); + } + return; + } + state.rects = { + reference: getCompositeRect(reference3, getOffsetParent(popper3), state.options.strategy === "fixed"), + popper: getLayoutRect(popper3) + }; + state.reset = false; + state.placement = state.options.placement; + state.orderedModifiers.forEach(function(modifier) { + return state.modifiersData[modifier.name] = Object.assign({}, modifier.data); + }); + var __debug_loops__ = 0; + for (var index = 0; index < state.orderedModifiers.length; index++) { + if (true) { + __debug_loops__ += 1; + if (__debug_loops__ > 100) { + console.error(INFINITE_LOOP_ERROR); + break; + } + } + if (state.reset === true) { + state.reset = false; + index = -1; + continue; + } + var _state$orderedModifie = state.orderedModifiers[index], fn = _state$orderedModifie.fn, _state$orderedModifie2 = _state$orderedModifie.options, _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, name = _state$orderedModifie.name; + if (typeof fn === "function") { + state = fn({ + state, + options: _options, + name, + instance + }) || state; + } + } + }, + // Async and optimistically optimized update – it will not be executed if + // not necessary (debounced to run at most once-per-tick) + update: debounce(function() { + return new Promise(function(resolve) { + instance.forceUpdate(); + resolve(state); + }); + }), + destroy: function destroy() { + cleanupModifierEffects(); + isDestroyed = true; + } + }; + if (!areValidElements(reference2, popper2)) { + if (true) { + console.error(INVALID_ELEMENT_ERROR); + } + return instance; + } + instance.setOptions(options).then(function(state2) { + if (!isDestroyed && options.onFirstUpdate) { + options.onFirstUpdate(state2); + } + }); + function runModifierEffects() { + state.orderedModifiers.forEach(function(_ref3) { + var name = _ref3.name, _ref3$options = _ref3.options, options2 = _ref3$options === void 0 ? {} : _ref3$options, effect2 = _ref3.effect; + if (typeof effect2 === "function") { + var cleanupFn = effect2({ + state, + name, + instance, + options: options2 + }); + var noopFn = function noopFn2() { + }; + effectCleanupFns.push(cleanupFn || noopFn); + } + }); + } + function cleanupModifierEffects() { + effectCleanupFns.forEach(function(fn) { + return fn(); + }); + effectCleanupFns = []; + } + return instance; + }; + } + var passive = { + passive: true + }; + function effect$2(_ref) { + var state = _ref.state, instance = _ref.instance, options = _ref.options; + var _options$scroll = options.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options.resize, resize = _options$resize === void 0 ? true : _options$resize; + var window2 = getWindow(state.elements.popper); + var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper); + if (scroll) { + scrollParents.forEach(function(scrollParent) { + scrollParent.addEventListener("scroll", instance.update, passive); + }); + } + if (resize) { + window2.addEventListener("resize", instance.update, passive); + } + return function() { + if (scroll) { + scrollParents.forEach(function(scrollParent) { + scrollParent.removeEventListener("scroll", instance.update, passive); + }); + } + if (resize) { + window2.removeEventListener("resize", instance.update, passive); + } + }; + } + var eventListeners = { + name: "eventListeners", + enabled: true, + phase: "write", + fn: function fn() { + }, + effect: effect$2, + data: {} + }; + function popperOffsets(_ref) { + var state = _ref.state, name = _ref.name; + state.modifiersData[name] = computeOffsets({ + reference: state.rects.reference, + element: state.rects.popper, + strategy: "absolute", + placement: state.placement + }); + } + var popperOffsets$1 = { + name: "popperOffsets", + enabled: true, + phase: "read", + fn: popperOffsets, + data: {} + }; + var unsetSides = { + top: "auto", + right: "auto", + bottom: "auto", + left: "auto" + }; + function roundOffsetsByDPR(_ref) { + var x = _ref.x, y = _ref.y; + var win = window; + var dpr = win.devicePixelRatio || 1; + return { + x: round(x * dpr) / dpr || 0, + y: round(y * dpr) / dpr || 0 + }; + } + function mapToStyles(_ref2) { + var _Object$assign2; + var popper2 = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, variation = _ref2.variation, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets, isFixed = _ref2.isFixed; + var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === "function" ? roundOffsets(offsets) : offsets, _ref3$x = _ref3.x, x = _ref3$x === void 0 ? 0 : _ref3$x, _ref3$y = _ref3.y, y = _ref3$y === void 0 ? 0 : _ref3$y; + var hasX = offsets.hasOwnProperty("x"); + var hasY = offsets.hasOwnProperty("y"); + var sideX = left; + var sideY = top; + var win = window; + if (adaptive) { + var offsetParent = getOffsetParent(popper2); + var heightProp = "clientHeight"; + var widthProp = "clientWidth"; + if (offsetParent === getWindow(popper2)) { + offsetParent = getDocumentElement(popper2); + if (getComputedStyle2(offsetParent).position !== "static" && position === "absolute") { + heightProp = "scrollHeight"; + widthProp = "scrollWidth"; + } + } + offsetParent = offsetParent; + if (placement === top || (placement === left || placement === right) && variation === end) { + sideY = bottom; + var offsetY = isFixed && win.visualViewport ? win.visualViewport.height : ( + // $FlowFixMe[prop-missing] + offsetParent[heightProp] + ); + y -= offsetY - popperRect.height; + y *= gpuAcceleration ? 1 : -1; + } + if (placement === left || (placement === top || placement === bottom) && variation === end) { + sideX = right; + var offsetX = isFixed && win.visualViewport ? win.visualViewport.width : ( + // $FlowFixMe[prop-missing] + offsetParent[widthProp] + ); + x -= offsetX - popperRect.width; + x *= gpuAcceleration ? 1 : -1; + } + } + var commonStyles = Object.assign({ + position + }, adaptive && unsetSides); + if (gpuAcceleration) { + var _Object$assign; + return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? "0" : "", _Object$assign[sideX] = hasX ? "0" : "", _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); + } + return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : "", _Object$assign2[sideX] = hasX ? x + "px" : "", _Object$assign2.transform = "", _Object$assign2)); + } + function computeStyles(_ref4) { + var state = _ref4.state, options = _ref4.options; + var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets; + if (true) { + var transitionProperty = getComputedStyle2(state.elements.popper).transitionProperty || ""; + if (adaptive && ["transform", "top", "right", "bottom", "left"].some(function(property) { + return transitionProperty.indexOf(property) >= 0; + })) { + console.warn(["Popper: Detected CSS transitions on at least one of the following", 'CSS properties: "transform", "top", "right", "bottom", "left".', "\n\n", 'Disable the "computeStyles" modifier\'s `adaptive` option to allow', "for smooth transitions, or remove these properties from the CSS", "transition declaration on the popper element if only transitioning", "opacity or background-color for example.", "\n\n", "We recommend using the popper element as a wrapper around an inner", "element that can have any CSS property transitioned for animations."].join(" ")); + } + } + var commonStyles = { + placement: getBasePlacement(state.placement), + variation: getVariation(state.placement), + popper: state.elements.popper, + popperRect: state.rects.popper, + gpuAcceleration, + isFixed: state.options.strategy === "fixed" + }; + if (state.modifiersData.popperOffsets != null) { + state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, { + offsets: state.modifiersData.popperOffsets, + position: state.options.strategy, + adaptive, + roundOffsets + }))); + } + if (state.modifiersData.arrow != null) { + state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, { + offsets: state.modifiersData.arrow, + position: "absolute", + adaptive: false, + roundOffsets + }))); + } + state.attributes.popper = Object.assign({}, state.attributes.popper, { + "data-popper-placement": state.placement + }); + } + var computeStyles$1 = { + name: "computeStyles", + enabled: true, + phase: "beforeWrite", + fn: computeStyles, + data: {} + }; + function applyStyles(_ref) { + var state = _ref.state; + Object.keys(state.elements).forEach(function(name) { + var style = state.styles[name] || {}; + var attributes = state.attributes[name] || {}; + var element = state.elements[name]; + if (!isHTMLElement(element) || !getNodeName(element)) { + return; + } + Object.assign(element.style, style); + Object.keys(attributes).forEach(function(name2) { + var value = attributes[name2]; + if (value === false) { + element.removeAttribute(name2); + } else { + element.setAttribute(name2, value === true ? "" : value); + } + }); + }); + } + function effect$1(_ref2) { + var state = _ref2.state; + var initialStyles = { + popper: { + position: state.options.strategy, + left: "0", + top: "0", + margin: "0" + }, + arrow: { + position: "absolute" + }, + reference: {} + }; + Object.assign(state.elements.popper.style, initialStyles.popper); + state.styles = initialStyles; + if (state.elements.arrow) { + Object.assign(state.elements.arrow.style, initialStyles.arrow); + } + return function() { + Object.keys(state.elements).forEach(function(name) { + var element = state.elements[name]; + var attributes = state.attributes[name] || {}; + var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); + var style = styleProperties.reduce(function(style2, property) { + style2[property] = ""; + return style2; + }, {}); + if (!isHTMLElement(element) || !getNodeName(element)) { + return; + } + Object.assign(element.style, style); + Object.keys(attributes).forEach(function(attribute) { + element.removeAttribute(attribute); + }); + }); + }; + } + var applyStyles$1 = { + name: "applyStyles", + enabled: true, + phase: "write", + fn: applyStyles, + effect: effect$1, + requires: ["computeStyles"] + }; + function distanceAndSkiddingToXY(placement, rects, offset2) { + var basePlacement = getBasePlacement(placement); + var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1; + var _ref = typeof offset2 === "function" ? offset2(Object.assign({}, rects, { + placement + })) : offset2, skidding = _ref[0], distance = _ref[1]; + skidding = skidding || 0; + distance = (distance || 0) * invertDistance; + return [left, right].indexOf(basePlacement) >= 0 ? { + x: distance, + y: skidding + } : { + x: skidding, + y: distance + }; + } + function offset(_ref2) { + var state = _ref2.state, options = _ref2.options, name = _ref2.name; + var _options$offset = options.offset, offset2 = _options$offset === void 0 ? [0, 0] : _options$offset; + var data = placements.reduce(function(acc, placement) { + acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset2); + return acc; + }, {}); + var _data$state$placement = data[state.placement], x = _data$state$placement.x, y = _data$state$placement.y; + if (state.modifiersData.popperOffsets != null) { + state.modifiersData.popperOffsets.x += x; + state.modifiersData.popperOffsets.y += y; + } + state.modifiersData[name] = data; + } + var offset$1 = { + name: "offset", + enabled: true, + phase: "main", + requires: ["popperOffsets"], + fn: offset + }; + var hash$1 = { + left: "right", + right: "left", + bottom: "top", + top: "bottom" + }; + function getOppositePlacement(placement) { + return placement.replace(/left|right|bottom|top/g, function(matched) { + return hash$1[matched]; + }); + } + var hash = { + start: "end", + end: "start" + }; + function getOppositeVariationPlacement(placement) { + return placement.replace(/start|end/g, function(matched) { + return hash[matched]; + }); + } + function computeAutoPlacement(state, options) { + if (options === void 0) { + options = {}; + } + var _options = options, placement = _options.placement, boundary = _options.boundary, rootBoundary = _options.rootBoundary, padding = _options.padding, flipVariations = _options.flipVariations, _options$allowedAutoP = _options.allowedAutoPlacements, allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP; + var variation = getVariation(placement); + var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function(placement2) { + return getVariation(placement2) === variation; + }) : basePlacements; + var allowedPlacements = placements$1.filter(function(placement2) { + return allowedAutoPlacements.indexOf(placement2) >= 0; + }); + if (allowedPlacements.length === 0) { + allowedPlacements = placements$1; + if (true) { + console.error(["Popper: The `allowedAutoPlacements` option did not allow any", "placements. Ensure the `placement` option matches the variation", "of the allowed placements.", 'For example, "auto" cannot be used to allow "bottom-start".', 'Use "auto-start" instead.'].join(" ")); + } + } + var overflows = allowedPlacements.reduce(function(acc, placement2) { + acc[placement2] = detectOverflow(state, { + placement: placement2, + boundary, + rootBoundary, + padding + })[getBasePlacement(placement2)]; + return acc; + }, {}); + return Object.keys(overflows).sort(function(a, b) { + return overflows[a] - overflows[b]; + }); + } + function getExpandedFallbackPlacements(placement) { + if (getBasePlacement(placement) === auto) { + return []; + } + var oppositePlacement = getOppositePlacement(placement); + return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)]; + } + function flip(_ref) { + var state = _ref.state, options = _ref.options, name = _ref.name; + if (state.modifiersData[name]._skip) { + return; + } + var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, specifiedFallbackPlacements = options.fallbackPlacements, padding = options.padding, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, _options$flipVariatio = options.flipVariations, flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, allowedAutoPlacements = options.allowedAutoPlacements; + var preferredPlacement = state.options.placement; + var basePlacement = getBasePlacement(preferredPlacement); + var isBasePlacement = basePlacement === preferredPlacement; + var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement)); + var placements2 = [preferredPlacement].concat(fallbackPlacements).reduce(function(acc, placement2) { + return acc.concat(getBasePlacement(placement2) === auto ? computeAutoPlacement(state, { + placement: placement2, + boundary, + rootBoundary, + padding, + flipVariations, + allowedAutoPlacements + }) : placement2); + }, []); + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var checksMap = /* @__PURE__ */ new Map(); + var makeFallbackChecks = true; + var firstFittingPlacement = placements2[0]; + for (var i = 0; i < placements2.length; i++) { + var placement = placements2[i]; + var _basePlacement = getBasePlacement(placement); + var isStartVariation = getVariation(placement) === start; + var isVertical = [top, bottom].indexOf(_basePlacement) >= 0; + var len = isVertical ? "width" : "height"; + var overflow = detectOverflow(state, { + placement, + boundary, + rootBoundary, + altBoundary, + padding + }); + var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top; + if (referenceRect[len] > popperRect[len]) { + mainVariationSide = getOppositePlacement(mainVariationSide); + } + var altVariationSide = getOppositePlacement(mainVariationSide); + var checks = []; + if (checkMainAxis) { + checks.push(overflow[_basePlacement] <= 0); + } + if (checkAltAxis) { + checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0); + } + if (checks.every(function(check) { + return check; + })) { + firstFittingPlacement = placement; + makeFallbackChecks = false; + break; + } + checksMap.set(placement, checks); + } + if (makeFallbackChecks) { + var numberOfChecks = flipVariations ? 3 : 1; + var _loop = function _loop2(_i2) { + var fittingPlacement = placements2.find(function(placement2) { + var checks2 = checksMap.get(placement2); + if (checks2) { + return checks2.slice(0, _i2).every(function(check) { + return check; + }); + } + }); + if (fittingPlacement) { + firstFittingPlacement = fittingPlacement; + return "break"; + } + }; + for (var _i = numberOfChecks; _i > 0; _i--) { + var _ret = _loop(_i); + if (_ret === "break") break; + } + } + if (state.placement !== firstFittingPlacement) { + state.modifiersData[name]._skip = true; + state.placement = firstFittingPlacement; + state.reset = true; + } + } + var flip$1 = { + name: "flip", + enabled: true, + phase: "main", + fn: flip, + requiresIfExists: ["offset"], + data: { + _skip: false + } + }; + function getAltAxis(axis) { + return axis === "x" ? "y" : "x"; + } + function within(min$1, value, max$1) { + return max(min$1, min(value, max$1)); + } + function withinMaxClamp(min2, value, max2) { + var v = within(min2, value, max2); + return v > max2 ? max2 : v; + } + function preventOverflow(_ref) { + var state = _ref.state, options = _ref.options, name = _ref.name; + var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, padding = options.padding, _options$tether = options.tether, tether = _options$tether === void 0 ? true : _options$tether, _options$tetherOffset = options.tetherOffset, tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset; + var overflow = detectOverflow(state, { + boundary, + rootBoundary, + padding, + altBoundary + }); + var basePlacement = getBasePlacement(state.placement); + var variation = getVariation(state.placement); + var isBasePlacement = !variation; + var mainAxis = getMainAxisFromPlacement(basePlacement); + var altAxis = getAltAxis(mainAxis); + var popperOffsets2 = state.modifiersData.popperOffsets; + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var tetherOffsetValue = typeof tetherOffset === "function" ? tetherOffset(Object.assign({}, state.rects, { + placement: state.placement + })) : tetherOffset; + var normalizedTetherOffsetValue = typeof tetherOffsetValue === "number" ? { + mainAxis: tetherOffsetValue, + altAxis: tetherOffsetValue + } : Object.assign({ + mainAxis: 0, + altAxis: 0 + }, tetherOffsetValue); + var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null; + var data = { + x: 0, + y: 0 + }; + if (!popperOffsets2) { + return; + } + if (checkMainAxis) { + var _offsetModifierState$; + var mainSide = mainAxis === "y" ? top : left; + var altSide = mainAxis === "y" ? bottom : right; + var len = mainAxis === "y" ? "height" : "width"; + var offset2 = popperOffsets2[mainAxis]; + var min$1 = offset2 + overflow[mainSide]; + var max$1 = offset2 - overflow[altSide]; + var additive = tether ? -popperRect[len] / 2 : 0; + var minLen = variation === start ? referenceRect[len] : popperRect[len]; + var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; + var arrowElement = state.elements.arrow; + var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : { + width: 0, + height: 0 + }; + var arrowPaddingObject = state.modifiersData["arrow#persistent"] ? state.modifiersData["arrow#persistent"].padding : getFreshSideObject(); + var arrowPaddingMin = arrowPaddingObject[mainSide]; + var arrowPaddingMax = arrowPaddingObject[altSide]; + var arrowLen = within(0, referenceRect[len], arrowRect[len]); + var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis; + var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis; + var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow); + var clientOffset = arrowOffsetParent ? mainAxis === "y" ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0; + var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0; + var tetherMin = offset2 + minOffset - offsetModifierValue - clientOffset; + var tetherMax = offset2 + maxOffset - offsetModifierValue; + var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset2, tether ? max(max$1, tetherMax) : max$1); + popperOffsets2[mainAxis] = preventedOffset; + data[mainAxis] = preventedOffset - offset2; + } + if (checkAltAxis) { + var _offsetModifierState$2; + var _mainSide = mainAxis === "x" ? top : left; + var _altSide = mainAxis === "x" ? bottom : right; + var _offset = popperOffsets2[altAxis]; + var _len = altAxis === "y" ? "height" : "width"; + var _min = _offset + overflow[_mainSide]; + var _max = _offset - overflow[_altSide]; + var isOriginSide = [top, left].indexOf(basePlacement) !== -1; + var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0; + var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis; + var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max; + var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max); + popperOffsets2[altAxis] = _preventedOffset; + data[altAxis] = _preventedOffset - _offset; + } + state.modifiersData[name] = data; + } + var preventOverflow$1 = { + name: "preventOverflow", + enabled: true, + phase: "main", + fn: preventOverflow, + requiresIfExists: ["offset"] + }; + var toPaddingObject = function toPaddingObject2(padding, state) { + padding = typeof padding === "function" ? padding(Object.assign({}, state.rects, { + placement: state.placement + })) : padding; + return mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements)); + }; + function arrow(_ref) { + var _state$modifiersData$; + var state = _ref.state, name = _ref.name, options = _ref.options; + var arrowElement = state.elements.arrow; + var popperOffsets2 = state.modifiersData.popperOffsets; + var basePlacement = getBasePlacement(state.placement); + var axis = getMainAxisFromPlacement(basePlacement); + var isVertical = [left, right].indexOf(basePlacement) >= 0; + var len = isVertical ? "height" : "width"; + if (!arrowElement || !popperOffsets2) { + return; + } + var paddingObject = toPaddingObject(options.padding, state); + var arrowRect = getLayoutRect(arrowElement); + var minProp = axis === "y" ? top : left; + var maxProp = axis === "y" ? bottom : right; + var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets2[axis] - state.rects.popper[len]; + var startDiff = popperOffsets2[axis] - state.rects.reference[axis]; + var arrowOffsetParent = getOffsetParent(arrowElement); + var clientSize = arrowOffsetParent ? axis === "y" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0; + var centerToReference = endDiff / 2 - startDiff / 2; + var min2 = paddingObject[minProp]; + var max2 = clientSize - arrowRect[len] - paddingObject[maxProp]; + var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference; + var offset2 = within(min2, center, max2); + var axisProp = axis; + state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset2, _state$modifiersData$.centerOffset = offset2 - center, _state$modifiersData$); + } + function effect(_ref2) { + var state = _ref2.state, options = _ref2.options; + var _options$element = options.element, arrowElement = _options$element === void 0 ? "[data-popper-arrow]" : _options$element; + if (arrowElement == null) { + return; + } + if (typeof arrowElement === "string") { + arrowElement = state.elements.popper.querySelector(arrowElement); + if (!arrowElement) { + return; + } + } + if (true) { + if (!isHTMLElement(arrowElement)) { + console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).', "To use an SVG arrow, wrap it in an HTMLElement that will be used as", "the arrow."].join(" ")); + } + } + if (!contains(state.elements.popper, arrowElement)) { + if (true) { + console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper', "element."].join(" ")); + } + return; + } + state.elements.arrow = arrowElement; + } + var arrow$1 = { + name: "arrow", + enabled: true, + phase: "main", + fn: arrow, + effect, + requires: ["popperOffsets"], + requiresIfExists: ["preventOverflow"] + }; + function getSideOffsets(overflow, rect, preventedOffsets) { + if (preventedOffsets === void 0) { + preventedOffsets = { + x: 0, + y: 0 + }; + } + return { + top: overflow.top - rect.height - preventedOffsets.y, + right: overflow.right - rect.width + preventedOffsets.x, + bottom: overflow.bottom - rect.height + preventedOffsets.y, + left: overflow.left - rect.width - preventedOffsets.x + }; + } + function isAnySideFullyClipped(overflow) { + return [top, right, bottom, left].some(function(side) { + return overflow[side] >= 0; + }); + } + function hide(_ref) { + var state = _ref.state, name = _ref.name; + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var preventedOffsets = state.modifiersData.preventOverflow; + var referenceOverflow = detectOverflow(state, { + elementContext: "reference" + }); + var popperAltOverflow = detectOverflow(state, { + altBoundary: true + }); + var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect); + var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets); + var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets); + var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets); + state.modifiersData[name] = { + referenceClippingOffsets, + popperEscapeOffsets, + isReferenceHidden, + hasPopperEscaped + }; + state.attributes.popper = Object.assign({}, state.attributes.popper, { + "data-popper-reference-hidden": isReferenceHidden, + "data-popper-escaped": hasPopperEscaped + }); + } + var hide$1 = { + name: "hide", + enabled: true, + phase: "main", + requiresIfExists: ["preventOverflow"], + fn: hide + }; + var defaultModifiers$1 = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1]; + var createPopper$1 = /* @__PURE__ */ popperGenerator({ + defaultModifiers: defaultModifiers$1 + }); + var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1]; + var createPopper2 = /* @__PURE__ */ popperGenerator({ + defaultModifiers + }); + exports.applyStyles = applyStyles$1; + exports.arrow = arrow$1; + exports.computeStyles = computeStyles$1; + exports.createPopper = createPopper2; + exports.createPopperLite = createPopper$1; + exports.defaultModifiers = defaultModifiers; + exports.detectOverflow = detectOverflow; + exports.eventListeners = eventListeners; + exports.flip = flip$1; + exports.hide = hide$1; + exports.offset = offset$1; + exports.popperGenerator = popperGenerator; + exports.popperOffsets = popperOffsets$1; + exports.preventOverflow = preventOverflow$1; + } + }); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/dom/data.js + var elementMap = /* @__PURE__ */ new Map(); + var data_default = { + set(element, key, instance) { + if (!elementMap.has(element)) { + elementMap.set(element, /* @__PURE__ */ new Map()); + } + const instanceMap = elementMap.get(element); + if (!instanceMap.has(key) && instanceMap.size !== 0) { + console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`); + return; + } + instanceMap.set(key, instance); + }, + get(element, key) { + if (elementMap.has(element)) { + return elementMap.get(element).get(key) || null; + } + return null; + }, + remove(element, key) { + if (!elementMap.has(element)) { + return; + } + const instanceMap = elementMap.get(element); + instanceMap.delete(key); + if (instanceMap.size === 0) { + elementMap.delete(element); + } + } + }; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/util/index.js + var MAX_UID = 1e6; + var MILLISECONDS_MULTIPLIER = 1e3; + var TRANSITION_END = "transitionend"; + var parseSelector = (selector) => { + if (selector && window.CSS && window.CSS.escape) { + selector = selector.replace(/#([^\s"#']+)/g, (match, id) => `#${CSS.escape(id)}`); + } + return selector; + }; + var toType = (object) => { + if (object === null || object === void 0) { + return `${object}`; + } + return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase(); + }; + var getUID = (prefix) => { + do { + prefix += Math.floor(Math.random() * MAX_UID); + } while (document.getElementById(prefix)); + return prefix; + }; + var getTransitionDurationFromElement = (element) => { + if (!element) { + return 0; + } + let { transitionDuration, transitionDelay } = window.getComputedStyle(element); + const floatTransitionDuration = Number.parseFloat(transitionDuration); + const floatTransitionDelay = Number.parseFloat(transitionDelay); + if (!floatTransitionDuration && !floatTransitionDelay) { + return 0; + } + transitionDuration = transitionDuration.split(",")[0]; + transitionDelay = transitionDelay.split(",")[0]; + return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; + }; + var triggerTransitionEnd = (element) => { + element.dispatchEvent(new Event(TRANSITION_END)); + }; + var isElement = (object) => { + if (!object || typeof object !== "object") { + return false; + } + if (typeof object.jquery !== "undefined") { + object = object[0]; + } + return typeof object.nodeType !== "undefined"; + }; + var getElement = (object) => { + if (isElement(object)) { + return object.jquery ? object[0] : object; + } + if (typeof object === "string" && object.length > 0) { + return document.querySelector(parseSelector(object)); + } + return null; + }; + var isVisible = (element) => { + if (!isElement(element) || element.getClientRects().length === 0) { + return false; + } + const elementIsVisible = getComputedStyle(element).getPropertyValue("visibility") === "visible"; + const closedDetails = element.closest("details:not([open])"); + if (!closedDetails) { + return elementIsVisible; + } + if (closedDetails !== element) { + const summary = element.closest("summary"); + if (summary && summary.parentNode !== closedDetails) { + return false; + } + if (summary === null) { + return false; + } + } + return elementIsVisible; + }; + var isDisabled = (element) => { + if (!element || element.nodeType !== Node.ELEMENT_NODE) { + return true; + } + if (element.classList.contains("disabled")) { + return true; + } + if (typeof element.disabled !== "undefined") { + return element.disabled; + } + return element.hasAttribute("disabled") && element.getAttribute("disabled") !== "false"; + }; + var findShadowRoot = (element) => { + if (!document.documentElement.attachShadow) { + return null; + } + if (typeof element.getRootNode === "function") { + const root = element.getRootNode(); + return root instanceof ShadowRoot ? root : null; + } + if (element instanceof ShadowRoot) { + return element; + } + if (!element.parentNode) { + return null; + } + return findShadowRoot(element.parentNode); + }; + var noop = () => { + }; + var reflow = (element) => { + element.offsetHeight; + }; + var getjQuery = () => { + if (window.jQuery && !document.body.hasAttribute("data-bs-no-jquery")) { + return window.jQuery; + } + return null; + }; + var DOMContentLoadedCallbacks = []; + var onDOMContentLoaded = (callback) => { + if (document.readyState === "loading") { + if (!DOMContentLoadedCallbacks.length) { + document.addEventListener("DOMContentLoaded", () => { + for (const callback2 of DOMContentLoadedCallbacks) { + callback2(); + } + }); + } + DOMContentLoadedCallbacks.push(callback); + } else { + callback(); + } + }; + var isRTL = () => document.documentElement.dir === "rtl"; + var defineJQueryPlugin = (plugin) => { + onDOMContentLoaded(() => { + const $ = getjQuery(); + if ($) { + const name = plugin.NAME; + const JQUERY_NO_CONFLICT = $.fn[name]; + $.fn[name] = plugin.jQueryInterface; + $.fn[name].Constructor = plugin; + $.fn[name].noConflict = () => { + $.fn[name] = JQUERY_NO_CONFLICT; + return plugin.jQueryInterface; + }; + } + }); + }; + var execute = (possibleCallback, args = [], defaultValue = possibleCallback) => { + return typeof possibleCallback === "function" ? possibleCallback.call(...args) : defaultValue; + }; + var executeAfterTransition = (callback, transitionElement, waitForTransition = true) => { + if (!waitForTransition) { + execute(callback); + return; + } + const durationPadding = 5; + const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding; + let called = false; + const handler = ({ target }) => { + if (target !== transitionElement) { + return; + } + called = true; + transitionElement.removeEventListener(TRANSITION_END, handler); + execute(callback); + }; + transitionElement.addEventListener(TRANSITION_END, handler); + setTimeout(() => { + if (!called) { + triggerTransitionEnd(transitionElement); + } + }, emulatedDuration); + }; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/dom/event-handler.js + var namespaceRegex = /[^.]*(?=\..*)\.|.*/; + var stripNameRegex = /\..*/; + var stripUidRegex = /::\d+$/; + var eventRegistry = {}; + var uidEvent = 1; + var customEvents = { + mouseenter: "mouseover", + mouseleave: "mouseout" + }; + var nativeEvents = /* @__PURE__ */ new Set([ + "click", + "dblclick", + "mouseup", + "mousedown", + "contextmenu", + "mousewheel", + "DOMMouseScroll", + "mouseover", + "mouseout", + "mousemove", + "selectstart", + "selectend", + "keydown", + "keypress", + "keyup", + "orientationchange", + "touchstart", + "touchmove", + "touchend", + "touchcancel", + "pointerdown", + "pointermove", + "pointerup", + "pointerleave", + "pointercancel", + "gesturestart", + "gesturechange", + "gestureend", + "focus", + "blur", + "change", + "reset", + "select", + "submit", + "focusin", + "focusout", + "load", + "unload", + "beforeunload", + "resize", + "move", + "DOMContentLoaded", + "readystatechange", + "error", + "abort", + "scroll" + ]); + function makeEventUid(element, uid) { + return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++; + } + function getElementEvents(element) { + const uid = makeEventUid(element); + element.uidEvent = uid; + eventRegistry[uid] = eventRegistry[uid] || {}; + return eventRegistry[uid]; + } + function bootstrapHandler(element, fn) { + return function handler(event) { + hydrateObj(event, { delegateTarget: element }); + if (handler.oneOff) { + EventHandler.off(element, event.type, fn); + } + return fn.apply(element, [event]); + }; + } + function bootstrapDelegationHandler(element, selector, fn) { + return function handler(event) { + const domElements = element.querySelectorAll(selector); + for (let { target } = event; target && target !== this; target = target.parentNode) { + for (const domElement of domElements) { + if (domElement !== target) { + continue; + } + hydrateObj(event, { delegateTarget: target }); + if (handler.oneOff) { + EventHandler.off(element, event.type, selector, fn); + } + return fn.apply(target, [event]); + } + } + }; + } + function findHandler(events, callable, delegationSelector = null) { + return Object.values(events).find((event) => event.callable === callable && event.delegationSelector === delegationSelector); + } + function normalizeParameters(originalTypeEvent, handler, delegationFunction) { + const isDelegated = typeof handler === "string"; + const callable = isDelegated ? delegationFunction : handler || delegationFunction; + let typeEvent = getTypeEvent(originalTypeEvent); + if (!nativeEvents.has(typeEvent)) { + typeEvent = originalTypeEvent; + } + return [isDelegated, callable, typeEvent]; + } + function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) { + if (typeof originalTypeEvent !== "string" || !element) { + return; + } + let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); + if (originalTypeEvent in customEvents) { + const wrapFunction = (fn2) => { + return function(event) { + if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) { + return fn2.call(this, event); + } + }; + }; + callable = wrapFunction(callable); + } + const events = getElementEvents(element); + const handlers = events[typeEvent] || (events[typeEvent] = {}); + const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null); + if (previousFunction) { + previousFunction.oneOff = previousFunction.oneOff && oneOff; + return; + } + const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, "")); + const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable); + fn.delegationSelector = isDelegated ? handler : null; + fn.callable = callable; + fn.oneOff = oneOff; + fn.uidEvent = uid; + handlers[uid] = fn; + element.addEventListener(typeEvent, fn, isDelegated); + } + function removeHandler(element, events, typeEvent, handler, delegationSelector) { + const fn = findHandler(events[typeEvent], handler, delegationSelector); + if (!fn) { + return; + } + element.removeEventListener(typeEvent, fn, Boolean(delegationSelector)); + delete events[typeEvent][fn.uidEvent]; + } + function removeNamespacedHandlers(element, events, typeEvent, namespace) { + const storeElementEvent = events[typeEvent] || {}; + for (const [handlerKey, event] of Object.entries(storeElementEvent)) { + if (handlerKey.includes(namespace)) { + removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); + } + } + } + function getTypeEvent(event) { + event = event.replace(stripNameRegex, ""); + return customEvents[event] || event; + } + var EventHandler = { + on(element, event, handler, delegationFunction) { + addHandler(element, event, handler, delegationFunction, false); + }, + one(element, event, handler, delegationFunction) { + addHandler(element, event, handler, delegationFunction, true); + }, + off(element, originalTypeEvent, handler, delegationFunction) { + if (typeof originalTypeEvent !== "string" || !element) { + return; + } + const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); + const inNamespace = typeEvent !== originalTypeEvent; + const events = getElementEvents(element); + const storeElementEvent = events[typeEvent] || {}; + const isNamespace = originalTypeEvent.startsWith("."); + if (typeof callable !== "undefined") { + if (!Object.keys(storeElementEvent).length) { + return; + } + removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null); + return; + } + if (isNamespace) { + for (const elementEvent of Object.keys(events)) { + removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1)); + } + } + for (const [keyHandlers, event] of Object.entries(storeElementEvent)) { + const handlerKey = keyHandlers.replace(stripUidRegex, ""); + if (!inNamespace || originalTypeEvent.includes(handlerKey)) { + removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); + } + } + }, + trigger(element, event, args) { + if (typeof event !== "string" || !element) { + return null; + } + const $ = getjQuery(); + const typeEvent = getTypeEvent(event); + const inNamespace = event !== typeEvent; + let jQueryEvent = null; + let bubbles = true; + let nativeDispatch = true; + let defaultPrevented = false; + if (inNamespace && $) { + jQueryEvent = $.Event(event, args); + $(element).trigger(jQueryEvent); + bubbles = !jQueryEvent.isPropagationStopped(); + nativeDispatch = !jQueryEvent.isImmediatePropagationStopped(); + defaultPrevented = jQueryEvent.isDefaultPrevented(); + } + const evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args); + if (defaultPrevented) { + evt.preventDefault(); + } + if (nativeDispatch) { + element.dispatchEvent(evt); + } + if (evt.defaultPrevented && jQueryEvent) { + jQueryEvent.preventDefault(); + } + return evt; + } + }; + function hydrateObj(obj, meta = {}) { + for (const [key, value] of Object.entries(meta)) { + try { + obj[key] = value; + } catch (e) { + Object.defineProperty(obj, key, { + configurable: true, + get() { + return value; + } + }); + } + } + return obj; + } + var event_handler_default = EventHandler; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/dom/manipulator.js + function normalizeData(value) { + if (value === "true") { + return true; + } + if (value === "false") { + return false; + } + if (value === Number(value).toString()) { + return Number(value); + } + if (value === "" || value === "null") { + return null; + } + if (typeof value !== "string") { + return value; + } + try { + return JSON.parse(decodeURIComponent(value)); + } catch (e) { + return value; + } + } + function normalizeDataKey(key) { + return key.replace(/[A-Z]/g, (chr) => `-${chr.toLowerCase()}`); + } + var Manipulator = { + setDataAttribute(element, key, value) { + element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value); + }, + removeDataAttribute(element, key) { + element.removeAttribute(`data-bs-${normalizeDataKey(key)}`); + }, + getDataAttributes(element) { + if (!element) { + return {}; + } + const attributes = {}; + const bsKeys = Object.keys(element.dataset).filter((key) => key.startsWith("bs") && !key.startsWith("bsConfig")); + for (const key of bsKeys) { + let pureKey = key.replace(/^bs/, ""); + pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1); + attributes[pureKey] = normalizeData(element.dataset[key]); + } + return attributes; + }, + getDataAttribute(element, key) { + return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`)); + } + }; + var manipulator_default = Manipulator; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/util/config.js + var Config = class { + // Getters + static get Default() { + return {}; + } + static get DefaultType() { + return {}; + } + static get NAME() { + throw new Error('You have to implement the static method "NAME", for each component!'); + } + _getConfig(config) { + config = this._mergeConfigObj(config); + config = this._configAfterMerge(config); + this._typeCheckConfig(config); + return config; + } + _configAfterMerge(config) { + return config; + } + _mergeConfigObj(config, element) { + const jsonConfig = isElement(element) ? manipulator_default.getDataAttribute(element, "config") : {}; + return __spreadValues(__spreadValues(__spreadValues(__spreadValues({}, this.constructor.Default), typeof jsonConfig === "object" ? jsonConfig : {}), isElement(element) ? manipulator_default.getDataAttributes(element) : {}), typeof config === "object" ? config : {}); + } + _typeCheckConfig(config, configTypes = this.constructor.DefaultType) { + for (const [property, expectedTypes] of Object.entries(configTypes)) { + const value = config[property]; + const valueType = isElement(value) ? "element" : toType(value); + if (!new RegExp(expectedTypes).test(valueType)) { + throw new TypeError( + `${this.constructor.NAME.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".` + ); + } + } + } + }; + var config_default = Config; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/base-component.js + var VERSION = "5.3.8"; + var BaseComponent = class extends config_default { + constructor(element, config) { + super(); + element = getElement(element); + if (!element) { + return; + } + this._element = element; + this._config = this._getConfig(config); + data_default.set(this._element, this.constructor.DATA_KEY, this); + } + // Public + dispose() { + data_default.remove(this._element, this.constructor.DATA_KEY); + event_handler_default.off(this._element, this.constructor.EVENT_KEY); + for (const propertyName of Object.getOwnPropertyNames(this)) { + this[propertyName] = null; + } + } + // Private + _queueCallback(callback, element, isAnimated = true) { + executeAfterTransition(callback, element, isAnimated); + } + _getConfig(config) { + config = this._mergeConfigObj(config, this._element); + config = this._configAfterMerge(config); + this._typeCheckConfig(config); + return config; + } + // Static + static getInstance(element) { + return data_default.get(getElement(element), this.DATA_KEY); + } + static getOrCreateInstance(element, config = {}) { + return this.getInstance(element) || new this(element, typeof config === "object" ? config : null); + } + static get VERSION() { + return VERSION; + } + static get DATA_KEY() { + return `bs.${this.NAME}`; + } + static get EVENT_KEY() { + return `.${this.DATA_KEY}`; + } + static eventName(name) { + return `${name}${this.EVENT_KEY}`; + } + }; + var base_component_default = BaseComponent; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/dom/selector-engine.js + var getSelector = (element) => { + let selector = element.getAttribute("data-bs-target"); + if (!selector || selector === "#") { + let hrefAttribute = element.getAttribute("href"); + if (!hrefAttribute || !hrefAttribute.includes("#") && !hrefAttribute.startsWith(".")) { + return null; + } + if (hrefAttribute.includes("#") && !hrefAttribute.startsWith("#")) { + hrefAttribute = `#${hrefAttribute.split("#")[1]}`; + } + selector = hrefAttribute && hrefAttribute !== "#" ? hrefAttribute.trim() : null; + } + return selector ? selector.split(",").map((sel) => parseSelector(sel)).join(",") : null; + }; + var SelectorEngine = { + find(selector, element = document.documentElement) { + return [].concat(...Element.prototype.querySelectorAll.call(element, selector)); + }, + findOne(selector, element = document.documentElement) { + return Element.prototype.querySelector.call(element, selector); + }, + children(element, selector) { + return [].concat(...element.children).filter((child) => child.matches(selector)); + }, + parents(element, selector) { + const parents = []; + let ancestor = element.parentNode.closest(selector); + while (ancestor) { + parents.push(ancestor); + ancestor = ancestor.parentNode.closest(selector); + } + return parents; + }, + prev(element, selector) { + let previous = element.previousElementSibling; + while (previous) { + if (previous.matches(selector)) { + return [previous]; + } + previous = previous.previousElementSibling; + } + return []; + }, + // TODO: this is now unused; remove later along with prev() + next(element, selector) { + let next = element.nextElementSibling; + while (next) { + if (next.matches(selector)) { + return [next]; + } + next = next.nextElementSibling; + } + return []; + }, + focusableChildren(element) { + const focusables = [ + "a", + "button", + "input", + "textarea", + "select", + "details", + "[tabindex]", + '[contenteditable="true"]' + ].map((selector) => `${selector}:not([tabindex^="-"])`).join(","); + return this.find(focusables, element).filter((el) => !isDisabled(el) && isVisible(el)); + }, + getSelectorFromElement(element) { + const selector = getSelector(element); + if (selector) { + return SelectorEngine.findOne(selector) ? selector : null; + } + return null; + }, + getElementFromSelector(element) { + const selector = getSelector(element); + return selector ? SelectorEngine.findOne(selector) : null; + }, + getMultipleElementsFromSelector(element) { + const selector = getSelector(element); + return selector ? SelectorEngine.find(selector) : []; + } + }; + var selector_engine_default = SelectorEngine; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/collapse.js + var NAME = "collapse"; + var DATA_KEY = "bs.collapse"; + var EVENT_KEY = `.${DATA_KEY}`; + var DATA_API_KEY = ".data-api"; + var EVENT_SHOW = `show${EVENT_KEY}`; + var EVENT_SHOWN = `shown${EVENT_KEY}`; + var EVENT_HIDE = `hide${EVENT_KEY}`; + var EVENT_HIDDEN = `hidden${EVENT_KEY}`; + var EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`; + var CLASS_NAME_SHOW = "show"; + var CLASS_NAME_COLLAPSE = "collapse"; + var CLASS_NAME_COLLAPSING = "collapsing"; + var CLASS_NAME_COLLAPSED = "collapsed"; + var CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`; + var CLASS_NAME_HORIZONTAL = "collapse-horizontal"; + var WIDTH = "width"; + var HEIGHT = "height"; + var SELECTOR_ACTIVES = ".collapse.show, .collapse.collapsing"; + var SELECTOR_DATA_TOGGLE = '[data-bs-toggle="collapse"]'; + var Default = { + parent: null, + toggle: true + }; + var DefaultType = { + parent: "(null|element)", + toggle: "boolean" + }; + var Collapse = class _Collapse extends base_component_default { + constructor(element, config) { + super(element, config); + this._isTransitioning = false; + this._triggerArray = []; + const toggleList = selector_engine_default.find(SELECTOR_DATA_TOGGLE); + for (const elem of toggleList) { + const selector = selector_engine_default.getSelectorFromElement(elem); + const filterElement = selector_engine_default.find(selector).filter((foundElement) => foundElement === this._element); + if (selector !== null && filterElement.length) { + this._triggerArray.push(elem); + } + } + this._initializeChildren(); + if (!this._config.parent) { + this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()); + } + if (this._config.toggle) { + this.toggle(); + } + } + // Getters + static get Default() { + return Default; + } + static get DefaultType() { + return DefaultType; + } + static get NAME() { + return NAME; + } + // Public + toggle() { + if (this._isShown()) { + this.hide(); + } else { + this.show(); + } + } + show() { + if (this._isTransitioning || this._isShown()) { + return; + } + let activeChildren = []; + if (this._config.parent) { + activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter((element) => element !== this._element).map((element) => _Collapse.getOrCreateInstance(element, { toggle: false })); + } + if (activeChildren.length && activeChildren[0]._isTransitioning) { + return; + } + const startEvent = event_handler_default.trigger(this._element, EVENT_SHOW); + if (startEvent.defaultPrevented) { + return; + } + for (const activeInstance of activeChildren) { + activeInstance.hide(); + } + const dimension = this._getDimension(); + this._element.classList.remove(CLASS_NAME_COLLAPSE); + this._element.classList.add(CLASS_NAME_COLLAPSING); + this._element.style[dimension] = 0; + this._addAriaAndCollapsedClass(this._triggerArray, true); + this._isTransitioning = true; + const complete = () => { + this._isTransitioning = false; + this._element.classList.remove(CLASS_NAME_COLLAPSING); + this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW); + this._element.style[dimension] = ""; + event_handler_default.trigger(this._element, EVENT_SHOWN); + }; + const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); + const scrollSize = `scroll${capitalizedDimension}`; + this._queueCallback(complete, this._element, true); + this._element.style[dimension] = `${this._element[scrollSize]}px`; + } + hide() { + if (this._isTransitioning || !this._isShown()) { + return; + } + const startEvent = event_handler_default.trigger(this._element, EVENT_HIDE); + if (startEvent.defaultPrevented) { + return; + } + const dimension = this._getDimension(); + this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`; + reflow(this._element); + this._element.classList.add(CLASS_NAME_COLLAPSING); + this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW); + for (const trigger of this._triggerArray) { + const element = selector_engine_default.getElementFromSelector(trigger); + if (element && !this._isShown(element)) { + this._addAriaAndCollapsedClass([trigger], false); + } + } + this._isTransitioning = true; + const complete = () => { + this._isTransitioning = false; + this._element.classList.remove(CLASS_NAME_COLLAPSING); + this._element.classList.add(CLASS_NAME_COLLAPSE); + event_handler_default.trigger(this._element, EVENT_HIDDEN); + }; + this._element.style[dimension] = ""; + this._queueCallback(complete, this._element, true); + } + // Private + _isShown(element = this._element) { + return element.classList.contains(CLASS_NAME_SHOW); + } + _configAfterMerge(config) { + config.toggle = Boolean(config.toggle); + config.parent = getElement(config.parent); + return config; + } + _getDimension() { + return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT; + } + _initializeChildren() { + if (!this._config.parent) { + return; + } + const children2 = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE); + for (const element of children2) { + const selected = selector_engine_default.getElementFromSelector(element); + if (selected) { + this._addAriaAndCollapsedClass([element], this._isShown(selected)); + } + } + } + _getFirstLevelChildren(selector) { + const children2 = selector_engine_default.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); + return selector_engine_default.find(selector, this._config.parent).filter((element) => !children2.includes(element)); + } + _addAriaAndCollapsedClass(triggerArray, isOpen) { + if (!triggerArray.length) { + return; + } + for (const element of triggerArray) { + element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen); + element.setAttribute("aria-expanded", isOpen); + } + } + // Static + static jQueryInterface(config) { + const _config = {}; + if (typeof config === "string" && /show|hide/.test(config)) { + _config.toggle = false; + } + return this.each(function() { + const data = _Collapse.getOrCreateInstance(this, _config); + if (typeof config === "string") { + if (typeof data[config] === "undefined") { + throw new TypeError(`No method named "${config}"`); + } + data[config](); + } + }); + } + }; + event_handler_default.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function(event) { + if (event.target.tagName === "A" || event.delegateTarget && event.delegateTarget.tagName === "A") { + event.preventDefault(); + } + for (const element of selector_engine_default.getMultipleElementsFromSelector(this)) { + Collapse.getOrCreateInstance(element, { toggle: false }).toggle(); + } + }); + defineJQueryPlugin(Collapse); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/category-collapse.js + var children = document.getElementsByClassName("collapse"); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/tooltip.js + var Popper = __toESM(require_popper()); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/util/sanitizer.js + var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; + var DefaultAllowlist = { + // Global attributes allowed on any supplied element below. + "*": ["class", "dir", "id", "lang", "role", ARIA_ATTRIBUTE_PATTERN], + a: ["target", "href", "title", "rel"], + area: [], + b: [], + br: [], + col: [], + code: [], + dd: [], + div: [], + dl: [], + dt: [], + em: [], + hr: [], + h1: [], + h2: [], + h3: [], + h4: [], + h5: [], + h6: [], + i: [], + img: ["src", "srcset", "alt", "title", "width", "height"], + li: [], + ol: [], + p: [], + pre: [], + s: [], + small: [], + span: [], + sub: [], + sup: [], + strong: [], + u: [], + ul: [] + }; + var uriAttributes = /* @__PURE__ */ new Set([ + "background", + "cite", + "href", + "itemtype", + "longdesc", + "poster", + "src", + "xlink:href" + ]); + var SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i; + var allowedAttribute = (attribute, allowedAttributeList) => { + const attributeName = attribute.nodeName.toLowerCase(); + if (allowedAttributeList.includes(attributeName)) { + if (uriAttributes.has(attributeName)) { + return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue)); + } + return true; + } + return allowedAttributeList.filter((attributeRegex) => attributeRegex instanceof RegExp).some((regex) => regex.test(attributeName)); + }; + function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) { + if (!unsafeHtml.length) { + return unsafeHtml; + } + if (sanitizeFunction && typeof sanitizeFunction === "function") { + return sanitizeFunction(unsafeHtml); + } + const domParser = new window.DOMParser(); + const createdDocument = domParser.parseFromString(unsafeHtml, "text/html"); + const elements = [].concat(...createdDocument.body.querySelectorAll("*")); + for (const element of elements) { + const elementName = element.nodeName.toLowerCase(); + if (!Object.keys(allowList).includes(elementName)) { + element.remove(); + continue; + } + const attributeList = [].concat(...element.attributes); + const allowedAttributes = [].concat(allowList["*"] || [], allowList[elementName] || []); + for (const attribute of attributeList) { + if (!allowedAttribute(attribute, allowedAttributes)) { + element.removeAttribute(attribute.nodeName); + } + } + } + return createdDocument.body.innerHTML; + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/util/template-factory.js + var NAME2 = "TemplateFactory"; + var Default2 = { + allowList: DefaultAllowlist, + content: {}, + // { selector : text , selector2 : text2 , } + extraClass: "", + html: false, + sanitize: true, + sanitizeFn: null, + template: "
" + }; + var DefaultType2 = { + allowList: "object", + content: "object", + extraClass: "(string|function)", + html: "boolean", + sanitize: "boolean", + sanitizeFn: "(null|function)", + template: "string" + }; + var DefaultContentType = { + entry: "(string|element|function|null)", + selector: "(string|element)" + }; + var TemplateFactory = class extends config_default { + constructor(config) { + super(); + this._config = this._getConfig(config); + } + // Getters + static get Default() { + return Default2; + } + static get DefaultType() { + return DefaultType2; + } + static get NAME() { + return NAME2; + } + // Public + getContent() { + return Object.values(this._config.content).map((config) => this._resolvePossibleFunction(config)).filter(Boolean); + } + hasContent() { + return this.getContent().length > 0; + } + changeContent(content2) { + this._checkContent(content2); + this._config.content = __spreadValues(__spreadValues({}, this._config.content), content2); + return this; + } + toHtml() { + const templateWrapper = document.createElement("div"); + templateWrapper.innerHTML = this._maybeSanitize(this._config.template); + for (const [selector, text] of Object.entries(this._config.content)) { + this._setContent(templateWrapper, text, selector); + } + const template = templateWrapper.children[0]; + const extraClass = this._resolvePossibleFunction(this._config.extraClass); + if (extraClass) { + template.classList.add(...extraClass.split(" ")); + } + return template; + } + // Private + _typeCheckConfig(config) { + super._typeCheckConfig(config); + this._checkContent(config.content); + } + _checkContent(arg) { + for (const [selector, content2] of Object.entries(arg)) { + super._typeCheckConfig({ selector, entry: content2 }, DefaultContentType); + } + } + _setContent(template, content2, selector) { + const templateElement = selector_engine_default.findOne(selector, template); + if (!templateElement) { + return; + } + content2 = this._resolvePossibleFunction(content2); + if (!content2) { + templateElement.remove(); + return; + } + if (isElement(content2)) { + this._putElementInTemplate(getElement(content2), templateElement); + return; + } + if (this._config.html) { + templateElement.innerHTML = this._maybeSanitize(content2); + return; + } + templateElement.textContent = content2; + } + _maybeSanitize(arg) { + return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg; + } + _resolvePossibleFunction(arg) { + return execute(arg, [void 0, this]); + } + _putElementInTemplate(element, templateElement) { + if (this._config.html) { + templateElement.innerHTML = ""; + templateElement.append(element); + return; + } + templateElement.textContent = element.textContent; + } + }; + var template_factory_default = TemplateFactory; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/tooltip.js + var NAME3 = "tooltip"; + var DISALLOWED_ATTRIBUTES = /* @__PURE__ */ new Set(["sanitize", "allowList", "sanitizeFn"]); + var CLASS_NAME_FADE = "fade"; + var CLASS_NAME_MODAL = "modal"; + var CLASS_NAME_SHOW2 = "show"; + var SELECTOR_TOOLTIP_INNER = ".tooltip-inner"; + var SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`; + var EVENT_MODAL_HIDE = "hide.bs.modal"; + var TRIGGER_HOVER = "hover"; + var TRIGGER_FOCUS = "focus"; + var TRIGGER_CLICK = "click"; + var TRIGGER_MANUAL = "manual"; + var EVENT_HIDE2 = "hide"; + var EVENT_HIDDEN2 = "hidden"; + var EVENT_SHOW2 = "show"; + var EVENT_SHOWN2 = "shown"; + var EVENT_INSERTED = "inserted"; + var EVENT_CLICK = "click"; + var EVENT_FOCUSIN = "focusin"; + var EVENT_FOCUSOUT = "focusout"; + var EVENT_MOUSEENTER = "mouseenter"; + var EVENT_MOUSELEAVE = "mouseleave"; + var AttachmentMap = { + AUTO: "auto", + TOP: "top", + RIGHT: isRTL() ? "left" : "right", + BOTTOM: "bottom", + LEFT: isRTL() ? "right" : "left" + }; + var Default3 = { + allowList: DefaultAllowlist, + animation: true, + boundary: "clippingParents", + container: false, + customClass: "", + delay: 0, + fallbackPlacements: ["top", "right", "bottom", "left"], + html: false, + offset: [0, 6], + placement: "top", + popperConfig: null, + sanitize: true, + sanitizeFn: null, + selector: false, + template: '', + title: "", + trigger: "hover focus" + }; + var DefaultType3 = { + allowList: "object", + animation: "boolean", + boundary: "(string|element)", + container: "(string|element|boolean)", + customClass: "(string|function)", + delay: "(number|object)", + fallbackPlacements: "array", + html: "boolean", + offset: "(array|string|function)", + placement: "(string|function)", + popperConfig: "(null|object|function)", + sanitize: "boolean", + sanitizeFn: "(null|function)", + selector: "(string|boolean)", + template: "string", + title: "(string|element|function)", + trigger: "string" + }; + var Tooltip = class _Tooltip extends base_component_default { + constructor(element, config) { + if (typeof Popper === "undefined") { + throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org/docs/v2/)"); + } + super(element, config); + this._isEnabled = true; + this._timeout = 0; + this._isHovered = null; + this._activeTrigger = {}; + this._popper = null; + this._templateFactory = null; + this._newContent = null; + this.tip = null; + this._setListeners(); + if (!this._config.selector) { + this._fixTitle(); + } + } + // Getters + static get Default() { + return Default3; + } + static get DefaultType() { + return DefaultType3; + } + static get NAME() { + return NAME3; + } + // Public + enable() { + this._isEnabled = true; + } + disable() { + this._isEnabled = false; + } + toggleEnabled() { + this._isEnabled = !this._isEnabled; + } + toggle() { + if (!this._isEnabled) { + return; + } + if (this._isShown()) { + this._leave(); + return; + } + this._enter(); + } + dispose() { + clearTimeout(this._timeout); + event_handler_default.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); + if (this._element.getAttribute("data-bs-original-title")) { + this._element.setAttribute("title", this._element.getAttribute("data-bs-original-title")); + } + this._disposePopper(); + super.dispose(); + } + show() { + if (this._element.style.display === "none") { + throw new Error("Please use show on visible elements"); + } + if (!(this._isWithContent() && this._isEnabled)) { + return; + } + const showEvent = event_handler_default.trigger(this._element, this.constructor.eventName(EVENT_SHOW2)); + const shadowRoot = findShadowRoot(this._element); + const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element); + if (showEvent.defaultPrevented || !isInTheDom) { + return; + } + this._disposePopper(); + const tip = this._getTipElement(); + this._element.setAttribute("aria-describedby", tip.getAttribute("id")); + const { container } = this._config; + if (!this._element.ownerDocument.documentElement.contains(this.tip)) { + container.append(tip); + event_handler_default.trigger(this._element, this.constructor.eventName(EVENT_INSERTED)); + } + this._popper = this._createPopper(tip); + tip.classList.add(CLASS_NAME_SHOW2); + if ("ontouchstart" in document.documentElement) { + for (const element of [].concat(...document.body.children)) { + event_handler_default.on(element, "mouseover", noop); + } + } + const complete = () => { + event_handler_default.trigger(this._element, this.constructor.eventName(EVENT_SHOWN2)); + if (this._isHovered === false) { + this._leave(); + } + this._isHovered = false; + }; + this._queueCallback(complete, this.tip, this._isAnimated()); + } + hide() { + if (!this._isShown()) { + return; + } + const hideEvent = event_handler_default.trigger(this._element, this.constructor.eventName(EVENT_HIDE2)); + if (hideEvent.defaultPrevented) { + return; + } + const tip = this._getTipElement(); + tip.classList.remove(CLASS_NAME_SHOW2); + if ("ontouchstart" in document.documentElement) { + for (const element of [].concat(...document.body.children)) { + event_handler_default.off(element, "mouseover", noop); + } + } + this._activeTrigger[TRIGGER_CLICK] = false; + this._activeTrigger[TRIGGER_FOCUS] = false; + this._activeTrigger[TRIGGER_HOVER] = false; + this._isHovered = null; + const complete = () => { + if (this._isWithActiveTrigger()) { + return; + } + if (!this._isHovered) { + this._disposePopper(); + } + this._element.removeAttribute("aria-describedby"); + event_handler_default.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN2)); + }; + this._queueCallback(complete, this.tip, this._isAnimated()); + } + update() { + if (this._popper) { + this._popper.update(); + } + } + // Protected + _isWithContent() { + return Boolean(this._getTitle()); + } + _getTipElement() { + if (!this.tip) { + this.tip = this._createTipElement(this._newContent || this._getContentForTemplate()); + } + return this.tip; + } + _createTipElement(content2) { + const tip = this._getTemplateFactory(content2).toHtml(); + if (!tip) { + return null; + } + tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW2); + tip.classList.add(`bs-${this.constructor.NAME}-auto`); + const tipId = getUID(this.constructor.NAME).toString(); + tip.setAttribute("id", tipId); + if (this._isAnimated()) { + tip.classList.add(CLASS_NAME_FADE); + } + return tip; + } + setContent(content2) { + this._newContent = content2; + if (this._isShown()) { + this._disposePopper(); + this.show(); + } + } + _getTemplateFactory(content2) { + if (this._templateFactory) { + this._templateFactory.changeContent(content2); + } else { + this._templateFactory = new template_factory_default(__spreadProps(__spreadValues({}, this._config), { + // the `content` var has to be after `this._config` + // to override config.content in case of popover + content: content2, + extraClass: this._resolvePossibleFunction(this._config.customClass) + })); + } + return this._templateFactory; + } + _getContentForTemplate() { + return { + [SELECTOR_TOOLTIP_INNER]: this._getTitle() + }; + } + _getTitle() { + return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute("data-bs-original-title"); + } + // Private + _initializeOnDelegatedTarget(event) { + return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig()); + } + _isAnimated() { + return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE); + } + _isShown() { + return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW2); + } + _createPopper(tip) { + const placement = execute(this._config.placement, [this, tip, this._element]); + const attachment = AttachmentMap[placement.toUpperCase()]; + return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment)); + } + _getOffset() { + const { offset } = this._config; + if (typeof offset === "string") { + return offset.split(",").map((value) => Number.parseInt(value, 10)); + } + if (typeof offset === "function") { + return (popperData) => offset(popperData, this._element); + } + return offset; + } + _resolvePossibleFunction(arg) { + return execute(arg, [this._element, this._element]); + } + _getPopperConfig(attachment) { + const defaultBsPopperConfig = { + placement: attachment, + modifiers: [ + { + name: "flip", + options: { + fallbackPlacements: this._config.fallbackPlacements + } + }, + { + name: "offset", + options: { + offset: this._getOffset() + } + }, + { + name: "preventOverflow", + options: { + boundary: this._config.boundary + } + }, + { + name: "arrow", + options: { + element: `.${this.constructor.NAME}-arrow` + } + }, + { + name: "preSetPlacement", + enabled: true, + phase: "beforeMain", + fn: (data) => { + this._getTipElement().setAttribute("data-popper-placement", data.state.placement); + } + } + ] + }; + return __spreadValues(__spreadValues({}, defaultBsPopperConfig), execute(this._config.popperConfig, [void 0, defaultBsPopperConfig])); + } + _setListeners() { + const triggers = this._config.trigger.split(" "); + for (const trigger of triggers) { + if (trigger === "click") { + event_handler_default.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, (event) => { + const context = this._initializeOnDelegatedTarget(event); + context._activeTrigger[TRIGGER_CLICK] = !(context._isShown() && context._activeTrigger[TRIGGER_CLICK]); + context.toggle(); + }); + } else if (trigger !== TRIGGER_MANUAL) { + const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN); + const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT); + event_handler_default.on(this._element, eventIn, this._config.selector, (event) => { + const context = this._initializeOnDelegatedTarget(event); + context._activeTrigger[event.type === "focusin" ? TRIGGER_FOCUS : TRIGGER_HOVER] = true; + context._enter(); + }); + event_handler_default.on(this._element, eventOut, this._config.selector, (event) => { + const context = this._initializeOnDelegatedTarget(event); + context._activeTrigger[event.type === "focusout" ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget); + context._leave(); + }); + } + } + this._hideModalHandler = () => { + if (this._element) { + this.hide(); + } + }; + event_handler_default.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); + } + _fixTitle() { + const title = this._element.getAttribute("title"); + if (!title) { + return; + } + if (!this._element.getAttribute("aria-label") && !this._element.textContent.trim()) { + this._element.setAttribute("aria-label", title); + } + this._element.setAttribute("data-bs-original-title", title); + this._element.removeAttribute("title"); + } + _enter() { + if (this._isShown() || this._isHovered) { + this._isHovered = true; + return; + } + this._isHovered = true; + this._setTimeout(() => { + if (this._isHovered) { + this.show(); + } + }, this._config.delay.show); + } + _leave() { + if (this._isWithActiveTrigger()) { + return; + } + this._isHovered = false; + this._setTimeout(() => { + if (!this._isHovered) { + this.hide(); + } + }, this._config.delay.hide); + } + _setTimeout(handler, timeout) { + clearTimeout(this._timeout); + this._timeout = setTimeout(handler, timeout); + } + _isWithActiveTrigger() { + return Object.values(this._activeTrigger).includes(true); + } + _getConfig(config) { + const dataAttributes = manipulator_default.getDataAttributes(this._element); + for (const dataAttribute of Object.keys(dataAttributes)) { + if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) { + delete dataAttributes[dataAttribute]; + } + } + config = __spreadValues(__spreadValues({}, dataAttributes), typeof config === "object" && config ? config : {}); + config = this._mergeConfigObj(config); + config = this._configAfterMerge(config); + this._typeCheckConfig(config); + return config; + } + _configAfterMerge(config) { + config.container = config.container === false ? document.body : getElement(config.container); + if (typeof config.delay === "number") { + config.delay = { + show: config.delay, + hide: config.delay + }; + } + if (typeof config.title === "number") { + config.title = config.title.toString(); + } + if (typeof config.content === "number") { + config.content = config.content.toString(); + } + return config; + } + _getDelegateConfig() { + const config = {}; + for (const [key, value] of Object.entries(this._config)) { + if (this.constructor.Default[key] !== value) { + config[key] = value; + } + } + config.selector = false; + config.trigger = "manual"; + return config; + } + _disposePopper() { + if (this._popper) { + this._popper.destroy(); + this._popper = null; + } + if (this.tip) { + this.tip.remove(); + this.tip = null; + } + } + // Static + static jQueryInterface(config) { + return this.each(function() { + const data = _Tooltip.getOrCreateInstance(this, config); + if (typeof config !== "string") { + return; + } + if (typeof data[config] === "undefined") { + throw new TypeError(`No method named "${config}"`); + } + data[config](); + }); + } + }; + defineJQueryPlugin(Tooltip); + var tooltip_default = Tooltip; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/toc/toc-mobile.js + var $tocBar = document.getElementById("toc-bar"); + var $soloTrigger = document.getElementById("toc-solo-trigger"); + var $triggers = document.getElementsByClassName("toc-trigger"); + var $popup = document.getElementById("toc-popup"); + var $btnClose = document.getElementById("toc-popup-close"); + var SCROLL_LOCK = "overflow-hidden"; + var CLOSING = "closing"; + var _invisible, _barHeight; + var _TocMobile = class _TocMobile { + static initBar() { + const observer = new IntersectionObserver( + (entries) => { + entries.forEach((entry) => { + $tocBar.classList.toggle("invisible", entry.isIntersecting); + }); + }, + { rootMargin: `-${__privateGet(this, _barHeight)}px 0px 0px 0px` } + ); + observer.observe($soloTrigger); + __privateSet(this, _invisible, false); + } + static listenAnchors() { + const $anchors = document.getElementsByClassName("toc-link"); + [...$anchors].forEach((anchor) => { + anchor.onclick = () => this.hidePopup(); + }); + } + static refresh() { + if (__privateGet(this, _invisible)) { + this.initComponents(); + } + tocbot.refresh(this.options); + this.listenAnchors(); + } + static get popupOpened() { + return $popup.open; + } + static showPopup() { + this.lockScroll(true); + $popup.showModal(); + const activeItem = $popup.querySelector("li.is-active-li"); + activeItem.scrollIntoView({ block: "center" }); + } + static hidePopup() { + $popup.toggleAttribute(CLOSING); + $popup.addEventListener( + "animationend", + () => { + $popup.toggleAttribute(CLOSING); + $popup.close(); + }, + { once: true } + ); + this.lockScroll(false); + } + static lockScroll(enable) { + document.documentElement.classList.toggle(SCROLL_LOCK, enable); + document.body.classList.toggle(SCROLL_LOCK, enable); + } + static clickBackdrop(event) { + if ($popup.hasAttribute(CLOSING)) { + return; + } + const rect = event.target.getBoundingClientRect(); + if (event.clientX < rect.left || event.clientX > rect.right || event.clientY < rect.top || event.clientY > rect.bottom) { + this.hidePopup(); + } + } + static initComponents() { + this.initBar(); + [...$triggers].forEach((trigger) => { + trigger.onclick = () => this.showPopup(); + }); + $popup.onclick = (e) => this.clickBackdrop(e); + $btnClose.onclick = () => this.hidePopup(); + $popup.oncancel = (e) => { + e.preventDefault(); + this.hidePopup(); + }; + } + static init() { + tocbot.init(this.options); + this.listenAnchors(); + this.initComponents(); + } + }; + _invisible = new WeakMap(); + _barHeight = new WeakMap(); + __privateAdd(_TocMobile, _invisible, true); + __privateAdd(_TocMobile, _barHeight, 16 * 3); + // 3rem + __publicField(_TocMobile, "options", { + tocSelector: "#toc-popup-content", + contentSelector: ".content", + ignoreSelector: "[data-toc-skip]", + headingSelector: "h2, h3, h4", + orderedList: false, + scrollSmooth: false, + collapseDepth: 4, + headingsOffset: __privateGet(_TocMobile, _barHeight) + }); + var TocMobile = _TocMobile; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/toc/toc-desktop.js + var TocDesktop = class { + static refresh() { + tocbot.refresh(this.options); + } + static init() { + tocbot.init(this.options); + } + }; + /* Tocbot options Ref: https://github.com/tscanlin/tocbot#usage */ + __publicField(TocDesktop, "options", { + tocSelector: "#toc", + contentSelector: ".content", + ignoreSelector: "[data-toc-skip]", + headingSelector: "h2, h3, h4", + orderedList: false, + scrollSmooth: false, + headingsOffset: 16 * 2 + // 2rem + }); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/toc.js + var desktopMode = matchMedia("(min-width: 1200px)"); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/mermaid.js + var themeMapper = Theme.getThemeMapper("default", "dark"); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/mode-toggle.js + var $toggle = document.getElementById("mode-toggle"); + function modeWatcher() { + if (!$toggle) { + return; + } + $toggle.addEventListener("click", () => { + Theme.flip(); + }); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/back-to-top.js + function back2top() { + const btn = document.getElementById("back-to-top"); + window.addEventListener("scroll", () => { + if (window.scrollY > 50) { + btn.classList.add("show"); + } else { + btn.classList.remove("show"); + } + }); + btn.addEventListener("click", () => { + window.scrollTo({ top: 0 }); + }); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/tooltip-loader.js + function loadTooptip() { + const tooltipTriggerList = document.querySelectorAll( + '[data-bs-toggle="tooltip"]' + ); + [...tooltipTriggerList].map( + (tooltipTriggerEl) => new tooltip_default(tooltipTriggerEl) + ); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/layouts/basic.js + function basic() { + modeWatcher(); + back2top(); + loadTooptip(); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/layouts/sidebar.js + var ATTR_DISPLAY = "sidebar-display"; + var $sidebar = document.getElementById("sidebar"); + var $trigger = document.getElementById("sidebar-trigger"); + var $mask = document.getElementById("mask"); + var _isExpanded; + var SidebarUtil = class { + static toggle() { + __privateSet(this, _isExpanded, !__privateGet(this, _isExpanded)); + document.body.toggleAttribute(ATTR_DISPLAY, __privateGet(this, _isExpanded)); + $sidebar.classList.toggle("z-2", __privateGet(this, _isExpanded)); + $mask.classList.toggle("d-none", !__privateGet(this, _isExpanded)); + } + }; + _isExpanded = new WeakMap(); + __privateAdd(SidebarUtil, _isExpanded, false); + function initSidebar() { + $trigger.onclick = $mask.onclick = () => SidebarUtil.toggle(); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/search-display.js + var btnSbTrigger = document.getElementById("sidebar-trigger"); + var btnSearchTrigger = document.getElementById("search-trigger"); + var btnCancel = document.getElementById("search-cancel"); + var content = document.querySelectorAll("#main-wrapper>.container>.row"); + var topbarTitle = document.getElementById("topbar-title"); + var search = document.getElementById("search"); + var resultWrapper = document.getElementById("search-result-wrapper"); + var results = document.getElementById("search-results"); + var input = document.getElementById("search-input"); + var hints = document.getElementById("search-hints"); + var LOADED = "d-block"; + var UNLOADED = "d-none"; + var FOCUS = "input-focus"; + var FLEX = "d-flex"; + var MobileSearchBar = class { + static on() { + btnSbTrigger.classList.add(UNLOADED); + topbarTitle.classList.add(UNLOADED); + btnSearchTrigger.classList.add(UNLOADED); + search.classList.add(FLEX); + btnCancel.classList.add(LOADED); + } + static off() { + btnCancel.classList.remove(LOADED); + search.classList.remove(FLEX); + btnSbTrigger.classList.remove(UNLOADED); + topbarTitle.classList.remove(UNLOADED); + btnSearchTrigger.classList.remove(UNLOADED); + } + }; + var ResultSwitch = class { + static on() { + if (!this.resultVisible) { + resultWrapper.classList.remove(UNLOADED); + content.forEach((el) => { + el.classList.add(UNLOADED); + }); + this.resultVisible = true; + } + } + static off() { + if (this.resultVisible) { + results.innerHTML = ""; + if (hints.classList.contains(UNLOADED)) { + hints.classList.remove(UNLOADED); + } + resultWrapper.classList.add(UNLOADED); + content.forEach((el) => { + el.classList.remove(UNLOADED); + }); + input.textContent = ""; + this.resultVisible = false; + } + } + }; + __publicField(ResultSwitch, "resultVisible", false); + function isMobileView() { + return btnCancel.classList.contains(LOADED); + } + function displaySearch() { + btnSearchTrigger.addEventListener("click", () => { + MobileSearchBar.on(); + ResultSwitch.on(); + input.focus(); + }); + btnCancel.addEventListener("click", () => { + MobileSearchBar.off(); + ResultSwitch.off(); + }); + input.addEventListener("focus", () => { + search.classList.add(FOCUS); + }); + input.addEventListener("focusout", () => { + search.classList.remove(FOCUS); + }); + input.addEventListener("input", () => { + if (input.value === "") { + if (isMobileView()) { + hints.classList.remove(UNLOADED); + } else { + ResultSwitch.off(); + } + } else { + ResultSwitch.on(); + if (isMobileView()) { + hints.classList.add(UNLOADED); + } + } + }); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/layouts/topbar.js + function initTopbar() { + displaySearch(); + } + + // + initSidebar(); + initTopbar(); + basic(); +})(); diff --git a/public/js/home.js b/public/js/home.js index 20ecb56..466cda3 100644 --- a/public/js/home.js +++ b/public/js/home.js @@ -1 +1,3440 @@ -(()=>{var Dn=Object.create;var ue=Object.defineProperty,Nn=Object.defineProperties,In=Object.getOwnPropertyDescriptor,Pn=Object.getOwnPropertyDescriptors,Mn=Object.getOwnPropertyNames,mr=Object.getOwnPropertySymbols,Rn=Object.getPrototypeOf,gr=Object.prototype.hasOwnProperty,kn=Object.prototype.propertyIsEnumerable;var vr=e=>{throw TypeError(e)};var le=(e,t,r)=>t in e?ue(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,N=(e,t)=>{for(var r in t||(t={}))gr.call(t,r)&&le(e,r,t[r]);if(mr)for(var r of mr(t))kn.call(t,r)&&le(e,r,t[r]);return e},br=(e,t)=>Nn(e,Pn(t));var $n=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Bn=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Mn(t))!gr.call(e,o)&&o!==r&&ue(e,o,{get:()=>t[o],enumerable:!(n=In(t,o))||n.enumerable});return e};var jn=(e,t,r)=>(r=e!=null?Dn(Rn(e)):{},Bn(t||!e||!e.__esModule?ue(r,"default",{value:e,enumerable:!0}):r,e));var _t=(e,t,r)=>le(e,typeof t!="symbol"?t+"":t,r),yr=(e,t,r)=>t.has(e)||vr("Cannot "+r);var U=(e,t,r)=>(yr(e,t,"read from private field"),r?r.call(e):t.get(e)),wt=(e,t,r)=>t.has(e)?vr("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),jt=(e,t,r,n)=>(yr(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r);var sn=$n(D=>{"use strict";Object.defineProperty(D,"__esModule",{value:!0});function H(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function lt(e){var t=H(e).Element;return e instanceof t||e instanceof Element}function k(e){var t=H(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function Wr(e){if(typeof ShadowRoot=="undefined")return!1;var t=H(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}var it=Math.max,Kt=Math.min,ut=Math.round;function ft(e,t){t===void 0&&(t=!1);var r=e.getBoundingClientRect(),n=1,o=1;if(k(e)&&t){var s=e.offsetHeight,i=e.offsetWidth;i>0&&(n=ut(r.width)/i||1),s>0&&(o=ut(r.height)/s||1)}return{width:r.width/n,height:r.height/o,top:r.top/o,right:r.right/n,bottom:r.bottom/o,left:r.left/n,x:r.left/n,y:r.top/o}}function Le(e){var t=H(e),r=t.pageXOffset,n=t.pageYOffset;return{scrollLeft:r,scrollTop:n}}function mo(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function go(e){return e===H(e)||!k(e)?Le(e):mo(e)}function q(e){return e?(e.nodeName||"").toLowerCase():null}function J(e){return((lt(e)?e.ownerDocument:e.document)||window.document).documentElement}function De(e){return ft(J(e)).left+Le(e).scrollLeft}function W(e){return H(e).getComputedStyle(e)}function Ne(e){var t=W(e),r=t.overflow,n=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(r+o+n)}function vo(e){var t=e.getBoundingClientRect(),r=ut(t.width)/e.offsetWidth||1,n=ut(t.height)/e.offsetHeight||1;return r!==1||n!==1}function bo(e,t,r){r===void 0&&(r=!1);var n=k(t),o=k(t)&&vo(t),s=J(t),i=ft(e,o),a={scrollLeft:0,scrollTop:0},c={x:0,y:0};return(n||!n&&!r)&&((q(t)!=="body"||Ne(s))&&(a=go(t)),k(t)?(c=ft(t,!0),c.x+=t.clientLeft,c.y+=t.clientTop):s&&(c.x=De(s))),{x:i.left+a.scrollLeft-c.x,y:i.top+a.scrollTop-c.y,width:i.width,height:i.height}}function Ie(e){var t=ft(e),r=e.offsetWidth,n=e.offsetHeight;return Math.abs(t.width-r)<=1&&(r=t.width),Math.abs(t.height-n)<=1&&(n=t.height),{x:e.offsetLeft,y:e.offsetTop,width:r,height:n}}function Qt(e){return q(e)==="html"?e:e.assignedSlot||e.parentNode||(Wr(e)?e.host:null)||J(e)}function zr(e){return["html","body","#document"].indexOf(q(e))>=0?e.ownerDocument.body:k(e)&&Ne(e)?e:zr(Qt(e))}function St(e,t){var r;t===void 0&&(t=[]);var n=zr(e),o=n===((r=e.ownerDocument)==null?void 0:r.body),s=H(n),i=o?[s].concat(s.visualViewport||[],Ne(n)?n:[]):n,a=t.concat(i);return o?a:a.concat(St(Qt(i)))}function yo(e){return["table","td","th"].indexOf(q(e))>=0}function Rr(e){return!k(e)||W(e).position==="fixed"?null:e.offsetParent}function Eo(e){var t=navigator.userAgent.toLowerCase().indexOf("firefox")!==-1,r=navigator.userAgent.indexOf("Trident")!==-1;if(r&&k(e)){var n=W(e);if(n.position==="fixed")return null}for(var o=Qt(e);k(o)&&["html","body"].indexOf(q(o))<0;){var s=W(o);if(s.transform!=="none"||s.perspective!=="none"||s.contain==="paint"||["transform","perspective"].indexOf(s.willChange)!==-1||t&&s.willChange==="filter"||t&&s.filter&&s.filter!=="none")return o;o=o.parentNode}return null}function Lt(e){for(var t=H(e),r=Rr(e);r&&yo(r)&&W(r).position==="static";)r=Rr(r);return r&&(q(r)==="html"||q(r)==="body"&&W(r).position==="static")?t:r||Eo(e)||t}var I="top",$="bottom",B="right",P="left",Pe="auto",Dt=[I,$,B,P],pt="start",Ct="end",_o="clippingParents",Ur="viewport",Ot="popper",wo="reference",kr=Dt.reduce(function(e,t){return e.concat([t+"-"+pt,t+"-"+Ct])},[]),Yr=[].concat(Dt,[Pe]).reduce(function(e,t){return e.concat([t,t+"-"+pt,t+"-"+Ct])},[]),Ao="beforeRead",To="read",Oo="afterRead",So="beforeMain",xo="main",Co="afterMain",Lo="beforeWrite",Do="write",No="afterWrite",Io=[Ao,To,Oo,So,xo,Co,Lo,Do,No];function Po(e){var t=new Map,r=new Set,n=[];e.forEach(function(s){t.set(s.name,s)});function o(s){r.add(s.name);var i=[].concat(s.requires||[],s.requiresIfExists||[]);i.forEach(function(a){if(!r.has(a)){var c=t.get(a);c&&o(c)}}),n.push(s)}return e.forEach(function(s){r.has(s.name)||o(s)}),n}function Mo(e){var t=Po(e);return Io.reduce(function(r,n){return r.concat(t.filter(function(o){return o.phase===n}))},[])}function Ro(e){var t;return function(){return t||(t=new Promise(function(r){Promise.resolve().then(function(){t=void 0,r(e())})})),t}}function V(e){return e.split("-")[0]}function ko(e){var t=e.reduce(function(r,n){var o=r[n.name];return r[n.name]=o?Object.assign({},o,n,{options:Object.assign({},o.options,n.options),data:Object.assign({},o.data,n.data)}):n,r},{});return Object.keys(t).map(function(r){return t[r]})}function $o(e){var t=H(e),r=J(e),n=t.visualViewport,o=r.clientWidth,s=r.clientHeight,i=0,a=0;return n&&(o=n.width,s=n.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(i=n.offsetLeft,a=n.offsetTop)),{width:o,height:s,x:i+De(e),y:a}}function Bo(e){var t,r=J(e),n=Le(e),o=(t=e.ownerDocument)==null?void 0:t.body,s=it(r.scrollWidth,r.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),i=it(r.scrollHeight,r.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-n.scrollLeft+De(e),c=-n.scrollTop;return W(o||r).direction==="rtl"&&(a+=it(r.clientWidth,o?o.clientWidth:0)-s),{width:s,height:i,x:a,y:c}}function Gr(e,t){var r=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(r&&Wr(r)){var n=t;do{if(n&&e.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function Ce(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function jo(e){var t=ft(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}function $r(e,t){return t===Ur?Ce($o(e)):lt(t)?jo(t):Ce(Bo(J(e)))}function Fo(e){var t=St(Qt(e)),r=["absolute","fixed"].indexOf(W(e).position)>=0,n=r&&k(e)?Lt(e):e;return lt(n)?t.filter(function(o){return lt(o)&&Gr(o,n)&&q(o)!=="body"&&(r?W(o).position!=="static":!0)}):[]}function Ho(e,t,r){var n=t==="clippingParents"?Fo(e):[].concat(t),o=[].concat(n,[r]),s=o[0],i=o.reduce(function(a,c){var u=$r(e,c);return a.top=it(u.top,a.top),a.right=Kt(u.right,a.right),a.bottom=Kt(u.bottom,a.bottom),a.left=it(u.left,a.left),a},$r(e,s));return i.width=i.right-i.left,i.height=i.bottom-i.top,i.x=i.left,i.y=i.top,i}function dt(e){return e.split("-")[1]}function Me(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Kr(e){var t=e.reference,r=e.element,n=e.placement,o=n?V(n):null,s=n?dt(n):null,i=t.x+t.width/2-r.width/2,a=t.y+t.height/2-r.height/2,c;switch(o){case I:c={x:i,y:t.y-r.height};break;case $:c={x:i,y:t.y+t.height};break;case B:c={x:t.x+t.width,y:a};break;case P:c={x:t.x-r.width,y:a};break;default:c={x:t.x,y:t.y}}var u=o?Me(o):null;if(u!=null){var l=u==="y"?"height":"width";switch(s){case pt:c[u]=c[u]-(t[l]/2-r[l]/2);break;case Ct:c[u]=c[u]+(t[l]/2-r[l]/2);break}}return c}function Qr(){return{top:0,right:0,bottom:0,left:0}}function Xr(e){return Object.assign({},Qr(),e)}function Jr(e,t){return t.reduce(function(r,n){return r[n]=e,r},{})}function ht(e,t){t===void 0&&(t={});var r=t,n=r.placement,o=n===void 0?e.placement:n,s=r.boundary,i=s===void 0?_o:s,a=r.rootBoundary,c=a===void 0?Ur:a,u=r.elementContext,l=u===void 0?Ot:u,f=r.altBoundary,g=f===void 0?!1:f,p=r.padding,h=p===void 0?0:p,m=Xr(typeof h!="number"?h:Jr(h,Dt)),d=l===Ot?wo:Ot,w=e.rects.popper,A=e.elements[g?d:l],T=Ho(lt(A)?A:A.contextElement||J(e.elements.popper),i,c),v=ft(e.elements.reference),E=Kr({reference:v,element:w,strategy:"absolute",placement:o}),b=Ce(Object.assign({},w,E)),y=l===Ot?b:v,O={top:T.top-y.top+m.top,bottom:y.bottom-T.bottom+m.bottom,left:T.left-y.left+m.left,right:y.right-T.right+m.right},x=e.modifiersData.offset;if(l===Ot&&x){var C=x[o];Object.keys(O).forEach(function(_){var L=[B,$].indexOf(_)>=0?1:-1,et=[I,$].indexOf(_)>=0?"y":"x";O[_]+=C[et]*L})}return O}var Br={placement:"bottom",modifiers:[],strategy:"absolute"};function jr(){for(var e=arguments.length,t=new Array(e),r=0;r=0?-1:1,s=typeof r=="function"?r(Object.assign({},t,{placement:e})):r,i=s[0],a=s[1];return i=i||0,a=(a||0)*o,[P,B].indexOf(n)>=0?{x:a,y:i}:{x:i,y:a}}function Qo(e){var t=e.state,r=e.options,n=e.name,o=r.offset,s=o===void 0?[0,0]:o,i=Yr.reduce(function(l,f){return l[f]=Ko(f,t.rects,s),l},{}),a=i[t.placement],c=a.x,u=a.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=c,t.modifiersData.popperOffsets.y+=u),t.modifiersData[n]=i}var Zr={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:Qo},Xo={left:"right",right:"left",bottom:"top",top:"bottom"};function Gt(e){return e.replace(/left|right|bottom|top/g,function(t){return Xo[t]})}var Jo={start:"end",end:"start"};function Hr(e){return e.replace(/start|end/g,function(t){return Jo[t]})}function Zo(e,t){t===void 0&&(t={});var r=t,n=r.placement,o=r.boundary,s=r.rootBoundary,i=r.padding,a=r.flipVariations,c=r.allowedAutoPlacements,u=c===void 0?Yr:c,l=dt(n),f=l?a?kr:kr.filter(function(h){return dt(h)===l}):Dt,g=f.filter(function(h){return u.indexOf(h)>=0});g.length===0&&(g=f);var p=g.reduce(function(h,m){return h[m]=ht(e,{placement:m,boundary:o,rootBoundary:s,padding:i})[V(m)],h},{});return Object.keys(p).sort(function(h,m){return p[h]-p[m]})}function ti(e){if(V(e)===Pe)return[];var t=Gt(e);return[Hr(e),t,Hr(t)]}function ei(e){var t=e.state,r=e.options,n=e.name;if(!t.modifiersData[n]._skip){for(var o=r.mainAxis,s=o===void 0?!0:o,i=r.altAxis,a=i===void 0?!0:i,c=r.fallbackPlacements,u=r.padding,l=r.boundary,f=r.rootBoundary,g=r.altBoundary,p=r.flipVariations,h=p===void 0?!0:p,m=r.allowedAutoPlacements,d=t.options.placement,w=V(d),A=w===d,T=c||(A||!h?[Gt(d)]:ti(d)),v=[d].concat(T).reduce(function(at,G){return at.concat(V(G)===Pe?Zo(t,{placement:G,boundary:l,rootBoundary:f,padding:u,flipVariations:h,allowedAutoPlacements:m}):G)},[]),E=t.rects.reference,b=t.rects.popper,y=new Map,O=!0,x=v[0],C=0;C=0,bt=vt?"width":"height",R=ht(t,{placement:_,boundary:l,rootBoundary:f,altBoundary:g,padding:u}),j=vt?et?B:P:et?$:I;E[bt]>b[bt]&&(j=Gt(j));var Mt=Gt(j),rt=[];if(s&&rt.push(R[L]<=0),a&&rt.push(R[j]<=0,R[Mt]<=0),rt.every(function(at){return at})){x=_,O=!1;break}y.set(_,rt)}if(O)for(var Rt=h?3:1,ie=function(G){var Et=v.find(function($t){var nt=y.get($t);if(nt)return nt.slice(0,G).every(function(se){return se})});if(Et)return x=Et,"break"},yt=Rt;yt>0;yt--){var kt=ie(yt);if(kt==="break")break}t.placement!==x&&(t.modifiersData[n]._skip=!0,t.placement=x,t.reset=!0)}}var tn={name:"flip",enabled:!0,phase:"main",fn:ei,requiresIfExists:["offset"],data:{_skip:!1}};function ri(e){return e==="x"?"y":"x"}function xt(e,t,r){return it(e,Kt(t,r))}function ni(e,t,r){var n=xt(e,t,r);return n>r?r:n}function oi(e){var t=e.state,r=e.options,n=e.name,o=r.mainAxis,s=o===void 0?!0:o,i=r.altAxis,a=i===void 0?!1:i,c=r.boundary,u=r.rootBoundary,l=r.altBoundary,f=r.padding,g=r.tether,p=g===void 0?!0:g,h=r.tetherOffset,m=h===void 0?0:h,d=ht(t,{boundary:c,rootBoundary:u,padding:f,altBoundary:l}),w=V(t.placement),A=dt(t.placement),T=!A,v=Me(w),E=ri(v),b=t.modifiersData.popperOffsets,y=t.rects.reference,O=t.rects.popper,x=typeof m=="function"?m(Object.assign({},t.rects,{placement:t.placement})):m,C=typeof x=="number"?{mainAxis:x,altAxis:x}:Object.assign({mainAxis:0,altAxis:0},x),_=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,L={x:0,y:0};if(b){if(s){var et,vt=v==="y"?I:P,bt=v==="y"?$:B,R=v==="y"?"height":"width",j=b[v],Mt=j+d[vt],rt=j-d[bt],Rt=p?-O[R]/2:0,ie=A===pt?y[R]:O[R],yt=A===pt?-O[R]:-y[R],kt=t.elements.arrow,at=p&&kt?Ie(kt):{width:0,height:0},G=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:Qr(),Et=G[vt],$t=G[bt],nt=xt(0,y[R],at[R]),se=T?y[R]/2-Rt-nt-Et-C.mainAxis:ie-nt-Et-C.mainAxis,Tn=T?-y[R]/2+Rt+nt+$t+C.mainAxis:yt+nt+$t+C.mainAxis,ae=t.elements.arrow&&Lt(t.elements.arrow),On=ae?v==="y"?ae.clientTop||0:ae.clientLeft||0:0,sr=(et=_==null?void 0:_[v])!=null?et:0,Sn=j+se-sr-On,xn=j+Tn-sr,ar=xt(p?Kt(Mt,Sn):Mt,j,p?it(rt,xn):rt);b[v]=ar,L[v]=ar-j}if(a){var cr,Cn=v==="x"?I:P,Ln=v==="x"?$:B,ot=b[E],Bt=E==="y"?"height":"width",lr=ot+d[Cn],ur=ot-d[Ln],ce=[I,P].indexOf(w)!==-1,fr=(cr=_==null?void 0:_[E])!=null?cr:0,pr=ce?lr:ot-y[Bt]-O[Bt]-fr+C.altAxis,dr=ce?ot+y[Bt]+O[Bt]-fr-C.altAxis:ur,hr=p&&ce?ni(pr,ot,dr):xt(p?pr:lr,ot,p?dr:ur);b[E]=hr,L[E]=hr-ot}t.modifiersData[n]=L}}var en={name:"preventOverflow",enabled:!0,phase:"main",fn:oi,requiresIfExists:["offset"]},ii=function(t,r){return t=typeof t=="function"?t(Object.assign({},r.rects,{placement:r.placement})):t,Xr(typeof t!="number"?t:Jr(t,Dt))};function si(e){var t,r=e.state,n=e.name,o=e.options,s=r.elements.arrow,i=r.modifiersData.popperOffsets,a=V(r.placement),c=Me(a),u=[P,B].indexOf(a)>=0,l=u?"height":"width";if(!(!s||!i)){var f=ii(o.padding,r),g=Ie(s),p=c==="y"?I:P,h=c==="y"?$:B,m=r.rects.reference[l]+r.rects.reference[c]-i[c]-r.rects.popper[l],d=i[c]-r.rects.reference[c],w=Lt(s),A=w?c==="y"?w.clientHeight||0:w.clientWidth||0:0,T=m/2-d/2,v=f[p],E=A-g[l]-f[h],b=A/2-g[l]/2+T,y=xt(v,b,E),O=c;r.modifiersData[n]=(t={},t[O]=y,t.centerOffset=y-b,t)}}function ai(e){var t=e.state,r=e.options,n=r.element,o=n===void 0?"[data-popper-arrow]":n;o!=null&&(typeof o=="string"&&(o=t.elements.popper.querySelector(o),!o)||Gr(t.elements.popper,o)&&(t.elements.arrow=o))}var rn={name:"arrow",enabled:!0,phase:"main",fn:si,effect:ai,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Vr(e,t,r){return r===void 0&&(r={x:0,y:0}),{top:e.top-t.height-r.y,right:e.right-t.width+r.x,bottom:e.bottom-t.height+r.y,left:e.left-t.width-r.x}}function qr(e){return[I,B,$,P].some(function(t){return e[t]>=0})}function ci(e){var t=e.state,r=e.name,n=t.rects.reference,o=t.rects.popper,s=t.modifiersData.preventOverflow,i=ht(t,{elementContext:"reference"}),a=ht(t,{altBoundary:!0}),c=Vr(i,n),u=Vr(a,o,s),l=qr(c),f=qr(u);t.modifiersData[r]={referenceClippingOffsets:c,popperEscapeOffsets:u,isReferenceHidden:l,hasPopperEscaped:f},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":l,"data-popper-escaped":f})}var nn={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:ci},li=[ke,$e,Be,je],ui=Re({defaultModifiers:li}),on=[ke,$e,Be,je,Zr,tn,en,rn,nn],fi=Re({defaultModifiers:on});D.applyStyles=je;D.arrow=rn;D.computeStyles=Be;D.createPopper=fi;D.createPopperLite=ui;D.defaultModifiers=on;D.detectOverflow=ht;D.eventListeners=ke;D.flip=tn;D.hide=nn;D.offset=Zr;D.popperGenerator=Re;D.popperOffsets=$e;D.preventOverflow=en});var K=new Map,Ft={set(e,t,r){K.has(e)||K.set(e,new Map);let n=K.get(e);if(!n.has(t)&&n.size!==0){console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`);return}n.set(t,r)},get(e,t){return K.has(e)&&K.get(e).get(t)||null},remove(e,t){if(!K.has(e))return;let r=K.get(e);r.delete(t),r.size===0&&K.delete(e)}};var pe="transitionend",de=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,(t,r)=>`#${CSS.escape(r)}`)),e),Er=e=>e==null?`${e}`:Object.prototype.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase(),_r=e=>{do e+=Math.floor(Math.random()*1e6);while(document.getElementById(e));return e},Fn=e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:r}=window.getComputedStyle(e),n=Number.parseFloat(t),o=Number.parseFloat(r);return!n&&!o?0:(t=t.split(",")[0],r=r.split(",")[0],(Number.parseFloat(t)+Number.parseFloat(r))*1e3)},Hn=e=>{e.dispatchEvent(new Event(pe))},X=e=>!e||typeof e!="object"?!1:(typeof e.jquery!="undefined"&&(e=e[0]),typeof e.nodeType!="undefined"),Y=e=>X(e)?e.jquery?e[0]:e:typeof e=="string"&&e.length>0?document.querySelector(de(e)):null,wr=e=>{if(!X(e)||e.getClientRects().length===0)return!1;let t=getComputedStyle(e).getPropertyValue("visibility")==="visible",r=e.closest("details:not([open])");if(!r)return t;if(r!==e){let n=e.closest("summary");if(n&&n.parentNode!==r||n===null)return!1}return t},Ar=e=>!e||e.nodeType!==Node.ELEMENT_NODE||e.classList.contains("disabled")?!0:typeof e.disabled!="undefined"?e.disabled:e.hasAttribute("disabled")&&e.getAttribute("disabled")!=="false",he=e=>{if(!document.documentElement.attachShadow)return null;if(typeof e.getRootNode=="function"){let t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?he(e.parentNode):null},me=()=>{},Tr=e=>{e.offsetHeight},ge=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,fe=[],Vn=e=>{document.readyState==="loading"?(fe.length||document.addEventListener("DOMContentLoaded",()=>{for(let t of fe)t()}),fe.push(e)):e()},ve=()=>document.documentElement.dir==="rtl",Ht=e=>{Vn(()=>{let t=ge();if(t){let r=e.NAME,n=t.fn[r];t.fn[r]=e.jQueryInterface,t.fn[r].Constructor=e,t.fn[r].noConflict=()=>(t.fn[r]=n,e.jQueryInterface)}})},Q=(e,t=[],r=e)=>typeof e=="function"?e.call(...t):r,Or=(e,t,r=!0)=>{if(!r){Q(e);return}let o=Fn(t)+5,s=!1,i=({target:a})=>{a===t&&(s=!0,t.removeEventListener(pe,i),Q(e))};t.addEventListener(pe,i),setTimeout(()=>{s||Hn(t)},o)};var qn=/[^.]*(?=\..*)\.|.*/,Wn=/\..*/,zn=/::\d+$/,be={},Sr=1,Cr={mouseenter:"mouseover",mouseleave:"mouseout"},Un=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function Lr(e,t){return t&&`${t}::${Sr++}`||e.uidEvent||Sr++}function Dr(e){let t=Lr(e);return e.uidEvent=t,be[t]=be[t]||{},be[t]}function Yn(e,t){return function r(n){return _e(n,{delegateTarget:e}),r.oneOff&&Ee.off(e,n.type,t),t.apply(e,[n])}}function Gn(e,t,r){return function n(o){let s=e.querySelectorAll(t);for(let{target:i}=o;i&&i!==this;i=i.parentNode)for(let a of s)if(a===i)return _e(o,{delegateTarget:i}),n.oneOff&&Ee.off(e,o.type,t,r),r.apply(i,[o])}}function Nr(e,t,r=null){return Object.values(e).find(n=>n.callable===t&&n.delegationSelector===r)}function Ir(e,t,r){let n=typeof t=="string",o=n?r:t||r,s=Pr(e);return Un.has(s)||(s=e),[n,o,s]}function xr(e,t,r,n,o){if(typeof t!="string"||!e)return;let[s,i,a]=Ir(t,r,n);t in Cr&&(i=(h=>function(m){if(!m.relatedTarget||m.relatedTarget!==m.delegateTarget&&!m.delegateTarget.contains(m.relatedTarget))return h.call(this,m)})(i));let c=Dr(e),u=c[a]||(c[a]={}),l=Nr(u,i,s?r:null);if(l){l.oneOff=l.oneOff&&o;return}let f=Lr(i,t.replace(qn,"")),g=s?Gn(e,r,i):Yn(e,i);g.delegationSelector=s?r:null,g.callable=i,g.oneOff=o,g.uidEvent=f,u[f]=g,e.addEventListener(a,g,s)}function ye(e,t,r,n,o){let s=Nr(t[r],n,o);s&&(e.removeEventListener(r,s,!!o),delete t[r][s.uidEvent])}function Kn(e,t,r,n){let o=t[r]||{};for(let[s,i]of Object.entries(o))s.includes(n)&&ye(e,t,r,i.callable,i.delegationSelector)}function Pr(e){return e=e.replace(Wn,""),Cr[e]||e}var Ee={on(e,t,r,n){xr(e,t,r,n,!1)},one(e,t,r,n){xr(e,t,r,n,!0)},off(e,t,r,n){if(typeof t!="string"||!e)return;let[o,s,i]=Ir(t,r,n),a=i!==t,c=Dr(e),u=c[i]||{},l=t.startsWith(".");if(typeof s!="undefined"){if(!Object.keys(u).length)return;ye(e,c,i,s,o?r:null);return}if(l)for(let f of Object.keys(c))Kn(e,c,f,t.slice(1));for(let[f,g]of Object.entries(u)){let p=f.replace(zn,"");(!a||t.includes(p))&&ye(e,c,i,g.callable,g.delegationSelector)}},trigger(e,t,r){if(typeof t!="string"||!e)return null;let n=ge(),o=Pr(t),s=t!==o,i=null,a=!0,c=!0,u=!1;s&&n&&(i=n.Event(t,r),n(e).trigger(i),a=!i.isPropagationStopped(),c=!i.isImmediatePropagationStopped(),u=i.isDefaultPrevented());let l=_e(new Event(t,{bubbles:a,cancelable:!0}),r);return u&&l.preventDefault(),c&&e.dispatchEvent(l),l.defaultPrevented&&i&&i.preventDefault(),l}};function _e(e,t={}){for(let[r,n]of Object.entries(t))try{e[r]=n}catch(o){Object.defineProperty(e,r,{configurable:!0,get(){return n}})}return e}var S=Ee;function Mr(e){if(e==="true")return!0;if(e==="false")return!1;if(e===Number(e).toString())return Number(e);if(e===""||e==="null")return null;if(typeof e!="string")return e;try{return JSON.parse(decodeURIComponent(e))}catch(t){return e}}function we(e){return e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}var Qn={setDataAttribute(e,t,r){e.setAttribute(`data-bs-${we(t)}`,r)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${we(t)}`)},getDataAttributes(e){if(!e)return{};let t={},r=Object.keys(e.dataset).filter(n=>n.startsWith("bs")&&!n.startsWith("bsConfig"));for(let n of r){let o=n.replace(/^bs/,"");o=o.charAt(0).toLowerCase()+o.slice(1),t[o]=Mr(e.dataset[n])}return t},getDataAttribute(e,t){return Mr(e.getAttribute(`data-bs-${we(t)}`))}},At=Qn;var Ae=class{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,r){let n=X(r)?At.getDataAttribute(r,"config"):{};return N(N(N(N({},this.constructor.Default),typeof n=="object"?n:{}),X(r)?At.getDataAttributes(r):{}),typeof t=="object"?t:{})}_typeCheckConfig(t,r=this.constructor.DefaultType){for(let[n,o]of Object.entries(r)){let s=t[n],i=X(s)?"element":Er(s);if(!new RegExp(o).test(i))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${i}" but expected type "${o}".`)}}},Vt=Ae;var Xn="5.3.8",Te=class extends Vt{constructor(t,r){super(),t=Y(t),t&&(this._element=t,this._config=this._getConfig(r),Ft.set(this._element,this.constructor.DATA_KEY,this))}dispose(){Ft.remove(this._element,this.constructor.DATA_KEY),S.off(this._element,this.constructor.EVENT_KEY);for(let t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,r,n=!0){Or(t,r,n)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return Ft.get(Y(t),this.DATA_KEY)}static getOrCreateInstance(t,r={}){return this.getInstance(t)||new this(t,typeof r=="object"?r:null)}static get VERSION(){return Xn}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}},qt=Te;var Oe=e=>{let t=e.getAttribute("data-bs-target");if(!t||t==="#"){let r=e.getAttribute("href");if(!r||!r.includes("#")&&!r.startsWith("."))return null;r.includes("#")&&!r.startsWith("#")&&(r=`#${r.split("#")[1]}`),t=r&&r!=="#"?r.trim():null}return t?t.split(",").map(r=>de(r)).join(","):null},Wt={find(e,t=document.documentElement){return[].concat(...Element.prototype.querySelectorAll.call(t,e))},findOne(e,t=document.documentElement){return Element.prototype.querySelector.call(t,e)},children(e,t){return[].concat(...e.children).filter(r=>r.matches(t))},parents(e,t){let r=[],n=e.parentNode.closest(t);for(;n;)r.push(n),n=n.parentNode.closest(t);return r},prev(e,t){let r=e.previousElementSibling;for(;r;){if(r.matches(t))return[r];r=r.previousElementSibling}return[]},next(e,t){let r=e.nextElementSibling;for(;r;){if(r.matches(t))return[r];r=r.nextElementSibling}return[]},focusableChildren(e){let t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(r=>`${r}:not([tabindex^="-"])`).join(",");return this.find(t,e).filter(r=>!Ar(r)&&wr(r))},getSelectorFromElement(e){let t=Oe(e);return t&&Wt.findOne(t)?t:null},getElementFromSelector(e){let t=Oe(e);return t?Wt.findOne(t):null},getMultipleElementsFromSelector(e){let t=Oe(e);return t?Wt.find(t):[]}},F=Wt;var Jn="collapse",Zn="bs.collapse",Tt=`.${Zn}`,to=".data-api",eo=`show${Tt}`,ro=`shown${Tt}`,no=`hide${Tt}`,oo=`hidden${Tt}`,io=`click${Tt}${to}`,Se="show",ct="collapse",zt="collapsing",so="collapsed",ao=`:scope .${ct} .${ct}`,co="collapse-horizontal",lo="width",uo="height",fo=".collapse.show, .collapse.collapsing",xe='[data-bs-toggle="collapse"]',po={parent:null,toggle:!0},ho={parent:"(null|element)",toggle:"boolean"},Ut=class e extends qt{constructor(t,r){super(t,r),this._isTransitioning=!1,this._triggerArray=[];let n=F.find(xe);for(let o of n){let s=F.getSelectorFromElement(o),i=F.find(s).filter(a=>a===this._element);s!==null&&i.length&&this._triggerArray.push(o)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return po}static get DefaultType(){return ho}static get NAME(){return Jn}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(fo).filter(a=>a!==this._element).map(a=>e.getOrCreateInstance(a,{toggle:!1}))),t.length&&t[0]._isTransitioning||S.trigger(this._element,eo).defaultPrevented)return;for(let a of t)a.hide();let n=this._getDimension();this._element.classList.remove(ct),this._element.classList.add(zt),this._element.style[n]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;let o=()=>{this._isTransitioning=!1,this._element.classList.remove(zt),this._element.classList.add(ct,Se),this._element.style[n]="",S.trigger(this._element,ro)},i=`scroll${n[0].toUpperCase()+n.slice(1)}`;this._queueCallback(o,this._element,!0),this._element.style[n]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown()||S.trigger(this._element,no).defaultPrevented)return;let r=this._getDimension();this._element.style[r]=`${this._element.getBoundingClientRect()[r]}px`,Tr(this._element),this._element.classList.add(zt),this._element.classList.remove(ct,Se);for(let o of this._triggerArray){let s=F.getElementFromSelector(o);s&&!this._isShown(s)&&this._addAriaAndCollapsedClass([o],!1)}this._isTransitioning=!0;let n=()=>{this._isTransitioning=!1,this._element.classList.remove(zt),this._element.classList.add(ct),S.trigger(this._element,oo)};this._element.style[r]="",this._queueCallback(n,this._element,!0)}_isShown(t=this._element){return t.classList.contains(Se)}_configAfterMerge(t){return t.toggle=!!t.toggle,t.parent=Y(t.parent),t}_getDimension(){return this._element.classList.contains(co)?lo:uo}_initializeChildren(){if(!this._config.parent)return;let t=this._getFirstLevelChildren(xe);for(let r of t){let n=F.getElementFromSelector(r);n&&this._addAriaAndCollapsedClass([r],this._isShown(n))}}_getFirstLevelChildren(t){let r=F.find(ao,this._config.parent);return F.find(t,this._config.parent).filter(n=>!r.includes(n))}_addAriaAndCollapsedClass(t,r){if(t.length)for(let n of t)n.classList.toggle(so,!r),n.setAttribute("aria-expanded",r)}static jQueryInterface(t){let r={};return typeof t=="string"&&/show|hide/.test(t)&&(r.toggle=!1),this.each(function(){let n=e.getOrCreateInstance(this,r);if(typeof t=="string"){if(typeof n[t]=="undefined")throw new TypeError(`No method named "${t}"`);n[t]()}})}};S.on(document,io,xe,function(e){(e.target.tagName==="A"||e.delegateTarget&&e.delegateTarget.tagName==="A")&&e.preventDefault();for(let t of F.getMultipleElementsFromSelector(this))Ut.getOrCreateInstance(t,{toggle:!1}).toggle()});Ht(Ut);var vs=document.getElementsByClassName("collapse");var We=jn(sn());var pi=/^aria-[\w-]*$/i,Xt={"*":["class","dir","id","lang","role",pi],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},di=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),hi=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,mi=(e,t)=>{let r=e.nodeName.toLowerCase();return t.includes(r)?di.has(r)?!!hi.test(e.nodeValue):!0:t.filter(n=>n instanceof RegExp).some(n=>n.test(r))};function an(e,t,r){if(!e.length)return e;if(r&&typeof r=="function")return r(e);let o=new window.DOMParser().parseFromString(e,"text/html"),s=[].concat(...o.body.querySelectorAll("*"));for(let i of s){let a=i.nodeName.toLowerCase();if(!Object.keys(t).includes(a)){i.remove();continue}let c=[].concat(...i.attributes),u=[].concat(t["*"]||[],t[a]||[]);for(let l of c)mi(l,u)||i.removeAttribute(l.nodeName)}return o.body.innerHTML}var gi="TemplateFactory",vi={allowList:Xt,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},bi={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},yi={entry:"(string|element|function|null)",selector:"(string|element)"},Fe=class extends Vt{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return vi}static get DefaultType(){return bi}static get NAME(){return gi}getContent(){return Object.values(this._config.content).map(t=>this._resolvePossibleFunction(t)).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content=N(N({},this._config.content),t),this}toHtml(){let t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(let[o,s]of Object.entries(this._config.content))this._setContent(t,s,o);let r=t.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&r.classList.add(...n.split(" ")),r}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(let[r,n]of Object.entries(t))super._typeCheckConfig({selector:r,entry:n},yi)}_setContent(t,r,n){let o=F.findOne(n,t);if(o){if(r=this._resolvePossibleFunction(r),!r){o.remove();return}if(X(r)){this._putElementInTemplate(Y(r),o);return}if(this._config.html){o.innerHTML=this._maybeSanitize(r);return}o.textContent=r}}_maybeSanitize(t){return this._config.sanitize?an(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return Q(t,[void 0,this])}_putElementInTemplate(t,r){if(this._config.html){r.innerHTML="",r.append(t);return}r.textContent=t.textContent}},cn=Fe;var Ei="tooltip",_i=new Set(["sanitize","allowList","sanitizeFn"]),He="fade",wi="modal",Jt="show",Ai=".tooltip-inner",ln=`.${wi}`,un="hide.bs.modal",Nt="hover",Ve="focus",qe="click",Ti="manual",Oi="hide",Si="hidden",xi="show",Ci="shown",Li="inserted",Di="click",Ni="focusin",Ii="focusout",Pi="mouseenter",Mi="mouseleave",Ri={AUTO:"auto",TOP:"top",RIGHT:ve()?"left":"right",BOTTOM:"bottom",LEFT:ve()?"right":"left"},ki={allowList:Xt,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},$i={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"},Zt=class e extends qt{constructor(t,r){if(typeof We=="undefined")throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org/docs/v2/)");super(t,r),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return ki}static get DefaultType(){return $i}static get NAME(){return Ei}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){if(this._isEnabled){if(this._isShown()){this._leave();return}this._enter()}}dispose(){clearTimeout(this._timeout),S.off(this._element.closest(ln),un,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if(this._element.style.display==="none")throw new Error("Please use show on visible elements");if(!(this._isWithContent()&&this._isEnabled))return;let t=S.trigger(this._element,this.constructor.eventName(xi)),n=(he(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!n)return;this._disposePopper();let o=this._getTipElement();this._element.setAttribute("aria-describedby",o.getAttribute("id"));let{container:s}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(s.append(o),S.trigger(this._element,this.constructor.eventName(Li))),this._popper=this._createPopper(o),o.classList.add(Jt),"ontouchstart"in document.documentElement)for(let a of[].concat(...document.body.children))S.on(a,"mouseover",me);let i=()=>{S.trigger(this._element,this.constructor.eventName(Ci)),this._isHovered===!1&&this._leave(),this._isHovered=!1};this._queueCallback(i,this.tip,this._isAnimated())}hide(){if(!this._isShown()||S.trigger(this._element,this.constructor.eventName(Oi)).defaultPrevented)return;if(this._getTipElement().classList.remove(Jt),"ontouchstart"in document.documentElement)for(let o of[].concat(...document.body.children))S.off(o,"mouseover",me);this._activeTrigger[qe]=!1,this._activeTrigger[Ve]=!1,this._activeTrigger[Nt]=!1,this._isHovered=null;let n=()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),S.trigger(this._element,this.constructor.eventName(Si)))};this._queueCallback(n,this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return!!this._getTitle()}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){let r=this._getTemplateFactory(t).toHtml();if(!r)return null;r.classList.remove(He,Jt),r.classList.add(`bs-${this.constructor.NAME}-auto`);let n=_r(this.constructor.NAME).toString();return r.setAttribute("id",n),this._isAnimated()&&r.classList.add(He),r}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new cn(br(N({},this._config),{content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)})),this._templateFactory}_getContentForTemplate(){return{[Ai]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(He)}_isShown(){return this.tip&&this.tip.classList.contains(Jt)}_createPopper(t){let r=Q(this._config.placement,[this,t,this._element]),n=Ri[r.toUpperCase()];return We.createPopper(this._element,t,this._getPopperConfig(n))}_getOffset(){let{offset:t}=this._config;return typeof t=="string"?t.split(",").map(r=>Number.parseInt(r,10)):typeof t=="function"?r=>t(r,this._element):t}_resolvePossibleFunction(t){return Q(t,[this._element,this._element])}_getPopperConfig(t){let r={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:n=>{this._getTipElement().setAttribute("data-popper-placement",n.state.placement)}}]};return N(N({},r),Q(this._config.popperConfig,[void 0,r]))}_setListeners(){let t=this._config.trigger.split(" ");for(let r of t)if(r==="click")S.on(this._element,this.constructor.eventName(Di),this._config.selector,n=>{let o=this._initializeOnDelegatedTarget(n);o._activeTrigger[qe]=!(o._isShown()&&o._activeTrigger[qe]),o.toggle()});else if(r!==Ti){let n=r===Nt?this.constructor.eventName(Pi):this.constructor.eventName(Ni),o=r===Nt?this.constructor.eventName(Mi):this.constructor.eventName(Ii);S.on(this._element,n,this._config.selector,s=>{let i=this._initializeOnDelegatedTarget(s);i._activeTrigger[s.type==="focusin"?Ve:Nt]=!0,i._enter()}),S.on(this._element,o,this._config.selector,s=>{let i=this._initializeOnDelegatedTarget(s);i._activeTrigger[s.type==="focusout"?Ve:Nt]=i._element.contains(s.relatedTarget),i._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},S.on(this._element.closest(ln),un,this._hideModalHandler)}_fixTitle(){let t=this._element.getAttribute("title");t&&(!this._element.getAttribute("aria-label")&&!this._element.textContent.trim()&&this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){if(this._isShown()||this._isHovered){this._isHovered=!0;return}this._isHovered=!0,this._setTimeout(()=>{this._isHovered&&this.show()},this._config.delay.show)}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout(()=>{this._isHovered||this.hide()},this._config.delay.hide))}_setTimeout(t,r){clearTimeout(this._timeout),this._timeout=setTimeout(t,r)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){let r=At.getDataAttributes(this._element);for(let n of Object.keys(r))_i.has(n)&&delete r[n];return t=N(N({},r),typeof t=="object"&&t?t:{}),t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=t.container===!1?document.body:Y(t.container),typeof t.delay=="number"&&(t.delay={show:t.delay,hide:t.delay}),typeof t.title=="number"&&(t.title=t.title.toString()),typeof t.content=="number"&&(t.content=t.content.toString()),t}_getDelegateConfig(){let t={};for(let[r,n]of Object.entries(this._config))this.constructor.Default[r]!==n&&(t[r]=n);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each(function(){let r=e.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof r[t]=="undefined")throw new TypeError(`No method named "${t}"`);r[t]()}})}};Ht(Zt);var ze=Zt;var fn="data-src",pn="data-lqip",Ue={SHIMMER:"shimmer",BLUR:"blur"};function Ye(e){this.parentElement.classList.remove(e)}function Bi(){this.complete&&(this.hasAttribute(pn)?Ye.call(this,Ue.BLUR):Ye.call(this,Ue.SHIMMER))}function ji(){let e=this.getAttribute(fn);this.setAttribute("src",encodeURI(e)),this.removeAttribute(fn)}function Ge(){let e=document.querySelectorAll("article img");if(e.length===0)return;e.forEach(r=>{r.addEventListener("load",Bi)}),document.querySelectorAll('article img[loading="lazy"]').forEach(r=>{r.complete&&Ye.call(r,Ue.SHIMMER)});let t=document.querySelectorAll(`article img[${pn}="true"]`);t.length&&t.forEach(r=>{ji.call(r)})}var Z=class{static get attrTimestamp(){return"data-ts"}static get attrDateFormat(){return"data-df"}static get locale(){return document.documentElement.getAttribute("lang").substring(0,2)}static getTimestamp(t){return Number(t.getAttribute(this.attrTimestamp))}static getDateFormat(t){return t.getAttribute(this.attrDateFormat)}};function Ke(){dayjs.locale(Z.locale),dayjs.extend(window.dayjs_plugin_localizedFormat),document.querySelectorAll(`[${Z.attrTimestamp}]`).forEach(e=>{let t=dayjs.unix(Z.getTimestamp(e)),r=t.format(Z.getDateFormat(e));if(e.textContent=r,e.removeAttribute(Z.attrTimestamp),e.removeAttribute(Z.attrDateFormat),e.hasAttribute("data-bs-toggle")&&e.getAttribute("data-bs-toggle")==="tooltip"){let n=t.format("llll");e.setAttribute("data-bs-title",n)}})}var Fi=document.getElementById("toc-bar"),Hi=document.getElementById("toc-solo-trigger"),Vi=document.getElementsByClassName("toc-trigger"),z=document.getElementById("toc-popup"),qi=document.getElementById("toc-popup-close"),dn="overflow-hidden",Qe="closing",It,Pt,mt=class mt{static initBar(){new IntersectionObserver(r=>{r.forEach(n=>{Fi.classList.toggle("invisible",n.isIntersecting)})},{rootMargin:`-${U(this,Pt)}px 0px 0px 0px`}).observe(Hi),jt(this,It,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach(r=>{r.onclick=()=>this.hidePopup()})}static refresh(){U(this,It)&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return z.open}static showPopup(){this.lockScroll(!0),z.showModal(),z.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){z.toggleAttribute(Qe),z.addEventListener("animationend",()=>{z.toggleAttribute(Qe),z.close()},{once:!0}),this.lockScroll(!1)}static lockScroll(t){document.documentElement.classList.toggle(dn,t),document.body.classList.toggle(dn,t)}static clickBackdrop(t){if(z.hasAttribute(Qe))return;let r=t.target.getBoundingClientRect();(t.clientXr.right||t.clientYr.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...Vi].forEach(t=>{t.onclick=()=>this.showPopup()}),z.onclick=t=>this.clickBackdrop(t),qi.onclick=()=>this.hidePopup(),z.oncancel=t=>{t.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}};It=new WeakMap,Pt=new WeakMap,wt(mt,It,!0),wt(mt,Pt,48),_t(mt,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:U(mt,Pt)});var Xe=mt;var Ys=matchMedia("(min-width: 1200px)");var Ks=Theme.getThemeMapper("default","dark");var hn=document.getElementById("mode-toggle");function Je(){hn&&hn.addEventListener("click",()=>{Theme.flip()})}function Ze(){let e=document.getElementById("back-to-top");window.addEventListener("scroll",()=>{window.scrollY>50?e.classList.add("show"):e.classList.remove("show")}),e.addEventListener("click",()=>{window.scrollTo({top:0})})}function tr(){[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map(t=>new ze(t))}function er(){Je(),Ze(),tr()}var Wi="sidebar-display",zi=document.getElementById("sidebar"),Ui=document.getElementById("sidebar-trigger"),mn=document.getElementById("mask"),tt,te=class{static toggle(){jt(this,tt,!U(this,tt)),document.body.toggleAttribute(Wi,U(this,tt)),zi.classList.toggle("z-2",U(this,tt)),mn.classList.toggle("d-none",!U(this,tt))}};tt=new WeakMap,wt(te,tt,!1);function rr(){Ui.onclick=mn.onclick=()=>te.toggle()}var gn=document.getElementById("sidebar-trigger"),nr=document.getElementById("search-trigger"),ee=document.getElementById("search-cancel"),vn=document.querySelectorAll("#main-wrapper>.container>.row"),bn=document.getElementById("topbar-title"),re=document.getElementById("search"),yn=document.getElementById("search-result-wrapper"),Yi=document.getElementById("search-results"),gt=document.getElementById("search-input"),ne=document.getElementById("search-hints"),or="d-block",M="d-none",En="input-focus",_n="d-flex",oe=class{static on(){gn.classList.add(M),bn.classList.add(M),nr.classList.add(M),re.classList.add(_n),ee.classList.add(or)}static off(){ee.classList.remove(or),re.classList.remove(_n),gn.classList.remove(M),bn.classList.remove(M),nr.classList.remove(M)}},st=class{static on(){this.resultVisible||(yn.classList.remove(M),vn.forEach(t=>{t.classList.add(M)}),this.resultVisible=!0)}static off(){this.resultVisible&&(Yi.innerHTML="",ne.classList.contains(M)&&ne.classList.remove(M),yn.classList.add(M),vn.forEach(t=>{t.classList.remove(M)}),gt.textContent="",this.resultVisible=!1)}};_t(st,"resultVisible",!1);function wn(){return ee.classList.contains(or)}function An(){nr.addEventListener("click",()=>{oe.on(),st.on(),gt.focus()}),ee.addEventListener("click",()=>{oe.off(),st.off()}),gt.addEventListener("focus",()=>{re.classList.add(En)}),gt.addEventListener("focusout",()=>{re.classList.remove(En)}),gt.addEventListener("input",()=>{gt.value===""?wn()?ne.classList.remove(M):st.off():(st.on(),wn()&&ne.classList.add(M))})}function ir(){An()}Ge();Ke();rr();ir();er();})(); +(() => { + var __create = Object.create; + var __defProp = Object.defineProperty; + var __defProps = Object.defineProperties; + var __getOwnPropDesc = Object.getOwnPropertyDescriptor; + var __getOwnPropDescs = Object.getOwnPropertyDescriptors; + var __getOwnPropNames = Object.getOwnPropertyNames; + var __getOwnPropSymbols = Object.getOwnPropertySymbols; + var __getProtoOf = Object.getPrototypeOf; + var __hasOwnProp = Object.prototype.hasOwnProperty; + var __propIsEnum = Object.prototype.propertyIsEnumerable; + var __typeError = (msg) => { + throw TypeError(msg); + }; + var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; + var __spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + if (__getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(b)) { + if (__propIsEnum.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + } + return a; + }; + var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); + var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; + }; + var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; + }; + var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod + )); + var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg); + var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj)); + var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value); + var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/gohugoio/hugo-mod-jslibs-dist/popperjs/v2@v2.21100.20000/package/dist/cjs/popper.js + var require_popper = __commonJS({ + "ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/gohugoio/hugo-mod-jslibs-dist/popperjs/v2@v2.21100.20000/package/dist/cjs/popper.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + function getWindow(node) { + if (node == null) { + return window; + } + if (node.toString() !== "[object Window]") { + var ownerDocument = node.ownerDocument; + return ownerDocument ? ownerDocument.defaultView || window : window; + } + return node; + } + function isElement2(node) { + var OwnElement = getWindow(node).Element; + return node instanceof OwnElement || node instanceof Element; + } + function isHTMLElement(node) { + var OwnElement = getWindow(node).HTMLElement; + return node instanceof OwnElement || node instanceof HTMLElement; + } + function isShadowRoot(node) { + if (typeof ShadowRoot === "undefined") { + return false; + } + var OwnElement = getWindow(node).ShadowRoot; + return node instanceof OwnElement || node instanceof ShadowRoot; + } + var max = Math.max; + var min = Math.min; + var round = Math.round; + function getBoundingClientRect(element, includeScale) { + if (includeScale === void 0) { + includeScale = false; + } + var rect = element.getBoundingClientRect(); + var scaleX = 1; + var scaleY = 1; + if (isHTMLElement(element) && includeScale) { + var offsetHeight = element.offsetHeight; + var offsetWidth = element.offsetWidth; + if (offsetWidth > 0) { + scaleX = round(rect.width) / offsetWidth || 1; + } + if (offsetHeight > 0) { + scaleY = round(rect.height) / offsetHeight || 1; + } + } + return { + width: rect.width / scaleX, + height: rect.height / scaleY, + top: rect.top / scaleY, + right: rect.right / scaleX, + bottom: rect.bottom / scaleY, + left: rect.left / scaleX, + x: rect.left / scaleX, + y: rect.top / scaleY + }; + } + function getWindowScroll(node) { + var win = getWindow(node); + var scrollLeft = win.pageXOffset; + var scrollTop = win.pageYOffset; + return { + scrollLeft, + scrollTop + }; + } + function getHTMLElementScroll(element) { + return { + scrollLeft: element.scrollLeft, + scrollTop: element.scrollTop + }; + } + function getNodeScroll(node) { + if (node === getWindow(node) || !isHTMLElement(node)) { + return getWindowScroll(node); + } else { + return getHTMLElementScroll(node); + } + } + function getNodeName(element) { + return element ? (element.nodeName || "").toLowerCase() : null; + } + function getDocumentElement(element) { + return ((isElement2(element) ? element.ownerDocument : ( + // $FlowFixMe[prop-missing] + element.document + )) || window.document).documentElement; + } + function getWindowScrollBarX(element) { + return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft; + } + function getComputedStyle2(element) { + return getWindow(element).getComputedStyle(element); + } + function isScrollParent(element) { + var _getComputedStyle = getComputedStyle2(element), overflow = _getComputedStyle.overflow, overflowX = _getComputedStyle.overflowX, overflowY = _getComputedStyle.overflowY; + return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX); + } + function isElementScaled(element) { + var rect = element.getBoundingClientRect(); + var scaleX = round(rect.width) / element.offsetWidth || 1; + var scaleY = round(rect.height) / element.offsetHeight || 1; + return scaleX !== 1 || scaleY !== 1; + } + function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) { + if (isFixed === void 0) { + isFixed = false; + } + var isOffsetParentAnElement = isHTMLElement(offsetParent); + var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent); + var documentElement = getDocumentElement(offsetParent); + var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled); + var scroll = { + scrollLeft: 0, + scrollTop: 0 + }; + var offsets = { + x: 0, + y: 0 + }; + if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { + if (getNodeName(offsetParent) !== "body" || // https://github.com/popperjs/popper-core/issues/1078 + isScrollParent(documentElement)) { + scroll = getNodeScroll(offsetParent); + } + if (isHTMLElement(offsetParent)) { + offsets = getBoundingClientRect(offsetParent, true); + offsets.x += offsetParent.clientLeft; + offsets.y += offsetParent.clientTop; + } else if (documentElement) { + offsets.x = getWindowScrollBarX(documentElement); + } + } + return { + x: rect.left + scroll.scrollLeft - offsets.x, + y: rect.top + scroll.scrollTop - offsets.y, + width: rect.width, + height: rect.height + }; + } + function getLayoutRect(element) { + var clientRect = getBoundingClientRect(element); + var width = element.offsetWidth; + var height = element.offsetHeight; + if (Math.abs(clientRect.width - width) <= 1) { + width = clientRect.width; + } + if (Math.abs(clientRect.height - height) <= 1) { + height = clientRect.height; + } + return { + x: element.offsetLeft, + y: element.offsetTop, + width, + height + }; + } + function getParentNode(element) { + if (getNodeName(element) === "html") { + return element; + } + return ( + // this is a quicker (but less type safe) way to save quite some bytes from the bundle + // $FlowFixMe[incompatible-return] + // $FlowFixMe[prop-missing] + element.assignedSlot || // step into the shadow DOM of the parent of a slotted node + element.parentNode || // DOM Element detected + (isShadowRoot(element) ? element.host : null) || // ShadowRoot detected + // $FlowFixMe[incompatible-call]: HTMLElement is a Node + getDocumentElement(element) + ); + } + function getScrollParent(node) { + if (["html", "body", "#document"].indexOf(getNodeName(node)) >= 0) { + return node.ownerDocument.body; + } + if (isHTMLElement(node) && isScrollParent(node)) { + return node; + } + return getScrollParent(getParentNode(node)); + } + function listScrollParents(element, list) { + var _element$ownerDocumen; + if (list === void 0) { + list = []; + } + var scrollParent = getScrollParent(element); + var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body); + var win = getWindow(scrollParent); + var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent; + var updatedList = list.concat(target); + return isBody ? updatedList : ( + // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here + updatedList.concat(listScrollParents(getParentNode(target))) + ); + } + function isTableElement(element) { + return ["table", "td", "th"].indexOf(getNodeName(element)) >= 0; + } + function getTrueOffsetParent(element) { + if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837 + getComputedStyle2(element).position === "fixed") { + return null; + } + return element.offsetParent; + } + function getContainingBlock(element) { + var isFirefox = navigator.userAgent.toLowerCase().indexOf("firefox") !== -1; + var isIE = navigator.userAgent.indexOf("Trident") !== -1; + if (isIE && isHTMLElement(element)) { + var elementCss = getComputedStyle2(element); + if (elementCss.position === "fixed") { + return null; + } + } + var currentNode = getParentNode(element); + while (isHTMLElement(currentNode) && ["html", "body"].indexOf(getNodeName(currentNode)) < 0) { + var css = getComputedStyle2(currentNode); + if (css.transform !== "none" || css.perspective !== "none" || css.contain === "paint" || ["transform", "perspective"].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === "filter" || isFirefox && css.filter && css.filter !== "none") { + return currentNode; + } else { + currentNode = currentNode.parentNode; + } + } + return null; + } + function getOffsetParent(element) { + var window2 = getWindow(element); + var offsetParent = getTrueOffsetParent(element); + while (offsetParent && isTableElement(offsetParent) && getComputedStyle2(offsetParent).position === "static") { + offsetParent = getTrueOffsetParent(offsetParent); + } + if (offsetParent && (getNodeName(offsetParent) === "html" || getNodeName(offsetParent) === "body" && getComputedStyle2(offsetParent).position === "static")) { + return window2; + } + return offsetParent || getContainingBlock(element) || window2; + } + var top = "top"; + var bottom = "bottom"; + var right = "right"; + var left = "left"; + var auto = "auto"; + var basePlacements = [top, bottom, right, left]; + var start = "start"; + var end = "end"; + var clippingParents = "clippingParents"; + var viewport = "viewport"; + var popper = "popper"; + var reference = "reference"; + var variationPlacements = /* @__PURE__ */ basePlacements.reduce(function(acc, placement) { + return acc.concat([placement + "-" + start, placement + "-" + end]); + }, []); + var placements = /* @__PURE__ */ [].concat(basePlacements, [auto]).reduce(function(acc, placement) { + return acc.concat([placement, placement + "-" + start, placement + "-" + end]); + }, []); + var beforeRead = "beforeRead"; + var read = "read"; + var afterRead = "afterRead"; + var beforeMain = "beforeMain"; + var main = "main"; + var afterMain = "afterMain"; + var beforeWrite = "beforeWrite"; + var write = "write"; + var afterWrite = "afterWrite"; + var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite]; + function order(modifiers) { + var map = /* @__PURE__ */ new Map(); + var visited = /* @__PURE__ */ new Set(); + var result = []; + modifiers.forEach(function(modifier) { + map.set(modifier.name, modifier); + }); + function sort(modifier) { + visited.add(modifier.name); + var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []); + requires.forEach(function(dep) { + if (!visited.has(dep)) { + var depModifier = map.get(dep); + if (depModifier) { + sort(depModifier); + } + } + }); + result.push(modifier); + } + modifiers.forEach(function(modifier) { + if (!visited.has(modifier.name)) { + sort(modifier); + } + }); + return result; + } + function orderModifiers(modifiers) { + var orderedModifiers = order(modifiers); + return modifierPhases.reduce(function(acc, phase) { + return acc.concat(orderedModifiers.filter(function(modifier) { + return modifier.phase === phase; + })); + }, []); + } + function debounce(fn) { + var pending; + return function() { + if (!pending) { + pending = new Promise(function(resolve) { + Promise.resolve().then(function() { + pending = void 0; + resolve(fn()); + }); + }); + } + return pending; + }; + } + function format(str) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + return [].concat(args).reduce(function(p, c) { + return p.replace(/%s/, c); + }, str); + } + var INVALID_MODIFIER_ERROR = 'Popper: modifier "%s" provided an invalid %s property, expected %s but got %s'; + var MISSING_DEPENDENCY_ERROR = 'Popper: modifier "%s" requires "%s", but "%s" modifier is not available'; + var VALID_PROPERTIES = ["name", "enabled", "phase", "fn", "effect", "requires", "options"]; + function validateModifiers(modifiers) { + modifiers.forEach(function(modifier) { + [].concat(Object.keys(modifier), VALID_PROPERTIES).filter(function(value, index, self) { + return self.indexOf(value) === index; + }).forEach(function(key) { + switch (key) { + case "name": + if (typeof modifier.name !== "string") { + console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '"name"', '"string"', '"' + String(modifier.name) + '"')); + } + break; + case "enabled": + if (typeof modifier.enabled !== "boolean") { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"enabled"', '"boolean"', '"' + String(modifier.enabled) + '"')); + } + break; + case "phase": + if (modifierPhases.indexOf(modifier.phase) < 0) { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + modifierPhases.join(", "), '"' + String(modifier.phase) + '"')); + } + break; + case "fn": + if (typeof modifier.fn !== "function") { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"fn"', '"function"', '"' + String(modifier.fn) + '"')); + } + break; + case "effect": + if (modifier.effect != null && typeof modifier.effect !== "function") { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"effect"', '"function"', '"' + String(modifier.fn) + '"')); + } + break; + case "requires": + if (modifier.requires != null && !Array.isArray(modifier.requires)) { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requires"', '"array"', '"' + String(modifier.requires) + '"')); + } + break; + case "requiresIfExists": + if (!Array.isArray(modifier.requiresIfExists)) { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requiresIfExists"', '"array"', '"' + String(modifier.requiresIfExists) + '"')); + } + break; + case "options": + case "data": + break; + default: + console.error('PopperJS: an invalid property has been provided to the "' + modifier.name + '" modifier, valid properties are ' + VALID_PROPERTIES.map(function(s) { + return '"' + s + '"'; + }).join(", ") + '; but "' + key + '" was provided.'); + } + modifier.requires && modifier.requires.forEach(function(requirement) { + if (modifiers.find(function(mod) { + return mod.name === requirement; + }) == null) { + console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement)); + } + }); + }); + }); + } + function uniqueBy(arr, fn) { + var identifiers = /* @__PURE__ */ new Set(); + return arr.filter(function(item) { + var identifier = fn(item); + if (!identifiers.has(identifier)) { + identifiers.add(identifier); + return true; + } + }); + } + function getBasePlacement(placement) { + return placement.split("-")[0]; + } + function mergeByName(modifiers) { + var merged = modifiers.reduce(function(merged2, current) { + var existing = merged2[current.name]; + merged2[current.name] = existing ? Object.assign({}, existing, current, { + options: Object.assign({}, existing.options, current.options), + data: Object.assign({}, existing.data, current.data) + }) : current; + return merged2; + }, {}); + return Object.keys(merged).map(function(key) { + return merged[key]; + }); + } + function getViewportRect(element) { + var win = getWindow(element); + var html = getDocumentElement(element); + var visualViewport = win.visualViewport; + var width = html.clientWidth; + var height = html.clientHeight; + var x = 0; + var y = 0; + if (visualViewport) { + width = visualViewport.width; + height = visualViewport.height; + if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) { + x = visualViewport.offsetLeft; + y = visualViewport.offsetTop; + } + } + return { + width, + height, + x: x + getWindowScrollBarX(element), + y + }; + } + function getDocumentRect(element) { + var _element$ownerDocumen; + var html = getDocumentElement(element); + var winScroll = getWindowScroll(element); + var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body; + var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); + var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); + var x = -winScroll.scrollLeft + getWindowScrollBarX(element); + var y = -winScroll.scrollTop; + if (getComputedStyle2(body || html).direction === "rtl") { + x += max(html.clientWidth, body ? body.clientWidth : 0) - width; + } + return { + width, + height, + x, + y + }; + } + function contains(parent, child) { + var rootNode = child.getRootNode && child.getRootNode(); + if (parent.contains(child)) { + return true; + } else if (rootNode && isShadowRoot(rootNode)) { + var next = child; + do { + if (next && parent.isSameNode(next)) { + return true; + } + next = next.parentNode || next.host; + } while (next); + } + return false; + } + function rectToClientRect(rect) { + return Object.assign({}, rect, { + left: rect.x, + top: rect.y, + right: rect.x + rect.width, + bottom: rect.y + rect.height + }); + } + function getInnerBoundingClientRect(element) { + var rect = getBoundingClientRect(element); + rect.top = rect.top + element.clientTop; + rect.left = rect.left + element.clientLeft; + rect.bottom = rect.top + element.clientHeight; + rect.right = rect.left + element.clientWidth; + rect.width = element.clientWidth; + rect.height = element.clientHeight; + rect.x = rect.left; + rect.y = rect.top; + return rect; + } + function getClientRectFromMixedType(element, clippingParent) { + return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isElement2(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element))); + } + function getClippingParents(element) { + var clippingParents2 = listScrollParents(getParentNode(element)); + var canEscapeClipping = ["absolute", "fixed"].indexOf(getComputedStyle2(element).position) >= 0; + var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element; + if (!isElement2(clipperElement)) { + return []; + } + return clippingParents2.filter(function(clippingParent) { + return isElement2(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== "body" && (canEscapeClipping ? getComputedStyle2(clippingParent).position !== "static" : true); + }); + } + function getClippingRect(element, boundary, rootBoundary) { + var mainClippingParents = boundary === "clippingParents" ? getClippingParents(element) : [].concat(boundary); + var clippingParents2 = [].concat(mainClippingParents, [rootBoundary]); + var firstClippingParent = clippingParents2[0]; + var clippingRect = clippingParents2.reduce(function(accRect, clippingParent) { + var rect = getClientRectFromMixedType(element, clippingParent); + accRect.top = max(rect.top, accRect.top); + accRect.right = min(rect.right, accRect.right); + accRect.bottom = min(rect.bottom, accRect.bottom); + accRect.left = max(rect.left, accRect.left); + return accRect; + }, getClientRectFromMixedType(element, firstClippingParent)); + clippingRect.width = clippingRect.right - clippingRect.left; + clippingRect.height = clippingRect.bottom - clippingRect.top; + clippingRect.x = clippingRect.left; + clippingRect.y = clippingRect.top; + return clippingRect; + } + function getVariation(placement) { + return placement.split("-")[1]; + } + function getMainAxisFromPlacement(placement) { + return ["top", "bottom"].indexOf(placement) >= 0 ? "x" : "y"; + } + function computeOffsets(_ref) { + var reference2 = _ref.reference, element = _ref.element, placement = _ref.placement; + var basePlacement = placement ? getBasePlacement(placement) : null; + var variation = placement ? getVariation(placement) : null; + var commonX = reference2.x + reference2.width / 2 - element.width / 2; + var commonY = reference2.y + reference2.height / 2 - element.height / 2; + var offsets; + switch (basePlacement) { + case top: + offsets = { + x: commonX, + y: reference2.y - element.height + }; + break; + case bottom: + offsets = { + x: commonX, + y: reference2.y + reference2.height + }; + break; + case right: + offsets = { + x: reference2.x + reference2.width, + y: commonY + }; + break; + case left: + offsets = { + x: reference2.x - element.width, + y: commonY + }; + break; + default: + offsets = { + x: reference2.x, + y: reference2.y + }; + } + var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null; + if (mainAxis != null) { + var len = mainAxis === "y" ? "height" : "width"; + switch (variation) { + case start: + offsets[mainAxis] = offsets[mainAxis] - (reference2[len] / 2 - element[len] / 2); + break; + case end: + offsets[mainAxis] = offsets[mainAxis] + (reference2[len] / 2 - element[len] / 2); + break; + } + } + return offsets; + } + function getFreshSideObject() { + return { + top: 0, + right: 0, + bottom: 0, + left: 0 + }; + } + function mergePaddingObject(paddingObject) { + return Object.assign({}, getFreshSideObject(), paddingObject); + } + function expandToHashMap(value, keys) { + return keys.reduce(function(hashMap, key) { + hashMap[key] = value; + return hashMap; + }, {}); + } + function detectOverflow(state, options) { + if (options === void 0) { + options = {}; + } + var _options = options, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, _options$elementConte = _options.elementContext, elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, _options$altBoundary = _options.altBoundary, altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, _options$padding = _options.padding, padding = _options$padding === void 0 ? 0 : _options$padding; + var paddingObject = mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements)); + var altContext = elementContext === popper ? reference : popper; + var popperRect = state.rects.popper; + var element = state.elements[altBoundary ? altContext : elementContext]; + var clippingClientRect = getClippingRect(isElement2(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary); + var referenceClientRect = getBoundingClientRect(state.elements.reference); + var popperOffsets2 = computeOffsets({ + reference: referenceClientRect, + element: popperRect, + strategy: "absolute", + placement + }); + var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets2)); + var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; + var overflowOffsets = { + top: clippingClientRect.top - elementClientRect.top + paddingObject.top, + bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom, + left: clippingClientRect.left - elementClientRect.left + paddingObject.left, + right: elementClientRect.right - clippingClientRect.right + paddingObject.right + }; + var offsetData = state.modifiersData.offset; + if (elementContext === popper && offsetData) { + var offset2 = offsetData[placement]; + Object.keys(overflowOffsets).forEach(function(key) { + var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1; + var axis = [top, bottom].indexOf(key) >= 0 ? "y" : "x"; + overflowOffsets[key] += offset2[axis] * multiply; + }); + } + return overflowOffsets; + } + var INVALID_ELEMENT_ERROR = "Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element."; + var INFINITE_LOOP_ERROR = "Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash."; + var DEFAULT_OPTIONS = { + placement: "bottom", + modifiers: [], + strategy: "absolute" + }; + function areValidElements() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + return !args.some(function(element) { + return !(element && typeof element.getBoundingClientRect === "function"); + }); + } + function popperGenerator(generatorOptions) { + if (generatorOptions === void 0) { + generatorOptions = {}; + } + var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers2 = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2; + return function createPopper3(reference2, popper2, options) { + if (options === void 0) { + options = defaultOptions; + } + var state = { + placement: "bottom", + orderedModifiers: [], + options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions), + modifiersData: {}, + elements: { + reference: reference2, + popper: popper2 + }, + attributes: {}, + styles: {} + }; + var effectCleanupFns = []; + var isDestroyed = false; + var instance = { + state, + setOptions: function setOptions(setOptionsAction) { + var options2 = typeof setOptionsAction === "function" ? setOptionsAction(state.options) : setOptionsAction; + cleanupModifierEffects(); + state.options = Object.assign({}, defaultOptions, state.options, options2); + state.scrollParents = { + reference: isElement2(reference2) ? listScrollParents(reference2) : reference2.contextElement ? listScrollParents(reference2.contextElement) : [], + popper: listScrollParents(popper2) + }; + var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers2, state.options.modifiers))); + state.orderedModifiers = orderedModifiers.filter(function(m) { + return m.enabled; + }); + if (true) { + var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function(_ref) { + var name = _ref.name; + return name; + }); + validateModifiers(modifiers); + if (getBasePlacement(state.options.placement) === auto) { + var flipModifier = state.orderedModifiers.find(function(_ref2) { + var name = _ref2.name; + return name === "flip"; + }); + if (!flipModifier) { + console.error(['Popper: "auto" placements require the "flip" modifier be', "present and enabled to work."].join(" ")); + } + } + var _getComputedStyle = getComputedStyle2(popper2), marginTop = _getComputedStyle.marginTop, marginRight = _getComputedStyle.marginRight, marginBottom = _getComputedStyle.marginBottom, marginLeft = _getComputedStyle.marginLeft; + if ([marginTop, marginRight, marginBottom, marginLeft].some(function(margin) { + return parseFloat(margin); + })) { + console.warn(['Popper: CSS "margin" styles cannot be used to apply padding', "between the popper and its reference element or boundary.", "To replicate margin, use the `offset` modifier, as well as", "the `padding` option in the `preventOverflow` and `flip`", "modifiers."].join(" ")); + } + } + runModifierEffects(); + return instance.update(); + }, + // Sync update – it will always be executed, even if not necessary. This + // is useful for low frequency updates where sync behavior simplifies the + // logic. + // For high frequency updates (e.g. `resize` and `scroll` events), always + // prefer the async Popper#update method + forceUpdate: function forceUpdate() { + if (isDestroyed) { + return; + } + var _state$elements = state.elements, reference3 = _state$elements.reference, popper3 = _state$elements.popper; + if (!areValidElements(reference3, popper3)) { + if (true) { + console.error(INVALID_ELEMENT_ERROR); + } + return; + } + state.rects = { + reference: getCompositeRect(reference3, getOffsetParent(popper3), state.options.strategy === "fixed"), + popper: getLayoutRect(popper3) + }; + state.reset = false; + state.placement = state.options.placement; + state.orderedModifiers.forEach(function(modifier) { + return state.modifiersData[modifier.name] = Object.assign({}, modifier.data); + }); + var __debug_loops__ = 0; + for (var index = 0; index < state.orderedModifiers.length; index++) { + if (true) { + __debug_loops__ += 1; + if (__debug_loops__ > 100) { + console.error(INFINITE_LOOP_ERROR); + break; + } + } + if (state.reset === true) { + state.reset = false; + index = -1; + continue; + } + var _state$orderedModifie = state.orderedModifiers[index], fn = _state$orderedModifie.fn, _state$orderedModifie2 = _state$orderedModifie.options, _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, name = _state$orderedModifie.name; + if (typeof fn === "function") { + state = fn({ + state, + options: _options, + name, + instance + }) || state; + } + } + }, + // Async and optimistically optimized update – it will not be executed if + // not necessary (debounced to run at most once-per-tick) + update: debounce(function() { + return new Promise(function(resolve) { + instance.forceUpdate(); + resolve(state); + }); + }), + destroy: function destroy() { + cleanupModifierEffects(); + isDestroyed = true; + } + }; + if (!areValidElements(reference2, popper2)) { + if (true) { + console.error(INVALID_ELEMENT_ERROR); + } + return instance; + } + instance.setOptions(options).then(function(state2) { + if (!isDestroyed && options.onFirstUpdate) { + options.onFirstUpdate(state2); + } + }); + function runModifierEffects() { + state.orderedModifiers.forEach(function(_ref3) { + var name = _ref3.name, _ref3$options = _ref3.options, options2 = _ref3$options === void 0 ? {} : _ref3$options, effect2 = _ref3.effect; + if (typeof effect2 === "function") { + var cleanupFn = effect2({ + state, + name, + instance, + options: options2 + }); + var noopFn = function noopFn2() { + }; + effectCleanupFns.push(cleanupFn || noopFn); + } + }); + } + function cleanupModifierEffects() { + effectCleanupFns.forEach(function(fn) { + return fn(); + }); + effectCleanupFns = []; + } + return instance; + }; + } + var passive = { + passive: true + }; + function effect$2(_ref) { + var state = _ref.state, instance = _ref.instance, options = _ref.options; + var _options$scroll = options.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options.resize, resize = _options$resize === void 0 ? true : _options$resize; + var window2 = getWindow(state.elements.popper); + var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper); + if (scroll) { + scrollParents.forEach(function(scrollParent) { + scrollParent.addEventListener("scroll", instance.update, passive); + }); + } + if (resize) { + window2.addEventListener("resize", instance.update, passive); + } + return function() { + if (scroll) { + scrollParents.forEach(function(scrollParent) { + scrollParent.removeEventListener("scroll", instance.update, passive); + }); + } + if (resize) { + window2.removeEventListener("resize", instance.update, passive); + } + }; + } + var eventListeners = { + name: "eventListeners", + enabled: true, + phase: "write", + fn: function fn() { + }, + effect: effect$2, + data: {} + }; + function popperOffsets(_ref) { + var state = _ref.state, name = _ref.name; + state.modifiersData[name] = computeOffsets({ + reference: state.rects.reference, + element: state.rects.popper, + strategy: "absolute", + placement: state.placement + }); + } + var popperOffsets$1 = { + name: "popperOffsets", + enabled: true, + phase: "read", + fn: popperOffsets, + data: {} + }; + var unsetSides = { + top: "auto", + right: "auto", + bottom: "auto", + left: "auto" + }; + function roundOffsetsByDPR(_ref) { + var x = _ref.x, y = _ref.y; + var win = window; + var dpr = win.devicePixelRatio || 1; + return { + x: round(x * dpr) / dpr || 0, + y: round(y * dpr) / dpr || 0 + }; + } + function mapToStyles(_ref2) { + var _Object$assign2; + var popper2 = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, variation = _ref2.variation, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets, isFixed = _ref2.isFixed; + var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === "function" ? roundOffsets(offsets) : offsets, _ref3$x = _ref3.x, x = _ref3$x === void 0 ? 0 : _ref3$x, _ref3$y = _ref3.y, y = _ref3$y === void 0 ? 0 : _ref3$y; + var hasX = offsets.hasOwnProperty("x"); + var hasY = offsets.hasOwnProperty("y"); + var sideX = left; + var sideY = top; + var win = window; + if (adaptive) { + var offsetParent = getOffsetParent(popper2); + var heightProp = "clientHeight"; + var widthProp = "clientWidth"; + if (offsetParent === getWindow(popper2)) { + offsetParent = getDocumentElement(popper2); + if (getComputedStyle2(offsetParent).position !== "static" && position === "absolute") { + heightProp = "scrollHeight"; + widthProp = "scrollWidth"; + } + } + offsetParent = offsetParent; + if (placement === top || (placement === left || placement === right) && variation === end) { + sideY = bottom; + var offsetY = isFixed && win.visualViewport ? win.visualViewport.height : ( + // $FlowFixMe[prop-missing] + offsetParent[heightProp] + ); + y -= offsetY - popperRect.height; + y *= gpuAcceleration ? 1 : -1; + } + if (placement === left || (placement === top || placement === bottom) && variation === end) { + sideX = right; + var offsetX = isFixed && win.visualViewport ? win.visualViewport.width : ( + // $FlowFixMe[prop-missing] + offsetParent[widthProp] + ); + x -= offsetX - popperRect.width; + x *= gpuAcceleration ? 1 : -1; + } + } + var commonStyles = Object.assign({ + position + }, adaptive && unsetSides); + if (gpuAcceleration) { + var _Object$assign; + return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? "0" : "", _Object$assign[sideX] = hasX ? "0" : "", _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); + } + return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : "", _Object$assign2[sideX] = hasX ? x + "px" : "", _Object$assign2.transform = "", _Object$assign2)); + } + function computeStyles(_ref4) { + var state = _ref4.state, options = _ref4.options; + var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets; + if (true) { + var transitionProperty = getComputedStyle2(state.elements.popper).transitionProperty || ""; + if (adaptive && ["transform", "top", "right", "bottom", "left"].some(function(property) { + return transitionProperty.indexOf(property) >= 0; + })) { + console.warn(["Popper: Detected CSS transitions on at least one of the following", 'CSS properties: "transform", "top", "right", "bottom", "left".', "\n\n", 'Disable the "computeStyles" modifier\'s `adaptive` option to allow', "for smooth transitions, or remove these properties from the CSS", "transition declaration on the popper element if only transitioning", "opacity or background-color for example.", "\n\n", "We recommend using the popper element as a wrapper around an inner", "element that can have any CSS property transitioned for animations."].join(" ")); + } + } + var commonStyles = { + placement: getBasePlacement(state.placement), + variation: getVariation(state.placement), + popper: state.elements.popper, + popperRect: state.rects.popper, + gpuAcceleration, + isFixed: state.options.strategy === "fixed" + }; + if (state.modifiersData.popperOffsets != null) { + state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, { + offsets: state.modifiersData.popperOffsets, + position: state.options.strategy, + adaptive, + roundOffsets + }))); + } + if (state.modifiersData.arrow != null) { + state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, { + offsets: state.modifiersData.arrow, + position: "absolute", + adaptive: false, + roundOffsets + }))); + } + state.attributes.popper = Object.assign({}, state.attributes.popper, { + "data-popper-placement": state.placement + }); + } + var computeStyles$1 = { + name: "computeStyles", + enabled: true, + phase: "beforeWrite", + fn: computeStyles, + data: {} + }; + function applyStyles(_ref) { + var state = _ref.state; + Object.keys(state.elements).forEach(function(name) { + var style = state.styles[name] || {}; + var attributes = state.attributes[name] || {}; + var element = state.elements[name]; + if (!isHTMLElement(element) || !getNodeName(element)) { + return; + } + Object.assign(element.style, style); + Object.keys(attributes).forEach(function(name2) { + var value = attributes[name2]; + if (value === false) { + element.removeAttribute(name2); + } else { + element.setAttribute(name2, value === true ? "" : value); + } + }); + }); + } + function effect$1(_ref2) { + var state = _ref2.state; + var initialStyles = { + popper: { + position: state.options.strategy, + left: "0", + top: "0", + margin: "0" + }, + arrow: { + position: "absolute" + }, + reference: {} + }; + Object.assign(state.elements.popper.style, initialStyles.popper); + state.styles = initialStyles; + if (state.elements.arrow) { + Object.assign(state.elements.arrow.style, initialStyles.arrow); + } + return function() { + Object.keys(state.elements).forEach(function(name) { + var element = state.elements[name]; + var attributes = state.attributes[name] || {}; + var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); + var style = styleProperties.reduce(function(style2, property) { + style2[property] = ""; + return style2; + }, {}); + if (!isHTMLElement(element) || !getNodeName(element)) { + return; + } + Object.assign(element.style, style); + Object.keys(attributes).forEach(function(attribute) { + element.removeAttribute(attribute); + }); + }); + }; + } + var applyStyles$1 = { + name: "applyStyles", + enabled: true, + phase: "write", + fn: applyStyles, + effect: effect$1, + requires: ["computeStyles"] + }; + function distanceAndSkiddingToXY(placement, rects, offset2) { + var basePlacement = getBasePlacement(placement); + var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1; + var _ref = typeof offset2 === "function" ? offset2(Object.assign({}, rects, { + placement + })) : offset2, skidding = _ref[0], distance = _ref[1]; + skidding = skidding || 0; + distance = (distance || 0) * invertDistance; + return [left, right].indexOf(basePlacement) >= 0 ? { + x: distance, + y: skidding + } : { + x: skidding, + y: distance + }; + } + function offset(_ref2) { + var state = _ref2.state, options = _ref2.options, name = _ref2.name; + var _options$offset = options.offset, offset2 = _options$offset === void 0 ? [0, 0] : _options$offset; + var data = placements.reduce(function(acc, placement) { + acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset2); + return acc; + }, {}); + var _data$state$placement = data[state.placement], x = _data$state$placement.x, y = _data$state$placement.y; + if (state.modifiersData.popperOffsets != null) { + state.modifiersData.popperOffsets.x += x; + state.modifiersData.popperOffsets.y += y; + } + state.modifiersData[name] = data; + } + var offset$1 = { + name: "offset", + enabled: true, + phase: "main", + requires: ["popperOffsets"], + fn: offset + }; + var hash$1 = { + left: "right", + right: "left", + bottom: "top", + top: "bottom" + }; + function getOppositePlacement(placement) { + return placement.replace(/left|right|bottom|top/g, function(matched) { + return hash$1[matched]; + }); + } + var hash = { + start: "end", + end: "start" + }; + function getOppositeVariationPlacement(placement) { + return placement.replace(/start|end/g, function(matched) { + return hash[matched]; + }); + } + function computeAutoPlacement(state, options) { + if (options === void 0) { + options = {}; + } + var _options = options, placement = _options.placement, boundary = _options.boundary, rootBoundary = _options.rootBoundary, padding = _options.padding, flipVariations = _options.flipVariations, _options$allowedAutoP = _options.allowedAutoPlacements, allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP; + var variation = getVariation(placement); + var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function(placement2) { + return getVariation(placement2) === variation; + }) : basePlacements; + var allowedPlacements = placements$1.filter(function(placement2) { + return allowedAutoPlacements.indexOf(placement2) >= 0; + }); + if (allowedPlacements.length === 0) { + allowedPlacements = placements$1; + if (true) { + console.error(["Popper: The `allowedAutoPlacements` option did not allow any", "placements. Ensure the `placement` option matches the variation", "of the allowed placements.", 'For example, "auto" cannot be used to allow "bottom-start".', 'Use "auto-start" instead.'].join(" ")); + } + } + var overflows = allowedPlacements.reduce(function(acc, placement2) { + acc[placement2] = detectOverflow(state, { + placement: placement2, + boundary, + rootBoundary, + padding + })[getBasePlacement(placement2)]; + return acc; + }, {}); + return Object.keys(overflows).sort(function(a, b) { + return overflows[a] - overflows[b]; + }); + } + function getExpandedFallbackPlacements(placement) { + if (getBasePlacement(placement) === auto) { + return []; + } + var oppositePlacement = getOppositePlacement(placement); + return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)]; + } + function flip(_ref) { + var state = _ref.state, options = _ref.options, name = _ref.name; + if (state.modifiersData[name]._skip) { + return; + } + var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, specifiedFallbackPlacements = options.fallbackPlacements, padding = options.padding, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, _options$flipVariatio = options.flipVariations, flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, allowedAutoPlacements = options.allowedAutoPlacements; + var preferredPlacement = state.options.placement; + var basePlacement = getBasePlacement(preferredPlacement); + var isBasePlacement = basePlacement === preferredPlacement; + var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement)); + var placements2 = [preferredPlacement].concat(fallbackPlacements).reduce(function(acc, placement2) { + return acc.concat(getBasePlacement(placement2) === auto ? computeAutoPlacement(state, { + placement: placement2, + boundary, + rootBoundary, + padding, + flipVariations, + allowedAutoPlacements + }) : placement2); + }, []); + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var checksMap = /* @__PURE__ */ new Map(); + var makeFallbackChecks = true; + var firstFittingPlacement = placements2[0]; + for (var i = 0; i < placements2.length; i++) { + var placement = placements2[i]; + var _basePlacement = getBasePlacement(placement); + var isStartVariation = getVariation(placement) === start; + var isVertical = [top, bottom].indexOf(_basePlacement) >= 0; + var len = isVertical ? "width" : "height"; + var overflow = detectOverflow(state, { + placement, + boundary, + rootBoundary, + altBoundary, + padding + }); + var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top; + if (referenceRect[len] > popperRect[len]) { + mainVariationSide = getOppositePlacement(mainVariationSide); + } + var altVariationSide = getOppositePlacement(mainVariationSide); + var checks = []; + if (checkMainAxis) { + checks.push(overflow[_basePlacement] <= 0); + } + if (checkAltAxis) { + checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0); + } + if (checks.every(function(check) { + return check; + })) { + firstFittingPlacement = placement; + makeFallbackChecks = false; + break; + } + checksMap.set(placement, checks); + } + if (makeFallbackChecks) { + var numberOfChecks = flipVariations ? 3 : 1; + var _loop = function _loop2(_i2) { + var fittingPlacement = placements2.find(function(placement2) { + var checks2 = checksMap.get(placement2); + if (checks2) { + return checks2.slice(0, _i2).every(function(check) { + return check; + }); + } + }); + if (fittingPlacement) { + firstFittingPlacement = fittingPlacement; + return "break"; + } + }; + for (var _i = numberOfChecks; _i > 0; _i--) { + var _ret = _loop(_i); + if (_ret === "break") break; + } + } + if (state.placement !== firstFittingPlacement) { + state.modifiersData[name]._skip = true; + state.placement = firstFittingPlacement; + state.reset = true; + } + } + var flip$1 = { + name: "flip", + enabled: true, + phase: "main", + fn: flip, + requiresIfExists: ["offset"], + data: { + _skip: false + } + }; + function getAltAxis(axis) { + return axis === "x" ? "y" : "x"; + } + function within(min$1, value, max$1) { + return max(min$1, min(value, max$1)); + } + function withinMaxClamp(min2, value, max2) { + var v = within(min2, value, max2); + return v > max2 ? max2 : v; + } + function preventOverflow(_ref) { + var state = _ref.state, options = _ref.options, name = _ref.name; + var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, padding = options.padding, _options$tether = options.tether, tether = _options$tether === void 0 ? true : _options$tether, _options$tetherOffset = options.tetherOffset, tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset; + var overflow = detectOverflow(state, { + boundary, + rootBoundary, + padding, + altBoundary + }); + var basePlacement = getBasePlacement(state.placement); + var variation = getVariation(state.placement); + var isBasePlacement = !variation; + var mainAxis = getMainAxisFromPlacement(basePlacement); + var altAxis = getAltAxis(mainAxis); + var popperOffsets2 = state.modifiersData.popperOffsets; + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var tetherOffsetValue = typeof tetherOffset === "function" ? tetherOffset(Object.assign({}, state.rects, { + placement: state.placement + })) : tetherOffset; + var normalizedTetherOffsetValue = typeof tetherOffsetValue === "number" ? { + mainAxis: tetherOffsetValue, + altAxis: tetherOffsetValue + } : Object.assign({ + mainAxis: 0, + altAxis: 0 + }, tetherOffsetValue); + var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null; + var data = { + x: 0, + y: 0 + }; + if (!popperOffsets2) { + return; + } + if (checkMainAxis) { + var _offsetModifierState$; + var mainSide = mainAxis === "y" ? top : left; + var altSide = mainAxis === "y" ? bottom : right; + var len = mainAxis === "y" ? "height" : "width"; + var offset2 = popperOffsets2[mainAxis]; + var min$1 = offset2 + overflow[mainSide]; + var max$1 = offset2 - overflow[altSide]; + var additive = tether ? -popperRect[len] / 2 : 0; + var minLen = variation === start ? referenceRect[len] : popperRect[len]; + var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; + var arrowElement = state.elements.arrow; + var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : { + width: 0, + height: 0 + }; + var arrowPaddingObject = state.modifiersData["arrow#persistent"] ? state.modifiersData["arrow#persistent"].padding : getFreshSideObject(); + var arrowPaddingMin = arrowPaddingObject[mainSide]; + var arrowPaddingMax = arrowPaddingObject[altSide]; + var arrowLen = within(0, referenceRect[len], arrowRect[len]); + var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis; + var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis; + var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow); + var clientOffset = arrowOffsetParent ? mainAxis === "y" ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0; + var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0; + var tetherMin = offset2 + minOffset - offsetModifierValue - clientOffset; + var tetherMax = offset2 + maxOffset - offsetModifierValue; + var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset2, tether ? max(max$1, tetherMax) : max$1); + popperOffsets2[mainAxis] = preventedOffset; + data[mainAxis] = preventedOffset - offset2; + } + if (checkAltAxis) { + var _offsetModifierState$2; + var _mainSide = mainAxis === "x" ? top : left; + var _altSide = mainAxis === "x" ? bottom : right; + var _offset = popperOffsets2[altAxis]; + var _len = altAxis === "y" ? "height" : "width"; + var _min = _offset + overflow[_mainSide]; + var _max = _offset - overflow[_altSide]; + var isOriginSide = [top, left].indexOf(basePlacement) !== -1; + var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0; + var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis; + var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max; + var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max); + popperOffsets2[altAxis] = _preventedOffset; + data[altAxis] = _preventedOffset - _offset; + } + state.modifiersData[name] = data; + } + var preventOverflow$1 = { + name: "preventOverflow", + enabled: true, + phase: "main", + fn: preventOverflow, + requiresIfExists: ["offset"] + }; + var toPaddingObject = function toPaddingObject2(padding, state) { + padding = typeof padding === "function" ? padding(Object.assign({}, state.rects, { + placement: state.placement + })) : padding; + return mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements)); + }; + function arrow(_ref) { + var _state$modifiersData$; + var state = _ref.state, name = _ref.name, options = _ref.options; + var arrowElement = state.elements.arrow; + var popperOffsets2 = state.modifiersData.popperOffsets; + var basePlacement = getBasePlacement(state.placement); + var axis = getMainAxisFromPlacement(basePlacement); + var isVertical = [left, right].indexOf(basePlacement) >= 0; + var len = isVertical ? "height" : "width"; + if (!arrowElement || !popperOffsets2) { + return; + } + var paddingObject = toPaddingObject(options.padding, state); + var arrowRect = getLayoutRect(arrowElement); + var minProp = axis === "y" ? top : left; + var maxProp = axis === "y" ? bottom : right; + var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets2[axis] - state.rects.popper[len]; + var startDiff = popperOffsets2[axis] - state.rects.reference[axis]; + var arrowOffsetParent = getOffsetParent(arrowElement); + var clientSize = arrowOffsetParent ? axis === "y" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0; + var centerToReference = endDiff / 2 - startDiff / 2; + var min2 = paddingObject[minProp]; + var max2 = clientSize - arrowRect[len] - paddingObject[maxProp]; + var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference; + var offset2 = within(min2, center, max2); + var axisProp = axis; + state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset2, _state$modifiersData$.centerOffset = offset2 - center, _state$modifiersData$); + } + function effect(_ref2) { + var state = _ref2.state, options = _ref2.options; + var _options$element = options.element, arrowElement = _options$element === void 0 ? "[data-popper-arrow]" : _options$element; + if (arrowElement == null) { + return; + } + if (typeof arrowElement === "string") { + arrowElement = state.elements.popper.querySelector(arrowElement); + if (!arrowElement) { + return; + } + } + if (true) { + if (!isHTMLElement(arrowElement)) { + console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).', "To use an SVG arrow, wrap it in an HTMLElement that will be used as", "the arrow."].join(" ")); + } + } + if (!contains(state.elements.popper, arrowElement)) { + if (true) { + console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper', "element."].join(" ")); + } + return; + } + state.elements.arrow = arrowElement; + } + var arrow$1 = { + name: "arrow", + enabled: true, + phase: "main", + fn: arrow, + effect, + requires: ["popperOffsets"], + requiresIfExists: ["preventOverflow"] + }; + function getSideOffsets(overflow, rect, preventedOffsets) { + if (preventedOffsets === void 0) { + preventedOffsets = { + x: 0, + y: 0 + }; + } + return { + top: overflow.top - rect.height - preventedOffsets.y, + right: overflow.right - rect.width + preventedOffsets.x, + bottom: overflow.bottom - rect.height + preventedOffsets.y, + left: overflow.left - rect.width - preventedOffsets.x + }; + } + function isAnySideFullyClipped(overflow) { + return [top, right, bottom, left].some(function(side) { + return overflow[side] >= 0; + }); + } + function hide(_ref) { + var state = _ref.state, name = _ref.name; + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var preventedOffsets = state.modifiersData.preventOverflow; + var referenceOverflow = detectOverflow(state, { + elementContext: "reference" + }); + var popperAltOverflow = detectOverflow(state, { + altBoundary: true + }); + var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect); + var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets); + var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets); + var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets); + state.modifiersData[name] = { + referenceClippingOffsets, + popperEscapeOffsets, + isReferenceHidden, + hasPopperEscaped + }; + state.attributes.popper = Object.assign({}, state.attributes.popper, { + "data-popper-reference-hidden": isReferenceHidden, + "data-popper-escaped": hasPopperEscaped + }); + } + var hide$1 = { + name: "hide", + enabled: true, + phase: "main", + requiresIfExists: ["preventOverflow"], + fn: hide + }; + var defaultModifiers$1 = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1]; + var createPopper$1 = /* @__PURE__ */ popperGenerator({ + defaultModifiers: defaultModifiers$1 + }); + var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1]; + var createPopper2 = /* @__PURE__ */ popperGenerator({ + defaultModifiers + }); + exports.applyStyles = applyStyles$1; + exports.arrow = arrow$1; + exports.computeStyles = computeStyles$1; + exports.createPopper = createPopper2; + exports.createPopperLite = createPopper$1; + exports.defaultModifiers = defaultModifiers; + exports.detectOverflow = detectOverflow; + exports.eventListeners = eventListeners; + exports.flip = flip$1; + exports.hide = hide$1; + exports.offset = offset$1; + exports.popperGenerator = popperGenerator; + exports.popperOffsets = popperOffsets$1; + exports.preventOverflow = preventOverflow$1; + } + }); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/dom/data.js + var elementMap = /* @__PURE__ */ new Map(); + var data_default = { + set(element, key, instance) { + if (!elementMap.has(element)) { + elementMap.set(element, /* @__PURE__ */ new Map()); + } + const instanceMap = elementMap.get(element); + if (!instanceMap.has(key) && instanceMap.size !== 0) { + console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`); + return; + } + instanceMap.set(key, instance); + }, + get(element, key) { + if (elementMap.has(element)) { + return elementMap.get(element).get(key) || null; + } + return null; + }, + remove(element, key) { + if (!elementMap.has(element)) { + return; + } + const instanceMap = elementMap.get(element); + instanceMap.delete(key); + if (instanceMap.size === 0) { + elementMap.delete(element); + } + } + }; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/util/index.js + var MAX_UID = 1e6; + var MILLISECONDS_MULTIPLIER = 1e3; + var TRANSITION_END = "transitionend"; + var parseSelector = (selector) => { + if (selector && window.CSS && window.CSS.escape) { + selector = selector.replace(/#([^\s"#']+)/g, (match, id) => `#${CSS.escape(id)}`); + } + return selector; + }; + var toType = (object) => { + if (object === null || object === void 0) { + return `${object}`; + } + return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase(); + }; + var getUID = (prefix) => { + do { + prefix += Math.floor(Math.random() * MAX_UID); + } while (document.getElementById(prefix)); + return prefix; + }; + var getTransitionDurationFromElement = (element) => { + if (!element) { + return 0; + } + let { transitionDuration, transitionDelay } = window.getComputedStyle(element); + const floatTransitionDuration = Number.parseFloat(transitionDuration); + const floatTransitionDelay = Number.parseFloat(transitionDelay); + if (!floatTransitionDuration && !floatTransitionDelay) { + return 0; + } + transitionDuration = transitionDuration.split(",")[0]; + transitionDelay = transitionDelay.split(",")[0]; + return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; + }; + var triggerTransitionEnd = (element) => { + element.dispatchEvent(new Event(TRANSITION_END)); + }; + var isElement = (object) => { + if (!object || typeof object !== "object") { + return false; + } + if (typeof object.jquery !== "undefined") { + object = object[0]; + } + return typeof object.nodeType !== "undefined"; + }; + var getElement = (object) => { + if (isElement(object)) { + return object.jquery ? object[0] : object; + } + if (typeof object === "string" && object.length > 0) { + return document.querySelector(parseSelector(object)); + } + return null; + }; + var isVisible = (element) => { + if (!isElement(element) || element.getClientRects().length === 0) { + return false; + } + const elementIsVisible = getComputedStyle(element).getPropertyValue("visibility") === "visible"; + const closedDetails = element.closest("details:not([open])"); + if (!closedDetails) { + return elementIsVisible; + } + if (closedDetails !== element) { + const summary = element.closest("summary"); + if (summary && summary.parentNode !== closedDetails) { + return false; + } + if (summary === null) { + return false; + } + } + return elementIsVisible; + }; + var isDisabled = (element) => { + if (!element || element.nodeType !== Node.ELEMENT_NODE) { + return true; + } + if (element.classList.contains("disabled")) { + return true; + } + if (typeof element.disabled !== "undefined") { + return element.disabled; + } + return element.hasAttribute("disabled") && element.getAttribute("disabled") !== "false"; + }; + var findShadowRoot = (element) => { + if (!document.documentElement.attachShadow) { + return null; + } + if (typeof element.getRootNode === "function") { + const root = element.getRootNode(); + return root instanceof ShadowRoot ? root : null; + } + if (element instanceof ShadowRoot) { + return element; + } + if (!element.parentNode) { + return null; + } + return findShadowRoot(element.parentNode); + }; + var noop = () => { + }; + var reflow = (element) => { + element.offsetHeight; + }; + var getjQuery = () => { + if (window.jQuery && !document.body.hasAttribute("data-bs-no-jquery")) { + return window.jQuery; + } + return null; + }; + var DOMContentLoadedCallbacks = []; + var onDOMContentLoaded = (callback) => { + if (document.readyState === "loading") { + if (!DOMContentLoadedCallbacks.length) { + document.addEventListener("DOMContentLoaded", () => { + for (const callback2 of DOMContentLoadedCallbacks) { + callback2(); + } + }); + } + DOMContentLoadedCallbacks.push(callback); + } else { + callback(); + } + }; + var isRTL = () => document.documentElement.dir === "rtl"; + var defineJQueryPlugin = (plugin) => { + onDOMContentLoaded(() => { + const $ = getjQuery(); + if ($) { + const name = plugin.NAME; + const JQUERY_NO_CONFLICT = $.fn[name]; + $.fn[name] = plugin.jQueryInterface; + $.fn[name].Constructor = plugin; + $.fn[name].noConflict = () => { + $.fn[name] = JQUERY_NO_CONFLICT; + return plugin.jQueryInterface; + }; + } + }); + }; + var execute = (possibleCallback, args = [], defaultValue = possibleCallback) => { + return typeof possibleCallback === "function" ? possibleCallback.call(...args) : defaultValue; + }; + var executeAfterTransition = (callback, transitionElement, waitForTransition = true) => { + if (!waitForTransition) { + execute(callback); + return; + } + const durationPadding = 5; + const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding; + let called = false; + const handler = ({ target }) => { + if (target !== transitionElement) { + return; + } + called = true; + transitionElement.removeEventListener(TRANSITION_END, handler); + execute(callback); + }; + transitionElement.addEventListener(TRANSITION_END, handler); + setTimeout(() => { + if (!called) { + triggerTransitionEnd(transitionElement); + } + }, emulatedDuration); + }; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/dom/event-handler.js + var namespaceRegex = /[^.]*(?=\..*)\.|.*/; + var stripNameRegex = /\..*/; + var stripUidRegex = /::\d+$/; + var eventRegistry = {}; + var uidEvent = 1; + var customEvents = { + mouseenter: "mouseover", + mouseleave: "mouseout" + }; + var nativeEvents = /* @__PURE__ */ new Set([ + "click", + "dblclick", + "mouseup", + "mousedown", + "contextmenu", + "mousewheel", + "DOMMouseScroll", + "mouseover", + "mouseout", + "mousemove", + "selectstart", + "selectend", + "keydown", + "keypress", + "keyup", + "orientationchange", + "touchstart", + "touchmove", + "touchend", + "touchcancel", + "pointerdown", + "pointermove", + "pointerup", + "pointerleave", + "pointercancel", + "gesturestart", + "gesturechange", + "gestureend", + "focus", + "blur", + "change", + "reset", + "select", + "submit", + "focusin", + "focusout", + "load", + "unload", + "beforeunload", + "resize", + "move", + "DOMContentLoaded", + "readystatechange", + "error", + "abort", + "scroll" + ]); + function makeEventUid(element, uid) { + return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++; + } + function getElementEvents(element) { + const uid = makeEventUid(element); + element.uidEvent = uid; + eventRegistry[uid] = eventRegistry[uid] || {}; + return eventRegistry[uid]; + } + function bootstrapHandler(element, fn) { + return function handler(event) { + hydrateObj(event, { delegateTarget: element }); + if (handler.oneOff) { + EventHandler.off(element, event.type, fn); + } + return fn.apply(element, [event]); + }; + } + function bootstrapDelegationHandler(element, selector, fn) { + return function handler(event) { + const domElements = element.querySelectorAll(selector); + for (let { target } = event; target && target !== this; target = target.parentNode) { + for (const domElement of domElements) { + if (domElement !== target) { + continue; + } + hydrateObj(event, { delegateTarget: target }); + if (handler.oneOff) { + EventHandler.off(element, event.type, selector, fn); + } + return fn.apply(target, [event]); + } + } + }; + } + function findHandler(events, callable, delegationSelector = null) { + return Object.values(events).find((event) => event.callable === callable && event.delegationSelector === delegationSelector); + } + function normalizeParameters(originalTypeEvent, handler, delegationFunction) { + const isDelegated = typeof handler === "string"; + const callable = isDelegated ? delegationFunction : handler || delegationFunction; + let typeEvent = getTypeEvent(originalTypeEvent); + if (!nativeEvents.has(typeEvent)) { + typeEvent = originalTypeEvent; + } + return [isDelegated, callable, typeEvent]; + } + function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) { + if (typeof originalTypeEvent !== "string" || !element) { + return; + } + let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); + if (originalTypeEvent in customEvents) { + const wrapFunction = (fn2) => { + return function(event) { + if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) { + return fn2.call(this, event); + } + }; + }; + callable = wrapFunction(callable); + } + const events = getElementEvents(element); + const handlers = events[typeEvent] || (events[typeEvent] = {}); + const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null); + if (previousFunction) { + previousFunction.oneOff = previousFunction.oneOff && oneOff; + return; + } + const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, "")); + const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable); + fn.delegationSelector = isDelegated ? handler : null; + fn.callable = callable; + fn.oneOff = oneOff; + fn.uidEvent = uid; + handlers[uid] = fn; + element.addEventListener(typeEvent, fn, isDelegated); + } + function removeHandler(element, events, typeEvent, handler, delegationSelector) { + const fn = findHandler(events[typeEvent], handler, delegationSelector); + if (!fn) { + return; + } + element.removeEventListener(typeEvent, fn, Boolean(delegationSelector)); + delete events[typeEvent][fn.uidEvent]; + } + function removeNamespacedHandlers(element, events, typeEvent, namespace) { + const storeElementEvent = events[typeEvent] || {}; + for (const [handlerKey, event] of Object.entries(storeElementEvent)) { + if (handlerKey.includes(namespace)) { + removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); + } + } + } + function getTypeEvent(event) { + event = event.replace(stripNameRegex, ""); + return customEvents[event] || event; + } + var EventHandler = { + on(element, event, handler, delegationFunction) { + addHandler(element, event, handler, delegationFunction, false); + }, + one(element, event, handler, delegationFunction) { + addHandler(element, event, handler, delegationFunction, true); + }, + off(element, originalTypeEvent, handler, delegationFunction) { + if (typeof originalTypeEvent !== "string" || !element) { + return; + } + const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); + const inNamespace = typeEvent !== originalTypeEvent; + const events = getElementEvents(element); + const storeElementEvent = events[typeEvent] || {}; + const isNamespace = originalTypeEvent.startsWith("."); + if (typeof callable !== "undefined") { + if (!Object.keys(storeElementEvent).length) { + return; + } + removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null); + return; + } + if (isNamespace) { + for (const elementEvent of Object.keys(events)) { + removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1)); + } + } + for (const [keyHandlers, event] of Object.entries(storeElementEvent)) { + const handlerKey = keyHandlers.replace(stripUidRegex, ""); + if (!inNamespace || originalTypeEvent.includes(handlerKey)) { + removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); + } + } + }, + trigger(element, event, args) { + if (typeof event !== "string" || !element) { + return null; + } + const $ = getjQuery(); + const typeEvent = getTypeEvent(event); + const inNamespace = event !== typeEvent; + let jQueryEvent = null; + let bubbles = true; + let nativeDispatch = true; + let defaultPrevented = false; + if (inNamespace && $) { + jQueryEvent = $.Event(event, args); + $(element).trigger(jQueryEvent); + bubbles = !jQueryEvent.isPropagationStopped(); + nativeDispatch = !jQueryEvent.isImmediatePropagationStopped(); + defaultPrevented = jQueryEvent.isDefaultPrevented(); + } + const evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args); + if (defaultPrevented) { + evt.preventDefault(); + } + if (nativeDispatch) { + element.dispatchEvent(evt); + } + if (evt.defaultPrevented && jQueryEvent) { + jQueryEvent.preventDefault(); + } + return evt; + } + }; + function hydrateObj(obj, meta = {}) { + for (const [key, value] of Object.entries(meta)) { + try { + obj[key] = value; + } catch (e) { + Object.defineProperty(obj, key, { + configurable: true, + get() { + return value; + } + }); + } + } + return obj; + } + var event_handler_default = EventHandler; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/dom/manipulator.js + function normalizeData(value) { + if (value === "true") { + return true; + } + if (value === "false") { + return false; + } + if (value === Number(value).toString()) { + return Number(value); + } + if (value === "" || value === "null") { + return null; + } + if (typeof value !== "string") { + return value; + } + try { + return JSON.parse(decodeURIComponent(value)); + } catch (e) { + return value; + } + } + function normalizeDataKey(key) { + return key.replace(/[A-Z]/g, (chr) => `-${chr.toLowerCase()}`); + } + var Manipulator = { + setDataAttribute(element, key, value) { + element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value); + }, + removeDataAttribute(element, key) { + element.removeAttribute(`data-bs-${normalizeDataKey(key)}`); + }, + getDataAttributes(element) { + if (!element) { + return {}; + } + const attributes = {}; + const bsKeys = Object.keys(element.dataset).filter((key) => key.startsWith("bs") && !key.startsWith("bsConfig")); + for (const key of bsKeys) { + let pureKey = key.replace(/^bs/, ""); + pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1); + attributes[pureKey] = normalizeData(element.dataset[key]); + } + return attributes; + }, + getDataAttribute(element, key) { + return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`)); + } + }; + var manipulator_default = Manipulator; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/util/config.js + var Config = class { + // Getters + static get Default() { + return {}; + } + static get DefaultType() { + return {}; + } + static get NAME() { + throw new Error('You have to implement the static method "NAME", for each component!'); + } + _getConfig(config) { + config = this._mergeConfigObj(config); + config = this._configAfterMerge(config); + this._typeCheckConfig(config); + return config; + } + _configAfterMerge(config) { + return config; + } + _mergeConfigObj(config, element) { + const jsonConfig = isElement(element) ? manipulator_default.getDataAttribute(element, "config") : {}; + return __spreadValues(__spreadValues(__spreadValues(__spreadValues({}, this.constructor.Default), typeof jsonConfig === "object" ? jsonConfig : {}), isElement(element) ? manipulator_default.getDataAttributes(element) : {}), typeof config === "object" ? config : {}); + } + _typeCheckConfig(config, configTypes = this.constructor.DefaultType) { + for (const [property, expectedTypes] of Object.entries(configTypes)) { + const value = config[property]; + const valueType = isElement(value) ? "element" : toType(value); + if (!new RegExp(expectedTypes).test(valueType)) { + throw new TypeError( + `${this.constructor.NAME.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".` + ); + } + } + } + }; + var config_default = Config; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/base-component.js + var VERSION = "5.3.8"; + var BaseComponent = class extends config_default { + constructor(element, config) { + super(); + element = getElement(element); + if (!element) { + return; + } + this._element = element; + this._config = this._getConfig(config); + data_default.set(this._element, this.constructor.DATA_KEY, this); + } + // Public + dispose() { + data_default.remove(this._element, this.constructor.DATA_KEY); + event_handler_default.off(this._element, this.constructor.EVENT_KEY); + for (const propertyName of Object.getOwnPropertyNames(this)) { + this[propertyName] = null; + } + } + // Private + _queueCallback(callback, element, isAnimated = true) { + executeAfterTransition(callback, element, isAnimated); + } + _getConfig(config) { + config = this._mergeConfigObj(config, this._element); + config = this._configAfterMerge(config); + this._typeCheckConfig(config); + return config; + } + // Static + static getInstance(element) { + return data_default.get(getElement(element), this.DATA_KEY); + } + static getOrCreateInstance(element, config = {}) { + return this.getInstance(element) || new this(element, typeof config === "object" ? config : null); + } + static get VERSION() { + return VERSION; + } + static get DATA_KEY() { + return `bs.${this.NAME}`; + } + static get EVENT_KEY() { + return `.${this.DATA_KEY}`; + } + static eventName(name) { + return `${name}${this.EVENT_KEY}`; + } + }; + var base_component_default = BaseComponent; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/dom/selector-engine.js + var getSelector = (element) => { + let selector = element.getAttribute("data-bs-target"); + if (!selector || selector === "#") { + let hrefAttribute = element.getAttribute("href"); + if (!hrefAttribute || !hrefAttribute.includes("#") && !hrefAttribute.startsWith(".")) { + return null; + } + if (hrefAttribute.includes("#") && !hrefAttribute.startsWith("#")) { + hrefAttribute = `#${hrefAttribute.split("#")[1]}`; + } + selector = hrefAttribute && hrefAttribute !== "#" ? hrefAttribute.trim() : null; + } + return selector ? selector.split(",").map((sel) => parseSelector(sel)).join(",") : null; + }; + var SelectorEngine = { + find(selector, element = document.documentElement) { + return [].concat(...Element.prototype.querySelectorAll.call(element, selector)); + }, + findOne(selector, element = document.documentElement) { + return Element.prototype.querySelector.call(element, selector); + }, + children(element, selector) { + return [].concat(...element.children).filter((child) => child.matches(selector)); + }, + parents(element, selector) { + const parents = []; + let ancestor = element.parentNode.closest(selector); + while (ancestor) { + parents.push(ancestor); + ancestor = ancestor.parentNode.closest(selector); + } + return parents; + }, + prev(element, selector) { + let previous = element.previousElementSibling; + while (previous) { + if (previous.matches(selector)) { + return [previous]; + } + previous = previous.previousElementSibling; + } + return []; + }, + // TODO: this is now unused; remove later along with prev() + next(element, selector) { + let next = element.nextElementSibling; + while (next) { + if (next.matches(selector)) { + return [next]; + } + next = next.nextElementSibling; + } + return []; + }, + focusableChildren(element) { + const focusables = [ + "a", + "button", + "input", + "textarea", + "select", + "details", + "[tabindex]", + '[contenteditable="true"]' + ].map((selector) => `${selector}:not([tabindex^="-"])`).join(","); + return this.find(focusables, element).filter((el) => !isDisabled(el) && isVisible(el)); + }, + getSelectorFromElement(element) { + const selector = getSelector(element); + if (selector) { + return SelectorEngine.findOne(selector) ? selector : null; + } + return null; + }, + getElementFromSelector(element) { + const selector = getSelector(element); + return selector ? SelectorEngine.findOne(selector) : null; + }, + getMultipleElementsFromSelector(element) { + const selector = getSelector(element); + return selector ? SelectorEngine.find(selector) : []; + } + }; + var selector_engine_default = SelectorEngine; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/collapse.js + var NAME = "collapse"; + var DATA_KEY = "bs.collapse"; + var EVENT_KEY = `.${DATA_KEY}`; + var DATA_API_KEY = ".data-api"; + var EVENT_SHOW = `show${EVENT_KEY}`; + var EVENT_SHOWN = `shown${EVENT_KEY}`; + var EVENT_HIDE = `hide${EVENT_KEY}`; + var EVENT_HIDDEN = `hidden${EVENT_KEY}`; + var EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`; + var CLASS_NAME_SHOW = "show"; + var CLASS_NAME_COLLAPSE = "collapse"; + var CLASS_NAME_COLLAPSING = "collapsing"; + var CLASS_NAME_COLLAPSED = "collapsed"; + var CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`; + var CLASS_NAME_HORIZONTAL = "collapse-horizontal"; + var WIDTH = "width"; + var HEIGHT = "height"; + var SELECTOR_ACTIVES = ".collapse.show, .collapse.collapsing"; + var SELECTOR_DATA_TOGGLE = '[data-bs-toggle="collapse"]'; + var Default = { + parent: null, + toggle: true + }; + var DefaultType = { + parent: "(null|element)", + toggle: "boolean" + }; + var Collapse = class _Collapse extends base_component_default { + constructor(element, config) { + super(element, config); + this._isTransitioning = false; + this._triggerArray = []; + const toggleList = selector_engine_default.find(SELECTOR_DATA_TOGGLE); + for (const elem of toggleList) { + const selector = selector_engine_default.getSelectorFromElement(elem); + const filterElement = selector_engine_default.find(selector).filter((foundElement) => foundElement === this._element); + if (selector !== null && filterElement.length) { + this._triggerArray.push(elem); + } + } + this._initializeChildren(); + if (!this._config.parent) { + this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()); + } + if (this._config.toggle) { + this.toggle(); + } + } + // Getters + static get Default() { + return Default; + } + static get DefaultType() { + return DefaultType; + } + static get NAME() { + return NAME; + } + // Public + toggle() { + if (this._isShown()) { + this.hide(); + } else { + this.show(); + } + } + show() { + if (this._isTransitioning || this._isShown()) { + return; + } + let activeChildren = []; + if (this._config.parent) { + activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter((element) => element !== this._element).map((element) => _Collapse.getOrCreateInstance(element, { toggle: false })); + } + if (activeChildren.length && activeChildren[0]._isTransitioning) { + return; + } + const startEvent = event_handler_default.trigger(this._element, EVENT_SHOW); + if (startEvent.defaultPrevented) { + return; + } + for (const activeInstance of activeChildren) { + activeInstance.hide(); + } + const dimension = this._getDimension(); + this._element.classList.remove(CLASS_NAME_COLLAPSE); + this._element.classList.add(CLASS_NAME_COLLAPSING); + this._element.style[dimension] = 0; + this._addAriaAndCollapsedClass(this._triggerArray, true); + this._isTransitioning = true; + const complete = () => { + this._isTransitioning = false; + this._element.classList.remove(CLASS_NAME_COLLAPSING); + this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW); + this._element.style[dimension] = ""; + event_handler_default.trigger(this._element, EVENT_SHOWN); + }; + const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); + const scrollSize = `scroll${capitalizedDimension}`; + this._queueCallback(complete, this._element, true); + this._element.style[dimension] = `${this._element[scrollSize]}px`; + } + hide() { + if (this._isTransitioning || !this._isShown()) { + return; + } + const startEvent = event_handler_default.trigger(this._element, EVENT_HIDE); + if (startEvent.defaultPrevented) { + return; + } + const dimension = this._getDimension(); + this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`; + reflow(this._element); + this._element.classList.add(CLASS_NAME_COLLAPSING); + this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW); + for (const trigger of this._triggerArray) { + const element = selector_engine_default.getElementFromSelector(trigger); + if (element && !this._isShown(element)) { + this._addAriaAndCollapsedClass([trigger], false); + } + } + this._isTransitioning = true; + const complete = () => { + this._isTransitioning = false; + this._element.classList.remove(CLASS_NAME_COLLAPSING); + this._element.classList.add(CLASS_NAME_COLLAPSE); + event_handler_default.trigger(this._element, EVENT_HIDDEN); + }; + this._element.style[dimension] = ""; + this._queueCallback(complete, this._element, true); + } + // Private + _isShown(element = this._element) { + return element.classList.contains(CLASS_NAME_SHOW); + } + _configAfterMerge(config) { + config.toggle = Boolean(config.toggle); + config.parent = getElement(config.parent); + return config; + } + _getDimension() { + return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT; + } + _initializeChildren() { + if (!this._config.parent) { + return; + } + const children2 = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE); + for (const element of children2) { + const selected = selector_engine_default.getElementFromSelector(element); + if (selected) { + this._addAriaAndCollapsedClass([element], this._isShown(selected)); + } + } + } + _getFirstLevelChildren(selector) { + const children2 = selector_engine_default.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); + return selector_engine_default.find(selector, this._config.parent).filter((element) => !children2.includes(element)); + } + _addAriaAndCollapsedClass(triggerArray, isOpen) { + if (!triggerArray.length) { + return; + } + for (const element of triggerArray) { + element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen); + element.setAttribute("aria-expanded", isOpen); + } + } + // Static + static jQueryInterface(config) { + const _config = {}; + if (typeof config === "string" && /show|hide/.test(config)) { + _config.toggle = false; + } + return this.each(function() { + const data = _Collapse.getOrCreateInstance(this, _config); + if (typeof config === "string") { + if (typeof data[config] === "undefined") { + throw new TypeError(`No method named "${config}"`); + } + data[config](); + } + }); + } + }; + event_handler_default.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function(event) { + if (event.target.tagName === "A" || event.delegateTarget && event.delegateTarget.tagName === "A") { + event.preventDefault(); + } + for (const element of selector_engine_default.getMultipleElementsFromSelector(this)) { + Collapse.getOrCreateInstance(element, { toggle: false }).toggle(); + } + }); + defineJQueryPlugin(Collapse); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/category-collapse.js + var children = document.getElementsByClassName("collapse"); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/tooltip.js + var Popper = __toESM(require_popper()); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/util/sanitizer.js + var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; + var DefaultAllowlist = { + // Global attributes allowed on any supplied element below. + "*": ["class", "dir", "id", "lang", "role", ARIA_ATTRIBUTE_PATTERN], + a: ["target", "href", "title", "rel"], + area: [], + b: [], + br: [], + col: [], + code: [], + dd: [], + div: [], + dl: [], + dt: [], + em: [], + hr: [], + h1: [], + h2: [], + h3: [], + h4: [], + h5: [], + h6: [], + i: [], + img: ["src", "srcset", "alt", "title", "width", "height"], + li: [], + ol: [], + p: [], + pre: [], + s: [], + small: [], + span: [], + sub: [], + sup: [], + strong: [], + u: [], + ul: [] + }; + var uriAttributes = /* @__PURE__ */ new Set([ + "background", + "cite", + "href", + "itemtype", + "longdesc", + "poster", + "src", + "xlink:href" + ]); + var SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i; + var allowedAttribute = (attribute, allowedAttributeList) => { + const attributeName = attribute.nodeName.toLowerCase(); + if (allowedAttributeList.includes(attributeName)) { + if (uriAttributes.has(attributeName)) { + return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue)); + } + return true; + } + return allowedAttributeList.filter((attributeRegex) => attributeRegex instanceof RegExp).some((regex) => regex.test(attributeName)); + }; + function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) { + if (!unsafeHtml.length) { + return unsafeHtml; + } + if (sanitizeFunction && typeof sanitizeFunction === "function") { + return sanitizeFunction(unsafeHtml); + } + const domParser = new window.DOMParser(); + const createdDocument = domParser.parseFromString(unsafeHtml, "text/html"); + const elements = [].concat(...createdDocument.body.querySelectorAll("*")); + for (const element of elements) { + const elementName = element.nodeName.toLowerCase(); + if (!Object.keys(allowList).includes(elementName)) { + element.remove(); + continue; + } + const attributeList = [].concat(...element.attributes); + const allowedAttributes = [].concat(allowList["*"] || [], allowList[elementName] || []); + for (const attribute of attributeList) { + if (!allowedAttribute(attribute, allowedAttributes)) { + element.removeAttribute(attribute.nodeName); + } + } + } + return createdDocument.body.innerHTML; + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/util/template-factory.js + var NAME2 = "TemplateFactory"; + var Default2 = { + allowList: DefaultAllowlist, + content: {}, + // { selector : text , selector2 : text2 , } + extraClass: "", + html: false, + sanitize: true, + sanitizeFn: null, + template: "
" + }; + var DefaultType2 = { + allowList: "object", + content: "object", + extraClass: "(string|function)", + html: "boolean", + sanitize: "boolean", + sanitizeFn: "(null|function)", + template: "string" + }; + var DefaultContentType = { + entry: "(string|element|function|null)", + selector: "(string|element)" + }; + var TemplateFactory = class extends config_default { + constructor(config) { + super(); + this._config = this._getConfig(config); + } + // Getters + static get Default() { + return Default2; + } + static get DefaultType() { + return DefaultType2; + } + static get NAME() { + return NAME2; + } + // Public + getContent() { + return Object.values(this._config.content).map((config) => this._resolvePossibleFunction(config)).filter(Boolean); + } + hasContent() { + return this.getContent().length > 0; + } + changeContent(content2) { + this._checkContent(content2); + this._config.content = __spreadValues(__spreadValues({}, this._config.content), content2); + return this; + } + toHtml() { + const templateWrapper = document.createElement("div"); + templateWrapper.innerHTML = this._maybeSanitize(this._config.template); + for (const [selector, text] of Object.entries(this._config.content)) { + this._setContent(templateWrapper, text, selector); + } + const template = templateWrapper.children[0]; + const extraClass = this._resolvePossibleFunction(this._config.extraClass); + if (extraClass) { + template.classList.add(...extraClass.split(" ")); + } + return template; + } + // Private + _typeCheckConfig(config) { + super._typeCheckConfig(config); + this._checkContent(config.content); + } + _checkContent(arg) { + for (const [selector, content2] of Object.entries(arg)) { + super._typeCheckConfig({ selector, entry: content2 }, DefaultContentType); + } + } + _setContent(template, content2, selector) { + const templateElement = selector_engine_default.findOne(selector, template); + if (!templateElement) { + return; + } + content2 = this._resolvePossibleFunction(content2); + if (!content2) { + templateElement.remove(); + return; + } + if (isElement(content2)) { + this._putElementInTemplate(getElement(content2), templateElement); + return; + } + if (this._config.html) { + templateElement.innerHTML = this._maybeSanitize(content2); + return; + } + templateElement.textContent = content2; + } + _maybeSanitize(arg) { + return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg; + } + _resolvePossibleFunction(arg) { + return execute(arg, [void 0, this]); + } + _putElementInTemplate(element, templateElement) { + if (this._config.html) { + templateElement.innerHTML = ""; + templateElement.append(element); + return; + } + templateElement.textContent = element.textContent; + } + }; + var template_factory_default = TemplateFactory; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/tooltip.js + var NAME3 = "tooltip"; + var DISALLOWED_ATTRIBUTES = /* @__PURE__ */ new Set(["sanitize", "allowList", "sanitizeFn"]); + var CLASS_NAME_FADE = "fade"; + var CLASS_NAME_MODAL = "modal"; + var CLASS_NAME_SHOW2 = "show"; + var SELECTOR_TOOLTIP_INNER = ".tooltip-inner"; + var SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`; + var EVENT_MODAL_HIDE = "hide.bs.modal"; + var TRIGGER_HOVER = "hover"; + var TRIGGER_FOCUS = "focus"; + var TRIGGER_CLICK = "click"; + var TRIGGER_MANUAL = "manual"; + var EVENT_HIDE2 = "hide"; + var EVENT_HIDDEN2 = "hidden"; + var EVENT_SHOW2 = "show"; + var EVENT_SHOWN2 = "shown"; + var EVENT_INSERTED = "inserted"; + var EVENT_CLICK = "click"; + var EVENT_FOCUSIN = "focusin"; + var EVENT_FOCUSOUT = "focusout"; + var EVENT_MOUSEENTER = "mouseenter"; + var EVENT_MOUSELEAVE = "mouseleave"; + var AttachmentMap = { + AUTO: "auto", + TOP: "top", + RIGHT: isRTL() ? "left" : "right", + BOTTOM: "bottom", + LEFT: isRTL() ? "right" : "left" + }; + var Default3 = { + allowList: DefaultAllowlist, + animation: true, + boundary: "clippingParents", + container: false, + customClass: "", + delay: 0, + fallbackPlacements: ["top", "right", "bottom", "left"], + html: false, + offset: [0, 6], + placement: "top", + popperConfig: null, + sanitize: true, + sanitizeFn: null, + selector: false, + template: '', + title: "", + trigger: "hover focus" + }; + var DefaultType3 = { + allowList: "object", + animation: "boolean", + boundary: "(string|element)", + container: "(string|element|boolean)", + customClass: "(string|function)", + delay: "(number|object)", + fallbackPlacements: "array", + html: "boolean", + offset: "(array|string|function)", + placement: "(string|function)", + popperConfig: "(null|object|function)", + sanitize: "boolean", + sanitizeFn: "(null|function)", + selector: "(string|boolean)", + template: "string", + title: "(string|element|function)", + trigger: "string" + }; + var Tooltip = class _Tooltip extends base_component_default { + constructor(element, config) { + if (typeof Popper === "undefined") { + throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org/docs/v2/)"); + } + super(element, config); + this._isEnabled = true; + this._timeout = 0; + this._isHovered = null; + this._activeTrigger = {}; + this._popper = null; + this._templateFactory = null; + this._newContent = null; + this.tip = null; + this._setListeners(); + if (!this._config.selector) { + this._fixTitle(); + } + } + // Getters + static get Default() { + return Default3; + } + static get DefaultType() { + return DefaultType3; + } + static get NAME() { + return NAME3; + } + // Public + enable() { + this._isEnabled = true; + } + disable() { + this._isEnabled = false; + } + toggleEnabled() { + this._isEnabled = !this._isEnabled; + } + toggle() { + if (!this._isEnabled) { + return; + } + if (this._isShown()) { + this._leave(); + return; + } + this._enter(); + } + dispose() { + clearTimeout(this._timeout); + event_handler_default.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); + if (this._element.getAttribute("data-bs-original-title")) { + this._element.setAttribute("title", this._element.getAttribute("data-bs-original-title")); + } + this._disposePopper(); + super.dispose(); + } + show() { + if (this._element.style.display === "none") { + throw new Error("Please use show on visible elements"); + } + if (!(this._isWithContent() && this._isEnabled)) { + return; + } + const showEvent = event_handler_default.trigger(this._element, this.constructor.eventName(EVENT_SHOW2)); + const shadowRoot = findShadowRoot(this._element); + const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element); + if (showEvent.defaultPrevented || !isInTheDom) { + return; + } + this._disposePopper(); + const tip = this._getTipElement(); + this._element.setAttribute("aria-describedby", tip.getAttribute("id")); + const { container } = this._config; + if (!this._element.ownerDocument.documentElement.contains(this.tip)) { + container.append(tip); + event_handler_default.trigger(this._element, this.constructor.eventName(EVENT_INSERTED)); + } + this._popper = this._createPopper(tip); + tip.classList.add(CLASS_NAME_SHOW2); + if ("ontouchstart" in document.documentElement) { + for (const element of [].concat(...document.body.children)) { + event_handler_default.on(element, "mouseover", noop); + } + } + const complete = () => { + event_handler_default.trigger(this._element, this.constructor.eventName(EVENT_SHOWN2)); + if (this._isHovered === false) { + this._leave(); + } + this._isHovered = false; + }; + this._queueCallback(complete, this.tip, this._isAnimated()); + } + hide() { + if (!this._isShown()) { + return; + } + const hideEvent = event_handler_default.trigger(this._element, this.constructor.eventName(EVENT_HIDE2)); + if (hideEvent.defaultPrevented) { + return; + } + const tip = this._getTipElement(); + tip.classList.remove(CLASS_NAME_SHOW2); + if ("ontouchstart" in document.documentElement) { + for (const element of [].concat(...document.body.children)) { + event_handler_default.off(element, "mouseover", noop); + } + } + this._activeTrigger[TRIGGER_CLICK] = false; + this._activeTrigger[TRIGGER_FOCUS] = false; + this._activeTrigger[TRIGGER_HOVER] = false; + this._isHovered = null; + const complete = () => { + if (this._isWithActiveTrigger()) { + return; + } + if (!this._isHovered) { + this._disposePopper(); + } + this._element.removeAttribute("aria-describedby"); + event_handler_default.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN2)); + }; + this._queueCallback(complete, this.tip, this._isAnimated()); + } + update() { + if (this._popper) { + this._popper.update(); + } + } + // Protected + _isWithContent() { + return Boolean(this._getTitle()); + } + _getTipElement() { + if (!this.tip) { + this.tip = this._createTipElement(this._newContent || this._getContentForTemplate()); + } + return this.tip; + } + _createTipElement(content2) { + const tip = this._getTemplateFactory(content2).toHtml(); + if (!tip) { + return null; + } + tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW2); + tip.classList.add(`bs-${this.constructor.NAME}-auto`); + const tipId = getUID(this.constructor.NAME).toString(); + tip.setAttribute("id", tipId); + if (this._isAnimated()) { + tip.classList.add(CLASS_NAME_FADE); + } + return tip; + } + setContent(content2) { + this._newContent = content2; + if (this._isShown()) { + this._disposePopper(); + this.show(); + } + } + _getTemplateFactory(content2) { + if (this._templateFactory) { + this._templateFactory.changeContent(content2); + } else { + this._templateFactory = new template_factory_default(__spreadProps(__spreadValues({}, this._config), { + // the `content` var has to be after `this._config` + // to override config.content in case of popover + content: content2, + extraClass: this._resolvePossibleFunction(this._config.customClass) + })); + } + return this._templateFactory; + } + _getContentForTemplate() { + return { + [SELECTOR_TOOLTIP_INNER]: this._getTitle() + }; + } + _getTitle() { + return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute("data-bs-original-title"); + } + // Private + _initializeOnDelegatedTarget(event) { + return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig()); + } + _isAnimated() { + return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE); + } + _isShown() { + return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW2); + } + _createPopper(tip) { + const placement = execute(this._config.placement, [this, tip, this._element]); + const attachment = AttachmentMap[placement.toUpperCase()]; + return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment)); + } + _getOffset() { + const { offset } = this._config; + if (typeof offset === "string") { + return offset.split(",").map((value) => Number.parseInt(value, 10)); + } + if (typeof offset === "function") { + return (popperData) => offset(popperData, this._element); + } + return offset; + } + _resolvePossibleFunction(arg) { + return execute(arg, [this._element, this._element]); + } + _getPopperConfig(attachment) { + const defaultBsPopperConfig = { + placement: attachment, + modifiers: [ + { + name: "flip", + options: { + fallbackPlacements: this._config.fallbackPlacements + } + }, + { + name: "offset", + options: { + offset: this._getOffset() + } + }, + { + name: "preventOverflow", + options: { + boundary: this._config.boundary + } + }, + { + name: "arrow", + options: { + element: `.${this.constructor.NAME}-arrow` + } + }, + { + name: "preSetPlacement", + enabled: true, + phase: "beforeMain", + fn: (data) => { + this._getTipElement().setAttribute("data-popper-placement", data.state.placement); + } + } + ] + }; + return __spreadValues(__spreadValues({}, defaultBsPopperConfig), execute(this._config.popperConfig, [void 0, defaultBsPopperConfig])); + } + _setListeners() { + const triggers = this._config.trigger.split(" "); + for (const trigger of triggers) { + if (trigger === "click") { + event_handler_default.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, (event) => { + const context = this._initializeOnDelegatedTarget(event); + context._activeTrigger[TRIGGER_CLICK] = !(context._isShown() && context._activeTrigger[TRIGGER_CLICK]); + context.toggle(); + }); + } else if (trigger !== TRIGGER_MANUAL) { + const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN); + const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT); + event_handler_default.on(this._element, eventIn, this._config.selector, (event) => { + const context = this._initializeOnDelegatedTarget(event); + context._activeTrigger[event.type === "focusin" ? TRIGGER_FOCUS : TRIGGER_HOVER] = true; + context._enter(); + }); + event_handler_default.on(this._element, eventOut, this._config.selector, (event) => { + const context = this._initializeOnDelegatedTarget(event); + context._activeTrigger[event.type === "focusout" ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget); + context._leave(); + }); + } + } + this._hideModalHandler = () => { + if (this._element) { + this.hide(); + } + }; + event_handler_default.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); + } + _fixTitle() { + const title = this._element.getAttribute("title"); + if (!title) { + return; + } + if (!this._element.getAttribute("aria-label") && !this._element.textContent.trim()) { + this._element.setAttribute("aria-label", title); + } + this._element.setAttribute("data-bs-original-title", title); + this._element.removeAttribute("title"); + } + _enter() { + if (this._isShown() || this._isHovered) { + this._isHovered = true; + return; + } + this._isHovered = true; + this._setTimeout(() => { + if (this._isHovered) { + this.show(); + } + }, this._config.delay.show); + } + _leave() { + if (this._isWithActiveTrigger()) { + return; + } + this._isHovered = false; + this._setTimeout(() => { + if (!this._isHovered) { + this.hide(); + } + }, this._config.delay.hide); + } + _setTimeout(handler, timeout) { + clearTimeout(this._timeout); + this._timeout = setTimeout(handler, timeout); + } + _isWithActiveTrigger() { + return Object.values(this._activeTrigger).includes(true); + } + _getConfig(config) { + const dataAttributes = manipulator_default.getDataAttributes(this._element); + for (const dataAttribute of Object.keys(dataAttributes)) { + if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) { + delete dataAttributes[dataAttribute]; + } + } + config = __spreadValues(__spreadValues({}, dataAttributes), typeof config === "object" && config ? config : {}); + config = this._mergeConfigObj(config); + config = this._configAfterMerge(config); + this._typeCheckConfig(config); + return config; + } + _configAfterMerge(config) { + config.container = config.container === false ? document.body : getElement(config.container); + if (typeof config.delay === "number") { + config.delay = { + show: config.delay, + hide: config.delay + }; + } + if (typeof config.title === "number") { + config.title = config.title.toString(); + } + if (typeof config.content === "number") { + config.content = config.content.toString(); + } + return config; + } + _getDelegateConfig() { + const config = {}; + for (const [key, value] of Object.entries(this._config)) { + if (this.constructor.Default[key] !== value) { + config[key] = value; + } + } + config.selector = false; + config.trigger = "manual"; + return config; + } + _disposePopper() { + if (this._popper) { + this._popper.destroy(); + this._popper = null; + } + if (this.tip) { + this.tip.remove(); + this.tip = null; + } + } + // Static + static jQueryInterface(config) { + return this.each(function() { + const data = _Tooltip.getOrCreateInstance(this, config); + if (typeof config !== "string") { + return; + } + if (typeof data[config] === "undefined") { + throw new TypeError(`No method named "${config}"`); + } + data[config](); + }); + } + }; + defineJQueryPlugin(Tooltip); + var tooltip_default = Tooltip; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/img-loading.js + var ATTR_DATA_SRC = "data-src"; + var ATTR_DATA_LQIP = "data-lqip"; + var cover = { + SHIMMER: "shimmer", + BLUR: "blur" + }; + function removeCover(clzss) { + this.parentElement.classList.remove(clzss); + } + function handleImage() { + if (!this.complete) { + return; + } + if (this.hasAttribute(ATTR_DATA_LQIP)) { + removeCover.call(this, cover.BLUR); + } else { + removeCover.call(this, cover.SHIMMER); + } + } + function switchLQIP() { + const src = this.getAttribute(ATTR_DATA_SRC); + this.setAttribute("src", encodeURI(src)); + this.removeAttribute(ATTR_DATA_SRC); + } + function loadImg() { + const images = document.querySelectorAll("article img"); + if (images.length === 0) { + return; + } + images.forEach((img) => { + img.addEventListener("load", handleImage); + }); + document.querySelectorAll('article img[loading="lazy"]').forEach((img) => { + if (img.complete) { + removeCover.call(img, cover.SHIMMER); + } + }); + const lqips = document.querySelectorAll( + `article img[${ATTR_DATA_LQIP}="true"]` + ); + if (lqips.length) { + lqips.forEach((lqip) => { + switchLQIP.call(lqip); + }); + } + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/locale-datetime.js + var LocaleHelper = class { + static get attrTimestamp() { + return "data-ts"; + } + static get attrDateFormat() { + return "data-df"; + } + static get locale() { + return document.documentElement.getAttribute("lang").substring(0, 2); + } + static getTimestamp(elem) { + return Number(elem.getAttribute(this.attrTimestamp)); + } + static getDateFormat(elem) { + return elem.getAttribute(this.attrDateFormat); + } + }; + function initLocaleDatetime() { + dayjs.locale(LocaleHelper.locale); + dayjs.extend(window.dayjs_plugin_localizedFormat); + document.querySelectorAll(`[${LocaleHelper.attrTimestamp}]`).forEach((elem) => { + const date = dayjs.unix(LocaleHelper.getTimestamp(elem)); + const text = date.format(LocaleHelper.getDateFormat(elem)); + elem.textContent = text; + elem.removeAttribute(LocaleHelper.attrTimestamp); + elem.removeAttribute(LocaleHelper.attrDateFormat); + if (elem.hasAttribute("data-bs-toggle") && elem.getAttribute("data-bs-toggle") === "tooltip") { + const tooltipText = date.format("llll"); + elem.setAttribute("data-bs-title", tooltipText); + } + }); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/toc/toc-mobile.js + var $tocBar = document.getElementById("toc-bar"); + var $soloTrigger = document.getElementById("toc-solo-trigger"); + var $triggers = document.getElementsByClassName("toc-trigger"); + var $popup = document.getElementById("toc-popup"); + var $btnClose = document.getElementById("toc-popup-close"); + var SCROLL_LOCK = "overflow-hidden"; + var CLOSING = "closing"; + var _invisible, _barHeight; + var _TocMobile = class _TocMobile { + static initBar() { + const observer = new IntersectionObserver( + (entries) => { + entries.forEach((entry) => { + $tocBar.classList.toggle("invisible", entry.isIntersecting); + }); + }, + { rootMargin: `-${__privateGet(this, _barHeight)}px 0px 0px 0px` } + ); + observer.observe($soloTrigger); + __privateSet(this, _invisible, false); + } + static listenAnchors() { + const $anchors = document.getElementsByClassName("toc-link"); + [...$anchors].forEach((anchor) => { + anchor.onclick = () => this.hidePopup(); + }); + } + static refresh() { + if (__privateGet(this, _invisible)) { + this.initComponents(); + } + tocbot.refresh(this.options); + this.listenAnchors(); + } + static get popupOpened() { + return $popup.open; + } + static showPopup() { + this.lockScroll(true); + $popup.showModal(); + const activeItem = $popup.querySelector("li.is-active-li"); + activeItem.scrollIntoView({ block: "center" }); + } + static hidePopup() { + $popup.toggleAttribute(CLOSING); + $popup.addEventListener( + "animationend", + () => { + $popup.toggleAttribute(CLOSING); + $popup.close(); + }, + { once: true } + ); + this.lockScroll(false); + } + static lockScroll(enable) { + document.documentElement.classList.toggle(SCROLL_LOCK, enable); + document.body.classList.toggle(SCROLL_LOCK, enable); + } + static clickBackdrop(event) { + if ($popup.hasAttribute(CLOSING)) { + return; + } + const rect = event.target.getBoundingClientRect(); + if (event.clientX < rect.left || event.clientX > rect.right || event.clientY < rect.top || event.clientY > rect.bottom) { + this.hidePopup(); + } + } + static initComponents() { + this.initBar(); + [...$triggers].forEach((trigger) => { + trigger.onclick = () => this.showPopup(); + }); + $popup.onclick = (e) => this.clickBackdrop(e); + $btnClose.onclick = () => this.hidePopup(); + $popup.oncancel = (e) => { + e.preventDefault(); + this.hidePopup(); + }; + } + static init() { + tocbot.init(this.options); + this.listenAnchors(); + this.initComponents(); + } + }; + _invisible = new WeakMap(); + _barHeight = new WeakMap(); + __privateAdd(_TocMobile, _invisible, true); + __privateAdd(_TocMobile, _barHeight, 16 * 3); + // 3rem + __publicField(_TocMobile, "options", { + tocSelector: "#toc-popup-content", + contentSelector: ".content", + ignoreSelector: "[data-toc-skip]", + headingSelector: "h2, h3, h4", + orderedList: false, + scrollSmooth: false, + collapseDepth: 4, + headingsOffset: __privateGet(_TocMobile, _barHeight) + }); + var TocMobile = _TocMobile; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/toc/toc-desktop.js + var TocDesktop = class { + static refresh() { + tocbot.refresh(this.options); + } + static init() { + tocbot.init(this.options); + } + }; + /* Tocbot options Ref: https://github.com/tscanlin/tocbot#usage */ + __publicField(TocDesktop, "options", { + tocSelector: "#toc", + contentSelector: ".content", + ignoreSelector: "[data-toc-skip]", + headingSelector: "h2, h3, h4", + orderedList: false, + scrollSmooth: false, + headingsOffset: 16 * 2 + // 2rem + }); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/toc.js + var desktopMode = matchMedia("(min-width: 1200px)"); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/mermaid.js + var themeMapper = Theme.getThemeMapper("default", "dark"); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/mode-toggle.js + var $toggle = document.getElementById("mode-toggle"); + function modeWatcher() { + if (!$toggle) { + return; + } + $toggle.addEventListener("click", () => { + Theme.flip(); + }); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/back-to-top.js + function back2top() { + const btn = document.getElementById("back-to-top"); + window.addEventListener("scroll", () => { + if (window.scrollY > 50) { + btn.classList.add("show"); + } else { + btn.classList.remove("show"); + } + }); + btn.addEventListener("click", () => { + window.scrollTo({ top: 0 }); + }); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/tooltip-loader.js + function loadTooptip() { + const tooltipTriggerList = document.querySelectorAll( + '[data-bs-toggle="tooltip"]' + ); + [...tooltipTriggerList].map( + (tooltipTriggerEl) => new tooltip_default(tooltipTriggerEl) + ); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/layouts/basic.js + function basic() { + modeWatcher(); + back2top(); + loadTooptip(); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/layouts/sidebar.js + var ATTR_DISPLAY = "sidebar-display"; + var $sidebar = document.getElementById("sidebar"); + var $trigger = document.getElementById("sidebar-trigger"); + var $mask = document.getElementById("mask"); + var _isExpanded; + var SidebarUtil = class { + static toggle() { + __privateSet(this, _isExpanded, !__privateGet(this, _isExpanded)); + document.body.toggleAttribute(ATTR_DISPLAY, __privateGet(this, _isExpanded)); + $sidebar.classList.toggle("z-2", __privateGet(this, _isExpanded)); + $mask.classList.toggle("d-none", !__privateGet(this, _isExpanded)); + } + }; + _isExpanded = new WeakMap(); + __privateAdd(SidebarUtil, _isExpanded, false); + function initSidebar() { + $trigger.onclick = $mask.onclick = () => SidebarUtil.toggle(); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/search-display.js + var btnSbTrigger = document.getElementById("sidebar-trigger"); + var btnSearchTrigger = document.getElementById("search-trigger"); + var btnCancel = document.getElementById("search-cancel"); + var content = document.querySelectorAll("#main-wrapper>.container>.row"); + var topbarTitle = document.getElementById("topbar-title"); + var search = document.getElementById("search"); + var resultWrapper = document.getElementById("search-result-wrapper"); + var results = document.getElementById("search-results"); + var input = document.getElementById("search-input"); + var hints = document.getElementById("search-hints"); + var LOADED = "d-block"; + var UNLOADED = "d-none"; + var FOCUS = "input-focus"; + var FLEX = "d-flex"; + var MobileSearchBar = class { + static on() { + btnSbTrigger.classList.add(UNLOADED); + topbarTitle.classList.add(UNLOADED); + btnSearchTrigger.classList.add(UNLOADED); + search.classList.add(FLEX); + btnCancel.classList.add(LOADED); + } + static off() { + btnCancel.classList.remove(LOADED); + search.classList.remove(FLEX); + btnSbTrigger.classList.remove(UNLOADED); + topbarTitle.classList.remove(UNLOADED); + btnSearchTrigger.classList.remove(UNLOADED); + } + }; + var ResultSwitch = class { + static on() { + if (!this.resultVisible) { + resultWrapper.classList.remove(UNLOADED); + content.forEach((el) => { + el.classList.add(UNLOADED); + }); + this.resultVisible = true; + } + } + static off() { + if (this.resultVisible) { + results.innerHTML = ""; + if (hints.classList.contains(UNLOADED)) { + hints.classList.remove(UNLOADED); + } + resultWrapper.classList.add(UNLOADED); + content.forEach((el) => { + el.classList.remove(UNLOADED); + }); + input.textContent = ""; + this.resultVisible = false; + } + } + }; + __publicField(ResultSwitch, "resultVisible", false); + function isMobileView() { + return btnCancel.classList.contains(LOADED); + } + function displaySearch() { + btnSearchTrigger.addEventListener("click", () => { + MobileSearchBar.on(); + ResultSwitch.on(); + input.focus(); + }); + btnCancel.addEventListener("click", () => { + MobileSearchBar.off(); + ResultSwitch.off(); + }); + input.addEventListener("focus", () => { + search.classList.add(FOCUS); + }); + input.addEventListener("focusout", () => { + search.classList.remove(FOCUS); + }); + input.addEventListener("input", () => { + if (input.value === "") { + if (isMobileView()) { + hints.classList.remove(UNLOADED); + } else { + ResultSwitch.off(); + } + } else { + ResultSwitch.on(); + if (isMobileView()) { + hints.classList.add(UNLOADED); + } + } + }); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/layouts/topbar.js + function initTopbar() { + displaySearch(); + } + + // + loadImg(); + initLocaleDatetime(); + initSidebar(); + initTopbar(); + basic(); +})(); diff --git a/public/js/misc.js b/public/js/misc.js index 7fc8614..07aca0d 100644 --- a/public/js/misc.js +++ b/public/js/misc.js @@ -1 +1,3391 @@ -(()=>{var On=Object.create;var ue=Object.defineProperty,Sn=Object.defineProperties,xn=Object.getOwnPropertyDescriptor,Cn=Object.getOwnPropertyDescriptors,Ln=Object.getOwnPropertyNames,pr=Object.getOwnPropertySymbols,Dn=Object.getPrototypeOf,dr=Object.prototype.hasOwnProperty,Nn=Object.prototype.propertyIsEnumerable;var hr=e=>{throw TypeError(e)};var le=(e,t,r)=>t in e?ue(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,N=(e,t)=>{for(var r in t||(t={}))dr.call(t,r)&&le(e,r,t[r]);if(pr)for(var r of pr(t))Nn.call(t,r)&&le(e,r,t[r]);return e},mr=(e,t)=>Sn(e,Cn(t));var In=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Pn=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Ln(t))!dr.call(e,o)&&o!==r&&ue(e,o,{get:()=>t[o],enumerable:!(n=xn(t,o))||n.enumerable});return e};var Mn=(e,t,r)=>(r=e!=null?On(Dn(e)):{},Pn(t||!e||!e.__esModule?ue(r,"default",{value:e,enumerable:!0}):r,e));var _t=(e,t,r)=>le(e,typeof t!="symbol"?t+"":t,r),gr=(e,t,r)=>t.has(e)||hr("Cannot "+r);var U=(e,t,r)=>(gr(e,t,"read from private field"),r?r.call(e):t.get(e)),wt=(e,t,r)=>t.has(e)?hr("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),jt=(e,t,r,n)=>(gr(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r);var rn=In(D=>{"use strict";Object.defineProperty(D,"__esModule",{value:!0});function H(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function lt(e){var t=H(e).Element;return e instanceof t||e instanceof Element}function k(e){var t=H(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function Hr(e){if(typeof ShadowRoot=="undefined")return!1;var t=H(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}var it=Math.max,Kt=Math.min,ut=Math.round;function ft(e,t){t===void 0&&(t=!1);var r=e.getBoundingClientRect(),n=1,o=1;if(k(e)&&t){var s=e.offsetHeight,i=e.offsetWidth;i>0&&(n=ut(r.width)/i||1),s>0&&(o=ut(r.height)/s||1)}return{width:r.width/n,height:r.height/o,top:r.top/o,right:r.right/n,bottom:r.bottom/o,left:r.left/n,x:r.left/n,y:r.top/o}}function Le(e){var t=H(e),r=t.pageXOffset,n=t.pageYOffset;return{scrollLeft:r,scrollTop:n}}function lo(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function uo(e){return e===H(e)||!k(e)?Le(e):lo(e)}function q(e){return e?(e.nodeName||"").toLowerCase():null}function J(e){return((lt(e)?e.ownerDocument:e.document)||window.document).documentElement}function De(e){return ft(J(e)).left+Le(e).scrollLeft}function W(e){return H(e).getComputedStyle(e)}function Ne(e){var t=W(e),r=t.overflow,n=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(r+o+n)}function fo(e){var t=e.getBoundingClientRect(),r=ut(t.width)/e.offsetWidth||1,n=ut(t.height)/e.offsetHeight||1;return r!==1||n!==1}function po(e,t,r){r===void 0&&(r=!1);var n=k(t),o=k(t)&&fo(t),s=J(t),i=ft(e,o),a={scrollLeft:0,scrollTop:0},c={x:0,y:0};return(n||!n&&!r)&&((q(t)!=="body"||Ne(s))&&(a=uo(t)),k(t)?(c=ft(t,!0),c.x+=t.clientLeft,c.y+=t.clientTop):s&&(c.x=De(s))),{x:i.left+a.scrollLeft-c.x,y:i.top+a.scrollTop-c.y,width:i.width,height:i.height}}function Ie(e){var t=ft(e),r=e.offsetWidth,n=e.offsetHeight;return Math.abs(t.width-r)<=1&&(r=t.width),Math.abs(t.height-n)<=1&&(n=t.height),{x:e.offsetLeft,y:e.offsetTop,width:r,height:n}}function Qt(e){return q(e)==="html"?e:e.assignedSlot||e.parentNode||(Hr(e)?e.host:null)||J(e)}function Vr(e){return["html","body","#document"].indexOf(q(e))>=0?e.ownerDocument.body:k(e)&&Ne(e)?e:Vr(Qt(e))}function St(e,t){var r;t===void 0&&(t=[]);var n=Vr(e),o=n===((r=e.ownerDocument)==null?void 0:r.body),s=H(n),i=o?[s].concat(s.visualViewport||[],Ne(n)?n:[]):n,a=t.concat(i);return o?a:a.concat(St(Qt(i)))}function ho(e){return["table","td","th"].indexOf(q(e))>=0}function Ir(e){return!k(e)||W(e).position==="fixed"?null:e.offsetParent}function mo(e){var t=navigator.userAgent.toLowerCase().indexOf("firefox")!==-1,r=navigator.userAgent.indexOf("Trident")!==-1;if(r&&k(e)){var n=W(e);if(n.position==="fixed")return null}for(var o=Qt(e);k(o)&&["html","body"].indexOf(q(o))<0;){var s=W(o);if(s.transform!=="none"||s.perspective!=="none"||s.contain==="paint"||["transform","perspective"].indexOf(s.willChange)!==-1||t&&s.willChange==="filter"||t&&s.filter&&s.filter!=="none")return o;o=o.parentNode}return null}function Lt(e){for(var t=H(e),r=Ir(e);r&&ho(r)&&W(r).position==="static";)r=Ir(r);return r&&(q(r)==="html"||q(r)==="body"&&W(r).position==="static")?t:r||mo(e)||t}var I="top",$="bottom",B="right",P="left",Pe="auto",Dt=[I,$,B,P],pt="start",Ct="end",go="clippingParents",qr="viewport",Ot="popper",vo="reference",Pr=Dt.reduce(function(e,t){return e.concat([t+"-"+pt,t+"-"+Ct])},[]),Wr=[].concat(Dt,[Pe]).reduce(function(e,t){return e.concat([t,t+"-"+pt,t+"-"+Ct])},[]),bo="beforeRead",yo="read",Eo="afterRead",_o="beforeMain",wo="main",Ao="afterMain",To="beforeWrite",Oo="write",So="afterWrite",xo=[bo,yo,Eo,_o,wo,Ao,To,Oo,So];function Co(e){var t=new Map,r=new Set,n=[];e.forEach(function(s){t.set(s.name,s)});function o(s){r.add(s.name);var i=[].concat(s.requires||[],s.requiresIfExists||[]);i.forEach(function(a){if(!r.has(a)){var c=t.get(a);c&&o(c)}}),n.push(s)}return e.forEach(function(s){r.has(s.name)||o(s)}),n}function Lo(e){var t=Co(e);return xo.reduce(function(r,n){return r.concat(t.filter(function(o){return o.phase===n}))},[])}function Do(e){var t;return function(){return t||(t=new Promise(function(r){Promise.resolve().then(function(){t=void 0,r(e())})})),t}}function V(e){return e.split("-")[0]}function No(e){var t=e.reduce(function(r,n){var o=r[n.name];return r[n.name]=o?Object.assign({},o,n,{options:Object.assign({},o.options,n.options),data:Object.assign({},o.data,n.data)}):n,r},{});return Object.keys(t).map(function(r){return t[r]})}function Io(e){var t=H(e),r=J(e),n=t.visualViewport,o=r.clientWidth,s=r.clientHeight,i=0,a=0;return n&&(o=n.width,s=n.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(i=n.offsetLeft,a=n.offsetTop)),{width:o,height:s,x:i+De(e),y:a}}function Po(e){var t,r=J(e),n=Le(e),o=(t=e.ownerDocument)==null?void 0:t.body,s=it(r.scrollWidth,r.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),i=it(r.scrollHeight,r.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-n.scrollLeft+De(e),c=-n.scrollTop;return W(o||r).direction==="rtl"&&(a+=it(r.clientWidth,o?o.clientWidth:0)-s),{width:s,height:i,x:a,y:c}}function zr(e,t){var r=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(r&&Hr(r)){var n=t;do{if(n&&e.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function Ce(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function Mo(e){var t=ft(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}function Mr(e,t){return t===qr?Ce(Io(e)):lt(t)?Mo(t):Ce(Po(J(e)))}function Ro(e){var t=St(Qt(e)),r=["absolute","fixed"].indexOf(W(e).position)>=0,n=r&&k(e)?Lt(e):e;return lt(n)?t.filter(function(o){return lt(o)&&zr(o,n)&&q(o)!=="body"&&(r?W(o).position!=="static":!0)}):[]}function ko(e,t,r){var n=t==="clippingParents"?Ro(e):[].concat(t),o=[].concat(n,[r]),s=o[0],i=o.reduce(function(a,c){var u=Mr(e,c);return a.top=it(u.top,a.top),a.right=Kt(u.right,a.right),a.bottom=Kt(u.bottom,a.bottom),a.left=it(u.left,a.left),a},Mr(e,s));return i.width=i.right-i.left,i.height=i.bottom-i.top,i.x=i.left,i.y=i.top,i}function dt(e){return e.split("-")[1]}function Me(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Ur(e){var t=e.reference,r=e.element,n=e.placement,o=n?V(n):null,s=n?dt(n):null,i=t.x+t.width/2-r.width/2,a=t.y+t.height/2-r.height/2,c;switch(o){case I:c={x:i,y:t.y-r.height};break;case $:c={x:i,y:t.y+t.height};break;case B:c={x:t.x+t.width,y:a};break;case P:c={x:t.x-r.width,y:a};break;default:c={x:t.x,y:t.y}}var u=o?Me(o):null;if(u!=null){var l=u==="y"?"height":"width";switch(s){case pt:c[u]=c[u]-(t[l]/2-r[l]/2);break;case Ct:c[u]=c[u]+(t[l]/2-r[l]/2);break}}return c}function Yr(){return{top:0,right:0,bottom:0,left:0}}function Gr(e){return Object.assign({},Yr(),e)}function Kr(e,t){return t.reduce(function(r,n){return r[n]=e,r},{})}function ht(e,t){t===void 0&&(t={});var r=t,n=r.placement,o=n===void 0?e.placement:n,s=r.boundary,i=s===void 0?go:s,a=r.rootBoundary,c=a===void 0?qr:a,u=r.elementContext,l=u===void 0?Ot:u,f=r.altBoundary,g=f===void 0?!1:f,p=r.padding,h=p===void 0?0:p,m=Gr(typeof h!="number"?h:Kr(h,Dt)),d=l===Ot?vo:Ot,w=e.rects.popper,A=e.elements[g?d:l],T=ko(lt(A)?A:A.contextElement||J(e.elements.popper),i,c),v=ft(e.elements.reference),E=Ur({reference:v,element:w,strategy:"absolute",placement:o}),b=Ce(Object.assign({},w,E)),y=l===Ot?b:v,O={top:T.top-y.top+m.top,bottom:y.bottom-T.bottom+m.bottom,left:T.left-y.left+m.left,right:y.right-T.right+m.right},x=e.modifiersData.offset;if(l===Ot&&x){var C=x[o];Object.keys(O).forEach(function(_){var L=[B,$].indexOf(_)>=0?1:-1,et=[I,$].indexOf(_)>=0?"y":"x";O[_]+=C[et]*L})}return O}var Rr={placement:"bottom",modifiers:[],strategy:"absolute"};function kr(){for(var e=arguments.length,t=new Array(e),r=0;r=0?-1:1,s=typeof r=="function"?r(Object.assign({},t,{placement:e})):r,i=s[0],a=s[1];return i=i||0,a=(a||0)*o,[P,B].indexOf(n)>=0?{x:a,y:i}:{x:i,y:a}}function zo(e){var t=e.state,r=e.options,n=e.name,o=r.offset,s=o===void 0?[0,0]:o,i=Wr.reduce(function(l,f){return l[f]=Wo(f,t.rects,s),l},{}),a=i[t.placement],c=a.x,u=a.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=c,t.modifiersData.popperOffsets.y+=u),t.modifiersData[n]=i}var Qr={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:zo},Uo={left:"right",right:"left",bottom:"top",top:"bottom"};function Gt(e){return e.replace(/left|right|bottom|top/g,function(t){return Uo[t]})}var Yo={start:"end",end:"start"};function Br(e){return e.replace(/start|end/g,function(t){return Yo[t]})}function Go(e,t){t===void 0&&(t={});var r=t,n=r.placement,o=r.boundary,s=r.rootBoundary,i=r.padding,a=r.flipVariations,c=r.allowedAutoPlacements,u=c===void 0?Wr:c,l=dt(n),f=l?a?Pr:Pr.filter(function(h){return dt(h)===l}):Dt,g=f.filter(function(h){return u.indexOf(h)>=0});g.length===0&&(g=f);var p=g.reduce(function(h,m){return h[m]=ht(e,{placement:m,boundary:o,rootBoundary:s,padding:i})[V(m)],h},{});return Object.keys(p).sort(function(h,m){return p[h]-p[m]})}function Ko(e){if(V(e)===Pe)return[];var t=Gt(e);return[Br(e),t,Br(t)]}function Qo(e){var t=e.state,r=e.options,n=e.name;if(!t.modifiersData[n]._skip){for(var o=r.mainAxis,s=o===void 0?!0:o,i=r.altAxis,a=i===void 0?!0:i,c=r.fallbackPlacements,u=r.padding,l=r.boundary,f=r.rootBoundary,g=r.altBoundary,p=r.flipVariations,h=p===void 0?!0:p,m=r.allowedAutoPlacements,d=t.options.placement,w=V(d),A=w===d,T=c||(A||!h?[Gt(d)]:Ko(d)),v=[d].concat(T).reduce(function(at,G){return at.concat(V(G)===Pe?Go(t,{placement:G,boundary:l,rootBoundary:f,padding:u,flipVariations:h,allowedAutoPlacements:m}):G)},[]),E=t.rects.reference,b=t.rects.popper,y=new Map,O=!0,x=v[0],C=0;C=0,bt=vt?"width":"height",R=ht(t,{placement:_,boundary:l,rootBoundary:f,altBoundary:g,padding:u}),j=vt?et?B:P:et?$:I;E[bt]>b[bt]&&(j=Gt(j));var Mt=Gt(j),rt=[];if(s&&rt.push(R[L]<=0),a&&rt.push(R[j]<=0,R[Mt]<=0),rt.every(function(at){return at})){x=_,O=!1;break}y.set(_,rt)}if(O)for(var Rt=h?3:1,ie=function(G){var Et=v.find(function($t){var nt=y.get($t);if(nt)return nt.slice(0,G).every(function(se){return se})});if(Et)return x=Et,"break"},yt=Rt;yt>0;yt--){var kt=ie(yt);if(kt==="break")break}t.placement!==x&&(t.modifiersData[n]._skip=!0,t.placement=x,t.reset=!0)}}var Xr={name:"flip",enabled:!0,phase:"main",fn:Qo,requiresIfExists:["offset"],data:{_skip:!1}};function Xo(e){return e==="x"?"y":"x"}function xt(e,t,r){return it(e,Kt(t,r))}function Jo(e,t,r){var n=xt(e,t,r);return n>r?r:n}function Zo(e){var t=e.state,r=e.options,n=e.name,o=r.mainAxis,s=o===void 0?!0:o,i=r.altAxis,a=i===void 0?!1:i,c=r.boundary,u=r.rootBoundary,l=r.altBoundary,f=r.padding,g=r.tether,p=g===void 0?!0:g,h=r.tetherOffset,m=h===void 0?0:h,d=ht(t,{boundary:c,rootBoundary:u,padding:f,altBoundary:l}),w=V(t.placement),A=dt(t.placement),T=!A,v=Me(w),E=Xo(v),b=t.modifiersData.popperOffsets,y=t.rects.reference,O=t.rects.popper,x=typeof m=="function"?m(Object.assign({},t.rects,{placement:t.placement})):m,C=typeof x=="number"?{mainAxis:x,altAxis:x}:Object.assign({mainAxis:0,altAxis:0},x),_=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,L={x:0,y:0};if(b){if(s){var et,vt=v==="y"?I:P,bt=v==="y"?$:B,R=v==="y"?"height":"width",j=b[v],Mt=j+d[vt],rt=j-d[bt],Rt=p?-O[R]/2:0,ie=A===pt?y[R]:O[R],yt=A===pt?-O[R]:-y[R],kt=t.elements.arrow,at=p&&kt?Ie(kt):{width:0,height:0},G=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:Yr(),Et=G[vt],$t=G[bt],nt=xt(0,y[R],at[R]),se=T?y[R]/2-Rt-nt-Et-C.mainAxis:ie-nt-Et-C.mainAxis,yn=T?-y[R]/2+Rt+nt+$t+C.mainAxis:yt+nt+$t+C.mainAxis,ae=t.elements.arrow&&Lt(t.elements.arrow),En=ae?v==="y"?ae.clientTop||0:ae.clientLeft||0:0,nr=(et=_==null?void 0:_[v])!=null?et:0,_n=j+se-nr-En,wn=j+yn-nr,or=xt(p?Kt(Mt,_n):Mt,j,p?it(rt,wn):rt);b[v]=or,L[v]=or-j}if(a){var ir,An=v==="x"?I:P,Tn=v==="x"?$:B,ot=b[E],Bt=E==="y"?"height":"width",sr=ot+d[An],ar=ot-d[Tn],ce=[I,P].indexOf(w)!==-1,cr=(ir=_==null?void 0:_[E])!=null?ir:0,lr=ce?sr:ot-y[Bt]-O[Bt]-cr+C.altAxis,ur=ce?ot+y[Bt]+O[Bt]-cr-C.altAxis:ar,fr=p&&ce?Jo(lr,ot,ur):xt(p?lr:sr,ot,p?ur:ar);b[E]=fr,L[E]=fr-ot}t.modifiersData[n]=L}}var Jr={name:"preventOverflow",enabled:!0,phase:"main",fn:Zo,requiresIfExists:["offset"]},ti=function(t,r){return t=typeof t=="function"?t(Object.assign({},r.rects,{placement:r.placement})):t,Gr(typeof t!="number"?t:Kr(t,Dt))};function ei(e){var t,r=e.state,n=e.name,o=e.options,s=r.elements.arrow,i=r.modifiersData.popperOffsets,a=V(r.placement),c=Me(a),u=[P,B].indexOf(a)>=0,l=u?"height":"width";if(!(!s||!i)){var f=ti(o.padding,r),g=Ie(s),p=c==="y"?I:P,h=c==="y"?$:B,m=r.rects.reference[l]+r.rects.reference[c]-i[c]-r.rects.popper[l],d=i[c]-r.rects.reference[c],w=Lt(s),A=w?c==="y"?w.clientHeight||0:w.clientWidth||0:0,T=m/2-d/2,v=f[p],E=A-g[l]-f[h],b=A/2-g[l]/2+T,y=xt(v,b,E),O=c;r.modifiersData[n]=(t={},t[O]=y,t.centerOffset=y-b,t)}}function ri(e){var t=e.state,r=e.options,n=r.element,o=n===void 0?"[data-popper-arrow]":n;o!=null&&(typeof o=="string"&&(o=t.elements.popper.querySelector(o),!o)||zr(t.elements.popper,o)&&(t.elements.arrow=o))}var Zr={name:"arrow",enabled:!0,phase:"main",fn:ei,effect:ri,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function jr(e,t,r){return r===void 0&&(r={x:0,y:0}),{top:e.top-t.height-r.y,right:e.right-t.width+r.x,bottom:e.bottom-t.height+r.y,left:e.left-t.width-r.x}}function Fr(e){return[I,B,$,P].some(function(t){return e[t]>=0})}function ni(e){var t=e.state,r=e.name,n=t.rects.reference,o=t.rects.popper,s=t.modifiersData.preventOverflow,i=ht(t,{elementContext:"reference"}),a=ht(t,{altBoundary:!0}),c=jr(i,n),u=jr(a,o,s),l=Fr(c),f=Fr(u);t.modifiersData[r]={referenceClippingOffsets:c,popperEscapeOffsets:u,isReferenceHidden:l,hasPopperEscaped:f},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":l,"data-popper-escaped":f})}var tn={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:ni},oi=[ke,$e,Be,je],ii=Re({defaultModifiers:oi}),en=[ke,$e,Be,je,Qr,Xr,Jr,Zr,tn],si=Re({defaultModifiers:en});D.applyStyles=je;D.arrow=Zr;D.computeStyles=Be;D.createPopper=si;D.createPopperLite=ii;D.defaultModifiers=en;D.detectOverflow=ht;D.eventListeners=ke;D.flip=Xr;D.hide=tn;D.offset=Qr;D.popperGenerator=Re;D.popperOffsets=$e;D.preventOverflow=Jr});var K=new Map,Ft={set(e,t,r){K.has(e)||K.set(e,new Map);let n=K.get(e);if(!n.has(t)&&n.size!==0){console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`);return}n.set(t,r)},get(e,t){return K.has(e)&&K.get(e).get(t)||null},remove(e,t){if(!K.has(e))return;let r=K.get(e);r.delete(t),r.size===0&&K.delete(e)}};var pe="transitionend",de=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,(t,r)=>`#${CSS.escape(r)}`)),e),vr=e=>e==null?`${e}`:Object.prototype.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase(),br=e=>{do e+=Math.floor(Math.random()*1e6);while(document.getElementById(e));return e},Rn=e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:r}=window.getComputedStyle(e),n=Number.parseFloat(t),o=Number.parseFloat(r);return!n&&!o?0:(t=t.split(",")[0],r=r.split(",")[0],(Number.parseFloat(t)+Number.parseFloat(r))*1e3)},kn=e=>{e.dispatchEvent(new Event(pe))},X=e=>!e||typeof e!="object"?!1:(typeof e.jquery!="undefined"&&(e=e[0]),typeof e.nodeType!="undefined"),Y=e=>X(e)?e.jquery?e[0]:e:typeof e=="string"&&e.length>0?document.querySelector(de(e)):null,yr=e=>{if(!X(e)||e.getClientRects().length===0)return!1;let t=getComputedStyle(e).getPropertyValue("visibility")==="visible",r=e.closest("details:not([open])");if(!r)return t;if(r!==e){let n=e.closest("summary");if(n&&n.parentNode!==r||n===null)return!1}return t},Er=e=>!e||e.nodeType!==Node.ELEMENT_NODE||e.classList.contains("disabled")?!0:typeof e.disabled!="undefined"?e.disabled:e.hasAttribute("disabled")&&e.getAttribute("disabled")!=="false",he=e=>{if(!document.documentElement.attachShadow)return null;if(typeof e.getRootNode=="function"){let t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?he(e.parentNode):null},me=()=>{},_r=e=>{e.offsetHeight},ge=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,fe=[],$n=e=>{document.readyState==="loading"?(fe.length||document.addEventListener("DOMContentLoaded",()=>{for(let t of fe)t()}),fe.push(e)):e()},ve=()=>document.documentElement.dir==="rtl",Ht=e=>{$n(()=>{let t=ge();if(t){let r=e.NAME,n=t.fn[r];t.fn[r]=e.jQueryInterface,t.fn[r].Constructor=e,t.fn[r].noConflict=()=>(t.fn[r]=n,e.jQueryInterface)}})},Q=(e,t=[],r=e)=>typeof e=="function"?e.call(...t):r,wr=(e,t,r=!0)=>{if(!r){Q(e);return}let o=Rn(t)+5,s=!1,i=({target:a})=>{a===t&&(s=!0,t.removeEventListener(pe,i),Q(e))};t.addEventListener(pe,i),setTimeout(()=>{s||kn(t)},o)};var Bn=/[^.]*(?=\..*)\.|.*/,jn=/\..*/,Fn=/::\d+$/,be={},Ar=1,Or={mouseenter:"mouseover",mouseleave:"mouseout"},Hn=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function Sr(e,t){return t&&`${t}::${Ar++}`||e.uidEvent||Ar++}function xr(e){let t=Sr(e);return e.uidEvent=t,be[t]=be[t]||{},be[t]}function Vn(e,t){return function r(n){return _e(n,{delegateTarget:e}),r.oneOff&&Ee.off(e,n.type,t),t.apply(e,[n])}}function qn(e,t,r){return function n(o){let s=e.querySelectorAll(t);for(let{target:i}=o;i&&i!==this;i=i.parentNode)for(let a of s)if(a===i)return _e(o,{delegateTarget:i}),n.oneOff&&Ee.off(e,o.type,t,r),r.apply(i,[o])}}function Cr(e,t,r=null){return Object.values(e).find(n=>n.callable===t&&n.delegationSelector===r)}function Lr(e,t,r){let n=typeof t=="string",o=n?r:t||r,s=Dr(e);return Hn.has(s)||(s=e),[n,o,s]}function Tr(e,t,r,n,o){if(typeof t!="string"||!e)return;let[s,i,a]=Lr(t,r,n);t in Or&&(i=(h=>function(m){if(!m.relatedTarget||m.relatedTarget!==m.delegateTarget&&!m.delegateTarget.contains(m.relatedTarget))return h.call(this,m)})(i));let c=xr(e),u=c[a]||(c[a]={}),l=Cr(u,i,s?r:null);if(l){l.oneOff=l.oneOff&&o;return}let f=Sr(i,t.replace(Bn,"")),g=s?qn(e,r,i):Vn(e,i);g.delegationSelector=s?r:null,g.callable=i,g.oneOff=o,g.uidEvent=f,u[f]=g,e.addEventListener(a,g,s)}function ye(e,t,r,n,o){let s=Cr(t[r],n,o);s&&(e.removeEventListener(r,s,!!o),delete t[r][s.uidEvent])}function Wn(e,t,r,n){let o=t[r]||{};for(let[s,i]of Object.entries(o))s.includes(n)&&ye(e,t,r,i.callable,i.delegationSelector)}function Dr(e){return e=e.replace(jn,""),Or[e]||e}var Ee={on(e,t,r,n){Tr(e,t,r,n,!1)},one(e,t,r,n){Tr(e,t,r,n,!0)},off(e,t,r,n){if(typeof t!="string"||!e)return;let[o,s,i]=Lr(t,r,n),a=i!==t,c=xr(e),u=c[i]||{},l=t.startsWith(".");if(typeof s!="undefined"){if(!Object.keys(u).length)return;ye(e,c,i,s,o?r:null);return}if(l)for(let f of Object.keys(c))Wn(e,c,f,t.slice(1));for(let[f,g]of Object.entries(u)){let p=f.replace(Fn,"");(!a||t.includes(p))&&ye(e,c,i,g.callable,g.delegationSelector)}},trigger(e,t,r){if(typeof t!="string"||!e)return null;let n=ge(),o=Dr(t),s=t!==o,i=null,a=!0,c=!0,u=!1;s&&n&&(i=n.Event(t,r),n(e).trigger(i),a=!i.isPropagationStopped(),c=!i.isImmediatePropagationStopped(),u=i.isDefaultPrevented());let l=_e(new Event(t,{bubbles:a,cancelable:!0}),r);return u&&l.preventDefault(),c&&e.dispatchEvent(l),l.defaultPrevented&&i&&i.preventDefault(),l}};function _e(e,t={}){for(let[r,n]of Object.entries(t))try{e[r]=n}catch(o){Object.defineProperty(e,r,{configurable:!0,get(){return n}})}return e}var S=Ee;function Nr(e){if(e==="true")return!0;if(e==="false")return!1;if(e===Number(e).toString())return Number(e);if(e===""||e==="null")return null;if(typeof e!="string")return e;try{return JSON.parse(decodeURIComponent(e))}catch(t){return e}}function we(e){return e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}var zn={setDataAttribute(e,t,r){e.setAttribute(`data-bs-${we(t)}`,r)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${we(t)}`)},getDataAttributes(e){if(!e)return{};let t={},r=Object.keys(e.dataset).filter(n=>n.startsWith("bs")&&!n.startsWith("bsConfig"));for(let n of r){let o=n.replace(/^bs/,"");o=o.charAt(0).toLowerCase()+o.slice(1),t[o]=Nr(e.dataset[n])}return t},getDataAttribute(e,t){return Nr(e.getAttribute(`data-bs-${we(t)}`))}},At=zn;var Ae=class{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,r){let n=X(r)?At.getDataAttribute(r,"config"):{};return N(N(N(N({},this.constructor.Default),typeof n=="object"?n:{}),X(r)?At.getDataAttributes(r):{}),typeof t=="object"?t:{})}_typeCheckConfig(t,r=this.constructor.DefaultType){for(let[n,o]of Object.entries(r)){let s=t[n],i=X(s)?"element":vr(s);if(!new RegExp(o).test(i))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${i}" but expected type "${o}".`)}}},Vt=Ae;var Un="5.3.8",Te=class extends Vt{constructor(t,r){super(),t=Y(t),t&&(this._element=t,this._config=this._getConfig(r),Ft.set(this._element,this.constructor.DATA_KEY,this))}dispose(){Ft.remove(this._element,this.constructor.DATA_KEY),S.off(this._element,this.constructor.EVENT_KEY);for(let t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,r,n=!0){wr(t,r,n)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return Ft.get(Y(t),this.DATA_KEY)}static getOrCreateInstance(t,r={}){return this.getInstance(t)||new this(t,typeof r=="object"?r:null)}static get VERSION(){return Un}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}},qt=Te;var Oe=e=>{let t=e.getAttribute("data-bs-target");if(!t||t==="#"){let r=e.getAttribute("href");if(!r||!r.includes("#")&&!r.startsWith("."))return null;r.includes("#")&&!r.startsWith("#")&&(r=`#${r.split("#")[1]}`),t=r&&r!=="#"?r.trim():null}return t?t.split(",").map(r=>de(r)).join(","):null},Wt={find(e,t=document.documentElement){return[].concat(...Element.prototype.querySelectorAll.call(t,e))},findOne(e,t=document.documentElement){return Element.prototype.querySelector.call(t,e)},children(e,t){return[].concat(...e.children).filter(r=>r.matches(t))},parents(e,t){let r=[],n=e.parentNode.closest(t);for(;n;)r.push(n),n=n.parentNode.closest(t);return r},prev(e,t){let r=e.previousElementSibling;for(;r;){if(r.matches(t))return[r];r=r.previousElementSibling}return[]},next(e,t){let r=e.nextElementSibling;for(;r;){if(r.matches(t))return[r];r=r.nextElementSibling}return[]},focusableChildren(e){let t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(r=>`${r}:not([tabindex^="-"])`).join(",");return this.find(t,e).filter(r=>!Er(r)&&yr(r))},getSelectorFromElement(e){let t=Oe(e);return t&&Wt.findOne(t)?t:null},getElementFromSelector(e){let t=Oe(e);return t?Wt.findOne(t):null},getMultipleElementsFromSelector(e){let t=Oe(e);return t?Wt.find(t):[]}},F=Wt;var Yn="collapse",Gn="bs.collapse",Tt=`.${Gn}`,Kn=".data-api",Qn=`show${Tt}`,Xn=`shown${Tt}`,Jn=`hide${Tt}`,Zn=`hidden${Tt}`,to=`click${Tt}${Kn}`,Se="show",ct="collapse",zt="collapsing",eo="collapsed",ro=`:scope .${ct} .${ct}`,no="collapse-horizontal",oo="width",io="height",so=".collapse.show, .collapse.collapsing",xe='[data-bs-toggle="collapse"]',ao={parent:null,toggle:!0},co={parent:"(null|element)",toggle:"boolean"},Ut=class e extends qt{constructor(t,r){super(t,r),this._isTransitioning=!1,this._triggerArray=[];let n=F.find(xe);for(let o of n){let s=F.getSelectorFromElement(o),i=F.find(s).filter(a=>a===this._element);s!==null&&i.length&&this._triggerArray.push(o)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return ao}static get DefaultType(){return co}static get NAME(){return Yn}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(so).filter(a=>a!==this._element).map(a=>e.getOrCreateInstance(a,{toggle:!1}))),t.length&&t[0]._isTransitioning||S.trigger(this._element,Qn).defaultPrevented)return;for(let a of t)a.hide();let n=this._getDimension();this._element.classList.remove(ct),this._element.classList.add(zt),this._element.style[n]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;let o=()=>{this._isTransitioning=!1,this._element.classList.remove(zt),this._element.classList.add(ct,Se),this._element.style[n]="",S.trigger(this._element,Xn)},i=`scroll${n[0].toUpperCase()+n.slice(1)}`;this._queueCallback(o,this._element,!0),this._element.style[n]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown()||S.trigger(this._element,Jn).defaultPrevented)return;let r=this._getDimension();this._element.style[r]=`${this._element.getBoundingClientRect()[r]}px`,_r(this._element),this._element.classList.add(zt),this._element.classList.remove(ct,Se);for(let o of this._triggerArray){let s=F.getElementFromSelector(o);s&&!this._isShown(s)&&this._addAriaAndCollapsedClass([o],!1)}this._isTransitioning=!0;let n=()=>{this._isTransitioning=!1,this._element.classList.remove(zt),this._element.classList.add(ct),S.trigger(this._element,Zn)};this._element.style[r]="",this._queueCallback(n,this._element,!0)}_isShown(t=this._element){return t.classList.contains(Se)}_configAfterMerge(t){return t.toggle=!!t.toggle,t.parent=Y(t.parent),t}_getDimension(){return this._element.classList.contains(no)?oo:io}_initializeChildren(){if(!this._config.parent)return;let t=this._getFirstLevelChildren(xe);for(let r of t){let n=F.getElementFromSelector(r);n&&this._addAriaAndCollapsedClass([r],this._isShown(n))}}_getFirstLevelChildren(t){let r=F.find(ro,this._config.parent);return F.find(t,this._config.parent).filter(n=>!r.includes(n))}_addAriaAndCollapsedClass(t,r){if(t.length)for(let n of t)n.classList.toggle(eo,!r),n.setAttribute("aria-expanded",r)}static jQueryInterface(t){let r={};return typeof t=="string"&&/show|hide/.test(t)&&(r.toggle=!1),this.each(function(){let n=e.getOrCreateInstance(this,r);if(typeof t=="string"){if(typeof n[t]=="undefined")throw new TypeError(`No method named "${t}"`);n[t]()}})}};S.on(document,to,xe,function(e){(e.target.tagName==="A"||e.delegateTarget&&e.delegateTarget.tagName==="A")&&e.preventDefault();for(let t of F.getMultipleElementsFromSelector(this))Ut.getOrCreateInstance(t,{toggle:!1}).toggle()});Ht(Ut);var us=document.getElementsByClassName("collapse");var We=Mn(rn());var ai=/^aria-[\w-]*$/i,Xt={"*":["class","dir","id","lang","role",ai],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},ci=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),li=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,ui=(e,t)=>{let r=e.nodeName.toLowerCase();return t.includes(r)?ci.has(r)?!!li.test(e.nodeValue):!0:t.filter(n=>n instanceof RegExp).some(n=>n.test(r))};function nn(e,t,r){if(!e.length)return e;if(r&&typeof r=="function")return r(e);let o=new window.DOMParser().parseFromString(e,"text/html"),s=[].concat(...o.body.querySelectorAll("*"));for(let i of s){let a=i.nodeName.toLowerCase();if(!Object.keys(t).includes(a)){i.remove();continue}let c=[].concat(...i.attributes),u=[].concat(t["*"]||[],t[a]||[]);for(let l of c)ui(l,u)||i.removeAttribute(l.nodeName)}return o.body.innerHTML}var fi="TemplateFactory",pi={allowList:Xt,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},di={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},hi={entry:"(string|element|function|null)",selector:"(string|element)"},Fe=class extends Vt{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return pi}static get DefaultType(){return di}static get NAME(){return fi}getContent(){return Object.values(this._config.content).map(t=>this._resolvePossibleFunction(t)).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content=N(N({},this._config.content),t),this}toHtml(){let t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(let[o,s]of Object.entries(this._config.content))this._setContent(t,s,o);let r=t.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&r.classList.add(...n.split(" ")),r}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(let[r,n]of Object.entries(t))super._typeCheckConfig({selector:r,entry:n},hi)}_setContent(t,r,n){let o=F.findOne(n,t);if(o){if(r=this._resolvePossibleFunction(r),!r){o.remove();return}if(X(r)){this._putElementInTemplate(Y(r),o);return}if(this._config.html){o.innerHTML=this._maybeSanitize(r);return}o.textContent=r}}_maybeSanitize(t){return this._config.sanitize?nn(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return Q(t,[void 0,this])}_putElementInTemplate(t,r){if(this._config.html){r.innerHTML="",r.append(t);return}r.textContent=t.textContent}},on=Fe;var mi="tooltip",gi=new Set(["sanitize","allowList","sanitizeFn"]),He="fade",vi="modal",Jt="show",bi=".tooltip-inner",sn=`.${vi}`,an="hide.bs.modal",Nt="hover",Ve="focus",qe="click",yi="manual",Ei="hide",_i="hidden",wi="show",Ai="shown",Ti="inserted",Oi="click",Si="focusin",xi="focusout",Ci="mouseenter",Li="mouseleave",Di={AUTO:"auto",TOP:"top",RIGHT:ve()?"left":"right",BOTTOM:"bottom",LEFT:ve()?"right":"left"},Ni={allowList:Xt,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},Ii={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"},Zt=class e extends qt{constructor(t,r){if(typeof We=="undefined")throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org/docs/v2/)");super(t,r),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Ni}static get DefaultType(){return Ii}static get NAME(){return mi}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){if(this._isEnabled){if(this._isShown()){this._leave();return}this._enter()}}dispose(){clearTimeout(this._timeout),S.off(this._element.closest(sn),an,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if(this._element.style.display==="none")throw new Error("Please use show on visible elements");if(!(this._isWithContent()&&this._isEnabled))return;let t=S.trigger(this._element,this.constructor.eventName(wi)),n=(he(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!n)return;this._disposePopper();let o=this._getTipElement();this._element.setAttribute("aria-describedby",o.getAttribute("id"));let{container:s}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(s.append(o),S.trigger(this._element,this.constructor.eventName(Ti))),this._popper=this._createPopper(o),o.classList.add(Jt),"ontouchstart"in document.documentElement)for(let a of[].concat(...document.body.children))S.on(a,"mouseover",me);let i=()=>{S.trigger(this._element,this.constructor.eventName(Ai)),this._isHovered===!1&&this._leave(),this._isHovered=!1};this._queueCallback(i,this.tip,this._isAnimated())}hide(){if(!this._isShown()||S.trigger(this._element,this.constructor.eventName(Ei)).defaultPrevented)return;if(this._getTipElement().classList.remove(Jt),"ontouchstart"in document.documentElement)for(let o of[].concat(...document.body.children))S.off(o,"mouseover",me);this._activeTrigger[qe]=!1,this._activeTrigger[Ve]=!1,this._activeTrigger[Nt]=!1,this._isHovered=null;let n=()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),S.trigger(this._element,this.constructor.eventName(_i)))};this._queueCallback(n,this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return!!this._getTitle()}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){let r=this._getTemplateFactory(t).toHtml();if(!r)return null;r.classList.remove(He,Jt),r.classList.add(`bs-${this.constructor.NAME}-auto`);let n=br(this.constructor.NAME).toString();return r.setAttribute("id",n),this._isAnimated()&&r.classList.add(He),r}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new on(mr(N({},this._config),{content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)})),this._templateFactory}_getContentForTemplate(){return{[bi]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(He)}_isShown(){return this.tip&&this.tip.classList.contains(Jt)}_createPopper(t){let r=Q(this._config.placement,[this,t,this._element]),n=Di[r.toUpperCase()];return We.createPopper(this._element,t,this._getPopperConfig(n))}_getOffset(){let{offset:t}=this._config;return typeof t=="string"?t.split(",").map(r=>Number.parseInt(r,10)):typeof t=="function"?r=>t(r,this._element):t}_resolvePossibleFunction(t){return Q(t,[this._element,this._element])}_getPopperConfig(t){let r={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:n=>{this._getTipElement().setAttribute("data-popper-placement",n.state.placement)}}]};return N(N({},r),Q(this._config.popperConfig,[void 0,r]))}_setListeners(){let t=this._config.trigger.split(" ");for(let r of t)if(r==="click")S.on(this._element,this.constructor.eventName(Oi),this._config.selector,n=>{let o=this._initializeOnDelegatedTarget(n);o._activeTrigger[qe]=!(o._isShown()&&o._activeTrigger[qe]),o.toggle()});else if(r!==yi){let n=r===Nt?this.constructor.eventName(Ci):this.constructor.eventName(Si),o=r===Nt?this.constructor.eventName(Li):this.constructor.eventName(xi);S.on(this._element,n,this._config.selector,s=>{let i=this._initializeOnDelegatedTarget(s);i._activeTrigger[s.type==="focusin"?Ve:Nt]=!0,i._enter()}),S.on(this._element,o,this._config.selector,s=>{let i=this._initializeOnDelegatedTarget(s);i._activeTrigger[s.type==="focusout"?Ve:Nt]=i._element.contains(s.relatedTarget),i._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},S.on(this._element.closest(sn),an,this._hideModalHandler)}_fixTitle(){let t=this._element.getAttribute("title");t&&(!this._element.getAttribute("aria-label")&&!this._element.textContent.trim()&&this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){if(this._isShown()||this._isHovered){this._isHovered=!0;return}this._isHovered=!0,this._setTimeout(()=>{this._isHovered&&this.show()},this._config.delay.show)}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout(()=>{this._isHovered||this.hide()},this._config.delay.hide))}_setTimeout(t,r){clearTimeout(this._timeout),this._timeout=setTimeout(t,r)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){let r=At.getDataAttributes(this._element);for(let n of Object.keys(r))gi.has(n)&&delete r[n];return t=N(N({},r),typeof t=="object"&&t?t:{}),t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=t.container===!1?document.body:Y(t.container),typeof t.delay=="number"&&(t.delay={show:t.delay,hide:t.delay}),typeof t.title=="number"&&(t.title=t.title.toString()),typeof t.content=="number"&&(t.content=t.content.toString()),t}_getDelegateConfig(){let t={};for(let[r,n]of Object.entries(this._config))this.constructor.Default[r]!==n&&(t[r]=n);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each(function(){let r=e.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof r[t]=="undefined")throw new TypeError(`No method named "${t}"`);r[t]()}})}};Ht(Zt);var ze=Zt;var Z=class{static get attrTimestamp(){return"data-ts"}static get attrDateFormat(){return"data-df"}static get locale(){return document.documentElement.getAttribute("lang").substring(0,2)}static getTimestamp(t){return Number(t.getAttribute(this.attrTimestamp))}static getDateFormat(t){return t.getAttribute(this.attrDateFormat)}};function Ue(){dayjs.locale(Z.locale),dayjs.extend(window.dayjs_plugin_localizedFormat),document.querySelectorAll(`[${Z.attrTimestamp}]`).forEach(e=>{let t=dayjs.unix(Z.getTimestamp(e)),r=t.format(Z.getDateFormat(e));if(e.textContent=r,e.removeAttribute(Z.attrTimestamp),e.removeAttribute(Z.attrDateFormat),e.hasAttribute("data-bs-toggle")&&e.getAttribute("data-bs-toggle")==="tooltip"){let n=t.format("llll");e.setAttribute("data-bs-title",n)}})}var Pi=document.getElementById("toc-bar"),Mi=document.getElementById("toc-solo-trigger"),Ri=document.getElementsByClassName("toc-trigger"),z=document.getElementById("toc-popup"),ki=document.getElementById("toc-popup-close"),cn="overflow-hidden",Ye="closing",It,Pt,mt=class mt{static initBar(){new IntersectionObserver(r=>{r.forEach(n=>{Pi.classList.toggle("invisible",n.isIntersecting)})},{rootMargin:`-${U(this,Pt)}px 0px 0px 0px`}).observe(Mi),jt(this,It,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach(r=>{r.onclick=()=>this.hidePopup()})}static refresh(){U(this,It)&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return z.open}static showPopup(){this.lockScroll(!0),z.showModal(),z.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){z.toggleAttribute(Ye),z.addEventListener("animationend",()=>{z.toggleAttribute(Ye),z.close()},{once:!0}),this.lockScroll(!1)}static lockScroll(t){document.documentElement.classList.toggle(cn,t),document.body.classList.toggle(cn,t)}static clickBackdrop(t){if(z.hasAttribute(Ye))return;let r=t.target.getBoundingClientRect();(t.clientXr.right||t.clientYr.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...Ri].forEach(t=>{t.onclick=()=>this.showPopup()}),z.onclick=t=>this.clickBackdrop(t),ki.onclick=()=>this.hidePopup(),z.oncancel=t=>{t.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}};It=new WeakMap,Pt=new WeakMap,wt(mt,It,!0),wt(mt,Pt,48),_t(mt,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:U(mt,Pt)});var Ge=mt;var Fs=matchMedia("(min-width: 1200px)");var Vs=Theme.getThemeMapper("default","dark");var ln=document.getElementById("mode-toggle");function Ke(){ln&&ln.addEventListener("click",()=>{Theme.flip()})}function Qe(){let e=document.getElementById("back-to-top");window.addEventListener("scroll",()=>{window.scrollY>50?e.classList.add("show"):e.classList.remove("show")}),e.addEventListener("click",()=>{window.scrollTo({top:0})})}function Xe(){[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map(t=>new ze(t))}function Je(){Ke(),Qe(),Xe()}var $i="sidebar-display",Bi=document.getElementById("sidebar"),ji=document.getElementById("sidebar-trigger"),un=document.getElementById("mask"),tt,te=class{static toggle(){jt(this,tt,!U(this,tt)),document.body.toggleAttribute($i,U(this,tt)),Bi.classList.toggle("z-2",U(this,tt)),un.classList.toggle("d-none",!U(this,tt))}};tt=new WeakMap,wt(te,tt,!1);function Ze(){ji.onclick=un.onclick=()=>te.toggle()}var fn=document.getElementById("sidebar-trigger"),tr=document.getElementById("search-trigger"),ee=document.getElementById("search-cancel"),pn=document.querySelectorAll("#main-wrapper>.container>.row"),dn=document.getElementById("topbar-title"),re=document.getElementById("search"),hn=document.getElementById("search-result-wrapper"),Fi=document.getElementById("search-results"),gt=document.getElementById("search-input"),ne=document.getElementById("search-hints"),er="d-block",M="d-none",mn="input-focus",gn="d-flex",oe=class{static on(){fn.classList.add(M),dn.classList.add(M),tr.classList.add(M),re.classList.add(gn),ee.classList.add(er)}static off(){ee.classList.remove(er),re.classList.remove(gn),fn.classList.remove(M),dn.classList.remove(M),tr.classList.remove(M)}},st=class{static on(){this.resultVisible||(hn.classList.remove(M),pn.forEach(t=>{t.classList.add(M)}),this.resultVisible=!0)}static off(){this.resultVisible&&(Fi.innerHTML="",ne.classList.contains(M)&&ne.classList.remove(M),hn.classList.add(M),pn.forEach(t=>{t.classList.remove(M)}),gt.textContent="",this.resultVisible=!1)}};_t(st,"resultVisible",!1);function vn(){return ee.classList.contains(er)}function bn(){tr.addEventListener("click",()=>{oe.on(),st.on(),gt.focus()}),ee.addEventListener("click",()=>{oe.off(),st.off()}),gt.addEventListener("focus",()=>{re.classList.add(mn)}),gt.addEventListener("focusout",()=>{re.classList.remove(mn)}),gt.addEventListener("input",()=>{gt.value===""?vn()?ne.classList.remove(M):st.off():(st.on(),vn()&&ne.classList.add(M))})}function rr(){bn()}Ze();rr();Ue();Je();})(); +(() => { + var __create = Object.create; + var __defProp = Object.defineProperty; + var __defProps = Object.defineProperties; + var __getOwnPropDesc = Object.getOwnPropertyDescriptor; + var __getOwnPropDescs = Object.getOwnPropertyDescriptors; + var __getOwnPropNames = Object.getOwnPropertyNames; + var __getOwnPropSymbols = Object.getOwnPropertySymbols; + var __getProtoOf = Object.getPrototypeOf; + var __hasOwnProp = Object.prototype.hasOwnProperty; + var __propIsEnum = Object.prototype.propertyIsEnumerable; + var __typeError = (msg) => { + throw TypeError(msg); + }; + var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; + var __spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + if (__getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(b)) { + if (__propIsEnum.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + } + return a; + }; + var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); + var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; + }; + var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; + }; + var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod + )); + var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg); + var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj)); + var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value); + var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/gohugoio/hugo-mod-jslibs-dist/popperjs/v2@v2.21100.20000/package/dist/cjs/popper.js + var require_popper = __commonJS({ + "ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/gohugoio/hugo-mod-jslibs-dist/popperjs/v2@v2.21100.20000/package/dist/cjs/popper.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + function getWindow(node) { + if (node == null) { + return window; + } + if (node.toString() !== "[object Window]") { + var ownerDocument = node.ownerDocument; + return ownerDocument ? ownerDocument.defaultView || window : window; + } + return node; + } + function isElement2(node) { + var OwnElement = getWindow(node).Element; + return node instanceof OwnElement || node instanceof Element; + } + function isHTMLElement(node) { + var OwnElement = getWindow(node).HTMLElement; + return node instanceof OwnElement || node instanceof HTMLElement; + } + function isShadowRoot(node) { + if (typeof ShadowRoot === "undefined") { + return false; + } + var OwnElement = getWindow(node).ShadowRoot; + return node instanceof OwnElement || node instanceof ShadowRoot; + } + var max = Math.max; + var min = Math.min; + var round = Math.round; + function getBoundingClientRect(element, includeScale) { + if (includeScale === void 0) { + includeScale = false; + } + var rect = element.getBoundingClientRect(); + var scaleX = 1; + var scaleY = 1; + if (isHTMLElement(element) && includeScale) { + var offsetHeight = element.offsetHeight; + var offsetWidth = element.offsetWidth; + if (offsetWidth > 0) { + scaleX = round(rect.width) / offsetWidth || 1; + } + if (offsetHeight > 0) { + scaleY = round(rect.height) / offsetHeight || 1; + } + } + return { + width: rect.width / scaleX, + height: rect.height / scaleY, + top: rect.top / scaleY, + right: rect.right / scaleX, + bottom: rect.bottom / scaleY, + left: rect.left / scaleX, + x: rect.left / scaleX, + y: rect.top / scaleY + }; + } + function getWindowScroll(node) { + var win = getWindow(node); + var scrollLeft = win.pageXOffset; + var scrollTop = win.pageYOffset; + return { + scrollLeft, + scrollTop + }; + } + function getHTMLElementScroll(element) { + return { + scrollLeft: element.scrollLeft, + scrollTop: element.scrollTop + }; + } + function getNodeScroll(node) { + if (node === getWindow(node) || !isHTMLElement(node)) { + return getWindowScroll(node); + } else { + return getHTMLElementScroll(node); + } + } + function getNodeName(element) { + return element ? (element.nodeName || "").toLowerCase() : null; + } + function getDocumentElement(element) { + return ((isElement2(element) ? element.ownerDocument : ( + // $FlowFixMe[prop-missing] + element.document + )) || window.document).documentElement; + } + function getWindowScrollBarX(element) { + return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft; + } + function getComputedStyle2(element) { + return getWindow(element).getComputedStyle(element); + } + function isScrollParent(element) { + var _getComputedStyle = getComputedStyle2(element), overflow = _getComputedStyle.overflow, overflowX = _getComputedStyle.overflowX, overflowY = _getComputedStyle.overflowY; + return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX); + } + function isElementScaled(element) { + var rect = element.getBoundingClientRect(); + var scaleX = round(rect.width) / element.offsetWidth || 1; + var scaleY = round(rect.height) / element.offsetHeight || 1; + return scaleX !== 1 || scaleY !== 1; + } + function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) { + if (isFixed === void 0) { + isFixed = false; + } + var isOffsetParentAnElement = isHTMLElement(offsetParent); + var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent); + var documentElement = getDocumentElement(offsetParent); + var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled); + var scroll = { + scrollLeft: 0, + scrollTop: 0 + }; + var offsets = { + x: 0, + y: 0 + }; + if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { + if (getNodeName(offsetParent) !== "body" || // https://github.com/popperjs/popper-core/issues/1078 + isScrollParent(documentElement)) { + scroll = getNodeScroll(offsetParent); + } + if (isHTMLElement(offsetParent)) { + offsets = getBoundingClientRect(offsetParent, true); + offsets.x += offsetParent.clientLeft; + offsets.y += offsetParent.clientTop; + } else if (documentElement) { + offsets.x = getWindowScrollBarX(documentElement); + } + } + return { + x: rect.left + scroll.scrollLeft - offsets.x, + y: rect.top + scroll.scrollTop - offsets.y, + width: rect.width, + height: rect.height + }; + } + function getLayoutRect(element) { + var clientRect = getBoundingClientRect(element); + var width = element.offsetWidth; + var height = element.offsetHeight; + if (Math.abs(clientRect.width - width) <= 1) { + width = clientRect.width; + } + if (Math.abs(clientRect.height - height) <= 1) { + height = clientRect.height; + } + return { + x: element.offsetLeft, + y: element.offsetTop, + width, + height + }; + } + function getParentNode(element) { + if (getNodeName(element) === "html") { + return element; + } + return ( + // this is a quicker (but less type safe) way to save quite some bytes from the bundle + // $FlowFixMe[incompatible-return] + // $FlowFixMe[prop-missing] + element.assignedSlot || // step into the shadow DOM of the parent of a slotted node + element.parentNode || // DOM Element detected + (isShadowRoot(element) ? element.host : null) || // ShadowRoot detected + // $FlowFixMe[incompatible-call]: HTMLElement is a Node + getDocumentElement(element) + ); + } + function getScrollParent(node) { + if (["html", "body", "#document"].indexOf(getNodeName(node)) >= 0) { + return node.ownerDocument.body; + } + if (isHTMLElement(node) && isScrollParent(node)) { + return node; + } + return getScrollParent(getParentNode(node)); + } + function listScrollParents(element, list) { + var _element$ownerDocumen; + if (list === void 0) { + list = []; + } + var scrollParent = getScrollParent(element); + var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body); + var win = getWindow(scrollParent); + var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent; + var updatedList = list.concat(target); + return isBody ? updatedList : ( + // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here + updatedList.concat(listScrollParents(getParentNode(target))) + ); + } + function isTableElement(element) { + return ["table", "td", "th"].indexOf(getNodeName(element)) >= 0; + } + function getTrueOffsetParent(element) { + if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837 + getComputedStyle2(element).position === "fixed") { + return null; + } + return element.offsetParent; + } + function getContainingBlock(element) { + var isFirefox = navigator.userAgent.toLowerCase().indexOf("firefox") !== -1; + var isIE = navigator.userAgent.indexOf("Trident") !== -1; + if (isIE && isHTMLElement(element)) { + var elementCss = getComputedStyle2(element); + if (elementCss.position === "fixed") { + return null; + } + } + var currentNode = getParentNode(element); + while (isHTMLElement(currentNode) && ["html", "body"].indexOf(getNodeName(currentNode)) < 0) { + var css = getComputedStyle2(currentNode); + if (css.transform !== "none" || css.perspective !== "none" || css.contain === "paint" || ["transform", "perspective"].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === "filter" || isFirefox && css.filter && css.filter !== "none") { + return currentNode; + } else { + currentNode = currentNode.parentNode; + } + } + return null; + } + function getOffsetParent(element) { + var window2 = getWindow(element); + var offsetParent = getTrueOffsetParent(element); + while (offsetParent && isTableElement(offsetParent) && getComputedStyle2(offsetParent).position === "static") { + offsetParent = getTrueOffsetParent(offsetParent); + } + if (offsetParent && (getNodeName(offsetParent) === "html" || getNodeName(offsetParent) === "body" && getComputedStyle2(offsetParent).position === "static")) { + return window2; + } + return offsetParent || getContainingBlock(element) || window2; + } + var top = "top"; + var bottom = "bottom"; + var right = "right"; + var left = "left"; + var auto = "auto"; + var basePlacements = [top, bottom, right, left]; + var start = "start"; + var end = "end"; + var clippingParents = "clippingParents"; + var viewport = "viewport"; + var popper = "popper"; + var reference = "reference"; + var variationPlacements = /* @__PURE__ */ basePlacements.reduce(function(acc, placement) { + return acc.concat([placement + "-" + start, placement + "-" + end]); + }, []); + var placements = /* @__PURE__ */ [].concat(basePlacements, [auto]).reduce(function(acc, placement) { + return acc.concat([placement, placement + "-" + start, placement + "-" + end]); + }, []); + var beforeRead = "beforeRead"; + var read = "read"; + var afterRead = "afterRead"; + var beforeMain = "beforeMain"; + var main = "main"; + var afterMain = "afterMain"; + var beforeWrite = "beforeWrite"; + var write = "write"; + var afterWrite = "afterWrite"; + var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite]; + function order(modifiers) { + var map = /* @__PURE__ */ new Map(); + var visited = /* @__PURE__ */ new Set(); + var result = []; + modifiers.forEach(function(modifier) { + map.set(modifier.name, modifier); + }); + function sort(modifier) { + visited.add(modifier.name); + var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []); + requires.forEach(function(dep) { + if (!visited.has(dep)) { + var depModifier = map.get(dep); + if (depModifier) { + sort(depModifier); + } + } + }); + result.push(modifier); + } + modifiers.forEach(function(modifier) { + if (!visited.has(modifier.name)) { + sort(modifier); + } + }); + return result; + } + function orderModifiers(modifiers) { + var orderedModifiers = order(modifiers); + return modifierPhases.reduce(function(acc, phase) { + return acc.concat(orderedModifiers.filter(function(modifier) { + return modifier.phase === phase; + })); + }, []); + } + function debounce(fn) { + var pending; + return function() { + if (!pending) { + pending = new Promise(function(resolve) { + Promise.resolve().then(function() { + pending = void 0; + resolve(fn()); + }); + }); + } + return pending; + }; + } + function format(str) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + return [].concat(args).reduce(function(p, c) { + return p.replace(/%s/, c); + }, str); + } + var INVALID_MODIFIER_ERROR = 'Popper: modifier "%s" provided an invalid %s property, expected %s but got %s'; + var MISSING_DEPENDENCY_ERROR = 'Popper: modifier "%s" requires "%s", but "%s" modifier is not available'; + var VALID_PROPERTIES = ["name", "enabled", "phase", "fn", "effect", "requires", "options"]; + function validateModifiers(modifiers) { + modifiers.forEach(function(modifier) { + [].concat(Object.keys(modifier), VALID_PROPERTIES).filter(function(value, index, self) { + return self.indexOf(value) === index; + }).forEach(function(key) { + switch (key) { + case "name": + if (typeof modifier.name !== "string") { + console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '"name"', '"string"', '"' + String(modifier.name) + '"')); + } + break; + case "enabled": + if (typeof modifier.enabled !== "boolean") { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"enabled"', '"boolean"', '"' + String(modifier.enabled) + '"')); + } + break; + case "phase": + if (modifierPhases.indexOf(modifier.phase) < 0) { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + modifierPhases.join(", "), '"' + String(modifier.phase) + '"')); + } + break; + case "fn": + if (typeof modifier.fn !== "function") { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"fn"', '"function"', '"' + String(modifier.fn) + '"')); + } + break; + case "effect": + if (modifier.effect != null && typeof modifier.effect !== "function") { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"effect"', '"function"', '"' + String(modifier.fn) + '"')); + } + break; + case "requires": + if (modifier.requires != null && !Array.isArray(modifier.requires)) { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requires"', '"array"', '"' + String(modifier.requires) + '"')); + } + break; + case "requiresIfExists": + if (!Array.isArray(modifier.requiresIfExists)) { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requiresIfExists"', '"array"', '"' + String(modifier.requiresIfExists) + '"')); + } + break; + case "options": + case "data": + break; + default: + console.error('PopperJS: an invalid property has been provided to the "' + modifier.name + '" modifier, valid properties are ' + VALID_PROPERTIES.map(function(s) { + return '"' + s + '"'; + }).join(", ") + '; but "' + key + '" was provided.'); + } + modifier.requires && modifier.requires.forEach(function(requirement) { + if (modifiers.find(function(mod) { + return mod.name === requirement; + }) == null) { + console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement)); + } + }); + }); + }); + } + function uniqueBy(arr, fn) { + var identifiers = /* @__PURE__ */ new Set(); + return arr.filter(function(item) { + var identifier = fn(item); + if (!identifiers.has(identifier)) { + identifiers.add(identifier); + return true; + } + }); + } + function getBasePlacement(placement) { + return placement.split("-")[0]; + } + function mergeByName(modifiers) { + var merged = modifiers.reduce(function(merged2, current) { + var existing = merged2[current.name]; + merged2[current.name] = existing ? Object.assign({}, existing, current, { + options: Object.assign({}, existing.options, current.options), + data: Object.assign({}, existing.data, current.data) + }) : current; + return merged2; + }, {}); + return Object.keys(merged).map(function(key) { + return merged[key]; + }); + } + function getViewportRect(element) { + var win = getWindow(element); + var html = getDocumentElement(element); + var visualViewport = win.visualViewport; + var width = html.clientWidth; + var height = html.clientHeight; + var x = 0; + var y = 0; + if (visualViewport) { + width = visualViewport.width; + height = visualViewport.height; + if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) { + x = visualViewport.offsetLeft; + y = visualViewport.offsetTop; + } + } + return { + width, + height, + x: x + getWindowScrollBarX(element), + y + }; + } + function getDocumentRect(element) { + var _element$ownerDocumen; + var html = getDocumentElement(element); + var winScroll = getWindowScroll(element); + var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body; + var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); + var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); + var x = -winScroll.scrollLeft + getWindowScrollBarX(element); + var y = -winScroll.scrollTop; + if (getComputedStyle2(body || html).direction === "rtl") { + x += max(html.clientWidth, body ? body.clientWidth : 0) - width; + } + return { + width, + height, + x, + y + }; + } + function contains(parent, child) { + var rootNode = child.getRootNode && child.getRootNode(); + if (parent.contains(child)) { + return true; + } else if (rootNode && isShadowRoot(rootNode)) { + var next = child; + do { + if (next && parent.isSameNode(next)) { + return true; + } + next = next.parentNode || next.host; + } while (next); + } + return false; + } + function rectToClientRect(rect) { + return Object.assign({}, rect, { + left: rect.x, + top: rect.y, + right: rect.x + rect.width, + bottom: rect.y + rect.height + }); + } + function getInnerBoundingClientRect(element) { + var rect = getBoundingClientRect(element); + rect.top = rect.top + element.clientTop; + rect.left = rect.left + element.clientLeft; + rect.bottom = rect.top + element.clientHeight; + rect.right = rect.left + element.clientWidth; + rect.width = element.clientWidth; + rect.height = element.clientHeight; + rect.x = rect.left; + rect.y = rect.top; + return rect; + } + function getClientRectFromMixedType(element, clippingParent) { + return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isElement2(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element))); + } + function getClippingParents(element) { + var clippingParents2 = listScrollParents(getParentNode(element)); + var canEscapeClipping = ["absolute", "fixed"].indexOf(getComputedStyle2(element).position) >= 0; + var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element; + if (!isElement2(clipperElement)) { + return []; + } + return clippingParents2.filter(function(clippingParent) { + return isElement2(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== "body" && (canEscapeClipping ? getComputedStyle2(clippingParent).position !== "static" : true); + }); + } + function getClippingRect(element, boundary, rootBoundary) { + var mainClippingParents = boundary === "clippingParents" ? getClippingParents(element) : [].concat(boundary); + var clippingParents2 = [].concat(mainClippingParents, [rootBoundary]); + var firstClippingParent = clippingParents2[0]; + var clippingRect = clippingParents2.reduce(function(accRect, clippingParent) { + var rect = getClientRectFromMixedType(element, clippingParent); + accRect.top = max(rect.top, accRect.top); + accRect.right = min(rect.right, accRect.right); + accRect.bottom = min(rect.bottom, accRect.bottom); + accRect.left = max(rect.left, accRect.left); + return accRect; + }, getClientRectFromMixedType(element, firstClippingParent)); + clippingRect.width = clippingRect.right - clippingRect.left; + clippingRect.height = clippingRect.bottom - clippingRect.top; + clippingRect.x = clippingRect.left; + clippingRect.y = clippingRect.top; + return clippingRect; + } + function getVariation(placement) { + return placement.split("-")[1]; + } + function getMainAxisFromPlacement(placement) { + return ["top", "bottom"].indexOf(placement) >= 0 ? "x" : "y"; + } + function computeOffsets(_ref) { + var reference2 = _ref.reference, element = _ref.element, placement = _ref.placement; + var basePlacement = placement ? getBasePlacement(placement) : null; + var variation = placement ? getVariation(placement) : null; + var commonX = reference2.x + reference2.width / 2 - element.width / 2; + var commonY = reference2.y + reference2.height / 2 - element.height / 2; + var offsets; + switch (basePlacement) { + case top: + offsets = { + x: commonX, + y: reference2.y - element.height + }; + break; + case bottom: + offsets = { + x: commonX, + y: reference2.y + reference2.height + }; + break; + case right: + offsets = { + x: reference2.x + reference2.width, + y: commonY + }; + break; + case left: + offsets = { + x: reference2.x - element.width, + y: commonY + }; + break; + default: + offsets = { + x: reference2.x, + y: reference2.y + }; + } + var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null; + if (mainAxis != null) { + var len = mainAxis === "y" ? "height" : "width"; + switch (variation) { + case start: + offsets[mainAxis] = offsets[mainAxis] - (reference2[len] / 2 - element[len] / 2); + break; + case end: + offsets[mainAxis] = offsets[mainAxis] + (reference2[len] / 2 - element[len] / 2); + break; + } + } + return offsets; + } + function getFreshSideObject() { + return { + top: 0, + right: 0, + bottom: 0, + left: 0 + }; + } + function mergePaddingObject(paddingObject) { + return Object.assign({}, getFreshSideObject(), paddingObject); + } + function expandToHashMap(value, keys) { + return keys.reduce(function(hashMap, key) { + hashMap[key] = value; + return hashMap; + }, {}); + } + function detectOverflow(state, options) { + if (options === void 0) { + options = {}; + } + var _options = options, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, _options$elementConte = _options.elementContext, elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, _options$altBoundary = _options.altBoundary, altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, _options$padding = _options.padding, padding = _options$padding === void 0 ? 0 : _options$padding; + var paddingObject = mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements)); + var altContext = elementContext === popper ? reference : popper; + var popperRect = state.rects.popper; + var element = state.elements[altBoundary ? altContext : elementContext]; + var clippingClientRect = getClippingRect(isElement2(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary); + var referenceClientRect = getBoundingClientRect(state.elements.reference); + var popperOffsets2 = computeOffsets({ + reference: referenceClientRect, + element: popperRect, + strategy: "absolute", + placement + }); + var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets2)); + var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; + var overflowOffsets = { + top: clippingClientRect.top - elementClientRect.top + paddingObject.top, + bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom, + left: clippingClientRect.left - elementClientRect.left + paddingObject.left, + right: elementClientRect.right - clippingClientRect.right + paddingObject.right + }; + var offsetData = state.modifiersData.offset; + if (elementContext === popper && offsetData) { + var offset2 = offsetData[placement]; + Object.keys(overflowOffsets).forEach(function(key) { + var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1; + var axis = [top, bottom].indexOf(key) >= 0 ? "y" : "x"; + overflowOffsets[key] += offset2[axis] * multiply; + }); + } + return overflowOffsets; + } + var INVALID_ELEMENT_ERROR = "Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element."; + var INFINITE_LOOP_ERROR = "Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash."; + var DEFAULT_OPTIONS = { + placement: "bottom", + modifiers: [], + strategy: "absolute" + }; + function areValidElements() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + return !args.some(function(element) { + return !(element && typeof element.getBoundingClientRect === "function"); + }); + } + function popperGenerator(generatorOptions) { + if (generatorOptions === void 0) { + generatorOptions = {}; + } + var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers2 = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2; + return function createPopper3(reference2, popper2, options) { + if (options === void 0) { + options = defaultOptions; + } + var state = { + placement: "bottom", + orderedModifiers: [], + options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions), + modifiersData: {}, + elements: { + reference: reference2, + popper: popper2 + }, + attributes: {}, + styles: {} + }; + var effectCleanupFns = []; + var isDestroyed = false; + var instance = { + state, + setOptions: function setOptions(setOptionsAction) { + var options2 = typeof setOptionsAction === "function" ? setOptionsAction(state.options) : setOptionsAction; + cleanupModifierEffects(); + state.options = Object.assign({}, defaultOptions, state.options, options2); + state.scrollParents = { + reference: isElement2(reference2) ? listScrollParents(reference2) : reference2.contextElement ? listScrollParents(reference2.contextElement) : [], + popper: listScrollParents(popper2) + }; + var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers2, state.options.modifiers))); + state.orderedModifiers = orderedModifiers.filter(function(m) { + return m.enabled; + }); + if (true) { + var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function(_ref) { + var name = _ref.name; + return name; + }); + validateModifiers(modifiers); + if (getBasePlacement(state.options.placement) === auto) { + var flipModifier = state.orderedModifiers.find(function(_ref2) { + var name = _ref2.name; + return name === "flip"; + }); + if (!flipModifier) { + console.error(['Popper: "auto" placements require the "flip" modifier be', "present and enabled to work."].join(" ")); + } + } + var _getComputedStyle = getComputedStyle2(popper2), marginTop = _getComputedStyle.marginTop, marginRight = _getComputedStyle.marginRight, marginBottom = _getComputedStyle.marginBottom, marginLeft = _getComputedStyle.marginLeft; + if ([marginTop, marginRight, marginBottom, marginLeft].some(function(margin) { + return parseFloat(margin); + })) { + console.warn(['Popper: CSS "margin" styles cannot be used to apply padding', "between the popper and its reference element or boundary.", "To replicate margin, use the `offset` modifier, as well as", "the `padding` option in the `preventOverflow` and `flip`", "modifiers."].join(" ")); + } + } + runModifierEffects(); + return instance.update(); + }, + // Sync update – it will always be executed, even if not necessary. This + // is useful for low frequency updates where sync behavior simplifies the + // logic. + // For high frequency updates (e.g. `resize` and `scroll` events), always + // prefer the async Popper#update method + forceUpdate: function forceUpdate() { + if (isDestroyed) { + return; + } + var _state$elements = state.elements, reference3 = _state$elements.reference, popper3 = _state$elements.popper; + if (!areValidElements(reference3, popper3)) { + if (true) { + console.error(INVALID_ELEMENT_ERROR); + } + return; + } + state.rects = { + reference: getCompositeRect(reference3, getOffsetParent(popper3), state.options.strategy === "fixed"), + popper: getLayoutRect(popper3) + }; + state.reset = false; + state.placement = state.options.placement; + state.orderedModifiers.forEach(function(modifier) { + return state.modifiersData[modifier.name] = Object.assign({}, modifier.data); + }); + var __debug_loops__ = 0; + for (var index = 0; index < state.orderedModifiers.length; index++) { + if (true) { + __debug_loops__ += 1; + if (__debug_loops__ > 100) { + console.error(INFINITE_LOOP_ERROR); + break; + } + } + if (state.reset === true) { + state.reset = false; + index = -1; + continue; + } + var _state$orderedModifie = state.orderedModifiers[index], fn = _state$orderedModifie.fn, _state$orderedModifie2 = _state$orderedModifie.options, _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, name = _state$orderedModifie.name; + if (typeof fn === "function") { + state = fn({ + state, + options: _options, + name, + instance + }) || state; + } + } + }, + // Async and optimistically optimized update – it will not be executed if + // not necessary (debounced to run at most once-per-tick) + update: debounce(function() { + return new Promise(function(resolve) { + instance.forceUpdate(); + resolve(state); + }); + }), + destroy: function destroy() { + cleanupModifierEffects(); + isDestroyed = true; + } + }; + if (!areValidElements(reference2, popper2)) { + if (true) { + console.error(INVALID_ELEMENT_ERROR); + } + return instance; + } + instance.setOptions(options).then(function(state2) { + if (!isDestroyed && options.onFirstUpdate) { + options.onFirstUpdate(state2); + } + }); + function runModifierEffects() { + state.orderedModifiers.forEach(function(_ref3) { + var name = _ref3.name, _ref3$options = _ref3.options, options2 = _ref3$options === void 0 ? {} : _ref3$options, effect2 = _ref3.effect; + if (typeof effect2 === "function") { + var cleanupFn = effect2({ + state, + name, + instance, + options: options2 + }); + var noopFn = function noopFn2() { + }; + effectCleanupFns.push(cleanupFn || noopFn); + } + }); + } + function cleanupModifierEffects() { + effectCleanupFns.forEach(function(fn) { + return fn(); + }); + effectCleanupFns = []; + } + return instance; + }; + } + var passive = { + passive: true + }; + function effect$2(_ref) { + var state = _ref.state, instance = _ref.instance, options = _ref.options; + var _options$scroll = options.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options.resize, resize = _options$resize === void 0 ? true : _options$resize; + var window2 = getWindow(state.elements.popper); + var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper); + if (scroll) { + scrollParents.forEach(function(scrollParent) { + scrollParent.addEventListener("scroll", instance.update, passive); + }); + } + if (resize) { + window2.addEventListener("resize", instance.update, passive); + } + return function() { + if (scroll) { + scrollParents.forEach(function(scrollParent) { + scrollParent.removeEventListener("scroll", instance.update, passive); + }); + } + if (resize) { + window2.removeEventListener("resize", instance.update, passive); + } + }; + } + var eventListeners = { + name: "eventListeners", + enabled: true, + phase: "write", + fn: function fn() { + }, + effect: effect$2, + data: {} + }; + function popperOffsets(_ref) { + var state = _ref.state, name = _ref.name; + state.modifiersData[name] = computeOffsets({ + reference: state.rects.reference, + element: state.rects.popper, + strategy: "absolute", + placement: state.placement + }); + } + var popperOffsets$1 = { + name: "popperOffsets", + enabled: true, + phase: "read", + fn: popperOffsets, + data: {} + }; + var unsetSides = { + top: "auto", + right: "auto", + bottom: "auto", + left: "auto" + }; + function roundOffsetsByDPR(_ref) { + var x = _ref.x, y = _ref.y; + var win = window; + var dpr = win.devicePixelRatio || 1; + return { + x: round(x * dpr) / dpr || 0, + y: round(y * dpr) / dpr || 0 + }; + } + function mapToStyles(_ref2) { + var _Object$assign2; + var popper2 = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, variation = _ref2.variation, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets, isFixed = _ref2.isFixed; + var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === "function" ? roundOffsets(offsets) : offsets, _ref3$x = _ref3.x, x = _ref3$x === void 0 ? 0 : _ref3$x, _ref3$y = _ref3.y, y = _ref3$y === void 0 ? 0 : _ref3$y; + var hasX = offsets.hasOwnProperty("x"); + var hasY = offsets.hasOwnProperty("y"); + var sideX = left; + var sideY = top; + var win = window; + if (adaptive) { + var offsetParent = getOffsetParent(popper2); + var heightProp = "clientHeight"; + var widthProp = "clientWidth"; + if (offsetParent === getWindow(popper2)) { + offsetParent = getDocumentElement(popper2); + if (getComputedStyle2(offsetParent).position !== "static" && position === "absolute") { + heightProp = "scrollHeight"; + widthProp = "scrollWidth"; + } + } + offsetParent = offsetParent; + if (placement === top || (placement === left || placement === right) && variation === end) { + sideY = bottom; + var offsetY = isFixed && win.visualViewport ? win.visualViewport.height : ( + // $FlowFixMe[prop-missing] + offsetParent[heightProp] + ); + y -= offsetY - popperRect.height; + y *= gpuAcceleration ? 1 : -1; + } + if (placement === left || (placement === top || placement === bottom) && variation === end) { + sideX = right; + var offsetX = isFixed && win.visualViewport ? win.visualViewport.width : ( + // $FlowFixMe[prop-missing] + offsetParent[widthProp] + ); + x -= offsetX - popperRect.width; + x *= gpuAcceleration ? 1 : -1; + } + } + var commonStyles = Object.assign({ + position + }, adaptive && unsetSides); + if (gpuAcceleration) { + var _Object$assign; + return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? "0" : "", _Object$assign[sideX] = hasX ? "0" : "", _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); + } + return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : "", _Object$assign2[sideX] = hasX ? x + "px" : "", _Object$assign2.transform = "", _Object$assign2)); + } + function computeStyles(_ref4) { + var state = _ref4.state, options = _ref4.options; + var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets; + if (true) { + var transitionProperty = getComputedStyle2(state.elements.popper).transitionProperty || ""; + if (adaptive && ["transform", "top", "right", "bottom", "left"].some(function(property) { + return transitionProperty.indexOf(property) >= 0; + })) { + console.warn(["Popper: Detected CSS transitions on at least one of the following", 'CSS properties: "transform", "top", "right", "bottom", "left".', "\n\n", 'Disable the "computeStyles" modifier\'s `adaptive` option to allow', "for smooth transitions, or remove these properties from the CSS", "transition declaration on the popper element if only transitioning", "opacity or background-color for example.", "\n\n", "We recommend using the popper element as a wrapper around an inner", "element that can have any CSS property transitioned for animations."].join(" ")); + } + } + var commonStyles = { + placement: getBasePlacement(state.placement), + variation: getVariation(state.placement), + popper: state.elements.popper, + popperRect: state.rects.popper, + gpuAcceleration, + isFixed: state.options.strategy === "fixed" + }; + if (state.modifiersData.popperOffsets != null) { + state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, { + offsets: state.modifiersData.popperOffsets, + position: state.options.strategy, + adaptive, + roundOffsets + }))); + } + if (state.modifiersData.arrow != null) { + state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, { + offsets: state.modifiersData.arrow, + position: "absolute", + adaptive: false, + roundOffsets + }))); + } + state.attributes.popper = Object.assign({}, state.attributes.popper, { + "data-popper-placement": state.placement + }); + } + var computeStyles$1 = { + name: "computeStyles", + enabled: true, + phase: "beforeWrite", + fn: computeStyles, + data: {} + }; + function applyStyles(_ref) { + var state = _ref.state; + Object.keys(state.elements).forEach(function(name) { + var style = state.styles[name] || {}; + var attributes = state.attributes[name] || {}; + var element = state.elements[name]; + if (!isHTMLElement(element) || !getNodeName(element)) { + return; + } + Object.assign(element.style, style); + Object.keys(attributes).forEach(function(name2) { + var value = attributes[name2]; + if (value === false) { + element.removeAttribute(name2); + } else { + element.setAttribute(name2, value === true ? "" : value); + } + }); + }); + } + function effect$1(_ref2) { + var state = _ref2.state; + var initialStyles = { + popper: { + position: state.options.strategy, + left: "0", + top: "0", + margin: "0" + }, + arrow: { + position: "absolute" + }, + reference: {} + }; + Object.assign(state.elements.popper.style, initialStyles.popper); + state.styles = initialStyles; + if (state.elements.arrow) { + Object.assign(state.elements.arrow.style, initialStyles.arrow); + } + return function() { + Object.keys(state.elements).forEach(function(name) { + var element = state.elements[name]; + var attributes = state.attributes[name] || {}; + var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); + var style = styleProperties.reduce(function(style2, property) { + style2[property] = ""; + return style2; + }, {}); + if (!isHTMLElement(element) || !getNodeName(element)) { + return; + } + Object.assign(element.style, style); + Object.keys(attributes).forEach(function(attribute) { + element.removeAttribute(attribute); + }); + }); + }; + } + var applyStyles$1 = { + name: "applyStyles", + enabled: true, + phase: "write", + fn: applyStyles, + effect: effect$1, + requires: ["computeStyles"] + }; + function distanceAndSkiddingToXY(placement, rects, offset2) { + var basePlacement = getBasePlacement(placement); + var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1; + var _ref = typeof offset2 === "function" ? offset2(Object.assign({}, rects, { + placement + })) : offset2, skidding = _ref[0], distance = _ref[1]; + skidding = skidding || 0; + distance = (distance || 0) * invertDistance; + return [left, right].indexOf(basePlacement) >= 0 ? { + x: distance, + y: skidding + } : { + x: skidding, + y: distance + }; + } + function offset(_ref2) { + var state = _ref2.state, options = _ref2.options, name = _ref2.name; + var _options$offset = options.offset, offset2 = _options$offset === void 0 ? [0, 0] : _options$offset; + var data = placements.reduce(function(acc, placement) { + acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset2); + return acc; + }, {}); + var _data$state$placement = data[state.placement], x = _data$state$placement.x, y = _data$state$placement.y; + if (state.modifiersData.popperOffsets != null) { + state.modifiersData.popperOffsets.x += x; + state.modifiersData.popperOffsets.y += y; + } + state.modifiersData[name] = data; + } + var offset$1 = { + name: "offset", + enabled: true, + phase: "main", + requires: ["popperOffsets"], + fn: offset + }; + var hash$1 = { + left: "right", + right: "left", + bottom: "top", + top: "bottom" + }; + function getOppositePlacement(placement) { + return placement.replace(/left|right|bottom|top/g, function(matched) { + return hash$1[matched]; + }); + } + var hash = { + start: "end", + end: "start" + }; + function getOppositeVariationPlacement(placement) { + return placement.replace(/start|end/g, function(matched) { + return hash[matched]; + }); + } + function computeAutoPlacement(state, options) { + if (options === void 0) { + options = {}; + } + var _options = options, placement = _options.placement, boundary = _options.boundary, rootBoundary = _options.rootBoundary, padding = _options.padding, flipVariations = _options.flipVariations, _options$allowedAutoP = _options.allowedAutoPlacements, allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP; + var variation = getVariation(placement); + var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function(placement2) { + return getVariation(placement2) === variation; + }) : basePlacements; + var allowedPlacements = placements$1.filter(function(placement2) { + return allowedAutoPlacements.indexOf(placement2) >= 0; + }); + if (allowedPlacements.length === 0) { + allowedPlacements = placements$1; + if (true) { + console.error(["Popper: The `allowedAutoPlacements` option did not allow any", "placements. Ensure the `placement` option matches the variation", "of the allowed placements.", 'For example, "auto" cannot be used to allow "bottom-start".', 'Use "auto-start" instead.'].join(" ")); + } + } + var overflows = allowedPlacements.reduce(function(acc, placement2) { + acc[placement2] = detectOverflow(state, { + placement: placement2, + boundary, + rootBoundary, + padding + })[getBasePlacement(placement2)]; + return acc; + }, {}); + return Object.keys(overflows).sort(function(a, b) { + return overflows[a] - overflows[b]; + }); + } + function getExpandedFallbackPlacements(placement) { + if (getBasePlacement(placement) === auto) { + return []; + } + var oppositePlacement = getOppositePlacement(placement); + return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)]; + } + function flip(_ref) { + var state = _ref.state, options = _ref.options, name = _ref.name; + if (state.modifiersData[name]._skip) { + return; + } + var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, specifiedFallbackPlacements = options.fallbackPlacements, padding = options.padding, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, _options$flipVariatio = options.flipVariations, flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, allowedAutoPlacements = options.allowedAutoPlacements; + var preferredPlacement = state.options.placement; + var basePlacement = getBasePlacement(preferredPlacement); + var isBasePlacement = basePlacement === preferredPlacement; + var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement)); + var placements2 = [preferredPlacement].concat(fallbackPlacements).reduce(function(acc, placement2) { + return acc.concat(getBasePlacement(placement2) === auto ? computeAutoPlacement(state, { + placement: placement2, + boundary, + rootBoundary, + padding, + flipVariations, + allowedAutoPlacements + }) : placement2); + }, []); + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var checksMap = /* @__PURE__ */ new Map(); + var makeFallbackChecks = true; + var firstFittingPlacement = placements2[0]; + for (var i = 0; i < placements2.length; i++) { + var placement = placements2[i]; + var _basePlacement = getBasePlacement(placement); + var isStartVariation = getVariation(placement) === start; + var isVertical = [top, bottom].indexOf(_basePlacement) >= 0; + var len = isVertical ? "width" : "height"; + var overflow = detectOverflow(state, { + placement, + boundary, + rootBoundary, + altBoundary, + padding + }); + var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top; + if (referenceRect[len] > popperRect[len]) { + mainVariationSide = getOppositePlacement(mainVariationSide); + } + var altVariationSide = getOppositePlacement(mainVariationSide); + var checks = []; + if (checkMainAxis) { + checks.push(overflow[_basePlacement] <= 0); + } + if (checkAltAxis) { + checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0); + } + if (checks.every(function(check) { + return check; + })) { + firstFittingPlacement = placement; + makeFallbackChecks = false; + break; + } + checksMap.set(placement, checks); + } + if (makeFallbackChecks) { + var numberOfChecks = flipVariations ? 3 : 1; + var _loop = function _loop2(_i2) { + var fittingPlacement = placements2.find(function(placement2) { + var checks2 = checksMap.get(placement2); + if (checks2) { + return checks2.slice(0, _i2).every(function(check) { + return check; + }); + } + }); + if (fittingPlacement) { + firstFittingPlacement = fittingPlacement; + return "break"; + } + }; + for (var _i = numberOfChecks; _i > 0; _i--) { + var _ret = _loop(_i); + if (_ret === "break") break; + } + } + if (state.placement !== firstFittingPlacement) { + state.modifiersData[name]._skip = true; + state.placement = firstFittingPlacement; + state.reset = true; + } + } + var flip$1 = { + name: "flip", + enabled: true, + phase: "main", + fn: flip, + requiresIfExists: ["offset"], + data: { + _skip: false + } + }; + function getAltAxis(axis) { + return axis === "x" ? "y" : "x"; + } + function within(min$1, value, max$1) { + return max(min$1, min(value, max$1)); + } + function withinMaxClamp(min2, value, max2) { + var v = within(min2, value, max2); + return v > max2 ? max2 : v; + } + function preventOverflow(_ref) { + var state = _ref.state, options = _ref.options, name = _ref.name; + var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, padding = options.padding, _options$tether = options.tether, tether = _options$tether === void 0 ? true : _options$tether, _options$tetherOffset = options.tetherOffset, tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset; + var overflow = detectOverflow(state, { + boundary, + rootBoundary, + padding, + altBoundary + }); + var basePlacement = getBasePlacement(state.placement); + var variation = getVariation(state.placement); + var isBasePlacement = !variation; + var mainAxis = getMainAxisFromPlacement(basePlacement); + var altAxis = getAltAxis(mainAxis); + var popperOffsets2 = state.modifiersData.popperOffsets; + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var tetherOffsetValue = typeof tetherOffset === "function" ? tetherOffset(Object.assign({}, state.rects, { + placement: state.placement + })) : tetherOffset; + var normalizedTetherOffsetValue = typeof tetherOffsetValue === "number" ? { + mainAxis: tetherOffsetValue, + altAxis: tetherOffsetValue + } : Object.assign({ + mainAxis: 0, + altAxis: 0 + }, tetherOffsetValue); + var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null; + var data = { + x: 0, + y: 0 + }; + if (!popperOffsets2) { + return; + } + if (checkMainAxis) { + var _offsetModifierState$; + var mainSide = mainAxis === "y" ? top : left; + var altSide = mainAxis === "y" ? bottom : right; + var len = mainAxis === "y" ? "height" : "width"; + var offset2 = popperOffsets2[mainAxis]; + var min$1 = offset2 + overflow[mainSide]; + var max$1 = offset2 - overflow[altSide]; + var additive = tether ? -popperRect[len] / 2 : 0; + var minLen = variation === start ? referenceRect[len] : popperRect[len]; + var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; + var arrowElement = state.elements.arrow; + var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : { + width: 0, + height: 0 + }; + var arrowPaddingObject = state.modifiersData["arrow#persistent"] ? state.modifiersData["arrow#persistent"].padding : getFreshSideObject(); + var arrowPaddingMin = arrowPaddingObject[mainSide]; + var arrowPaddingMax = arrowPaddingObject[altSide]; + var arrowLen = within(0, referenceRect[len], arrowRect[len]); + var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis; + var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis; + var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow); + var clientOffset = arrowOffsetParent ? mainAxis === "y" ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0; + var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0; + var tetherMin = offset2 + minOffset - offsetModifierValue - clientOffset; + var tetherMax = offset2 + maxOffset - offsetModifierValue; + var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset2, tether ? max(max$1, tetherMax) : max$1); + popperOffsets2[mainAxis] = preventedOffset; + data[mainAxis] = preventedOffset - offset2; + } + if (checkAltAxis) { + var _offsetModifierState$2; + var _mainSide = mainAxis === "x" ? top : left; + var _altSide = mainAxis === "x" ? bottom : right; + var _offset = popperOffsets2[altAxis]; + var _len = altAxis === "y" ? "height" : "width"; + var _min = _offset + overflow[_mainSide]; + var _max = _offset - overflow[_altSide]; + var isOriginSide = [top, left].indexOf(basePlacement) !== -1; + var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0; + var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis; + var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max; + var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max); + popperOffsets2[altAxis] = _preventedOffset; + data[altAxis] = _preventedOffset - _offset; + } + state.modifiersData[name] = data; + } + var preventOverflow$1 = { + name: "preventOverflow", + enabled: true, + phase: "main", + fn: preventOverflow, + requiresIfExists: ["offset"] + }; + var toPaddingObject = function toPaddingObject2(padding, state) { + padding = typeof padding === "function" ? padding(Object.assign({}, state.rects, { + placement: state.placement + })) : padding; + return mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements)); + }; + function arrow(_ref) { + var _state$modifiersData$; + var state = _ref.state, name = _ref.name, options = _ref.options; + var arrowElement = state.elements.arrow; + var popperOffsets2 = state.modifiersData.popperOffsets; + var basePlacement = getBasePlacement(state.placement); + var axis = getMainAxisFromPlacement(basePlacement); + var isVertical = [left, right].indexOf(basePlacement) >= 0; + var len = isVertical ? "height" : "width"; + if (!arrowElement || !popperOffsets2) { + return; + } + var paddingObject = toPaddingObject(options.padding, state); + var arrowRect = getLayoutRect(arrowElement); + var minProp = axis === "y" ? top : left; + var maxProp = axis === "y" ? bottom : right; + var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets2[axis] - state.rects.popper[len]; + var startDiff = popperOffsets2[axis] - state.rects.reference[axis]; + var arrowOffsetParent = getOffsetParent(arrowElement); + var clientSize = arrowOffsetParent ? axis === "y" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0; + var centerToReference = endDiff / 2 - startDiff / 2; + var min2 = paddingObject[minProp]; + var max2 = clientSize - arrowRect[len] - paddingObject[maxProp]; + var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference; + var offset2 = within(min2, center, max2); + var axisProp = axis; + state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset2, _state$modifiersData$.centerOffset = offset2 - center, _state$modifiersData$); + } + function effect(_ref2) { + var state = _ref2.state, options = _ref2.options; + var _options$element = options.element, arrowElement = _options$element === void 0 ? "[data-popper-arrow]" : _options$element; + if (arrowElement == null) { + return; + } + if (typeof arrowElement === "string") { + arrowElement = state.elements.popper.querySelector(arrowElement); + if (!arrowElement) { + return; + } + } + if (true) { + if (!isHTMLElement(arrowElement)) { + console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).', "To use an SVG arrow, wrap it in an HTMLElement that will be used as", "the arrow."].join(" ")); + } + } + if (!contains(state.elements.popper, arrowElement)) { + if (true) { + console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper', "element."].join(" ")); + } + return; + } + state.elements.arrow = arrowElement; + } + var arrow$1 = { + name: "arrow", + enabled: true, + phase: "main", + fn: arrow, + effect, + requires: ["popperOffsets"], + requiresIfExists: ["preventOverflow"] + }; + function getSideOffsets(overflow, rect, preventedOffsets) { + if (preventedOffsets === void 0) { + preventedOffsets = { + x: 0, + y: 0 + }; + } + return { + top: overflow.top - rect.height - preventedOffsets.y, + right: overflow.right - rect.width + preventedOffsets.x, + bottom: overflow.bottom - rect.height + preventedOffsets.y, + left: overflow.left - rect.width - preventedOffsets.x + }; + } + function isAnySideFullyClipped(overflow) { + return [top, right, bottom, left].some(function(side) { + return overflow[side] >= 0; + }); + } + function hide(_ref) { + var state = _ref.state, name = _ref.name; + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var preventedOffsets = state.modifiersData.preventOverflow; + var referenceOverflow = detectOverflow(state, { + elementContext: "reference" + }); + var popperAltOverflow = detectOverflow(state, { + altBoundary: true + }); + var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect); + var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets); + var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets); + var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets); + state.modifiersData[name] = { + referenceClippingOffsets, + popperEscapeOffsets, + isReferenceHidden, + hasPopperEscaped + }; + state.attributes.popper = Object.assign({}, state.attributes.popper, { + "data-popper-reference-hidden": isReferenceHidden, + "data-popper-escaped": hasPopperEscaped + }); + } + var hide$1 = { + name: "hide", + enabled: true, + phase: "main", + requiresIfExists: ["preventOverflow"], + fn: hide + }; + var defaultModifiers$1 = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1]; + var createPopper$1 = /* @__PURE__ */ popperGenerator({ + defaultModifiers: defaultModifiers$1 + }); + var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1]; + var createPopper2 = /* @__PURE__ */ popperGenerator({ + defaultModifiers + }); + exports.applyStyles = applyStyles$1; + exports.arrow = arrow$1; + exports.computeStyles = computeStyles$1; + exports.createPopper = createPopper2; + exports.createPopperLite = createPopper$1; + exports.defaultModifiers = defaultModifiers; + exports.detectOverflow = detectOverflow; + exports.eventListeners = eventListeners; + exports.flip = flip$1; + exports.hide = hide$1; + exports.offset = offset$1; + exports.popperGenerator = popperGenerator; + exports.popperOffsets = popperOffsets$1; + exports.preventOverflow = preventOverflow$1; + } + }); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/dom/data.js + var elementMap = /* @__PURE__ */ new Map(); + var data_default = { + set(element, key, instance) { + if (!elementMap.has(element)) { + elementMap.set(element, /* @__PURE__ */ new Map()); + } + const instanceMap = elementMap.get(element); + if (!instanceMap.has(key) && instanceMap.size !== 0) { + console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`); + return; + } + instanceMap.set(key, instance); + }, + get(element, key) { + if (elementMap.has(element)) { + return elementMap.get(element).get(key) || null; + } + return null; + }, + remove(element, key) { + if (!elementMap.has(element)) { + return; + } + const instanceMap = elementMap.get(element); + instanceMap.delete(key); + if (instanceMap.size === 0) { + elementMap.delete(element); + } + } + }; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/util/index.js + var MAX_UID = 1e6; + var MILLISECONDS_MULTIPLIER = 1e3; + var TRANSITION_END = "transitionend"; + var parseSelector = (selector) => { + if (selector && window.CSS && window.CSS.escape) { + selector = selector.replace(/#([^\s"#']+)/g, (match, id) => `#${CSS.escape(id)}`); + } + return selector; + }; + var toType = (object) => { + if (object === null || object === void 0) { + return `${object}`; + } + return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase(); + }; + var getUID = (prefix) => { + do { + prefix += Math.floor(Math.random() * MAX_UID); + } while (document.getElementById(prefix)); + return prefix; + }; + var getTransitionDurationFromElement = (element) => { + if (!element) { + return 0; + } + let { transitionDuration, transitionDelay } = window.getComputedStyle(element); + const floatTransitionDuration = Number.parseFloat(transitionDuration); + const floatTransitionDelay = Number.parseFloat(transitionDelay); + if (!floatTransitionDuration && !floatTransitionDelay) { + return 0; + } + transitionDuration = transitionDuration.split(",")[0]; + transitionDelay = transitionDelay.split(",")[0]; + return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; + }; + var triggerTransitionEnd = (element) => { + element.dispatchEvent(new Event(TRANSITION_END)); + }; + var isElement = (object) => { + if (!object || typeof object !== "object") { + return false; + } + if (typeof object.jquery !== "undefined") { + object = object[0]; + } + return typeof object.nodeType !== "undefined"; + }; + var getElement = (object) => { + if (isElement(object)) { + return object.jquery ? object[0] : object; + } + if (typeof object === "string" && object.length > 0) { + return document.querySelector(parseSelector(object)); + } + return null; + }; + var isVisible = (element) => { + if (!isElement(element) || element.getClientRects().length === 0) { + return false; + } + const elementIsVisible = getComputedStyle(element).getPropertyValue("visibility") === "visible"; + const closedDetails = element.closest("details:not([open])"); + if (!closedDetails) { + return elementIsVisible; + } + if (closedDetails !== element) { + const summary = element.closest("summary"); + if (summary && summary.parentNode !== closedDetails) { + return false; + } + if (summary === null) { + return false; + } + } + return elementIsVisible; + }; + var isDisabled = (element) => { + if (!element || element.nodeType !== Node.ELEMENT_NODE) { + return true; + } + if (element.classList.contains("disabled")) { + return true; + } + if (typeof element.disabled !== "undefined") { + return element.disabled; + } + return element.hasAttribute("disabled") && element.getAttribute("disabled") !== "false"; + }; + var findShadowRoot = (element) => { + if (!document.documentElement.attachShadow) { + return null; + } + if (typeof element.getRootNode === "function") { + const root = element.getRootNode(); + return root instanceof ShadowRoot ? root : null; + } + if (element instanceof ShadowRoot) { + return element; + } + if (!element.parentNode) { + return null; + } + return findShadowRoot(element.parentNode); + }; + var noop = () => { + }; + var reflow = (element) => { + element.offsetHeight; + }; + var getjQuery = () => { + if (window.jQuery && !document.body.hasAttribute("data-bs-no-jquery")) { + return window.jQuery; + } + return null; + }; + var DOMContentLoadedCallbacks = []; + var onDOMContentLoaded = (callback) => { + if (document.readyState === "loading") { + if (!DOMContentLoadedCallbacks.length) { + document.addEventListener("DOMContentLoaded", () => { + for (const callback2 of DOMContentLoadedCallbacks) { + callback2(); + } + }); + } + DOMContentLoadedCallbacks.push(callback); + } else { + callback(); + } + }; + var isRTL = () => document.documentElement.dir === "rtl"; + var defineJQueryPlugin = (plugin) => { + onDOMContentLoaded(() => { + const $ = getjQuery(); + if ($) { + const name = plugin.NAME; + const JQUERY_NO_CONFLICT = $.fn[name]; + $.fn[name] = plugin.jQueryInterface; + $.fn[name].Constructor = plugin; + $.fn[name].noConflict = () => { + $.fn[name] = JQUERY_NO_CONFLICT; + return plugin.jQueryInterface; + }; + } + }); + }; + var execute = (possibleCallback, args = [], defaultValue = possibleCallback) => { + return typeof possibleCallback === "function" ? possibleCallback.call(...args) : defaultValue; + }; + var executeAfterTransition = (callback, transitionElement, waitForTransition = true) => { + if (!waitForTransition) { + execute(callback); + return; + } + const durationPadding = 5; + const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding; + let called = false; + const handler = ({ target }) => { + if (target !== transitionElement) { + return; + } + called = true; + transitionElement.removeEventListener(TRANSITION_END, handler); + execute(callback); + }; + transitionElement.addEventListener(TRANSITION_END, handler); + setTimeout(() => { + if (!called) { + triggerTransitionEnd(transitionElement); + } + }, emulatedDuration); + }; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/dom/event-handler.js + var namespaceRegex = /[^.]*(?=\..*)\.|.*/; + var stripNameRegex = /\..*/; + var stripUidRegex = /::\d+$/; + var eventRegistry = {}; + var uidEvent = 1; + var customEvents = { + mouseenter: "mouseover", + mouseleave: "mouseout" + }; + var nativeEvents = /* @__PURE__ */ new Set([ + "click", + "dblclick", + "mouseup", + "mousedown", + "contextmenu", + "mousewheel", + "DOMMouseScroll", + "mouseover", + "mouseout", + "mousemove", + "selectstart", + "selectend", + "keydown", + "keypress", + "keyup", + "orientationchange", + "touchstart", + "touchmove", + "touchend", + "touchcancel", + "pointerdown", + "pointermove", + "pointerup", + "pointerleave", + "pointercancel", + "gesturestart", + "gesturechange", + "gestureend", + "focus", + "blur", + "change", + "reset", + "select", + "submit", + "focusin", + "focusout", + "load", + "unload", + "beforeunload", + "resize", + "move", + "DOMContentLoaded", + "readystatechange", + "error", + "abort", + "scroll" + ]); + function makeEventUid(element, uid) { + return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++; + } + function getElementEvents(element) { + const uid = makeEventUid(element); + element.uidEvent = uid; + eventRegistry[uid] = eventRegistry[uid] || {}; + return eventRegistry[uid]; + } + function bootstrapHandler(element, fn) { + return function handler(event) { + hydrateObj(event, { delegateTarget: element }); + if (handler.oneOff) { + EventHandler.off(element, event.type, fn); + } + return fn.apply(element, [event]); + }; + } + function bootstrapDelegationHandler(element, selector, fn) { + return function handler(event) { + const domElements = element.querySelectorAll(selector); + for (let { target } = event; target && target !== this; target = target.parentNode) { + for (const domElement of domElements) { + if (domElement !== target) { + continue; + } + hydrateObj(event, { delegateTarget: target }); + if (handler.oneOff) { + EventHandler.off(element, event.type, selector, fn); + } + return fn.apply(target, [event]); + } + } + }; + } + function findHandler(events, callable, delegationSelector = null) { + return Object.values(events).find((event) => event.callable === callable && event.delegationSelector === delegationSelector); + } + function normalizeParameters(originalTypeEvent, handler, delegationFunction) { + const isDelegated = typeof handler === "string"; + const callable = isDelegated ? delegationFunction : handler || delegationFunction; + let typeEvent = getTypeEvent(originalTypeEvent); + if (!nativeEvents.has(typeEvent)) { + typeEvent = originalTypeEvent; + } + return [isDelegated, callable, typeEvent]; + } + function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) { + if (typeof originalTypeEvent !== "string" || !element) { + return; + } + let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); + if (originalTypeEvent in customEvents) { + const wrapFunction = (fn2) => { + return function(event) { + if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) { + return fn2.call(this, event); + } + }; + }; + callable = wrapFunction(callable); + } + const events = getElementEvents(element); + const handlers = events[typeEvent] || (events[typeEvent] = {}); + const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null); + if (previousFunction) { + previousFunction.oneOff = previousFunction.oneOff && oneOff; + return; + } + const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, "")); + const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable); + fn.delegationSelector = isDelegated ? handler : null; + fn.callable = callable; + fn.oneOff = oneOff; + fn.uidEvent = uid; + handlers[uid] = fn; + element.addEventListener(typeEvent, fn, isDelegated); + } + function removeHandler(element, events, typeEvent, handler, delegationSelector) { + const fn = findHandler(events[typeEvent], handler, delegationSelector); + if (!fn) { + return; + } + element.removeEventListener(typeEvent, fn, Boolean(delegationSelector)); + delete events[typeEvent][fn.uidEvent]; + } + function removeNamespacedHandlers(element, events, typeEvent, namespace) { + const storeElementEvent = events[typeEvent] || {}; + for (const [handlerKey, event] of Object.entries(storeElementEvent)) { + if (handlerKey.includes(namespace)) { + removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); + } + } + } + function getTypeEvent(event) { + event = event.replace(stripNameRegex, ""); + return customEvents[event] || event; + } + var EventHandler = { + on(element, event, handler, delegationFunction) { + addHandler(element, event, handler, delegationFunction, false); + }, + one(element, event, handler, delegationFunction) { + addHandler(element, event, handler, delegationFunction, true); + }, + off(element, originalTypeEvent, handler, delegationFunction) { + if (typeof originalTypeEvent !== "string" || !element) { + return; + } + const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); + const inNamespace = typeEvent !== originalTypeEvent; + const events = getElementEvents(element); + const storeElementEvent = events[typeEvent] || {}; + const isNamespace = originalTypeEvent.startsWith("."); + if (typeof callable !== "undefined") { + if (!Object.keys(storeElementEvent).length) { + return; + } + removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null); + return; + } + if (isNamespace) { + for (const elementEvent of Object.keys(events)) { + removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1)); + } + } + for (const [keyHandlers, event] of Object.entries(storeElementEvent)) { + const handlerKey = keyHandlers.replace(stripUidRegex, ""); + if (!inNamespace || originalTypeEvent.includes(handlerKey)) { + removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); + } + } + }, + trigger(element, event, args) { + if (typeof event !== "string" || !element) { + return null; + } + const $ = getjQuery(); + const typeEvent = getTypeEvent(event); + const inNamespace = event !== typeEvent; + let jQueryEvent = null; + let bubbles = true; + let nativeDispatch = true; + let defaultPrevented = false; + if (inNamespace && $) { + jQueryEvent = $.Event(event, args); + $(element).trigger(jQueryEvent); + bubbles = !jQueryEvent.isPropagationStopped(); + nativeDispatch = !jQueryEvent.isImmediatePropagationStopped(); + defaultPrevented = jQueryEvent.isDefaultPrevented(); + } + const evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args); + if (defaultPrevented) { + evt.preventDefault(); + } + if (nativeDispatch) { + element.dispatchEvent(evt); + } + if (evt.defaultPrevented && jQueryEvent) { + jQueryEvent.preventDefault(); + } + return evt; + } + }; + function hydrateObj(obj, meta = {}) { + for (const [key, value] of Object.entries(meta)) { + try { + obj[key] = value; + } catch (e) { + Object.defineProperty(obj, key, { + configurable: true, + get() { + return value; + } + }); + } + } + return obj; + } + var event_handler_default = EventHandler; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/dom/manipulator.js + function normalizeData(value) { + if (value === "true") { + return true; + } + if (value === "false") { + return false; + } + if (value === Number(value).toString()) { + return Number(value); + } + if (value === "" || value === "null") { + return null; + } + if (typeof value !== "string") { + return value; + } + try { + return JSON.parse(decodeURIComponent(value)); + } catch (e) { + return value; + } + } + function normalizeDataKey(key) { + return key.replace(/[A-Z]/g, (chr) => `-${chr.toLowerCase()}`); + } + var Manipulator = { + setDataAttribute(element, key, value) { + element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value); + }, + removeDataAttribute(element, key) { + element.removeAttribute(`data-bs-${normalizeDataKey(key)}`); + }, + getDataAttributes(element) { + if (!element) { + return {}; + } + const attributes = {}; + const bsKeys = Object.keys(element.dataset).filter((key) => key.startsWith("bs") && !key.startsWith("bsConfig")); + for (const key of bsKeys) { + let pureKey = key.replace(/^bs/, ""); + pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1); + attributes[pureKey] = normalizeData(element.dataset[key]); + } + return attributes; + }, + getDataAttribute(element, key) { + return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`)); + } + }; + var manipulator_default = Manipulator; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/util/config.js + var Config = class { + // Getters + static get Default() { + return {}; + } + static get DefaultType() { + return {}; + } + static get NAME() { + throw new Error('You have to implement the static method "NAME", for each component!'); + } + _getConfig(config) { + config = this._mergeConfigObj(config); + config = this._configAfterMerge(config); + this._typeCheckConfig(config); + return config; + } + _configAfterMerge(config) { + return config; + } + _mergeConfigObj(config, element) { + const jsonConfig = isElement(element) ? manipulator_default.getDataAttribute(element, "config") : {}; + return __spreadValues(__spreadValues(__spreadValues(__spreadValues({}, this.constructor.Default), typeof jsonConfig === "object" ? jsonConfig : {}), isElement(element) ? manipulator_default.getDataAttributes(element) : {}), typeof config === "object" ? config : {}); + } + _typeCheckConfig(config, configTypes = this.constructor.DefaultType) { + for (const [property, expectedTypes] of Object.entries(configTypes)) { + const value = config[property]; + const valueType = isElement(value) ? "element" : toType(value); + if (!new RegExp(expectedTypes).test(valueType)) { + throw new TypeError( + `${this.constructor.NAME.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".` + ); + } + } + } + }; + var config_default = Config; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/base-component.js + var VERSION = "5.3.8"; + var BaseComponent = class extends config_default { + constructor(element, config) { + super(); + element = getElement(element); + if (!element) { + return; + } + this._element = element; + this._config = this._getConfig(config); + data_default.set(this._element, this.constructor.DATA_KEY, this); + } + // Public + dispose() { + data_default.remove(this._element, this.constructor.DATA_KEY); + event_handler_default.off(this._element, this.constructor.EVENT_KEY); + for (const propertyName of Object.getOwnPropertyNames(this)) { + this[propertyName] = null; + } + } + // Private + _queueCallback(callback, element, isAnimated = true) { + executeAfterTransition(callback, element, isAnimated); + } + _getConfig(config) { + config = this._mergeConfigObj(config, this._element); + config = this._configAfterMerge(config); + this._typeCheckConfig(config); + return config; + } + // Static + static getInstance(element) { + return data_default.get(getElement(element), this.DATA_KEY); + } + static getOrCreateInstance(element, config = {}) { + return this.getInstance(element) || new this(element, typeof config === "object" ? config : null); + } + static get VERSION() { + return VERSION; + } + static get DATA_KEY() { + return `bs.${this.NAME}`; + } + static get EVENT_KEY() { + return `.${this.DATA_KEY}`; + } + static eventName(name) { + return `${name}${this.EVENT_KEY}`; + } + }; + var base_component_default = BaseComponent; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/dom/selector-engine.js + var getSelector = (element) => { + let selector = element.getAttribute("data-bs-target"); + if (!selector || selector === "#") { + let hrefAttribute = element.getAttribute("href"); + if (!hrefAttribute || !hrefAttribute.includes("#") && !hrefAttribute.startsWith(".")) { + return null; + } + if (hrefAttribute.includes("#") && !hrefAttribute.startsWith("#")) { + hrefAttribute = `#${hrefAttribute.split("#")[1]}`; + } + selector = hrefAttribute && hrefAttribute !== "#" ? hrefAttribute.trim() : null; + } + return selector ? selector.split(",").map((sel) => parseSelector(sel)).join(",") : null; + }; + var SelectorEngine = { + find(selector, element = document.documentElement) { + return [].concat(...Element.prototype.querySelectorAll.call(element, selector)); + }, + findOne(selector, element = document.documentElement) { + return Element.prototype.querySelector.call(element, selector); + }, + children(element, selector) { + return [].concat(...element.children).filter((child) => child.matches(selector)); + }, + parents(element, selector) { + const parents = []; + let ancestor = element.parentNode.closest(selector); + while (ancestor) { + parents.push(ancestor); + ancestor = ancestor.parentNode.closest(selector); + } + return parents; + }, + prev(element, selector) { + let previous = element.previousElementSibling; + while (previous) { + if (previous.matches(selector)) { + return [previous]; + } + previous = previous.previousElementSibling; + } + return []; + }, + // TODO: this is now unused; remove later along with prev() + next(element, selector) { + let next = element.nextElementSibling; + while (next) { + if (next.matches(selector)) { + return [next]; + } + next = next.nextElementSibling; + } + return []; + }, + focusableChildren(element) { + const focusables = [ + "a", + "button", + "input", + "textarea", + "select", + "details", + "[tabindex]", + '[contenteditable="true"]' + ].map((selector) => `${selector}:not([tabindex^="-"])`).join(","); + return this.find(focusables, element).filter((el) => !isDisabled(el) && isVisible(el)); + }, + getSelectorFromElement(element) { + const selector = getSelector(element); + if (selector) { + return SelectorEngine.findOne(selector) ? selector : null; + } + return null; + }, + getElementFromSelector(element) { + const selector = getSelector(element); + return selector ? SelectorEngine.findOne(selector) : null; + }, + getMultipleElementsFromSelector(element) { + const selector = getSelector(element); + return selector ? SelectorEngine.find(selector) : []; + } + }; + var selector_engine_default = SelectorEngine; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/collapse.js + var NAME = "collapse"; + var DATA_KEY = "bs.collapse"; + var EVENT_KEY = `.${DATA_KEY}`; + var DATA_API_KEY = ".data-api"; + var EVENT_SHOW = `show${EVENT_KEY}`; + var EVENT_SHOWN = `shown${EVENT_KEY}`; + var EVENT_HIDE = `hide${EVENT_KEY}`; + var EVENT_HIDDEN = `hidden${EVENT_KEY}`; + var EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`; + var CLASS_NAME_SHOW = "show"; + var CLASS_NAME_COLLAPSE = "collapse"; + var CLASS_NAME_COLLAPSING = "collapsing"; + var CLASS_NAME_COLLAPSED = "collapsed"; + var CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`; + var CLASS_NAME_HORIZONTAL = "collapse-horizontal"; + var WIDTH = "width"; + var HEIGHT = "height"; + var SELECTOR_ACTIVES = ".collapse.show, .collapse.collapsing"; + var SELECTOR_DATA_TOGGLE = '[data-bs-toggle="collapse"]'; + var Default = { + parent: null, + toggle: true + }; + var DefaultType = { + parent: "(null|element)", + toggle: "boolean" + }; + var Collapse = class _Collapse extends base_component_default { + constructor(element, config) { + super(element, config); + this._isTransitioning = false; + this._triggerArray = []; + const toggleList = selector_engine_default.find(SELECTOR_DATA_TOGGLE); + for (const elem of toggleList) { + const selector = selector_engine_default.getSelectorFromElement(elem); + const filterElement = selector_engine_default.find(selector).filter((foundElement) => foundElement === this._element); + if (selector !== null && filterElement.length) { + this._triggerArray.push(elem); + } + } + this._initializeChildren(); + if (!this._config.parent) { + this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()); + } + if (this._config.toggle) { + this.toggle(); + } + } + // Getters + static get Default() { + return Default; + } + static get DefaultType() { + return DefaultType; + } + static get NAME() { + return NAME; + } + // Public + toggle() { + if (this._isShown()) { + this.hide(); + } else { + this.show(); + } + } + show() { + if (this._isTransitioning || this._isShown()) { + return; + } + let activeChildren = []; + if (this._config.parent) { + activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter((element) => element !== this._element).map((element) => _Collapse.getOrCreateInstance(element, { toggle: false })); + } + if (activeChildren.length && activeChildren[0]._isTransitioning) { + return; + } + const startEvent = event_handler_default.trigger(this._element, EVENT_SHOW); + if (startEvent.defaultPrevented) { + return; + } + for (const activeInstance of activeChildren) { + activeInstance.hide(); + } + const dimension = this._getDimension(); + this._element.classList.remove(CLASS_NAME_COLLAPSE); + this._element.classList.add(CLASS_NAME_COLLAPSING); + this._element.style[dimension] = 0; + this._addAriaAndCollapsedClass(this._triggerArray, true); + this._isTransitioning = true; + const complete = () => { + this._isTransitioning = false; + this._element.classList.remove(CLASS_NAME_COLLAPSING); + this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW); + this._element.style[dimension] = ""; + event_handler_default.trigger(this._element, EVENT_SHOWN); + }; + const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); + const scrollSize = `scroll${capitalizedDimension}`; + this._queueCallback(complete, this._element, true); + this._element.style[dimension] = `${this._element[scrollSize]}px`; + } + hide() { + if (this._isTransitioning || !this._isShown()) { + return; + } + const startEvent = event_handler_default.trigger(this._element, EVENT_HIDE); + if (startEvent.defaultPrevented) { + return; + } + const dimension = this._getDimension(); + this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`; + reflow(this._element); + this._element.classList.add(CLASS_NAME_COLLAPSING); + this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW); + for (const trigger of this._triggerArray) { + const element = selector_engine_default.getElementFromSelector(trigger); + if (element && !this._isShown(element)) { + this._addAriaAndCollapsedClass([trigger], false); + } + } + this._isTransitioning = true; + const complete = () => { + this._isTransitioning = false; + this._element.classList.remove(CLASS_NAME_COLLAPSING); + this._element.classList.add(CLASS_NAME_COLLAPSE); + event_handler_default.trigger(this._element, EVENT_HIDDEN); + }; + this._element.style[dimension] = ""; + this._queueCallback(complete, this._element, true); + } + // Private + _isShown(element = this._element) { + return element.classList.contains(CLASS_NAME_SHOW); + } + _configAfterMerge(config) { + config.toggle = Boolean(config.toggle); + config.parent = getElement(config.parent); + return config; + } + _getDimension() { + return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT; + } + _initializeChildren() { + if (!this._config.parent) { + return; + } + const children2 = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE); + for (const element of children2) { + const selected = selector_engine_default.getElementFromSelector(element); + if (selected) { + this._addAriaAndCollapsedClass([element], this._isShown(selected)); + } + } + } + _getFirstLevelChildren(selector) { + const children2 = selector_engine_default.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); + return selector_engine_default.find(selector, this._config.parent).filter((element) => !children2.includes(element)); + } + _addAriaAndCollapsedClass(triggerArray, isOpen) { + if (!triggerArray.length) { + return; + } + for (const element of triggerArray) { + element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen); + element.setAttribute("aria-expanded", isOpen); + } + } + // Static + static jQueryInterface(config) { + const _config = {}; + if (typeof config === "string" && /show|hide/.test(config)) { + _config.toggle = false; + } + return this.each(function() { + const data = _Collapse.getOrCreateInstance(this, _config); + if (typeof config === "string") { + if (typeof data[config] === "undefined") { + throw new TypeError(`No method named "${config}"`); + } + data[config](); + } + }); + } + }; + event_handler_default.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function(event) { + if (event.target.tagName === "A" || event.delegateTarget && event.delegateTarget.tagName === "A") { + event.preventDefault(); + } + for (const element of selector_engine_default.getMultipleElementsFromSelector(this)) { + Collapse.getOrCreateInstance(element, { toggle: false }).toggle(); + } + }); + defineJQueryPlugin(Collapse); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/category-collapse.js + var children = document.getElementsByClassName("collapse"); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/tooltip.js + var Popper = __toESM(require_popper()); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/util/sanitizer.js + var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; + var DefaultAllowlist = { + // Global attributes allowed on any supplied element below. + "*": ["class", "dir", "id", "lang", "role", ARIA_ATTRIBUTE_PATTERN], + a: ["target", "href", "title", "rel"], + area: [], + b: [], + br: [], + col: [], + code: [], + dd: [], + div: [], + dl: [], + dt: [], + em: [], + hr: [], + h1: [], + h2: [], + h3: [], + h4: [], + h5: [], + h6: [], + i: [], + img: ["src", "srcset", "alt", "title", "width", "height"], + li: [], + ol: [], + p: [], + pre: [], + s: [], + small: [], + span: [], + sub: [], + sup: [], + strong: [], + u: [], + ul: [] + }; + var uriAttributes = /* @__PURE__ */ new Set([ + "background", + "cite", + "href", + "itemtype", + "longdesc", + "poster", + "src", + "xlink:href" + ]); + var SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i; + var allowedAttribute = (attribute, allowedAttributeList) => { + const attributeName = attribute.nodeName.toLowerCase(); + if (allowedAttributeList.includes(attributeName)) { + if (uriAttributes.has(attributeName)) { + return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue)); + } + return true; + } + return allowedAttributeList.filter((attributeRegex) => attributeRegex instanceof RegExp).some((regex) => regex.test(attributeName)); + }; + function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) { + if (!unsafeHtml.length) { + return unsafeHtml; + } + if (sanitizeFunction && typeof sanitizeFunction === "function") { + return sanitizeFunction(unsafeHtml); + } + const domParser = new window.DOMParser(); + const createdDocument = domParser.parseFromString(unsafeHtml, "text/html"); + const elements = [].concat(...createdDocument.body.querySelectorAll("*")); + for (const element of elements) { + const elementName = element.nodeName.toLowerCase(); + if (!Object.keys(allowList).includes(elementName)) { + element.remove(); + continue; + } + const attributeList = [].concat(...element.attributes); + const allowedAttributes = [].concat(allowList["*"] || [], allowList[elementName] || []); + for (const attribute of attributeList) { + if (!allowedAttribute(attribute, allowedAttributes)) { + element.removeAttribute(attribute.nodeName); + } + } + } + return createdDocument.body.innerHTML; + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/util/template-factory.js + var NAME2 = "TemplateFactory"; + var Default2 = { + allowList: DefaultAllowlist, + content: {}, + // { selector : text , selector2 : text2 , } + extraClass: "", + html: false, + sanitize: true, + sanitizeFn: null, + template: "
" + }; + var DefaultType2 = { + allowList: "object", + content: "object", + extraClass: "(string|function)", + html: "boolean", + sanitize: "boolean", + sanitizeFn: "(null|function)", + template: "string" + }; + var DefaultContentType = { + entry: "(string|element|function|null)", + selector: "(string|element)" + }; + var TemplateFactory = class extends config_default { + constructor(config) { + super(); + this._config = this._getConfig(config); + } + // Getters + static get Default() { + return Default2; + } + static get DefaultType() { + return DefaultType2; + } + static get NAME() { + return NAME2; + } + // Public + getContent() { + return Object.values(this._config.content).map((config) => this._resolvePossibleFunction(config)).filter(Boolean); + } + hasContent() { + return this.getContent().length > 0; + } + changeContent(content2) { + this._checkContent(content2); + this._config.content = __spreadValues(__spreadValues({}, this._config.content), content2); + return this; + } + toHtml() { + const templateWrapper = document.createElement("div"); + templateWrapper.innerHTML = this._maybeSanitize(this._config.template); + for (const [selector, text] of Object.entries(this._config.content)) { + this._setContent(templateWrapper, text, selector); + } + const template = templateWrapper.children[0]; + const extraClass = this._resolvePossibleFunction(this._config.extraClass); + if (extraClass) { + template.classList.add(...extraClass.split(" ")); + } + return template; + } + // Private + _typeCheckConfig(config) { + super._typeCheckConfig(config); + this._checkContent(config.content); + } + _checkContent(arg) { + for (const [selector, content2] of Object.entries(arg)) { + super._typeCheckConfig({ selector, entry: content2 }, DefaultContentType); + } + } + _setContent(template, content2, selector) { + const templateElement = selector_engine_default.findOne(selector, template); + if (!templateElement) { + return; + } + content2 = this._resolvePossibleFunction(content2); + if (!content2) { + templateElement.remove(); + return; + } + if (isElement(content2)) { + this._putElementInTemplate(getElement(content2), templateElement); + return; + } + if (this._config.html) { + templateElement.innerHTML = this._maybeSanitize(content2); + return; + } + templateElement.textContent = content2; + } + _maybeSanitize(arg) { + return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg; + } + _resolvePossibleFunction(arg) { + return execute(arg, [void 0, this]); + } + _putElementInTemplate(element, templateElement) { + if (this._config.html) { + templateElement.innerHTML = ""; + templateElement.append(element); + return; + } + templateElement.textContent = element.textContent; + } + }; + var template_factory_default = TemplateFactory; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/tooltip.js + var NAME3 = "tooltip"; + var DISALLOWED_ATTRIBUTES = /* @__PURE__ */ new Set(["sanitize", "allowList", "sanitizeFn"]); + var CLASS_NAME_FADE = "fade"; + var CLASS_NAME_MODAL = "modal"; + var CLASS_NAME_SHOW2 = "show"; + var SELECTOR_TOOLTIP_INNER = ".tooltip-inner"; + var SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`; + var EVENT_MODAL_HIDE = "hide.bs.modal"; + var TRIGGER_HOVER = "hover"; + var TRIGGER_FOCUS = "focus"; + var TRIGGER_CLICK = "click"; + var TRIGGER_MANUAL = "manual"; + var EVENT_HIDE2 = "hide"; + var EVENT_HIDDEN2 = "hidden"; + var EVENT_SHOW2 = "show"; + var EVENT_SHOWN2 = "shown"; + var EVENT_INSERTED = "inserted"; + var EVENT_CLICK = "click"; + var EVENT_FOCUSIN = "focusin"; + var EVENT_FOCUSOUT = "focusout"; + var EVENT_MOUSEENTER = "mouseenter"; + var EVENT_MOUSELEAVE = "mouseleave"; + var AttachmentMap = { + AUTO: "auto", + TOP: "top", + RIGHT: isRTL() ? "left" : "right", + BOTTOM: "bottom", + LEFT: isRTL() ? "right" : "left" + }; + var Default3 = { + allowList: DefaultAllowlist, + animation: true, + boundary: "clippingParents", + container: false, + customClass: "", + delay: 0, + fallbackPlacements: ["top", "right", "bottom", "left"], + html: false, + offset: [0, 6], + placement: "top", + popperConfig: null, + sanitize: true, + sanitizeFn: null, + selector: false, + template: '', + title: "", + trigger: "hover focus" + }; + var DefaultType3 = { + allowList: "object", + animation: "boolean", + boundary: "(string|element)", + container: "(string|element|boolean)", + customClass: "(string|function)", + delay: "(number|object)", + fallbackPlacements: "array", + html: "boolean", + offset: "(array|string|function)", + placement: "(string|function)", + popperConfig: "(null|object|function)", + sanitize: "boolean", + sanitizeFn: "(null|function)", + selector: "(string|boolean)", + template: "string", + title: "(string|element|function)", + trigger: "string" + }; + var Tooltip = class _Tooltip extends base_component_default { + constructor(element, config) { + if (typeof Popper === "undefined") { + throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org/docs/v2/)"); + } + super(element, config); + this._isEnabled = true; + this._timeout = 0; + this._isHovered = null; + this._activeTrigger = {}; + this._popper = null; + this._templateFactory = null; + this._newContent = null; + this.tip = null; + this._setListeners(); + if (!this._config.selector) { + this._fixTitle(); + } + } + // Getters + static get Default() { + return Default3; + } + static get DefaultType() { + return DefaultType3; + } + static get NAME() { + return NAME3; + } + // Public + enable() { + this._isEnabled = true; + } + disable() { + this._isEnabled = false; + } + toggleEnabled() { + this._isEnabled = !this._isEnabled; + } + toggle() { + if (!this._isEnabled) { + return; + } + if (this._isShown()) { + this._leave(); + return; + } + this._enter(); + } + dispose() { + clearTimeout(this._timeout); + event_handler_default.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); + if (this._element.getAttribute("data-bs-original-title")) { + this._element.setAttribute("title", this._element.getAttribute("data-bs-original-title")); + } + this._disposePopper(); + super.dispose(); + } + show() { + if (this._element.style.display === "none") { + throw new Error("Please use show on visible elements"); + } + if (!(this._isWithContent() && this._isEnabled)) { + return; + } + const showEvent = event_handler_default.trigger(this._element, this.constructor.eventName(EVENT_SHOW2)); + const shadowRoot = findShadowRoot(this._element); + const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element); + if (showEvent.defaultPrevented || !isInTheDom) { + return; + } + this._disposePopper(); + const tip = this._getTipElement(); + this._element.setAttribute("aria-describedby", tip.getAttribute("id")); + const { container } = this._config; + if (!this._element.ownerDocument.documentElement.contains(this.tip)) { + container.append(tip); + event_handler_default.trigger(this._element, this.constructor.eventName(EVENT_INSERTED)); + } + this._popper = this._createPopper(tip); + tip.classList.add(CLASS_NAME_SHOW2); + if ("ontouchstart" in document.documentElement) { + for (const element of [].concat(...document.body.children)) { + event_handler_default.on(element, "mouseover", noop); + } + } + const complete = () => { + event_handler_default.trigger(this._element, this.constructor.eventName(EVENT_SHOWN2)); + if (this._isHovered === false) { + this._leave(); + } + this._isHovered = false; + }; + this._queueCallback(complete, this.tip, this._isAnimated()); + } + hide() { + if (!this._isShown()) { + return; + } + const hideEvent = event_handler_default.trigger(this._element, this.constructor.eventName(EVENT_HIDE2)); + if (hideEvent.defaultPrevented) { + return; + } + const tip = this._getTipElement(); + tip.classList.remove(CLASS_NAME_SHOW2); + if ("ontouchstart" in document.documentElement) { + for (const element of [].concat(...document.body.children)) { + event_handler_default.off(element, "mouseover", noop); + } + } + this._activeTrigger[TRIGGER_CLICK] = false; + this._activeTrigger[TRIGGER_FOCUS] = false; + this._activeTrigger[TRIGGER_HOVER] = false; + this._isHovered = null; + const complete = () => { + if (this._isWithActiveTrigger()) { + return; + } + if (!this._isHovered) { + this._disposePopper(); + } + this._element.removeAttribute("aria-describedby"); + event_handler_default.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN2)); + }; + this._queueCallback(complete, this.tip, this._isAnimated()); + } + update() { + if (this._popper) { + this._popper.update(); + } + } + // Protected + _isWithContent() { + return Boolean(this._getTitle()); + } + _getTipElement() { + if (!this.tip) { + this.tip = this._createTipElement(this._newContent || this._getContentForTemplate()); + } + return this.tip; + } + _createTipElement(content2) { + const tip = this._getTemplateFactory(content2).toHtml(); + if (!tip) { + return null; + } + tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW2); + tip.classList.add(`bs-${this.constructor.NAME}-auto`); + const tipId = getUID(this.constructor.NAME).toString(); + tip.setAttribute("id", tipId); + if (this._isAnimated()) { + tip.classList.add(CLASS_NAME_FADE); + } + return tip; + } + setContent(content2) { + this._newContent = content2; + if (this._isShown()) { + this._disposePopper(); + this.show(); + } + } + _getTemplateFactory(content2) { + if (this._templateFactory) { + this._templateFactory.changeContent(content2); + } else { + this._templateFactory = new template_factory_default(__spreadProps(__spreadValues({}, this._config), { + // the `content` var has to be after `this._config` + // to override config.content in case of popover + content: content2, + extraClass: this._resolvePossibleFunction(this._config.customClass) + })); + } + return this._templateFactory; + } + _getContentForTemplate() { + return { + [SELECTOR_TOOLTIP_INNER]: this._getTitle() + }; + } + _getTitle() { + return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute("data-bs-original-title"); + } + // Private + _initializeOnDelegatedTarget(event) { + return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig()); + } + _isAnimated() { + return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE); + } + _isShown() { + return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW2); + } + _createPopper(tip) { + const placement = execute(this._config.placement, [this, tip, this._element]); + const attachment = AttachmentMap[placement.toUpperCase()]; + return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment)); + } + _getOffset() { + const { offset } = this._config; + if (typeof offset === "string") { + return offset.split(",").map((value) => Number.parseInt(value, 10)); + } + if (typeof offset === "function") { + return (popperData) => offset(popperData, this._element); + } + return offset; + } + _resolvePossibleFunction(arg) { + return execute(arg, [this._element, this._element]); + } + _getPopperConfig(attachment) { + const defaultBsPopperConfig = { + placement: attachment, + modifiers: [ + { + name: "flip", + options: { + fallbackPlacements: this._config.fallbackPlacements + } + }, + { + name: "offset", + options: { + offset: this._getOffset() + } + }, + { + name: "preventOverflow", + options: { + boundary: this._config.boundary + } + }, + { + name: "arrow", + options: { + element: `.${this.constructor.NAME}-arrow` + } + }, + { + name: "preSetPlacement", + enabled: true, + phase: "beforeMain", + fn: (data) => { + this._getTipElement().setAttribute("data-popper-placement", data.state.placement); + } + } + ] + }; + return __spreadValues(__spreadValues({}, defaultBsPopperConfig), execute(this._config.popperConfig, [void 0, defaultBsPopperConfig])); + } + _setListeners() { + const triggers = this._config.trigger.split(" "); + for (const trigger of triggers) { + if (trigger === "click") { + event_handler_default.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, (event) => { + const context = this._initializeOnDelegatedTarget(event); + context._activeTrigger[TRIGGER_CLICK] = !(context._isShown() && context._activeTrigger[TRIGGER_CLICK]); + context.toggle(); + }); + } else if (trigger !== TRIGGER_MANUAL) { + const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN); + const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT); + event_handler_default.on(this._element, eventIn, this._config.selector, (event) => { + const context = this._initializeOnDelegatedTarget(event); + context._activeTrigger[event.type === "focusin" ? TRIGGER_FOCUS : TRIGGER_HOVER] = true; + context._enter(); + }); + event_handler_default.on(this._element, eventOut, this._config.selector, (event) => { + const context = this._initializeOnDelegatedTarget(event); + context._activeTrigger[event.type === "focusout" ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget); + context._leave(); + }); + } + } + this._hideModalHandler = () => { + if (this._element) { + this.hide(); + } + }; + event_handler_default.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); + } + _fixTitle() { + const title = this._element.getAttribute("title"); + if (!title) { + return; + } + if (!this._element.getAttribute("aria-label") && !this._element.textContent.trim()) { + this._element.setAttribute("aria-label", title); + } + this._element.setAttribute("data-bs-original-title", title); + this._element.removeAttribute("title"); + } + _enter() { + if (this._isShown() || this._isHovered) { + this._isHovered = true; + return; + } + this._isHovered = true; + this._setTimeout(() => { + if (this._isHovered) { + this.show(); + } + }, this._config.delay.show); + } + _leave() { + if (this._isWithActiveTrigger()) { + return; + } + this._isHovered = false; + this._setTimeout(() => { + if (!this._isHovered) { + this.hide(); + } + }, this._config.delay.hide); + } + _setTimeout(handler, timeout) { + clearTimeout(this._timeout); + this._timeout = setTimeout(handler, timeout); + } + _isWithActiveTrigger() { + return Object.values(this._activeTrigger).includes(true); + } + _getConfig(config) { + const dataAttributes = manipulator_default.getDataAttributes(this._element); + for (const dataAttribute of Object.keys(dataAttributes)) { + if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) { + delete dataAttributes[dataAttribute]; + } + } + config = __spreadValues(__spreadValues({}, dataAttributes), typeof config === "object" && config ? config : {}); + config = this._mergeConfigObj(config); + config = this._configAfterMerge(config); + this._typeCheckConfig(config); + return config; + } + _configAfterMerge(config) { + config.container = config.container === false ? document.body : getElement(config.container); + if (typeof config.delay === "number") { + config.delay = { + show: config.delay, + hide: config.delay + }; + } + if (typeof config.title === "number") { + config.title = config.title.toString(); + } + if (typeof config.content === "number") { + config.content = config.content.toString(); + } + return config; + } + _getDelegateConfig() { + const config = {}; + for (const [key, value] of Object.entries(this._config)) { + if (this.constructor.Default[key] !== value) { + config[key] = value; + } + } + config.selector = false; + config.trigger = "manual"; + return config; + } + _disposePopper() { + if (this._popper) { + this._popper.destroy(); + this._popper = null; + } + if (this.tip) { + this.tip.remove(); + this.tip = null; + } + } + // Static + static jQueryInterface(config) { + return this.each(function() { + const data = _Tooltip.getOrCreateInstance(this, config); + if (typeof config !== "string") { + return; + } + if (typeof data[config] === "undefined") { + throw new TypeError(`No method named "${config}"`); + } + data[config](); + }); + } + }; + defineJQueryPlugin(Tooltip); + var tooltip_default = Tooltip; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/locale-datetime.js + var LocaleHelper = class { + static get attrTimestamp() { + return "data-ts"; + } + static get attrDateFormat() { + return "data-df"; + } + static get locale() { + return document.documentElement.getAttribute("lang").substring(0, 2); + } + static getTimestamp(elem) { + return Number(elem.getAttribute(this.attrTimestamp)); + } + static getDateFormat(elem) { + return elem.getAttribute(this.attrDateFormat); + } + }; + function initLocaleDatetime() { + dayjs.locale(LocaleHelper.locale); + dayjs.extend(window.dayjs_plugin_localizedFormat); + document.querySelectorAll(`[${LocaleHelper.attrTimestamp}]`).forEach((elem) => { + const date = dayjs.unix(LocaleHelper.getTimestamp(elem)); + const text = date.format(LocaleHelper.getDateFormat(elem)); + elem.textContent = text; + elem.removeAttribute(LocaleHelper.attrTimestamp); + elem.removeAttribute(LocaleHelper.attrDateFormat); + if (elem.hasAttribute("data-bs-toggle") && elem.getAttribute("data-bs-toggle") === "tooltip") { + const tooltipText = date.format("llll"); + elem.setAttribute("data-bs-title", tooltipText); + } + }); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/toc/toc-mobile.js + var $tocBar = document.getElementById("toc-bar"); + var $soloTrigger = document.getElementById("toc-solo-trigger"); + var $triggers = document.getElementsByClassName("toc-trigger"); + var $popup = document.getElementById("toc-popup"); + var $btnClose = document.getElementById("toc-popup-close"); + var SCROLL_LOCK = "overflow-hidden"; + var CLOSING = "closing"; + var _invisible, _barHeight; + var _TocMobile = class _TocMobile { + static initBar() { + const observer = new IntersectionObserver( + (entries) => { + entries.forEach((entry) => { + $tocBar.classList.toggle("invisible", entry.isIntersecting); + }); + }, + { rootMargin: `-${__privateGet(this, _barHeight)}px 0px 0px 0px` } + ); + observer.observe($soloTrigger); + __privateSet(this, _invisible, false); + } + static listenAnchors() { + const $anchors = document.getElementsByClassName("toc-link"); + [...$anchors].forEach((anchor) => { + anchor.onclick = () => this.hidePopup(); + }); + } + static refresh() { + if (__privateGet(this, _invisible)) { + this.initComponents(); + } + tocbot.refresh(this.options); + this.listenAnchors(); + } + static get popupOpened() { + return $popup.open; + } + static showPopup() { + this.lockScroll(true); + $popup.showModal(); + const activeItem = $popup.querySelector("li.is-active-li"); + activeItem.scrollIntoView({ block: "center" }); + } + static hidePopup() { + $popup.toggleAttribute(CLOSING); + $popup.addEventListener( + "animationend", + () => { + $popup.toggleAttribute(CLOSING); + $popup.close(); + }, + { once: true } + ); + this.lockScroll(false); + } + static lockScroll(enable) { + document.documentElement.classList.toggle(SCROLL_LOCK, enable); + document.body.classList.toggle(SCROLL_LOCK, enable); + } + static clickBackdrop(event) { + if ($popup.hasAttribute(CLOSING)) { + return; + } + const rect = event.target.getBoundingClientRect(); + if (event.clientX < rect.left || event.clientX > rect.right || event.clientY < rect.top || event.clientY > rect.bottom) { + this.hidePopup(); + } + } + static initComponents() { + this.initBar(); + [...$triggers].forEach((trigger) => { + trigger.onclick = () => this.showPopup(); + }); + $popup.onclick = (e) => this.clickBackdrop(e); + $btnClose.onclick = () => this.hidePopup(); + $popup.oncancel = (e) => { + e.preventDefault(); + this.hidePopup(); + }; + } + static init() { + tocbot.init(this.options); + this.listenAnchors(); + this.initComponents(); + } + }; + _invisible = new WeakMap(); + _barHeight = new WeakMap(); + __privateAdd(_TocMobile, _invisible, true); + __privateAdd(_TocMobile, _barHeight, 16 * 3); + // 3rem + __publicField(_TocMobile, "options", { + tocSelector: "#toc-popup-content", + contentSelector: ".content", + ignoreSelector: "[data-toc-skip]", + headingSelector: "h2, h3, h4", + orderedList: false, + scrollSmooth: false, + collapseDepth: 4, + headingsOffset: __privateGet(_TocMobile, _barHeight) + }); + var TocMobile = _TocMobile; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/toc/toc-desktop.js + var TocDesktop = class { + static refresh() { + tocbot.refresh(this.options); + } + static init() { + tocbot.init(this.options); + } + }; + /* Tocbot options Ref: https://github.com/tscanlin/tocbot#usage */ + __publicField(TocDesktop, "options", { + tocSelector: "#toc", + contentSelector: ".content", + ignoreSelector: "[data-toc-skip]", + headingSelector: "h2, h3, h4", + orderedList: false, + scrollSmooth: false, + headingsOffset: 16 * 2 + // 2rem + }); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/toc.js + var desktopMode = matchMedia("(min-width: 1200px)"); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/mermaid.js + var themeMapper = Theme.getThemeMapper("default", "dark"); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/mode-toggle.js + var $toggle = document.getElementById("mode-toggle"); + function modeWatcher() { + if (!$toggle) { + return; + } + $toggle.addEventListener("click", () => { + Theme.flip(); + }); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/back-to-top.js + function back2top() { + const btn = document.getElementById("back-to-top"); + window.addEventListener("scroll", () => { + if (window.scrollY > 50) { + btn.classList.add("show"); + } else { + btn.classList.remove("show"); + } + }); + btn.addEventListener("click", () => { + window.scrollTo({ top: 0 }); + }); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/tooltip-loader.js + function loadTooptip() { + const tooltipTriggerList = document.querySelectorAll( + '[data-bs-toggle="tooltip"]' + ); + [...tooltipTriggerList].map( + (tooltipTriggerEl) => new tooltip_default(tooltipTriggerEl) + ); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/layouts/basic.js + function basic() { + modeWatcher(); + back2top(); + loadTooptip(); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/layouts/sidebar.js + var ATTR_DISPLAY = "sidebar-display"; + var $sidebar = document.getElementById("sidebar"); + var $trigger = document.getElementById("sidebar-trigger"); + var $mask = document.getElementById("mask"); + var _isExpanded; + var SidebarUtil = class { + static toggle() { + __privateSet(this, _isExpanded, !__privateGet(this, _isExpanded)); + document.body.toggleAttribute(ATTR_DISPLAY, __privateGet(this, _isExpanded)); + $sidebar.classList.toggle("z-2", __privateGet(this, _isExpanded)); + $mask.classList.toggle("d-none", !__privateGet(this, _isExpanded)); + } + }; + _isExpanded = new WeakMap(); + __privateAdd(SidebarUtil, _isExpanded, false); + function initSidebar() { + $trigger.onclick = $mask.onclick = () => SidebarUtil.toggle(); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/search-display.js + var btnSbTrigger = document.getElementById("sidebar-trigger"); + var btnSearchTrigger = document.getElementById("search-trigger"); + var btnCancel = document.getElementById("search-cancel"); + var content = document.querySelectorAll("#main-wrapper>.container>.row"); + var topbarTitle = document.getElementById("topbar-title"); + var search = document.getElementById("search"); + var resultWrapper = document.getElementById("search-result-wrapper"); + var results = document.getElementById("search-results"); + var input = document.getElementById("search-input"); + var hints = document.getElementById("search-hints"); + var LOADED = "d-block"; + var UNLOADED = "d-none"; + var FOCUS = "input-focus"; + var FLEX = "d-flex"; + var MobileSearchBar = class { + static on() { + btnSbTrigger.classList.add(UNLOADED); + topbarTitle.classList.add(UNLOADED); + btnSearchTrigger.classList.add(UNLOADED); + search.classList.add(FLEX); + btnCancel.classList.add(LOADED); + } + static off() { + btnCancel.classList.remove(LOADED); + search.classList.remove(FLEX); + btnSbTrigger.classList.remove(UNLOADED); + topbarTitle.classList.remove(UNLOADED); + btnSearchTrigger.classList.remove(UNLOADED); + } + }; + var ResultSwitch = class { + static on() { + if (!this.resultVisible) { + resultWrapper.classList.remove(UNLOADED); + content.forEach((el) => { + el.classList.add(UNLOADED); + }); + this.resultVisible = true; + } + } + static off() { + if (this.resultVisible) { + results.innerHTML = ""; + if (hints.classList.contains(UNLOADED)) { + hints.classList.remove(UNLOADED); + } + resultWrapper.classList.add(UNLOADED); + content.forEach((el) => { + el.classList.remove(UNLOADED); + }); + input.textContent = ""; + this.resultVisible = false; + } + } + }; + __publicField(ResultSwitch, "resultVisible", false); + function isMobileView() { + return btnCancel.classList.contains(LOADED); + } + function displaySearch() { + btnSearchTrigger.addEventListener("click", () => { + MobileSearchBar.on(); + ResultSwitch.on(); + input.focus(); + }); + btnCancel.addEventListener("click", () => { + MobileSearchBar.off(); + ResultSwitch.off(); + }); + input.addEventListener("focus", () => { + search.classList.add(FOCUS); + }); + input.addEventListener("focusout", () => { + search.classList.remove(FOCUS); + }); + input.addEventListener("input", () => { + if (input.value === "") { + if (isMobileView()) { + hints.classList.remove(UNLOADED); + } else { + ResultSwitch.off(); + } + } else { + ResultSwitch.on(); + if (isMobileView()) { + hints.classList.add(UNLOADED); + } + } + }); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/layouts/topbar.js + function initTopbar() { + displaySearch(); + } + + // + initSidebar(); + initTopbar(); + initLocaleDatetime(); + basic(); +})(); diff --git a/public/js/modules/theme.js b/public/js/modules/theme.js index c375005..ef91a86 100644 --- a/public/js/modules/theme.js +++ b/public/js/modules/theme.js @@ -1 +1,128 @@ -(()=>{var L=Object.defineProperty;var w=i=>{throw TypeError(i)};var k=(i,s,a)=>s in i?L(i,s,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[s]=a;var M=(i,s,a)=>k(i,typeof s!="symbol"?s+"":s,a),b=(i,s,a)=>s.has(i)||w("Cannot "+a);var e=(i,s,a)=>(b(i,s,"read from private field"),a?a.call(i):s.get(i)),o=(i,s,a)=>s.has(i)?w("Cannot add the same private member more than once"):s instanceof WeakSet?s.add(i):s.set(i,a);var r=(i,s,a)=>(b(i,s,"access private method"),a);var c,n,m,t,d,K,l,g,A,D,I,f,h=class h{static get DARK(){return"dark"}static get LIGHT(){return"light"}static get ID(){return"theme-mode"}static get visualState(){return e(this,t,l)?e(this,t,d):e(this,t,g)?this.DARK:this.LIGHT}static getThemeMapper(s,a){return{[this.LIGHT]:s,[this.DARK]:a}}static init(){this.switchable&&(e(this,m).addEventListener("change",()=>{let s=e(this,t,d);r(this,t,I).call(this),s!==this.visualState&&r(this,t,f).call(this)}),e(this,t,l)&&(e(this,t,K)?r(this,t,A).call(this):r(this,t,D).call(this)))}static flip(){e(this,t,l)?r(this,t,I).call(this):e(this,t,g)?r(this,t,D).call(this):r(this,t,A).call(this),r(this,t,f).call(this)}};c=new WeakMap,n=new WeakMap,m=new WeakMap,t=new WeakSet,d=function(){return sessionStorage.getItem(e(this,c))||document.documentElement.getAttribute(e(this,n))},K=function(){return e(this,t,d)===this.DARK},l=function(){return e(this,t,d)!==null},g=function(){return e(this,m).matches},A=function(){document.documentElement.setAttribute(e(this,n),this.DARK),sessionStorage.setItem(e(this,c),this.DARK)},D=function(){document.documentElement.setAttribute(e(this,n),this.LIGHT),sessionStorage.setItem(e(this,c),this.LIGHT)},I=function(){document.documentElement.removeAttribute(e(this,n)),sessionStorage.removeItem(e(this,c))},f=function(){window.postMessage({id:this.ID},"*")},o(h,t),o(h,c,"mode"),o(h,n,"data-mode"),o(h,m,window.matchMedia("(prefers-color-scheme: dark)")),M(h,"switchable",!document.documentElement.hasAttribute(e(h,n)));var u=h;u.init();var E=u;window.Theme=u;})(); +(() => { + var __defProp = Object.defineProperty; + var __typeError = (msg) => { + throw TypeError(msg); + }; + var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; + var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg); + var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj)); + var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value); + var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method); + + // + var _modeKey, _modeAttr, _darkMedia, _Theme_static, mode_get, isDarkMode_get, hasMode_get, sysDark_get, setDark_fn, setLight_fn, clearMode_fn, notify_fn; + var _Theme = class _Theme { + static get DARK() { + return "dark"; + } + static get LIGHT() { + return "light"; + } + /** + * @returns {string} Theme mode identifier + */ + static get ID() { + return "theme-mode"; + } + /** + * Gets the current visual state of the theme. + * + * @returns {string} The current visual state, either the mode if it exists, + * or the system dark mode state ('dark' or 'light'). + */ + static get visualState() { + if (__privateGet(this, _Theme_static, hasMode_get)) { + return __privateGet(this, _Theme_static, mode_get); + } else { + return __privateGet(this, _Theme_static, sysDark_get) ? this.DARK : this.LIGHT; + } + } + /** + * Maps theme modes to provided values + * @param {string} light Value for light mode + * @param {string} dark Value for dark mode + * @returns {Object} Mapped values + */ + static getThemeMapper(light, dark) { + return { + [this.LIGHT]: light, + [this.DARK]: dark + }; + } + /** + * Initializes the theme based on system preferences or stored mode + */ + static init() { + if (!this.switchable) { + return; + } + __privateGet(this, _darkMedia).addEventListener("change", () => { + const lastMode = __privateGet(this, _Theme_static, mode_get); + __privateMethod(this, _Theme_static, clearMode_fn).call(this); + if (lastMode !== this.visualState) { + __privateMethod(this, _Theme_static, notify_fn).call(this); + } + }); + if (!__privateGet(this, _Theme_static, hasMode_get)) { + return; + } + if (__privateGet(this, _Theme_static, isDarkMode_get)) { + __privateMethod(this, _Theme_static, setDark_fn).call(this); + } else { + __privateMethod(this, _Theme_static, setLight_fn).call(this); + } + } + /** + * Flips the current theme mode + */ + static flip() { + if (__privateGet(this, _Theme_static, hasMode_get)) { + __privateMethod(this, _Theme_static, clearMode_fn).call(this); + } else { + __privateGet(this, _Theme_static, sysDark_get) ? __privateMethod(this, _Theme_static, setLight_fn).call(this) : __privateMethod(this, _Theme_static, setDark_fn).call(this); + } + __privateMethod(this, _Theme_static, notify_fn).call(this); + } + }; + _modeKey = new WeakMap(); + _modeAttr = new WeakMap(); + _darkMedia = new WeakMap(); + _Theme_static = new WeakSet(); + mode_get = function() { + return sessionStorage.getItem(__privateGet(this, _modeKey)) || document.documentElement.getAttribute(__privateGet(this, _modeAttr)); + }; + isDarkMode_get = function() { + return __privateGet(this, _Theme_static, mode_get) === this.DARK; + }; + hasMode_get = function() { + return __privateGet(this, _Theme_static, mode_get) !== null; + }; + sysDark_get = function() { + return __privateGet(this, _darkMedia).matches; + }; + setDark_fn = function() { + document.documentElement.setAttribute(__privateGet(this, _modeAttr), this.DARK); + sessionStorage.setItem(__privateGet(this, _modeKey), this.DARK); + }; + setLight_fn = function() { + document.documentElement.setAttribute(__privateGet(this, _modeAttr), this.LIGHT); + sessionStorage.setItem(__privateGet(this, _modeKey), this.LIGHT); + }; + clearMode_fn = function() { + document.documentElement.removeAttribute(__privateGet(this, _modeAttr)); + sessionStorage.removeItem(__privateGet(this, _modeKey)); + }; + notify_fn = function() { + window.postMessage({ id: this.ID }, "*"); + }; + __privateAdd(_Theme, _Theme_static); + __privateAdd(_Theme, _modeKey, "mode"); + __privateAdd(_Theme, _modeAttr, "data-mode"); + __privateAdd(_Theme, _darkMedia, window.matchMedia("(prefers-color-scheme: dark)")); + __publicField(_Theme, "switchable", !document.documentElement.hasAttribute(__privateGet(_Theme, _modeAttr))); + var Theme = _Theme; + Theme.init(); + var stdin_default = Theme; + window.Theme = Theme; +})(); diff --git a/public/js/page.js b/public/js/page.js index 7d5a00d..c8c9f7d 100644 --- a/public/js/page.js +++ b/public/js/page.js @@ -1 +1,3584 @@ -(()=>{var Wn=Object.create;var de=Object.defineProperty,zn=Object.defineProperties,Un=Object.getOwnPropertyDescriptor,Yn=Object.getOwnPropertyDescriptors,Gn=Object.getOwnPropertyNames,wr=Object.getOwnPropertySymbols,Kn=Object.getPrototypeOf,Ar=Object.prototype.hasOwnProperty,Qn=Object.prototype.propertyIsEnumerable;var Tr=e=>{throw TypeError(e)};var pe=(e,t,r)=>t in e?de(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,N=(e,t)=>{for(var r in t||(t={}))Ar.call(t,r)&&pe(e,r,t[r]);if(wr)for(var r of wr(t))Qn.call(t,r)&&pe(e,r,t[r]);return e},Or=(e,t)=>zn(e,Yn(t));var Xn=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Jn=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Gn(t))!Ar.call(e,o)&&o!==r&&de(e,o,{get:()=>t[o],enumerable:!(n=Un(t,o))||n.enumerable});return e};var Zn=(e,t,r)=>(r=e!=null?Wn(Kn(e)):{},Jn(t||!e||!e.__esModule?de(r,"default",{value:e,enumerable:!0}):r,e));var wt=(e,t,r)=>pe(e,typeof t!="symbol"?t+"":t,r),Sr=(e,t,r)=>t.has(e)||Tr("Cannot "+r);var U=(e,t,r)=>(Sr(e,t,"read from private field"),r?r.call(e):t.get(e)),At=(e,t,r)=>t.has(e)?Tr("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),Ht=(e,t,r,n)=>(Sr(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r);var dn=Xn(D=>{"use strict";Object.defineProperty(D,"__esModule",{value:!0});function H(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function lt(e){var t=H(e).Element;return e instanceof t||e instanceof Element}function k(e){var t=H(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function Xr(e){if(typeof ShadowRoot=="undefined")return!1;var t=H(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}var it=Math.max,Xt=Math.min,ut=Math.round;function ft(e,t){t===void 0&&(t=!1);var r=e.getBoundingClientRect(),n=1,o=1;if(k(e)&&t){var s=e.offsetHeight,i=e.offsetWidth;i>0&&(n=ut(r.width)/i||1),s>0&&(o=ut(r.height)/s||1)}return{width:r.width/n,height:r.height/o,top:r.top/o,right:r.right/n,bottom:r.bottom/o,left:r.left/n,x:r.left/n,y:r.top/o}}function Ie(e){var t=H(e),r=t.pageXOffset,n=t.pageYOffset;return{scrollLeft:r,scrollTop:n}}function Lo(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function Do(e){return e===H(e)||!k(e)?Ie(e):Lo(e)}function q(e){return e?(e.nodeName||"").toLowerCase():null}function J(e){return((lt(e)?e.ownerDocument:e.document)||window.document).documentElement}function Pe(e){return ft(J(e)).left+Ie(e).scrollLeft}function W(e){return H(e).getComputedStyle(e)}function Me(e){var t=W(e),r=t.overflow,n=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(r+o+n)}function No(e){var t=e.getBoundingClientRect(),r=ut(t.width)/e.offsetWidth||1,n=ut(t.height)/e.offsetHeight||1;return r!==1||n!==1}function Io(e,t,r){r===void 0&&(r=!1);var n=k(t),o=k(t)&&No(t),s=J(t),i=ft(e,o),a={scrollLeft:0,scrollTop:0},c={x:0,y:0};return(n||!n&&!r)&&((q(t)!=="body"||Me(s))&&(a=Do(t)),k(t)?(c=ft(t,!0),c.x+=t.clientLeft,c.y+=t.clientTop):s&&(c.x=Pe(s))),{x:i.left+a.scrollLeft-c.x,y:i.top+a.scrollTop-c.y,width:i.width,height:i.height}}function Re(e){var t=ft(e),r=e.offsetWidth,n=e.offsetHeight;return Math.abs(t.width-r)<=1&&(r=t.width),Math.abs(t.height-n)<=1&&(n=t.height),{x:e.offsetLeft,y:e.offsetTop,width:r,height:n}}function Jt(e){return q(e)==="html"?e:e.assignedSlot||e.parentNode||(Xr(e)?e.host:null)||J(e)}function Jr(e){return["html","body","#document"].indexOf(q(e))>=0?e.ownerDocument.body:k(e)&&Me(e)?e:Jr(Jt(e))}function xt(e,t){var r;t===void 0&&(t=[]);var n=Jr(e),o=n===((r=e.ownerDocument)==null?void 0:r.body),s=H(n),i=o?[s].concat(s.visualViewport||[],Me(n)?n:[]):n,a=t.concat(i);return o?a:a.concat(xt(Jt(i)))}function Po(e){return["table","td","th"].indexOf(q(e))>=0}function Vr(e){return!k(e)||W(e).position==="fixed"?null:e.offsetParent}function Mo(e){var t=navigator.userAgent.toLowerCase().indexOf("firefox")!==-1,r=navigator.userAgent.indexOf("Trident")!==-1;if(r&&k(e)){var n=W(e);if(n.position==="fixed")return null}for(var o=Jt(e);k(o)&&["html","body"].indexOf(q(o))<0;){var s=W(o);if(s.transform!=="none"||s.perspective!=="none"||s.contain==="paint"||["transform","perspective"].indexOf(s.willChange)!==-1||t&&s.willChange==="filter"||t&&s.filter&&s.filter!=="none")return o;o=o.parentNode}return null}function Dt(e){for(var t=H(e),r=Vr(e);r&&Po(r)&&W(r).position==="static";)r=Vr(r);return r&&(q(r)==="html"||q(r)==="body"&&W(r).position==="static")?t:r||Mo(e)||t}var I="top",$="bottom",B="right",P="left",ke="auto",Nt=[I,$,B,P],pt="start",Lt="end",Ro="clippingParents",Zr="viewport",St="popper",ko="reference",qr=Nt.reduce(function(e,t){return e.concat([t+"-"+pt,t+"-"+Lt])},[]),tn=[].concat(Nt,[ke]).reduce(function(e,t){return e.concat([t,t+"-"+pt,t+"-"+Lt])},[]),$o="beforeRead",Bo="read",jo="afterRead",Fo="beforeMain",Ho="main",Vo="afterMain",qo="beforeWrite",Wo="write",zo="afterWrite",Uo=[$o,Bo,jo,Fo,Ho,Vo,qo,Wo,zo];function Yo(e){var t=new Map,r=new Set,n=[];e.forEach(function(s){t.set(s.name,s)});function o(s){r.add(s.name);var i=[].concat(s.requires||[],s.requiresIfExists||[]);i.forEach(function(a){if(!r.has(a)){var c=t.get(a);c&&o(c)}}),n.push(s)}return e.forEach(function(s){r.has(s.name)||o(s)}),n}function Go(e){var t=Yo(e);return Uo.reduce(function(r,n){return r.concat(t.filter(function(o){return o.phase===n}))},[])}function Ko(e){var t;return function(){return t||(t=new Promise(function(r){Promise.resolve().then(function(){t=void 0,r(e())})})),t}}function V(e){return e.split("-")[0]}function Qo(e){var t=e.reduce(function(r,n){var o=r[n.name];return r[n.name]=o?Object.assign({},o,n,{options:Object.assign({},o.options,n.options),data:Object.assign({},o.data,n.data)}):n,r},{});return Object.keys(t).map(function(r){return t[r]})}function Xo(e){var t=H(e),r=J(e),n=t.visualViewport,o=r.clientWidth,s=r.clientHeight,i=0,a=0;return n&&(o=n.width,s=n.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(i=n.offsetLeft,a=n.offsetTop)),{width:o,height:s,x:i+Pe(e),y:a}}function Jo(e){var t,r=J(e),n=Ie(e),o=(t=e.ownerDocument)==null?void 0:t.body,s=it(r.scrollWidth,r.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),i=it(r.scrollHeight,r.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-n.scrollLeft+Pe(e),c=-n.scrollTop;return W(o||r).direction==="rtl"&&(a+=it(r.clientWidth,o?o.clientWidth:0)-s),{width:s,height:i,x:a,y:c}}function en(e,t){var r=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(r&&Xr(r)){var n=t;do{if(n&&e.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function Ne(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function Zo(e){var t=ft(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}function Wr(e,t){return t===Zr?Ne(Xo(e)):lt(t)?Zo(t):Ne(Jo(J(e)))}function ti(e){var t=xt(Jt(e)),r=["absolute","fixed"].indexOf(W(e).position)>=0,n=r&&k(e)?Dt(e):e;return lt(n)?t.filter(function(o){return lt(o)&&en(o,n)&&q(o)!=="body"&&(r?W(o).position!=="static":!0)}):[]}function ei(e,t,r){var n=t==="clippingParents"?ti(e):[].concat(t),o=[].concat(n,[r]),s=o[0],i=o.reduce(function(a,c){var u=Wr(e,c);return a.top=it(u.top,a.top),a.right=Xt(u.right,a.right),a.bottom=Xt(u.bottom,a.bottom),a.left=it(u.left,a.left),a},Wr(e,s));return i.width=i.right-i.left,i.height=i.bottom-i.top,i.x=i.left,i.y=i.top,i}function dt(e){return e.split("-")[1]}function $e(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function rn(e){var t=e.reference,r=e.element,n=e.placement,o=n?V(n):null,s=n?dt(n):null,i=t.x+t.width/2-r.width/2,a=t.y+t.height/2-r.height/2,c;switch(o){case I:c={x:i,y:t.y-r.height};break;case $:c={x:i,y:t.y+t.height};break;case B:c={x:t.x+t.width,y:a};break;case P:c={x:t.x-r.width,y:a};break;default:c={x:t.x,y:t.y}}var u=o?$e(o):null;if(u!=null){var l=u==="y"?"height":"width";switch(s){case pt:c[u]=c[u]-(t[l]/2-r[l]/2);break;case Lt:c[u]=c[u]+(t[l]/2-r[l]/2);break}}return c}function nn(){return{top:0,right:0,bottom:0,left:0}}function on(e){return Object.assign({},nn(),e)}function sn(e,t){return t.reduce(function(r,n){return r[n]=e,r},{})}function ht(e,t){t===void 0&&(t={});var r=t,n=r.placement,o=n===void 0?e.placement:n,s=r.boundary,i=s===void 0?Ro:s,a=r.rootBoundary,c=a===void 0?Zr:a,u=r.elementContext,l=u===void 0?St:u,f=r.altBoundary,g=f===void 0?!1:f,p=r.padding,h=p===void 0?0:p,m=on(typeof h!="number"?h:sn(h,Nt)),d=l===St?ko:St,w=e.rects.popper,A=e.elements[g?d:l],T=ei(lt(A)?A:A.contextElement||J(e.elements.popper),i,c),v=ft(e.elements.reference),E=rn({reference:v,element:w,strategy:"absolute",placement:o}),b=Ne(Object.assign({},w,E)),y=l===St?b:v,O={top:T.top-y.top+m.top,bottom:y.bottom-T.bottom+m.bottom,left:T.left-y.left+m.left,right:y.right-T.right+m.right},x=e.modifiersData.offset;if(l===St&&x){var C=x[o];Object.keys(O).forEach(function(_){var L=[B,$].indexOf(_)>=0?1:-1,et=[I,$].indexOf(_)>=0?"y":"x";O[_]+=C[et]*L})}return O}var zr={placement:"bottom",modifiers:[],strategy:"absolute"};function Ur(){for(var e=arguments.length,t=new Array(e),r=0;r=0?-1:1,s=typeof r=="function"?r(Object.assign({},t,{placement:e})):r,i=s[0],a=s[1];return i=i||0,a=(a||0)*o,[P,B].indexOf(n)>=0?{x:a,y:i}:{x:i,y:a}}function ui(e){var t=e.state,r=e.options,n=e.name,o=r.offset,s=o===void 0?[0,0]:o,i=tn.reduce(function(l,f){return l[f]=li(f,t.rects,s),l},{}),a=i[t.placement],c=a.x,u=a.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=c,t.modifiersData.popperOffsets.y+=u),t.modifiersData[n]=i}var an={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:ui},fi={left:"right",right:"left",bottom:"top",top:"bottom"};function Qt(e){return e.replace(/left|right|bottom|top/g,function(t){return fi[t]})}var pi={start:"end",end:"start"};function Gr(e){return e.replace(/start|end/g,function(t){return pi[t]})}function di(e,t){t===void 0&&(t={});var r=t,n=r.placement,o=r.boundary,s=r.rootBoundary,i=r.padding,a=r.flipVariations,c=r.allowedAutoPlacements,u=c===void 0?tn:c,l=dt(n),f=l?a?qr:qr.filter(function(h){return dt(h)===l}):Nt,g=f.filter(function(h){return u.indexOf(h)>=0});g.length===0&&(g=f);var p=g.reduce(function(h,m){return h[m]=ht(e,{placement:m,boundary:o,rootBoundary:s,padding:i})[V(m)],h},{});return Object.keys(p).sort(function(h,m){return p[h]-p[m]})}function hi(e){if(V(e)===ke)return[];var t=Qt(e);return[Gr(e),t,Gr(t)]}function mi(e){var t=e.state,r=e.options,n=e.name;if(!t.modifiersData[n]._skip){for(var o=r.mainAxis,s=o===void 0?!0:o,i=r.altAxis,a=i===void 0?!0:i,c=r.fallbackPlacements,u=r.padding,l=r.boundary,f=r.rootBoundary,g=r.altBoundary,p=r.flipVariations,h=p===void 0?!0:p,m=r.allowedAutoPlacements,d=t.options.placement,w=V(d),A=w===d,T=c||(A||!h?[Qt(d)]:hi(d)),v=[d].concat(T).reduce(function(at,G){return at.concat(V(G)===ke?di(t,{placement:G,boundary:l,rootBoundary:f,padding:u,flipVariations:h,allowedAutoPlacements:m}):G)},[]),E=t.rects.reference,b=t.rects.popper,y=new Map,O=!0,x=v[0],C=0;C=0,yt=bt?"width":"height",R=ht(t,{placement:_,boundary:l,rootBoundary:f,altBoundary:g,padding:u}),j=bt?et?B:P:et?$:I;E[yt]>b[yt]&&(j=Qt(j));var kt=Qt(j),rt=[];if(s&&rt.push(R[L]<=0),a&&rt.push(R[j]<=0,R[kt]<=0),rt.every(function(at){return at})){x=_,O=!1;break}y.set(_,rt)}if(O)for(var $t=h?3:1,ce=function(G){var _t=v.find(function(jt){var nt=y.get(jt);if(nt)return nt.slice(0,G).every(function(le){return le})});if(_t)return x=_t,"break"},Et=$t;Et>0;Et--){var Bt=ce(Et);if(Bt==="break")break}t.placement!==x&&(t.modifiersData[n]._skip=!0,t.placement=x,t.reset=!0)}}var cn={name:"flip",enabled:!0,phase:"main",fn:mi,requiresIfExists:["offset"],data:{_skip:!1}};function gi(e){return e==="x"?"y":"x"}function Ct(e,t,r){return it(e,Xt(t,r))}function vi(e,t,r){var n=Ct(e,t,r);return n>r?r:n}function bi(e){var t=e.state,r=e.options,n=e.name,o=r.mainAxis,s=o===void 0?!0:o,i=r.altAxis,a=i===void 0?!1:i,c=r.boundary,u=r.rootBoundary,l=r.altBoundary,f=r.padding,g=r.tether,p=g===void 0?!0:g,h=r.tetherOffset,m=h===void 0?0:h,d=ht(t,{boundary:c,rootBoundary:u,padding:f,altBoundary:l}),w=V(t.placement),A=dt(t.placement),T=!A,v=$e(w),E=gi(v),b=t.modifiersData.popperOffsets,y=t.rects.reference,O=t.rects.popper,x=typeof m=="function"?m(Object.assign({},t.rects,{placement:t.placement})):m,C=typeof x=="number"?{mainAxis:x,altAxis:x}:Object.assign({mainAxis:0,altAxis:0},x),_=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,L={x:0,y:0};if(b){if(s){var et,bt=v==="y"?I:P,yt=v==="y"?$:B,R=v==="y"?"height":"width",j=b[v],kt=j+d[bt],rt=j-d[yt],$t=p?-O[R]/2:0,ce=A===pt?y[R]:O[R],Et=A===pt?-O[R]:-y[R],Bt=t.elements.arrow,at=p&&Bt?Re(Bt):{width:0,height:0},G=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:nn(),_t=G[bt],jt=G[yt],nt=Ct(0,y[R],at[R]),le=T?y[R]/2-$t-nt-_t-C.mainAxis:ce-nt-_t-C.mainAxis,Bn=T?-y[R]/2+$t+nt+jt+C.mainAxis:Et+nt+jt+C.mainAxis,ue=t.elements.arrow&&Dt(t.elements.arrow),jn=ue?v==="y"?ue.clientTop||0:ue.clientLeft||0:0,dr=(et=_==null?void 0:_[v])!=null?et:0,Fn=j+le-dr-jn,Hn=j+Bn-dr,hr=Ct(p?Xt(kt,Fn):kt,j,p?it(rt,Hn):rt);b[v]=hr,L[v]=hr-j}if(a){var mr,Vn=v==="x"?I:P,qn=v==="x"?$:B,ot=b[E],Ft=E==="y"?"height":"width",gr=ot+d[Vn],vr=ot-d[qn],fe=[I,P].indexOf(w)!==-1,br=(mr=_==null?void 0:_[E])!=null?mr:0,yr=fe?gr:ot-y[Ft]-O[Ft]-br+C.altAxis,Er=fe?ot+y[Ft]+O[Ft]-br-C.altAxis:vr,_r=p&&fe?vi(yr,ot,Er):Ct(p?yr:gr,ot,p?Er:vr);b[E]=_r,L[E]=_r-ot}t.modifiersData[n]=L}}var ln={name:"preventOverflow",enabled:!0,phase:"main",fn:bi,requiresIfExists:["offset"]},yi=function(t,r){return t=typeof t=="function"?t(Object.assign({},r.rects,{placement:r.placement})):t,on(typeof t!="number"?t:sn(t,Nt))};function Ei(e){var t,r=e.state,n=e.name,o=e.options,s=r.elements.arrow,i=r.modifiersData.popperOffsets,a=V(r.placement),c=$e(a),u=[P,B].indexOf(a)>=0,l=u?"height":"width";if(!(!s||!i)){var f=yi(o.padding,r),g=Re(s),p=c==="y"?I:P,h=c==="y"?$:B,m=r.rects.reference[l]+r.rects.reference[c]-i[c]-r.rects.popper[l],d=i[c]-r.rects.reference[c],w=Dt(s),A=w?c==="y"?w.clientHeight||0:w.clientWidth||0:0,T=m/2-d/2,v=f[p],E=A-g[l]-f[h],b=A/2-g[l]/2+T,y=Ct(v,b,E),O=c;r.modifiersData[n]=(t={},t[O]=y,t.centerOffset=y-b,t)}}function _i(e){var t=e.state,r=e.options,n=r.element,o=n===void 0?"[data-popper-arrow]":n;o!=null&&(typeof o=="string"&&(o=t.elements.popper.querySelector(o),!o)||en(t.elements.popper,o)&&(t.elements.arrow=o))}var un={name:"arrow",enabled:!0,phase:"main",fn:Ei,effect:_i,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Kr(e,t,r){return r===void 0&&(r={x:0,y:0}),{top:e.top-t.height-r.y,right:e.right-t.width+r.x,bottom:e.bottom-t.height+r.y,left:e.left-t.width-r.x}}function Qr(e){return[I,B,$,P].some(function(t){return e[t]>=0})}function wi(e){var t=e.state,r=e.name,n=t.rects.reference,o=t.rects.popper,s=t.modifiersData.preventOverflow,i=ht(t,{elementContext:"reference"}),a=ht(t,{altBoundary:!0}),c=Kr(i,n),u=Kr(a,o,s),l=Qr(c),f=Qr(u);t.modifiersData[r]={referenceClippingOffsets:c,popperEscapeOffsets:u,isReferenceHidden:l,hasPopperEscaped:f},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":l,"data-popper-escaped":f})}var fn={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:wi},Ai=[je,Fe,He,Ve],Ti=Be({defaultModifiers:Ai}),pn=[je,Fe,He,Ve,an,cn,ln,un,fn],Oi=Be({defaultModifiers:pn});D.applyStyles=Ve;D.arrow=un;D.computeStyles=He;D.createPopper=Oi;D.createPopperLite=Ti;D.defaultModifiers=pn;D.detectOverflow=ht;D.eventListeners=je;D.flip=cn;D.hide=fn;D.offset=an;D.popperGenerator=Be;D.popperOffsets=Fe;D.preventOverflow=ln});var K=new Map,Vt={set(e,t,r){K.has(e)||K.set(e,new Map);let n=K.get(e);if(!n.has(t)&&n.size!==0){console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`);return}n.set(t,r)},get(e,t){return K.has(e)&&K.get(e).get(t)||null},remove(e,t){if(!K.has(e))return;let r=K.get(e);r.delete(t),r.size===0&&K.delete(e)}};var me="transitionend",ge=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,(t,r)=>`#${CSS.escape(r)}`)),e),xr=e=>e==null?`${e}`:Object.prototype.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase(),Cr=e=>{do e+=Math.floor(Math.random()*1e6);while(document.getElementById(e));return e},to=e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:r}=window.getComputedStyle(e),n=Number.parseFloat(t),o=Number.parseFloat(r);return!n&&!o?0:(t=t.split(",")[0],r=r.split(",")[0],(Number.parseFloat(t)+Number.parseFloat(r))*1e3)},eo=e=>{e.dispatchEvent(new Event(me))},X=e=>!e||typeof e!="object"?!1:(typeof e.jquery!="undefined"&&(e=e[0]),typeof e.nodeType!="undefined"),Y=e=>X(e)?e.jquery?e[0]:e:typeof e=="string"&&e.length>0?document.querySelector(ge(e)):null,Lr=e=>{if(!X(e)||e.getClientRects().length===0)return!1;let t=getComputedStyle(e).getPropertyValue("visibility")==="visible",r=e.closest("details:not([open])");if(!r)return t;if(r!==e){let n=e.closest("summary");if(n&&n.parentNode!==r||n===null)return!1}return t},Dr=e=>!e||e.nodeType!==Node.ELEMENT_NODE||e.classList.contains("disabled")?!0:typeof e.disabled!="undefined"?e.disabled:e.hasAttribute("disabled")&&e.getAttribute("disabled")!=="false",ve=e=>{if(!document.documentElement.attachShadow)return null;if(typeof e.getRootNode=="function"){let t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?ve(e.parentNode):null},be=()=>{},Nr=e=>{e.offsetHeight},ye=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,he=[],ro=e=>{document.readyState==="loading"?(he.length||document.addEventListener("DOMContentLoaded",()=>{for(let t of he)t()}),he.push(e)):e()},Ee=()=>document.documentElement.dir==="rtl",qt=e=>{ro(()=>{let t=ye();if(t){let r=e.NAME,n=t.fn[r];t.fn[r]=e.jQueryInterface,t.fn[r].Constructor=e,t.fn[r].noConflict=()=>(t.fn[r]=n,e.jQueryInterface)}})},Q=(e,t=[],r=e)=>typeof e=="function"?e.call(...t):r,Ir=(e,t,r=!0)=>{if(!r){Q(e);return}let o=to(t)+5,s=!1,i=({target:a})=>{a===t&&(s=!0,t.removeEventListener(me,i),Q(e))};t.addEventListener(me,i),setTimeout(()=>{s||eo(t)},o)};var no=/[^.]*(?=\..*)\.|.*/,oo=/\..*/,io=/::\d+$/,_e={},Pr=1,Rr={mouseenter:"mouseover",mouseleave:"mouseout"},so=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function kr(e,t){return t&&`${t}::${Pr++}`||e.uidEvent||Pr++}function $r(e){let t=kr(e);return e.uidEvent=t,_e[t]=_e[t]||{},_e[t]}function ao(e,t){return function r(n){return Te(n,{delegateTarget:e}),r.oneOff&&Ae.off(e,n.type,t),t.apply(e,[n])}}function co(e,t,r){return function n(o){let s=e.querySelectorAll(t);for(let{target:i}=o;i&&i!==this;i=i.parentNode)for(let a of s)if(a===i)return Te(o,{delegateTarget:i}),n.oneOff&&Ae.off(e,o.type,t,r),r.apply(i,[o])}}function Br(e,t,r=null){return Object.values(e).find(n=>n.callable===t&&n.delegationSelector===r)}function jr(e,t,r){let n=typeof t=="string",o=n?r:t||r,s=Fr(e);return so.has(s)||(s=e),[n,o,s]}function Mr(e,t,r,n,o){if(typeof t!="string"||!e)return;let[s,i,a]=jr(t,r,n);t in Rr&&(i=(h=>function(m){if(!m.relatedTarget||m.relatedTarget!==m.delegateTarget&&!m.delegateTarget.contains(m.relatedTarget))return h.call(this,m)})(i));let c=$r(e),u=c[a]||(c[a]={}),l=Br(u,i,s?r:null);if(l){l.oneOff=l.oneOff&&o;return}let f=kr(i,t.replace(no,"")),g=s?co(e,r,i):ao(e,i);g.delegationSelector=s?r:null,g.callable=i,g.oneOff=o,g.uidEvent=f,u[f]=g,e.addEventListener(a,g,s)}function we(e,t,r,n,o){let s=Br(t[r],n,o);s&&(e.removeEventListener(r,s,!!o),delete t[r][s.uidEvent])}function lo(e,t,r,n){let o=t[r]||{};for(let[s,i]of Object.entries(o))s.includes(n)&&we(e,t,r,i.callable,i.delegationSelector)}function Fr(e){return e=e.replace(oo,""),Rr[e]||e}var Ae={on(e,t,r,n){Mr(e,t,r,n,!1)},one(e,t,r,n){Mr(e,t,r,n,!0)},off(e,t,r,n){if(typeof t!="string"||!e)return;let[o,s,i]=jr(t,r,n),a=i!==t,c=$r(e),u=c[i]||{},l=t.startsWith(".");if(typeof s!="undefined"){if(!Object.keys(u).length)return;we(e,c,i,s,o?r:null);return}if(l)for(let f of Object.keys(c))lo(e,c,f,t.slice(1));for(let[f,g]of Object.entries(u)){let p=f.replace(io,"");(!a||t.includes(p))&&we(e,c,i,g.callable,g.delegationSelector)}},trigger(e,t,r){if(typeof t!="string"||!e)return null;let n=ye(),o=Fr(t),s=t!==o,i=null,a=!0,c=!0,u=!1;s&&n&&(i=n.Event(t,r),n(e).trigger(i),a=!i.isPropagationStopped(),c=!i.isImmediatePropagationStopped(),u=i.isDefaultPrevented());let l=Te(new Event(t,{bubbles:a,cancelable:!0}),r);return u&&l.preventDefault(),c&&e.dispatchEvent(l),l.defaultPrevented&&i&&i.preventDefault(),l}};function Te(e,t={}){for(let[r,n]of Object.entries(t))try{e[r]=n}catch(o){Object.defineProperty(e,r,{configurable:!0,get(){return n}})}return e}var S=Ae;function Hr(e){if(e==="true")return!0;if(e==="false")return!1;if(e===Number(e).toString())return Number(e);if(e===""||e==="null")return null;if(typeof e!="string")return e;try{return JSON.parse(decodeURIComponent(e))}catch(t){return e}}function Oe(e){return e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}var uo={setDataAttribute(e,t,r){e.setAttribute(`data-bs-${Oe(t)}`,r)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${Oe(t)}`)},getDataAttributes(e){if(!e)return{};let t={},r=Object.keys(e.dataset).filter(n=>n.startsWith("bs")&&!n.startsWith("bsConfig"));for(let n of r){let o=n.replace(/^bs/,"");o=o.charAt(0).toLowerCase()+o.slice(1),t[o]=Hr(e.dataset[n])}return t},getDataAttribute(e,t){return Hr(e.getAttribute(`data-bs-${Oe(t)}`))}},Tt=uo;var Se=class{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,r){let n=X(r)?Tt.getDataAttribute(r,"config"):{};return N(N(N(N({},this.constructor.Default),typeof n=="object"?n:{}),X(r)?Tt.getDataAttributes(r):{}),typeof t=="object"?t:{})}_typeCheckConfig(t,r=this.constructor.DefaultType){for(let[n,o]of Object.entries(r)){let s=t[n],i=X(s)?"element":xr(s);if(!new RegExp(o).test(i))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${i}" but expected type "${o}".`)}}},Wt=Se;var fo="5.3.8",xe=class extends Wt{constructor(t,r){super(),t=Y(t),t&&(this._element=t,this._config=this._getConfig(r),Vt.set(this._element,this.constructor.DATA_KEY,this))}dispose(){Vt.remove(this._element,this.constructor.DATA_KEY),S.off(this._element,this.constructor.EVENT_KEY);for(let t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,r,n=!0){Ir(t,r,n)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return Vt.get(Y(t),this.DATA_KEY)}static getOrCreateInstance(t,r={}){return this.getInstance(t)||new this(t,typeof r=="object"?r:null)}static get VERSION(){return fo}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}},zt=xe;var Ce=e=>{let t=e.getAttribute("data-bs-target");if(!t||t==="#"){let r=e.getAttribute("href");if(!r||!r.includes("#")&&!r.startsWith("."))return null;r.includes("#")&&!r.startsWith("#")&&(r=`#${r.split("#")[1]}`),t=r&&r!=="#"?r.trim():null}return t?t.split(",").map(r=>ge(r)).join(","):null},Ut={find(e,t=document.documentElement){return[].concat(...Element.prototype.querySelectorAll.call(t,e))},findOne(e,t=document.documentElement){return Element.prototype.querySelector.call(t,e)},children(e,t){return[].concat(...e.children).filter(r=>r.matches(t))},parents(e,t){let r=[],n=e.parentNode.closest(t);for(;n;)r.push(n),n=n.parentNode.closest(t);return r},prev(e,t){let r=e.previousElementSibling;for(;r;){if(r.matches(t))return[r];r=r.previousElementSibling}return[]},next(e,t){let r=e.nextElementSibling;for(;r;){if(r.matches(t))return[r];r=r.nextElementSibling}return[]},focusableChildren(e){let t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(r=>`${r}:not([tabindex^="-"])`).join(",");return this.find(t,e).filter(r=>!Dr(r)&&Lr(r))},getSelectorFromElement(e){let t=Ce(e);return t&&Ut.findOne(t)?t:null},getElementFromSelector(e){let t=Ce(e);return t?Ut.findOne(t):null},getMultipleElementsFromSelector(e){let t=Ce(e);return t?Ut.find(t):[]}},F=Ut;var po="collapse",ho="bs.collapse",Ot=`.${ho}`,mo=".data-api",go=`show${Ot}`,vo=`shown${Ot}`,bo=`hide${Ot}`,yo=`hidden${Ot}`,Eo=`click${Ot}${mo}`,Le="show",ct="collapse",Yt="collapsing",_o="collapsed",wo=`:scope .${ct} .${ct}`,Ao="collapse-horizontal",To="width",Oo="height",So=".collapse.show, .collapse.collapsing",De='[data-bs-toggle="collapse"]',xo={parent:null,toggle:!0},Co={parent:"(null|element)",toggle:"boolean"},Gt=class e extends zt{constructor(t,r){super(t,r),this._isTransitioning=!1,this._triggerArray=[];let n=F.find(De);for(let o of n){let s=F.getSelectorFromElement(o),i=F.find(s).filter(a=>a===this._element);s!==null&&i.length&&this._triggerArray.push(o)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return xo}static get DefaultType(){return Co}static get NAME(){return po}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(So).filter(a=>a!==this._element).map(a=>e.getOrCreateInstance(a,{toggle:!1}))),t.length&&t[0]._isTransitioning||S.trigger(this._element,go).defaultPrevented)return;for(let a of t)a.hide();let n=this._getDimension();this._element.classList.remove(ct),this._element.classList.add(Yt),this._element.style[n]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;let o=()=>{this._isTransitioning=!1,this._element.classList.remove(Yt),this._element.classList.add(ct,Le),this._element.style[n]="",S.trigger(this._element,vo)},i=`scroll${n[0].toUpperCase()+n.slice(1)}`;this._queueCallback(o,this._element,!0),this._element.style[n]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown()||S.trigger(this._element,bo).defaultPrevented)return;let r=this._getDimension();this._element.style[r]=`${this._element.getBoundingClientRect()[r]}px`,Nr(this._element),this._element.classList.add(Yt),this._element.classList.remove(ct,Le);for(let o of this._triggerArray){let s=F.getElementFromSelector(o);s&&!this._isShown(s)&&this._addAriaAndCollapsedClass([o],!1)}this._isTransitioning=!0;let n=()=>{this._isTransitioning=!1,this._element.classList.remove(Yt),this._element.classList.add(ct),S.trigger(this._element,yo)};this._element.style[r]="",this._queueCallback(n,this._element,!0)}_isShown(t=this._element){return t.classList.contains(Le)}_configAfterMerge(t){return t.toggle=!!t.toggle,t.parent=Y(t.parent),t}_getDimension(){return this._element.classList.contains(Ao)?To:Oo}_initializeChildren(){if(!this._config.parent)return;let t=this._getFirstLevelChildren(De);for(let r of t){let n=F.getElementFromSelector(r);n&&this._addAriaAndCollapsedClass([r],this._isShown(n))}}_getFirstLevelChildren(t){let r=F.find(wo,this._config.parent);return F.find(t,this._config.parent).filter(n=>!r.includes(n))}_addAriaAndCollapsedClass(t,r){if(t.length)for(let n of t)n.classList.toggle(_o,!r),n.setAttribute("aria-expanded",r)}static jQueryInterface(t){let r={};return typeof t=="string"&&/show|hide/.test(t)&&(r.toggle=!1),this.each(function(){let n=e.getOrCreateInstance(this,r);if(typeof t=="string"){if(typeof n[t]=="undefined")throw new TypeError(`No method named "${t}"`);n[t]()}})}};S.on(document,Eo,De,function(e){(e.target.tagName==="A"||e.delegateTarget&&e.delegateTarget.tagName==="A")&&e.preventDefault();for(let t of F.getMultipleElementsFromSelector(this))Gt.getOrCreateInstance(t,{toggle:!1}).toggle()});qt(Gt);var Vs=document.getElementsByClassName("collapse");var Ye=Zn(dn());var Si=/^aria-[\w-]*$/i,Zt={"*":["class","dir","id","lang","role",Si],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},xi=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Ci=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,Li=(e,t)=>{let r=e.nodeName.toLowerCase();return t.includes(r)?xi.has(r)?!!Ci.test(e.nodeValue):!0:t.filter(n=>n instanceof RegExp).some(n=>n.test(r))};function hn(e,t,r){if(!e.length)return e;if(r&&typeof r=="function")return r(e);let o=new window.DOMParser().parseFromString(e,"text/html"),s=[].concat(...o.body.querySelectorAll("*"));for(let i of s){let a=i.nodeName.toLowerCase();if(!Object.keys(t).includes(a)){i.remove();continue}let c=[].concat(...i.attributes),u=[].concat(t["*"]||[],t[a]||[]);for(let l of c)Li(l,u)||i.removeAttribute(l.nodeName)}return o.body.innerHTML}var Di="TemplateFactory",Ni={allowList:Zt,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},Ii={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Pi={entry:"(string|element|function|null)",selector:"(string|element)"},qe=class extends Wt{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Ni}static get DefaultType(){return Ii}static get NAME(){return Di}getContent(){return Object.values(this._config.content).map(t=>this._resolvePossibleFunction(t)).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content=N(N({},this._config.content),t),this}toHtml(){let t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(let[o,s]of Object.entries(this._config.content))this._setContent(t,s,o);let r=t.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&r.classList.add(...n.split(" ")),r}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(let[r,n]of Object.entries(t))super._typeCheckConfig({selector:r,entry:n},Pi)}_setContent(t,r,n){let o=F.findOne(n,t);if(o){if(r=this._resolvePossibleFunction(r),!r){o.remove();return}if(X(r)){this._putElementInTemplate(Y(r),o);return}if(this._config.html){o.innerHTML=this._maybeSanitize(r);return}o.textContent=r}}_maybeSanitize(t){return this._config.sanitize?hn(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return Q(t,[void 0,this])}_putElementInTemplate(t,r){if(this._config.html){r.innerHTML="",r.append(t);return}r.textContent=t.textContent}},mn=qe;var Mi="tooltip",Ri=new Set(["sanitize","allowList","sanitizeFn"]),We="fade",ki="modal",te="show",$i=".tooltip-inner",gn=`.${ki}`,vn="hide.bs.modal",It="hover",ze="focus",Ue="click",Bi="manual",ji="hide",Fi="hidden",Hi="show",Vi="shown",qi="inserted",Wi="click",zi="focusin",Ui="focusout",Yi="mouseenter",Gi="mouseleave",Ki={AUTO:"auto",TOP:"top",RIGHT:Ee()?"left":"right",BOTTOM:"bottom",LEFT:Ee()?"right":"left"},Qi={allowList:Zt,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},Xi={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"},ee=class e extends zt{constructor(t,r){if(typeof Ye=="undefined")throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org/docs/v2/)");super(t,r),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Qi}static get DefaultType(){return Xi}static get NAME(){return Mi}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){if(this._isEnabled){if(this._isShown()){this._leave();return}this._enter()}}dispose(){clearTimeout(this._timeout),S.off(this._element.closest(gn),vn,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if(this._element.style.display==="none")throw new Error("Please use show on visible elements");if(!(this._isWithContent()&&this._isEnabled))return;let t=S.trigger(this._element,this.constructor.eventName(Hi)),n=(ve(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!n)return;this._disposePopper();let o=this._getTipElement();this._element.setAttribute("aria-describedby",o.getAttribute("id"));let{container:s}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(s.append(o),S.trigger(this._element,this.constructor.eventName(qi))),this._popper=this._createPopper(o),o.classList.add(te),"ontouchstart"in document.documentElement)for(let a of[].concat(...document.body.children))S.on(a,"mouseover",be);let i=()=>{S.trigger(this._element,this.constructor.eventName(Vi)),this._isHovered===!1&&this._leave(),this._isHovered=!1};this._queueCallback(i,this.tip,this._isAnimated())}hide(){if(!this._isShown()||S.trigger(this._element,this.constructor.eventName(ji)).defaultPrevented)return;if(this._getTipElement().classList.remove(te),"ontouchstart"in document.documentElement)for(let o of[].concat(...document.body.children))S.off(o,"mouseover",be);this._activeTrigger[Ue]=!1,this._activeTrigger[ze]=!1,this._activeTrigger[It]=!1,this._isHovered=null;let n=()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),S.trigger(this._element,this.constructor.eventName(Fi)))};this._queueCallback(n,this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return!!this._getTitle()}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){let r=this._getTemplateFactory(t).toHtml();if(!r)return null;r.classList.remove(We,te),r.classList.add(`bs-${this.constructor.NAME}-auto`);let n=Cr(this.constructor.NAME).toString();return r.setAttribute("id",n),this._isAnimated()&&r.classList.add(We),r}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new mn(Or(N({},this._config),{content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)})),this._templateFactory}_getContentForTemplate(){return{[$i]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(We)}_isShown(){return this.tip&&this.tip.classList.contains(te)}_createPopper(t){let r=Q(this._config.placement,[this,t,this._element]),n=Ki[r.toUpperCase()];return Ye.createPopper(this._element,t,this._getPopperConfig(n))}_getOffset(){let{offset:t}=this._config;return typeof t=="string"?t.split(",").map(r=>Number.parseInt(r,10)):typeof t=="function"?r=>t(r,this._element):t}_resolvePossibleFunction(t){return Q(t,[this._element,this._element])}_getPopperConfig(t){let r={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:n=>{this._getTipElement().setAttribute("data-popper-placement",n.state.placement)}}]};return N(N({},r),Q(this._config.popperConfig,[void 0,r]))}_setListeners(){let t=this._config.trigger.split(" ");for(let r of t)if(r==="click")S.on(this._element,this.constructor.eventName(Wi),this._config.selector,n=>{let o=this._initializeOnDelegatedTarget(n);o._activeTrigger[Ue]=!(o._isShown()&&o._activeTrigger[Ue]),o.toggle()});else if(r!==Bi){let n=r===It?this.constructor.eventName(Yi):this.constructor.eventName(zi),o=r===It?this.constructor.eventName(Gi):this.constructor.eventName(Ui);S.on(this._element,n,this._config.selector,s=>{let i=this._initializeOnDelegatedTarget(s);i._activeTrigger[s.type==="focusin"?ze:It]=!0,i._enter()}),S.on(this._element,o,this._config.selector,s=>{let i=this._initializeOnDelegatedTarget(s);i._activeTrigger[s.type==="focusout"?ze:It]=i._element.contains(s.relatedTarget),i._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},S.on(this._element.closest(gn),vn,this._hideModalHandler)}_fixTitle(){let t=this._element.getAttribute("title");t&&(!this._element.getAttribute("aria-label")&&!this._element.textContent.trim()&&this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){if(this._isShown()||this._isHovered){this._isHovered=!0;return}this._isHovered=!0,this._setTimeout(()=>{this._isHovered&&this.show()},this._config.delay.show)}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout(()=>{this._isHovered||this.hide()},this._config.delay.hide))}_setTimeout(t,r){clearTimeout(this._timeout),this._timeout=setTimeout(t,r)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){let r=Tt.getDataAttributes(this._element);for(let n of Object.keys(r))Ri.has(n)&&delete r[n];return t=N(N({},r),typeof t=="object"&&t?t:{}),t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=t.container===!1?document.body:Y(t.container),typeof t.delay=="number"&&(t.delay={show:t.delay,hide:t.delay}),typeof t.title=="number"&&(t.title=t.title.toString()),typeof t.content=="number"&&(t.content=t.content.toString()),t}_getDelegateConfig(){let t={};for(let[r,n]of Object.entries(this._config))this.constructor.Default[r]!==n&&(t[r]=n);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each(function(){let r=e.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof r[t]=="undefined")throw new TypeError(`No method named "${t}"`);r[t]()}})}};qt(ee);var Z=ee;var bn=".code-header>button",Ji="far fa-clipboard",Zi="fas fa-check",re="timeout",yn="data-title-succeed",Pt="data-bs-original-title",Ge=2e3;function En(e){if(e.hasAttribute(re)){let t=e.getAttribute(re);if(Number(t)>Date.now())return!0}return!1}function _n(e){e.setAttribute(re,Date.now()+Ge)}function wn(e){e.removeAttribute(re)}function ts(e){let t=e.getAttribute(yn);e.setAttribute(Pt,t),Z.getInstance(e).show()}function es(e){Z.getInstance(e).hide(),e.removeAttribute(Pt)}function rs(e){e.children[0].setAttribute("class",Zi)}function ns(e){e.children[0].setAttribute("class",Ji)}function os(){let e=document.querySelectorAll(bn);if(e.length===0)return;let t=new ClipboardJS(bn,{target:r=>r.parentNode.nextElementSibling.querySelectorAll("code")[1]});[...e].map(r=>new Z(r,{placement:"left"})),t.on("success",r=>{let n=r.trigger;r.clearSelection(),!En(n)&&(rs(n),ts(n),_n(n),setTimeout(()=>{es(n),ns(n),wn(n)},Ge))})}function is(){let e=document.getElementById("copy-link");e!==null&&(e.addEventListener("click",t=>{let r=t.target;En(r)||navigator.clipboard.writeText(window.location.href).then(()=>{let n=r.getAttribute(Pt),o=r.getAttribute(yn);r.setAttribute(Pt,o),Z.getInstance(r).show(),_n(r),setTimeout(()=>{r.setAttribute(Pt,n),wn(r)},Ge)})}),e.addEventListener("mouseleave",t=>{Z.getInstance(t.target).hide()}))}function Ke(){os(),is()}var An="data-src",Tn="data-lqip",Qe={SHIMMER:"shimmer",BLUR:"blur"};function Xe(e){this.parentElement.classList.remove(e)}function ss(){this.complete&&(this.hasAttribute(Tn)?Xe.call(this,Qe.BLUR):Xe.call(this,Qe.SHIMMER))}function as(){let e=this.getAttribute(An);this.setAttribute("src",encodeURI(e)),this.removeAttribute(An)}function Je(){let e=document.querySelectorAll("article img");if(e.length===0)return;e.forEach(r=>{r.addEventListener("load",ss)}),document.querySelectorAll('article img[loading="lazy"]').forEach(r=>{r.complete&&Xe.call(r,Qe.SHIMMER)});let t=document.querySelectorAll(`article img[${Tn}="true"]`);t.length&&t.forEach(r=>{as.call(r)})}var Ze=".popup:not(.dark)",On=".popup:not(.light)",mt=Ze;function cs(e,t){mt===Ze?mt=On:mt=Ze,t===null&&(t=GLightbox({selector:`${mt}`})),[e,t]=[t,e]}function tr(){if(document.querySelector(".popup")===null)return;let e=!(document.querySelector(".popup.light")===null&&document.querySelector(".popup.dark")===null);Theme.visualState===Theme.DARK&&(mt=On);let t=GLightbox({selector:`${mt}`});if(e&&Theme.switchable){let r=null;window.addEventListener("message",n=>{n.source===window&&n.data&&n.data.id===Theme.ID&&cs(t,r)})}}var ls=document.getElementById("toc-bar"),us=document.getElementById("toc-solo-trigger"),fs=document.getElementsByClassName("toc-trigger"),z=document.getElementById("toc-popup"),ps=document.getElementById("toc-popup-close"),Sn="overflow-hidden",er="closing",Mt,Rt,gt=class gt{static initBar(){new IntersectionObserver(r=>{r.forEach(n=>{ls.classList.toggle("invisible",n.isIntersecting)})},{rootMargin:`-${U(this,Rt)}px 0px 0px 0px`}).observe(us),Ht(this,Mt,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach(r=>{r.onclick=()=>this.hidePopup()})}static refresh(){U(this,Mt)&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return z.open}static showPopup(){this.lockScroll(!0),z.showModal(),z.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){z.toggleAttribute(er),z.addEventListener("animationend",()=>{z.toggleAttribute(er),z.close()},{once:!0}),this.lockScroll(!1)}static lockScroll(t){document.documentElement.classList.toggle(Sn,t),document.body.classList.toggle(Sn,t)}static clickBackdrop(t){if(z.hasAttribute(er))return;let r=t.target.getBoundingClientRect();(t.clientXr.right||t.clientYr.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...fs].forEach(t=>{t.onclick=()=>this.showPopup()}),z.onclick=t=>this.clickBackdrop(t),ps.onclick=()=>this.hidePopup(),z.oncancel=t=>{t.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}};Mt=new WeakMap,Rt=new WeakMap,At(gt,Mt,!0),At(gt,Rt,48),wt(gt,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:U(gt,Rt)});var rr=gt;var ba=matchMedia("(min-width: 1200px)");var nr="mermaid",xn=Theme.getThemeMapper("default","dark");function ds(e){if(e.source===window&&e.data&&e.data.id===Theme.ID){[...document.getElementsByClassName(nr)].forEach(n=>{let o=n.previousSibling.children.item(0).textContent;n.textContent=o,n.removeAttribute("data-processed")});let r=xn[Theme.visualState];mermaid.initialize({theme:r}),mermaid.init(null,`.${nr}`)}}function hs(e){let t=e.textContent,r=e.parentElement;r.classList.add("d-none");let n=document.createElement("pre");n.classList.add(nr);let o=document.createTextNode(t);n.appendChild(o),r.after(n)}function or(){if(typeof mermaid=="undefined"||typeof mermaid.initialize!="function")return;let t={theme:xn[Theme.visualState]};[...document.getElementsByClassName("language-mermaid")].forEach(hs),mermaid.initialize(t),Theme.switchable&&window.addEventListener("message",ds)}var Cn=document.getElementById("mode-toggle");function ir(){Cn&&Cn.addEventListener("click",()=>{Theme.flip()})}function sr(){let e=document.getElementById("back-to-top");window.addEventListener("scroll",()=>{window.scrollY>50?e.classList.add("show"):e.classList.remove("show")}),e.addEventListener("click",()=>{window.scrollTo({top:0})})}function ar(){[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map(t=>new Z(t))}function cr(){ir(),sr(),ar()}var ms="sidebar-display",gs=document.getElementById("sidebar"),vs=document.getElementById("sidebar-trigger"),Ln=document.getElementById("mask"),tt,ne=class{static toggle(){Ht(this,tt,!U(this,tt)),document.body.toggleAttribute(ms,U(this,tt)),gs.classList.toggle("z-2",U(this,tt)),Ln.classList.toggle("d-none",!U(this,tt))}};tt=new WeakMap,At(ne,tt,!1);function lr(){vs.onclick=Ln.onclick=()=>ne.toggle()}var Dn=document.getElementById("sidebar-trigger"),ur=document.getElementById("search-trigger"),oe=document.getElementById("search-cancel"),Nn=document.querySelectorAll("#main-wrapper>.container>.row"),In=document.getElementById("topbar-title"),ie=document.getElementById("search"),Pn=document.getElementById("search-result-wrapper"),bs=document.getElementById("search-results"),vt=document.getElementById("search-input"),se=document.getElementById("search-hints"),fr="d-block",M="d-none",Mn="input-focus",Rn="d-flex",ae=class{static on(){Dn.classList.add(M),In.classList.add(M),ur.classList.add(M),ie.classList.add(Rn),oe.classList.add(fr)}static off(){oe.classList.remove(fr),ie.classList.remove(Rn),Dn.classList.remove(M),In.classList.remove(M),ur.classList.remove(M)}},st=class{static on(){this.resultVisible||(Pn.classList.remove(M),Nn.forEach(t=>{t.classList.add(M)}),this.resultVisible=!0)}static off(){this.resultVisible&&(bs.innerHTML="",se.classList.contains(M)&&se.classList.remove(M),Pn.classList.add(M),Nn.forEach(t=>{t.classList.remove(M)}),vt.textContent="",this.resultVisible=!1)}};wt(st,"resultVisible",!1);function kn(){return oe.classList.contains(fr)}function $n(){ur.addEventListener("click",()=>{ae.on(),st.on(),vt.focus()}),oe.addEventListener("click",()=>{ae.off(),st.off()}),vt.addEventListener("focus",()=>{ie.classList.add(Mn)}),vt.addEventListener("focusout",()=>{ie.classList.remove(Mn)}),vt.addEventListener("input",()=>{vt.value===""?kn()?se.classList.remove(M):st.off():(st.on(),kn()&&se.classList.add(M))})}function pr(){$n()}Je();tr();lr();pr();Ke();or();cr();})(); +(() => { + var __create = Object.create; + var __defProp = Object.defineProperty; + var __defProps = Object.defineProperties; + var __getOwnPropDesc = Object.getOwnPropertyDescriptor; + var __getOwnPropDescs = Object.getOwnPropertyDescriptors; + var __getOwnPropNames = Object.getOwnPropertyNames; + var __getOwnPropSymbols = Object.getOwnPropertySymbols; + var __getProtoOf = Object.getPrototypeOf; + var __hasOwnProp = Object.prototype.hasOwnProperty; + var __propIsEnum = Object.prototype.propertyIsEnumerable; + var __typeError = (msg) => { + throw TypeError(msg); + }; + var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; + var __spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + if (__getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(b)) { + if (__propIsEnum.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + } + return a; + }; + var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); + var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; + }; + var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; + }; + var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod + )); + var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg); + var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj)); + var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value); + var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/gohugoio/hugo-mod-jslibs-dist/popperjs/v2@v2.21100.20000/package/dist/cjs/popper.js + var require_popper = __commonJS({ + "ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/gohugoio/hugo-mod-jslibs-dist/popperjs/v2@v2.21100.20000/package/dist/cjs/popper.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + function getWindow(node) { + if (node == null) { + return window; + } + if (node.toString() !== "[object Window]") { + var ownerDocument = node.ownerDocument; + return ownerDocument ? ownerDocument.defaultView || window : window; + } + return node; + } + function isElement2(node) { + var OwnElement = getWindow(node).Element; + return node instanceof OwnElement || node instanceof Element; + } + function isHTMLElement(node) { + var OwnElement = getWindow(node).HTMLElement; + return node instanceof OwnElement || node instanceof HTMLElement; + } + function isShadowRoot(node) { + if (typeof ShadowRoot === "undefined") { + return false; + } + var OwnElement = getWindow(node).ShadowRoot; + return node instanceof OwnElement || node instanceof ShadowRoot; + } + var max = Math.max; + var min = Math.min; + var round = Math.round; + function getBoundingClientRect(element, includeScale) { + if (includeScale === void 0) { + includeScale = false; + } + var rect = element.getBoundingClientRect(); + var scaleX = 1; + var scaleY = 1; + if (isHTMLElement(element) && includeScale) { + var offsetHeight = element.offsetHeight; + var offsetWidth = element.offsetWidth; + if (offsetWidth > 0) { + scaleX = round(rect.width) / offsetWidth || 1; + } + if (offsetHeight > 0) { + scaleY = round(rect.height) / offsetHeight || 1; + } + } + return { + width: rect.width / scaleX, + height: rect.height / scaleY, + top: rect.top / scaleY, + right: rect.right / scaleX, + bottom: rect.bottom / scaleY, + left: rect.left / scaleX, + x: rect.left / scaleX, + y: rect.top / scaleY + }; + } + function getWindowScroll(node) { + var win = getWindow(node); + var scrollLeft = win.pageXOffset; + var scrollTop = win.pageYOffset; + return { + scrollLeft, + scrollTop + }; + } + function getHTMLElementScroll(element) { + return { + scrollLeft: element.scrollLeft, + scrollTop: element.scrollTop + }; + } + function getNodeScroll(node) { + if (node === getWindow(node) || !isHTMLElement(node)) { + return getWindowScroll(node); + } else { + return getHTMLElementScroll(node); + } + } + function getNodeName(element) { + return element ? (element.nodeName || "").toLowerCase() : null; + } + function getDocumentElement(element) { + return ((isElement2(element) ? element.ownerDocument : ( + // $FlowFixMe[prop-missing] + element.document + )) || window.document).documentElement; + } + function getWindowScrollBarX(element) { + return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft; + } + function getComputedStyle2(element) { + return getWindow(element).getComputedStyle(element); + } + function isScrollParent(element) { + var _getComputedStyle = getComputedStyle2(element), overflow = _getComputedStyle.overflow, overflowX = _getComputedStyle.overflowX, overflowY = _getComputedStyle.overflowY; + return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX); + } + function isElementScaled(element) { + var rect = element.getBoundingClientRect(); + var scaleX = round(rect.width) / element.offsetWidth || 1; + var scaleY = round(rect.height) / element.offsetHeight || 1; + return scaleX !== 1 || scaleY !== 1; + } + function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) { + if (isFixed === void 0) { + isFixed = false; + } + var isOffsetParentAnElement = isHTMLElement(offsetParent); + var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent); + var documentElement = getDocumentElement(offsetParent); + var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled); + var scroll = { + scrollLeft: 0, + scrollTop: 0 + }; + var offsets = { + x: 0, + y: 0 + }; + if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { + if (getNodeName(offsetParent) !== "body" || // https://github.com/popperjs/popper-core/issues/1078 + isScrollParent(documentElement)) { + scroll = getNodeScroll(offsetParent); + } + if (isHTMLElement(offsetParent)) { + offsets = getBoundingClientRect(offsetParent, true); + offsets.x += offsetParent.clientLeft; + offsets.y += offsetParent.clientTop; + } else if (documentElement) { + offsets.x = getWindowScrollBarX(documentElement); + } + } + return { + x: rect.left + scroll.scrollLeft - offsets.x, + y: rect.top + scroll.scrollTop - offsets.y, + width: rect.width, + height: rect.height + }; + } + function getLayoutRect(element) { + var clientRect = getBoundingClientRect(element); + var width = element.offsetWidth; + var height = element.offsetHeight; + if (Math.abs(clientRect.width - width) <= 1) { + width = clientRect.width; + } + if (Math.abs(clientRect.height - height) <= 1) { + height = clientRect.height; + } + return { + x: element.offsetLeft, + y: element.offsetTop, + width, + height + }; + } + function getParentNode(element) { + if (getNodeName(element) === "html") { + return element; + } + return ( + // this is a quicker (but less type safe) way to save quite some bytes from the bundle + // $FlowFixMe[incompatible-return] + // $FlowFixMe[prop-missing] + element.assignedSlot || // step into the shadow DOM of the parent of a slotted node + element.parentNode || // DOM Element detected + (isShadowRoot(element) ? element.host : null) || // ShadowRoot detected + // $FlowFixMe[incompatible-call]: HTMLElement is a Node + getDocumentElement(element) + ); + } + function getScrollParent(node) { + if (["html", "body", "#document"].indexOf(getNodeName(node)) >= 0) { + return node.ownerDocument.body; + } + if (isHTMLElement(node) && isScrollParent(node)) { + return node; + } + return getScrollParent(getParentNode(node)); + } + function listScrollParents(element, list) { + var _element$ownerDocumen; + if (list === void 0) { + list = []; + } + var scrollParent = getScrollParent(element); + var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body); + var win = getWindow(scrollParent); + var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent; + var updatedList = list.concat(target); + return isBody ? updatedList : ( + // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here + updatedList.concat(listScrollParents(getParentNode(target))) + ); + } + function isTableElement(element) { + return ["table", "td", "th"].indexOf(getNodeName(element)) >= 0; + } + function getTrueOffsetParent(element) { + if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837 + getComputedStyle2(element).position === "fixed") { + return null; + } + return element.offsetParent; + } + function getContainingBlock(element) { + var isFirefox = navigator.userAgent.toLowerCase().indexOf("firefox") !== -1; + var isIE = navigator.userAgent.indexOf("Trident") !== -1; + if (isIE && isHTMLElement(element)) { + var elementCss = getComputedStyle2(element); + if (elementCss.position === "fixed") { + return null; + } + } + var currentNode = getParentNode(element); + while (isHTMLElement(currentNode) && ["html", "body"].indexOf(getNodeName(currentNode)) < 0) { + var css = getComputedStyle2(currentNode); + if (css.transform !== "none" || css.perspective !== "none" || css.contain === "paint" || ["transform", "perspective"].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === "filter" || isFirefox && css.filter && css.filter !== "none") { + return currentNode; + } else { + currentNode = currentNode.parentNode; + } + } + return null; + } + function getOffsetParent(element) { + var window2 = getWindow(element); + var offsetParent = getTrueOffsetParent(element); + while (offsetParent && isTableElement(offsetParent) && getComputedStyle2(offsetParent).position === "static") { + offsetParent = getTrueOffsetParent(offsetParent); + } + if (offsetParent && (getNodeName(offsetParent) === "html" || getNodeName(offsetParent) === "body" && getComputedStyle2(offsetParent).position === "static")) { + return window2; + } + return offsetParent || getContainingBlock(element) || window2; + } + var top = "top"; + var bottom = "bottom"; + var right = "right"; + var left = "left"; + var auto = "auto"; + var basePlacements = [top, bottom, right, left]; + var start = "start"; + var end = "end"; + var clippingParents = "clippingParents"; + var viewport = "viewport"; + var popper = "popper"; + var reference = "reference"; + var variationPlacements = /* @__PURE__ */ basePlacements.reduce(function(acc, placement) { + return acc.concat([placement + "-" + start, placement + "-" + end]); + }, []); + var placements = /* @__PURE__ */ [].concat(basePlacements, [auto]).reduce(function(acc, placement) { + return acc.concat([placement, placement + "-" + start, placement + "-" + end]); + }, []); + var beforeRead = "beforeRead"; + var read = "read"; + var afterRead = "afterRead"; + var beforeMain = "beforeMain"; + var main = "main"; + var afterMain = "afterMain"; + var beforeWrite = "beforeWrite"; + var write = "write"; + var afterWrite = "afterWrite"; + var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite]; + function order(modifiers) { + var map = /* @__PURE__ */ new Map(); + var visited = /* @__PURE__ */ new Set(); + var result = []; + modifiers.forEach(function(modifier) { + map.set(modifier.name, modifier); + }); + function sort(modifier) { + visited.add(modifier.name); + var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []); + requires.forEach(function(dep) { + if (!visited.has(dep)) { + var depModifier = map.get(dep); + if (depModifier) { + sort(depModifier); + } + } + }); + result.push(modifier); + } + modifiers.forEach(function(modifier) { + if (!visited.has(modifier.name)) { + sort(modifier); + } + }); + return result; + } + function orderModifiers(modifiers) { + var orderedModifiers = order(modifiers); + return modifierPhases.reduce(function(acc, phase) { + return acc.concat(orderedModifiers.filter(function(modifier) { + return modifier.phase === phase; + })); + }, []); + } + function debounce(fn) { + var pending; + return function() { + if (!pending) { + pending = new Promise(function(resolve) { + Promise.resolve().then(function() { + pending = void 0; + resolve(fn()); + }); + }); + } + return pending; + }; + } + function format(str) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + return [].concat(args).reduce(function(p, c) { + return p.replace(/%s/, c); + }, str); + } + var INVALID_MODIFIER_ERROR = 'Popper: modifier "%s" provided an invalid %s property, expected %s but got %s'; + var MISSING_DEPENDENCY_ERROR = 'Popper: modifier "%s" requires "%s", but "%s" modifier is not available'; + var VALID_PROPERTIES = ["name", "enabled", "phase", "fn", "effect", "requires", "options"]; + function validateModifiers(modifiers) { + modifiers.forEach(function(modifier) { + [].concat(Object.keys(modifier), VALID_PROPERTIES).filter(function(value, index, self) { + return self.indexOf(value) === index; + }).forEach(function(key) { + switch (key) { + case "name": + if (typeof modifier.name !== "string") { + console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '"name"', '"string"', '"' + String(modifier.name) + '"')); + } + break; + case "enabled": + if (typeof modifier.enabled !== "boolean") { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"enabled"', '"boolean"', '"' + String(modifier.enabled) + '"')); + } + break; + case "phase": + if (modifierPhases.indexOf(modifier.phase) < 0) { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + modifierPhases.join(", "), '"' + String(modifier.phase) + '"')); + } + break; + case "fn": + if (typeof modifier.fn !== "function") { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"fn"', '"function"', '"' + String(modifier.fn) + '"')); + } + break; + case "effect": + if (modifier.effect != null && typeof modifier.effect !== "function") { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"effect"', '"function"', '"' + String(modifier.fn) + '"')); + } + break; + case "requires": + if (modifier.requires != null && !Array.isArray(modifier.requires)) { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requires"', '"array"', '"' + String(modifier.requires) + '"')); + } + break; + case "requiresIfExists": + if (!Array.isArray(modifier.requiresIfExists)) { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requiresIfExists"', '"array"', '"' + String(modifier.requiresIfExists) + '"')); + } + break; + case "options": + case "data": + break; + default: + console.error('PopperJS: an invalid property has been provided to the "' + modifier.name + '" modifier, valid properties are ' + VALID_PROPERTIES.map(function(s) { + return '"' + s + '"'; + }).join(", ") + '; but "' + key + '" was provided.'); + } + modifier.requires && modifier.requires.forEach(function(requirement) { + if (modifiers.find(function(mod) { + return mod.name === requirement; + }) == null) { + console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement)); + } + }); + }); + }); + } + function uniqueBy(arr, fn) { + var identifiers = /* @__PURE__ */ new Set(); + return arr.filter(function(item) { + var identifier = fn(item); + if (!identifiers.has(identifier)) { + identifiers.add(identifier); + return true; + } + }); + } + function getBasePlacement(placement) { + return placement.split("-")[0]; + } + function mergeByName(modifiers) { + var merged = modifiers.reduce(function(merged2, current) { + var existing = merged2[current.name]; + merged2[current.name] = existing ? Object.assign({}, existing, current, { + options: Object.assign({}, existing.options, current.options), + data: Object.assign({}, existing.data, current.data) + }) : current; + return merged2; + }, {}); + return Object.keys(merged).map(function(key) { + return merged[key]; + }); + } + function getViewportRect(element) { + var win = getWindow(element); + var html = getDocumentElement(element); + var visualViewport = win.visualViewport; + var width = html.clientWidth; + var height = html.clientHeight; + var x = 0; + var y = 0; + if (visualViewport) { + width = visualViewport.width; + height = visualViewport.height; + if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) { + x = visualViewport.offsetLeft; + y = visualViewport.offsetTop; + } + } + return { + width, + height, + x: x + getWindowScrollBarX(element), + y + }; + } + function getDocumentRect(element) { + var _element$ownerDocumen; + var html = getDocumentElement(element); + var winScroll = getWindowScroll(element); + var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body; + var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); + var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); + var x = -winScroll.scrollLeft + getWindowScrollBarX(element); + var y = -winScroll.scrollTop; + if (getComputedStyle2(body || html).direction === "rtl") { + x += max(html.clientWidth, body ? body.clientWidth : 0) - width; + } + return { + width, + height, + x, + y + }; + } + function contains(parent, child) { + var rootNode = child.getRootNode && child.getRootNode(); + if (parent.contains(child)) { + return true; + } else if (rootNode && isShadowRoot(rootNode)) { + var next = child; + do { + if (next && parent.isSameNode(next)) { + return true; + } + next = next.parentNode || next.host; + } while (next); + } + return false; + } + function rectToClientRect(rect) { + return Object.assign({}, rect, { + left: rect.x, + top: rect.y, + right: rect.x + rect.width, + bottom: rect.y + rect.height + }); + } + function getInnerBoundingClientRect(element) { + var rect = getBoundingClientRect(element); + rect.top = rect.top + element.clientTop; + rect.left = rect.left + element.clientLeft; + rect.bottom = rect.top + element.clientHeight; + rect.right = rect.left + element.clientWidth; + rect.width = element.clientWidth; + rect.height = element.clientHeight; + rect.x = rect.left; + rect.y = rect.top; + return rect; + } + function getClientRectFromMixedType(element, clippingParent) { + return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isElement2(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element))); + } + function getClippingParents(element) { + var clippingParents2 = listScrollParents(getParentNode(element)); + var canEscapeClipping = ["absolute", "fixed"].indexOf(getComputedStyle2(element).position) >= 0; + var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element; + if (!isElement2(clipperElement)) { + return []; + } + return clippingParents2.filter(function(clippingParent) { + return isElement2(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== "body" && (canEscapeClipping ? getComputedStyle2(clippingParent).position !== "static" : true); + }); + } + function getClippingRect(element, boundary, rootBoundary) { + var mainClippingParents = boundary === "clippingParents" ? getClippingParents(element) : [].concat(boundary); + var clippingParents2 = [].concat(mainClippingParents, [rootBoundary]); + var firstClippingParent = clippingParents2[0]; + var clippingRect = clippingParents2.reduce(function(accRect, clippingParent) { + var rect = getClientRectFromMixedType(element, clippingParent); + accRect.top = max(rect.top, accRect.top); + accRect.right = min(rect.right, accRect.right); + accRect.bottom = min(rect.bottom, accRect.bottom); + accRect.left = max(rect.left, accRect.left); + return accRect; + }, getClientRectFromMixedType(element, firstClippingParent)); + clippingRect.width = clippingRect.right - clippingRect.left; + clippingRect.height = clippingRect.bottom - clippingRect.top; + clippingRect.x = clippingRect.left; + clippingRect.y = clippingRect.top; + return clippingRect; + } + function getVariation(placement) { + return placement.split("-")[1]; + } + function getMainAxisFromPlacement(placement) { + return ["top", "bottom"].indexOf(placement) >= 0 ? "x" : "y"; + } + function computeOffsets(_ref) { + var reference2 = _ref.reference, element = _ref.element, placement = _ref.placement; + var basePlacement = placement ? getBasePlacement(placement) : null; + var variation = placement ? getVariation(placement) : null; + var commonX = reference2.x + reference2.width / 2 - element.width / 2; + var commonY = reference2.y + reference2.height / 2 - element.height / 2; + var offsets; + switch (basePlacement) { + case top: + offsets = { + x: commonX, + y: reference2.y - element.height + }; + break; + case bottom: + offsets = { + x: commonX, + y: reference2.y + reference2.height + }; + break; + case right: + offsets = { + x: reference2.x + reference2.width, + y: commonY + }; + break; + case left: + offsets = { + x: reference2.x - element.width, + y: commonY + }; + break; + default: + offsets = { + x: reference2.x, + y: reference2.y + }; + } + var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null; + if (mainAxis != null) { + var len = mainAxis === "y" ? "height" : "width"; + switch (variation) { + case start: + offsets[mainAxis] = offsets[mainAxis] - (reference2[len] / 2 - element[len] / 2); + break; + case end: + offsets[mainAxis] = offsets[mainAxis] + (reference2[len] / 2 - element[len] / 2); + break; + } + } + return offsets; + } + function getFreshSideObject() { + return { + top: 0, + right: 0, + bottom: 0, + left: 0 + }; + } + function mergePaddingObject(paddingObject) { + return Object.assign({}, getFreshSideObject(), paddingObject); + } + function expandToHashMap(value, keys) { + return keys.reduce(function(hashMap, key) { + hashMap[key] = value; + return hashMap; + }, {}); + } + function detectOverflow(state, options) { + if (options === void 0) { + options = {}; + } + var _options = options, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, _options$elementConte = _options.elementContext, elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, _options$altBoundary = _options.altBoundary, altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, _options$padding = _options.padding, padding = _options$padding === void 0 ? 0 : _options$padding; + var paddingObject = mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements)); + var altContext = elementContext === popper ? reference : popper; + var popperRect = state.rects.popper; + var element = state.elements[altBoundary ? altContext : elementContext]; + var clippingClientRect = getClippingRect(isElement2(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary); + var referenceClientRect = getBoundingClientRect(state.elements.reference); + var popperOffsets2 = computeOffsets({ + reference: referenceClientRect, + element: popperRect, + strategy: "absolute", + placement + }); + var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets2)); + var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; + var overflowOffsets = { + top: clippingClientRect.top - elementClientRect.top + paddingObject.top, + bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom, + left: clippingClientRect.left - elementClientRect.left + paddingObject.left, + right: elementClientRect.right - clippingClientRect.right + paddingObject.right + }; + var offsetData = state.modifiersData.offset; + if (elementContext === popper && offsetData) { + var offset2 = offsetData[placement]; + Object.keys(overflowOffsets).forEach(function(key) { + var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1; + var axis = [top, bottom].indexOf(key) >= 0 ? "y" : "x"; + overflowOffsets[key] += offset2[axis] * multiply; + }); + } + return overflowOffsets; + } + var INVALID_ELEMENT_ERROR = "Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element."; + var INFINITE_LOOP_ERROR = "Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash."; + var DEFAULT_OPTIONS = { + placement: "bottom", + modifiers: [], + strategy: "absolute" + }; + function areValidElements() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + return !args.some(function(element) { + return !(element && typeof element.getBoundingClientRect === "function"); + }); + } + function popperGenerator(generatorOptions) { + if (generatorOptions === void 0) { + generatorOptions = {}; + } + var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers2 = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2; + return function createPopper3(reference2, popper2, options) { + if (options === void 0) { + options = defaultOptions; + } + var state = { + placement: "bottom", + orderedModifiers: [], + options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions), + modifiersData: {}, + elements: { + reference: reference2, + popper: popper2 + }, + attributes: {}, + styles: {} + }; + var effectCleanupFns = []; + var isDestroyed = false; + var instance = { + state, + setOptions: function setOptions(setOptionsAction) { + var options2 = typeof setOptionsAction === "function" ? setOptionsAction(state.options) : setOptionsAction; + cleanupModifierEffects(); + state.options = Object.assign({}, defaultOptions, state.options, options2); + state.scrollParents = { + reference: isElement2(reference2) ? listScrollParents(reference2) : reference2.contextElement ? listScrollParents(reference2.contextElement) : [], + popper: listScrollParents(popper2) + }; + var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers2, state.options.modifiers))); + state.orderedModifiers = orderedModifiers.filter(function(m) { + return m.enabled; + }); + if (true) { + var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function(_ref) { + var name = _ref.name; + return name; + }); + validateModifiers(modifiers); + if (getBasePlacement(state.options.placement) === auto) { + var flipModifier = state.orderedModifiers.find(function(_ref2) { + var name = _ref2.name; + return name === "flip"; + }); + if (!flipModifier) { + console.error(['Popper: "auto" placements require the "flip" modifier be', "present and enabled to work."].join(" ")); + } + } + var _getComputedStyle = getComputedStyle2(popper2), marginTop = _getComputedStyle.marginTop, marginRight = _getComputedStyle.marginRight, marginBottom = _getComputedStyle.marginBottom, marginLeft = _getComputedStyle.marginLeft; + if ([marginTop, marginRight, marginBottom, marginLeft].some(function(margin) { + return parseFloat(margin); + })) { + console.warn(['Popper: CSS "margin" styles cannot be used to apply padding', "between the popper and its reference element or boundary.", "To replicate margin, use the `offset` modifier, as well as", "the `padding` option in the `preventOverflow` and `flip`", "modifiers."].join(" ")); + } + } + runModifierEffects(); + return instance.update(); + }, + // Sync update – it will always be executed, even if not necessary. This + // is useful for low frequency updates where sync behavior simplifies the + // logic. + // For high frequency updates (e.g. `resize` and `scroll` events), always + // prefer the async Popper#update method + forceUpdate: function forceUpdate() { + if (isDestroyed) { + return; + } + var _state$elements = state.elements, reference3 = _state$elements.reference, popper3 = _state$elements.popper; + if (!areValidElements(reference3, popper3)) { + if (true) { + console.error(INVALID_ELEMENT_ERROR); + } + return; + } + state.rects = { + reference: getCompositeRect(reference3, getOffsetParent(popper3), state.options.strategy === "fixed"), + popper: getLayoutRect(popper3) + }; + state.reset = false; + state.placement = state.options.placement; + state.orderedModifiers.forEach(function(modifier) { + return state.modifiersData[modifier.name] = Object.assign({}, modifier.data); + }); + var __debug_loops__ = 0; + for (var index = 0; index < state.orderedModifiers.length; index++) { + if (true) { + __debug_loops__ += 1; + if (__debug_loops__ > 100) { + console.error(INFINITE_LOOP_ERROR); + break; + } + } + if (state.reset === true) { + state.reset = false; + index = -1; + continue; + } + var _state$orderedModifie = state.orderedModifiers[index], fn = _state$orderedModifie.fn, _state$orderedModifie2 = _state$orderedModifie.options, _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, name = _state$orderedModifie.name; + if (typeof fn === "function") { + state = fn({ + state, + options: _options, + name, + instance + }) || state; + } + } + }, + // Async and optimistically optimized update – it will not be executed if + // not necessary (debounced to run at most once-per-tick) + update: debounce(function() { + return new Promise(function(resolve) { + instance.forceUpdate(); + resolve(state); + }); + }), + destroy: function destroy() { + cleanupModifierEffects(); + isDestroyed = true; + } + }; + if (!areValidElements(reference2, popper2)) { + if (true) { + console.error(INVALID_ELEMENT_ERROR); + } + return instance; + } + instance.setOptions(options).then(function(state2) { + if (!isDestroyed && options.onFirstUpdate) { + options.onFirstUpdate(state2); + } + }); + function runModifierEffects() { + state.orderedModifiers.forEach(function(_ref3) { + var name = _ref3.name, _ref3$options = _ref3.options, options2 = _ref3$options === void 0 ? {} : _ref3$options, effect2 = _ref3.effect; + if (typeof effect2 === "function") { + var cleanupFn = effect2({ + state, + name, + instance, + options: options2 + }); + var noopFn = function noopFn2() { + }; + effectCleanupFns.push(cleanupFn || noopFn); + } + }); + } + function cleanupModifierEffects() { + effectCleanupFns.forEach(function(fn) { + return fn(); + }); + effectCleanupFns = []; + } + return instance; + }; + } + var passive = { + passive: true + }; + function effect$2(_ref) { + var state = _ref.state, instance = _ref.instance, options = _ref.options; + var _options$scroll = options.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options.resize, resize = _options$resize === void 0 ? true : _options$resize; + var window2 = getWindow(state.elements.popper); + var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper); + if (scroll) { + scrollParents.forEach(function(scrollParent) { + scrollParent.addEventListener("scroll", instance.update, passive); + }); + } + if (resize) { + window2.addEventListener("resize", instance.update, passive); + } + return function() { + if (scroll) { + scrollParents.forEach(function(scrollParent) { + scrollParent.removeEventListener("scroll", instance.update, passive); + }); + } + if (resize) { + window2.removeEventListener("resize", instance.update, passive); + } + }; + } + var eventListeners = { + name: "eventListeners", + enabled: true, + phase: "write", + fn: function fn() { + }, + effect: effect$2, + data: {} + }; + function popperOffsets(_ref) { + var state = _ref.state, name = _ref.name; + state.modifiersData[name] = computeOffsets({ + reference: state.rects.reference, + element: state.rects.popper, + strategy: "absolute", + placement: state.placement + }); + } + var popperOffsets$1 = { + name: "popperOffsets", + enabled: true, + phase: "read", + fn: popperOffsets, + data: {} + }; + var unsetSides = { + top: "auto", + right: "auto", + bottom: "auto", + left: "auto" + }; + function roundOffsetsByDPR(_ref) { + var x = _ref.x, y = _ref.y; + var win = window; + var dpr = win.devicePixelRatio || 1; + return { + x: round(x * dpr) / dpr || 0, + y: round(y * dpr) / dpr || 0 + }; + } + function mapToStyles(_ref2) { + var _Object$assign2; + var popper2 = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, variation = _ref2.variation, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets, isFixed = _ref2.isFixed; + var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === "function" ? roundOffsets(offsets) : offsets, _ref3$x = _ref3.x, x = _ref3$x === void 0 ? 0 : _ref3$x, _ref3$y = _ref3.y, y = _ref3$y === void 0 ? 0 : _ref3$y; + var hasX = offsets.hasOwnProperty("x"); + var hasY = offsets.hasOwnProperty("y"); + var sideX = left; + var sideY = top; + var win = window; + if (adaptive) { + var offsetParent = getOffsetParent(popper2); + var heightProp = "clientHeight"; + var widthProp = "clientWidth"; + if (offsetParent === getWindow(popper2)) { + offsetParent = getDocumentElement(popper2); + if (getComputedStyle2(offsetParent).position !== "static" && position === "absolute") { + heightProp = "scrollHeight"; + widthProp = "scrollWidth"; + } + } + offsetParent = offsetParent; + if (placement === top || (placement === left || placement === right) && variation === end) { + sideY = bottom; + var offsetY = isFixed && win.visualViewport ? win.visualViewport.height : ( + // $FlowFixMe[prop-missing] + offsetParent[heightProp] + ); + y -= offsetY - popperRect.height; + y *= gpuAcceleration ? 1 : -1; + } + if (placement === left || (placement === top || placement === bottom) && variation === end) { + sideX = right; + var offsetX = isFixed && win.visualViewport ? win.visualViewport.width : ( + // $FlowFixMe[prop-missing] + offsetParent[widthProp] + ); + x -= offsetX - popperRect.width; + x *= gpuAcceleration ? 1 : -1; + } + } + var commonStyles = Object.assign({ + position + }, adaptive && unsetSides); + if (gpuAcceleration) { + var _Object$assign; + return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? "0" : "", _Object$assign[sideX] = hasX ? "0" : "", _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); + } + return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : "", _Object$assign2[sideX] = hasX ? x + "px" : "", _Object$assign2.transform = "", _Object$assign2)); + } + function computeStyles(_ref4) { + var state = _ref4.state, options = _ref4.options; + var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets; + if (true) { + var transitionProperty = getComputedStyle2(state.elements.popper).transitionProperty || ""; + if (adaptive && ["transform", "top", "right", "bottom", "left"].some(function(property) { + return transitionProperty.indexOf(property) >= 0; + })) { + console.warn(["Popper: Detected CSS transitions on at least one of the following", 'CSS properties: "transform", "top", "right", "bottom", "left".', "\n\n", 'Disable the "computeStyles" modifier\'s `adaptive` option to allow', "for smooth transitions, or remove these properties from the CSS", "transition declaration on the popper element if only transitioning", "opacity or background-color for example.", "\n\n", "We recommend using the popper element as a wrapper around an inner", "element that can have any CSS property transitioned for animations."].join(" ")); + } + } + var commonStyles = { + placement: getBasePlacement(state.placement), + variation: getVariation(state.placement), + popper: state.elements.popper, + popperRect: state.rects.popper, + gpuAcceleration, + isFixed: state.options.strategy === "fixed" + }; + if (state.modifiersData.popperOffsets != null) { + state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, { + offsets: state.modifiersData.popperOffsets, + position: state.options.strategy, + adaptive, + roundOffsets + }))); + } + if (state.modifiersData.arrow != null) { + state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, { + offsets: state.modifiersData.arrow, + position: "absolute", + adaptive: false, + roundOffsets + }))); + } + state.attributes.popper = Object.assign({}, state.attributes.popper, { + "data-popper-placement": state.placement + }); + } + var computeStyles$1 = { + name: "computeStyles", + enabled: true, + phase: "beforeWrite", + fn: computeStyles, + data: {} + }; + function applyStyles(_ref) { + var state = _ref.state; + Object.keys(state.elements).forEach(function(name) { + var style = state.styles[name] || {}; + var attributes = state.attributes[name] || {}; + var element = state.elements[name]; + if (!isHTMLElement(element) || !getNodeName(element)) { + return; + } + Object.assign(element.style, style); + Object.keys(attributes).forEach(function(name2) { + var value = attributes[name2]; + if (value === false) { + element.removeAttribute(name2); + } else { + element.setAttribute(name2, value === true ? "" : value); + } + }); + }); + } + function effect$1(_ref2) { + var state = _ref2.state; + var initialStyles = { + popper: { + position: state.options.strategy, + left: "0", + top: "0", + margin: "0" + }, + arrow: { + position: "absolute" + }, + reference: {} + }; + Object.assign(state.elements.popper.style, initialStyles.popper); + state.styles = initialStyles; + if (state.elements.arrow) { + Object.assign(state.elements.arrow.style, initialStyles.arrow); + } + return function() { + Object.keys(state.elements).forEach(function(name) { + var element = state.elements[name]; + var attributes = state.attributes[name] || {}; + var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); + var style = styleProperties.reduce(function(style2, property) { + style2[property] = ""; + return style2; + }, {}); + if (!isHTMLElement(element) || !getNodeName(element)) { + return; + } + Object.assign(element.style, style); + Object.keys(attributes).forEach(function(attribute) { + element.removeAttribute(attribute); + }); + }); + }; + } + var applyStyles$1 = { + name: "applyStyles", + enabled: true, + phase: "write", + fn: applyStyles, + effect: effect$1, + requires: ["computeStyles"] + }; + function distanceAndSkiddingToXY(placement, rects, offset2) { + var basePlacement = getBasePlacement(placement); + var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1; + var _ref = typeof offset2 === "function" ? offset2(Object.assign({}, rects, { + placement + })) : offset2, skidding = _ref[0], distance = _ref[1]; + skidding = skidding || 0; + distance = (distance || 0) * invertDistance; + return [left, right].indexOf(basePlacement) >= 0 ? { + x: distance, + y: skidding + } : { + x: skidding, + y: distance + }; + } + function offset(_ref2) { + var state = _ref2.state, options = _ref2.options, name = _ref2.name; + var _options$offset = options.offset, offset2 = _options$offset === void 0 ? [0, 0] : _options$offset; + var data = placements.reduce(function(acc, placement) { + acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset2); + return acc; + }, {}); + var _data$state$placement = data[state.placement], x = _data$state$placement.x, y = _data$state$placement.y; + if (state.modifiersData.popperOffsets != null) { + state.modifiersData.popperOffsets.x += x; + state.modifiersData.popperOffsets.y += y; + } + state.modifiersData[name] = data; + } + var offset$1 = { + name: "offset", + enabled: true, + phase: "main", + requires: ["popperOffsets"], + fn: offset + }; + var hash$1 = { + left: "right", + right: "left", + bottom: "top", + top: "bottom" + }; + function getOppositePlacement(placement) { + return placement.replace(/left|right|bottom|top/g, function(matched) { + return hash$1[matched]; + }); + } + var hash = { + start: "end", + end: "start" + }; + function getOppositeVariationPlacement(placement) { + return placement.replace(/start|end/g, function(matched) { + return hash[matched]; + }); + } + function computeAutoPlacement(state, options) { + if (options === void 0) { + options = {}; + } + var _options = options, placement = _options.placement, boundary = _options.boundary, rootBoundary = _options.rootBoundary, padding = _options.padding, flipVariations = _options.flipVariations, _options$allowedAutoP = _options.allowedAutoPlacements, allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP; + var variation = getVariation(placement); + var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function(placement2) { + return getVariation(placement2) === variation; + }) : basePlacements; + var allowedPlacements = placements$1.filter(function(placement2) { + return allowedAutoPlacements.indexOf(placement2) >= 0; + }); + if (allowedPlacements.length === 0) { + allowedPlacements = placements$1; + if (true) { + console.error(["Popper: The `allowedAutoPlacements` option did not allow any", "placements. Ensure the `placement` option matches the variation", "of the allowed placements.", 'For example, "auto" cannot be used to allow "bottom-start".', 'Use "auto-start" instead.'].join(" ")); + } + } + var overflows = allowedPlacements.reduce(function(acc, placement2) { + acc[placement2] = detectOverflow(state, { + placement: placement2, + boundary, + rootBoundary, + padding + })[getBasePlacement(placement2)]; + return acc; + }, {}); + return Object.keys(overflows).sort(function(a, b) { + return overflows[a] - overflows[b]; + }); + } + function getExpandedFallbackPlacements(placement) { + if (getBasePlacement(placement) === auto) { + return []; + } + var oppositePlacement = getOppositePlacement(placement); + return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)]; + } + function flip(_ref) { + var state = _ref.state, options = _ref.options, name = _ref.name; + if (state.modifiersData[name]._skip) { + return; + } + var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, specifiedFallbackPlacements = options.fallbackPlacements, padding = options.padding, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, _options$flipVariatio = options.flipVariations, flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, allowedAutoPlacements = options.allowedAutoPlacements; + var preferredPlacement = state.options.placement; + var basePlacement = getBasePlacement(preferredPlacement); + var isBasePlacement = basePlacement === preferredPlacement; + var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement)); + var placements2 = [preferredPlacement].concat(fallbackPlacements).reduce(function(acc, placement2) { + return acc.concat(getBasePlacement(placement2) === auto ? computeAutoPlacement(state, { + placement: placement2, + boundary, + rootBoundary, + padding, + flipVariations, + allowedAutoPlacements + }) : placement2); + }, []); + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var checksMap = /* @__PURE__ */ new Map(); + var makeFallbackChecks = true; + var firstFittingPlacement = placements2[0]; + for (var i = 0; i < placements2.length; i++) { + var placement = placements2[i]; + var _basePlacement = getBasePlacement(placement); + var isStartVariation = getVariation(placement) === start; + var isVertical = [top, bottom].indexOf(_basePlacement) >= 0; + var len = isVertical ? "width" : "height"; + var overflow = detectOverflow(state, { + placement, + boundary, + rootBoundary, + altBoundary, + padding + }); + var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top; + if (referenceRect[len] > popperRect[len]) { + mainVariationSide = getOppositePlacement(mainVariationSide); + } + var altVariationSide = getOppositePlacement(mainVariationSide); + var checks = []; + if (checkMainAxis) { + checks.push(overflow[_basePlacement] <= 0); + } + if (checkAltAxis) { + checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0); + } + if (checks.every(function(check) { + return check; + })) { + firstFittingPlacement = placement; + makeFallbackChecks = false; + break; + } + checksMap.set(placement, checks); + } + if (makeFallbackChecks) { + var numberOfChecks = flipVariations ? 3 : 1; + var _loop = function _loop2(_i2) { + var fittingPlacement = placements2.find(function(placement2) { + var checks2 = checksMap.get(placement2); + if (checks2) { + return checks2.slice(0, _i2).every(function(check) { + return check; + }); + } + }); + if (fittingPlacement) { + firstFittingPlacement = fittingPlacement; + return "break"; + } + }; + for (var _i = numberOfChecks; _i > 0; _i--) { + var _ret = _loop(_i); + if (_ret === "break") break; + } + } + if (state.placement !== firstFittingPlacement) { + state.modifiersData[name]._skip = true; + state.placement = firstFittingPlacement; + state.reset = true; + } + } + var flip$1 = { + name: "flip", + enabled: true, + phase: "main", + fn: flip, + requiresIfExists: ["offset"], + data: { + _skip: false + } + }; + function getAltAxis(axis) { + return axis === "x" ? "y" : "x"; + } + function within(min$1, value, max$1) { + return max(min$1, min(value, max$1)); + } + function withinMaxClamp(min2, value, max2) { + var v = within(min2, value, max2); + return v > max2 ? max2 : v; + } + function preventOverflow(_ref) { + var state = _ref.state, options = _ref.options, name = _ref.name; + var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, padding = options.padding, _options$tether = options.tether, tether = _options$tether === void 0 ? true : _options$tether, _options$tetherOffset = options.tetherOffset, tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset; + var overflow = detectOverflow(state, { + boundary, + rootBoundary, + padding, + altBoundary + }); + var basePlacement = getBasePlacement(state.placement); + var variation = getVariation(state.placement); + var isBasePlacement = !variation; + var mainAxis = getMainAxisFromPlacement(basePlacement); + var altAxis = getAltAxis(mainAxis); + var popperOffsets2 = state.modifiersData.popperOffsets; + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var tetherOffsetValue = typeof tetherOffset === "function" ? tetherOffset(Object.assign({}, state.rects, { + placement: state.placement + })) : tetherOffset; + var normalizedTetherOffsetValue = typeof tetherOffsetValue === "number" ? { + mainAxis: tetherOffsetValue, + altAxis: tetherOffsetValue + } : Object.assign({ + mainAxis: 0, + altAxis: 0 + }, tetherOffsetValue); + var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null; + var data = { + x: 0, + y: 0 + }; + if (!popperOffsets2) { + return; + } + if (checkMainAxis) { + var _offsetModifierState$; + var mainSide = mainAxis === "y" ? top : left; + var altSide = mainAxis === "y" ? bottom : right; + var len = mainAxis === "y" ? "height" : "width"; + var offset2 = popperOffsets2[mainAxis]; + var min$1 = offset2 + overflow[mainSide]; + var max$1 = offset2 - overflow[altSide]; + var additive = tether ? -popperRect[len] / 2 : 0; + var minLen = variation === start ? referenceRect[len] : popperRect[len]; + var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; + var arrowElement = state.elements.arrow; + var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : { + width: 0, + height: 0 + }; + var arrowPaddingObject = state.modifiersData["arrow#persistent"] ? state.modifiersData["arrow#persistent"].padding : getFreshSideObject(); + var arrowPaddingMin = arrowPaddingObject[mainSide]; + var arrowPaddingMax = arrowPaddingObject[altSide]; + var arrowLen = within(0, referenceRect[len], arrowRect[len]); + var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis; + var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis; + var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow); + var clientOffset = arrowOffsetParent ? mainAxis === "y" ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0; + var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0; + var tetherMin = offset2 + minOffset - offsetModifierValue - clientOffset; + var tetherMax = offset2 + maxOffset - offsetModifierValue; + var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset2, tether ? max(max$1, tetherMax) : max$1); + popperOffsets2[mainAxis] = preventedOffset; + data[mainAxis] = preventedOffset - offset2; + } + if (checkAltAxis) { + var _offsetModifierState$2; + var _mainSide = mainAxis === "x" ? top : left; + var _altSide = mainAxis === "x" ? bottom : right; + var _offset = popperOffsets2[altAxis]; + var _len = altAxis === "y" ? "height" : "width"; + var _min = _offset + overflow[_mainSide]; + var _max = _offset - overflow[_altSide]; + var isOriginSide = [top, left].indexOf(basePlacement) !== -1; + var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0; + var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis; + var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max; + var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max); + popperOffsets2[altAxis] = _preventedOffset; + data[altAxis] = _preventedOffset - _offset; + } + state.modifiersData[name] = data; + } + var preventOverflow$1 = { + name: "preventOverflow", + enabled: true, + phase: "main", + fn: preventOverflow, + requiresIfExists: ["offset"] + }; + var toPaddingObject = function toPaddingObject2(padding, state) { + padding = typeof padding === "function" ? padding(Object.assign({}, state.rects, { + placement: state.placement + })) : padding; + return mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements)); + }; + function arrow(_ref) { + var _state$modifiersData$; + var state = _ref.state, name = _ref.name, options = _ref.options; + var arrowElement = state.elements.arrow; + var popperOffsets2 = state.modifiersData.popperOffsets; + var basePlacement = getBasePlacement(state.placement); + var axis = getMainAxisFromPlacement(basePlacement); + var isVertical = [left, right].indexOf(basePlacement) >= 0; + var len = isVertical ? "height" : "width"; + if (!arrowElement || !popperOffsets2) { + return; + } + var paddingObject = toPaddingObject(options.padding, state); + var arrowRect = getLayoutRect(arrowElement); + var minProp = axis === "y" ? top : left; + var maxProp = axis === "y" ? bottom : right; + var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets2[axis] - state.rects.popper[len]; + var startDiff = popperOffsets2[axis] - state.rects.reference[axis]; + var arrowOffsetParent = getOffsetParent(arrowElement); + var clientSize = arrowOffsetParent ? axis === "y" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0; + var centerToReference = endDiff / 2 - startDiff / 2; + var min2 = paddingObject[minProp]; + var max2 = clientSize - arrowRect[len] - paddingObject[maxProp]; + var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference; + var offset2 = within(min2, center, max2); + var axisProp = axis; + state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset2, _state$modifiersData$.centerOffset = offset2 - center, _state$modifiersData$); + } + function effect(_ref2) { + var state = _ref2.state, options = _ref2.options; + var _options$element = options.element, arrowElement = _options$element === void 0 ? "[data-popper-arrow]" : _options$element; + if (arrowElement == null) { + return; + } + if (typeof arrowElement === "string") { + arrowElement = state.elements.popper.querySelector(arrowElement); + if (!arrowElement) { + return; + } + } + if (true) { + if (!isHTMLElement(arrowElement)) { + console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).', "To use an SVG arrow, wrap it in an HTMLElement that will be used as", "the arrow."].join(" ")); + } + } + if (!contains(state.elements.popper, arrowElement)) { + if (true) { + console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper', "element."].join(" ")); + } + return; + } + state.elements.arrow = arrowElement; + } + var arrow$1 = { + name: "arrow", + enabled: true, + phase: "main", + fn: arrow, + effect, + requires: ["popperOffsets"], + requiresIfExists: ["preventOverflow"] + }; + function getSideOffsets(overflow, rect, preventedOffsets) { + if (preventedOffsets === void 0) { + preventedOffsets = { + x: 0, + y: 0 + }; + } + return { + top: overflow.top - rect.height - preventedOffsets.y, + right: overflow.right - rect.width + preventedOffsets.x, + bottom: overflow.bottom - rect.height + preventedOffsets.y, + left: overflow.left - rect.width - preventedOffsets.x + }; + } + function isAnySideFullyClipped(overflow) { + return [top, right, bottom, left].some(function(side) { + return overflow[side] >= 0; + }); + } + function hide(_ref) { + var state = _ref.state, name = _ref.name; + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var preventedOffsets = state.modifiersData.preventOverflow; + var referenceOverflow = detectOverflow(state, { + elementContext: "reference" + }); + var popperAltOverflow = detectOverflow(state, { + altBoundary: true + }); + var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect); + var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets); + var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets); + var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets); + state.modifiersData[name] = { + referenceClippingOffsets, + popperEscapeOffsets, + isReferenceHidden, + hasPopperEscaped + }; + state.attributes.popper = Object.assign({}, state.attributes.popper, { + "data-popper-reference-hidden": isReferenceHidden, + "data-popper-escaped": hasPopperEscaped + }); + } + var hide$1 = { + name: "hide", + enabled: true, + phase: "main", + requiresIfExists: ["preventOverflow"], + fn: hide + }; + var defaultModifiers$1 = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1]; + var createPopper$1 = /* @__PURE__ */ popperGenerator({ + defaultModifiers: defaultModifiers$1 + }); + var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1]; + var createPopper2 = /* @__PURE__ */ popperGenerator({ + defaultModifiers + }); + exports.applyStyles = applyStyles$1; + exports.arrow = arrow$1; + exports.computeStyles = computeStyles$1; + exports.createPopper = createPopper2; + exports.createPopperLite = createPopper$1; + exports.defaultModifiers = defaultModifiers; + exports.detectOverflow = detectOverflow; + exports.eventListeners = eventListeners; + exports.flip = flip$1; + exports.hide = hide$1; + exports.offset = offset$1; + exports.popperGenerator = popperGenerator; + exports.popperOffsets = popperOffsets$1; + exports.preventOverflow = preventOverflow$1; + } + }); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/dom/data.js + var elementMap = /* @__PURE__ */ new Map(); + var data_default = { + set(element, key, instance) { + if (!elementMap.has(element)) { + elementMap.set(element, /* @__PURE__ */ new Map()); + } + const instanceMap = elementMap.get(element); + if (!instanceMap.has(key) && instanceMap.size !== 0) { + console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`); + return; + } + instanceMap.set(key, instance); + }, + get(element, key) { + if (elementMap.has(element)) { + return elementMap.get(element).get(key) || null; + } + return null; + }, + remove(element, key) { + if (!elementMap.has(element)) { + return; + } + const instanceMap = elementMap.get(element); + instanceMap.delete(key); + if (instanceMap.size === 0) { + elementMap.delete(element); + } + } + }; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/util/index.js + var MAX_UID = 1e6; + var MILLISECONDS_MULTIPLIER = 1e3; + var TRANSITION_END = "transitionend"; + var parseSelector = (selector2) => { + if (selector2 && window.CSS && window.CSS.escape) { + selector2 = selector2.replace(/#([^\s"#']+)/g, (match, id) => `#${CSS.escape(id)}`); + } + return selector2; + }; + var toType = (object) => { + if (object === null || object === void 0) { + return `${object}`; + } + return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase(); + }; + var getUID = (prefix) => { + do { + prefix += Math.floor(Math.random() * MAX_UID); + } while (document.getElementById(prefix)); + return prefix; + }; + var getTransitionDurationFromElement = (element) => { + if (!element) { + return 0; + } + let { transitionDuration, transitionDelay } = window.getComputedStyle(element); + const floatTransitionDuration = Number.parseFloat(transitionDuration); + const floatTransitionDelay = Number.parseFloat(transitionDelay); + if (!floatTransitionDuration && !floatTransitionDelay) { + return 0; + } + transitionDuration = transitionDuration.split(",")[0]; + transitionDelay = transitionDelay.split(",")[0]; + return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; + }; + var triggerTransitionEnd = (element) => { + element.dispatchEvent(new Event(TRANSITION_END)); + }; + var isElement = (object) => { + if (!object || typeof object !== "object") { + return false; + } + if (typeof object.jquery !== "undefined") { + object = object[0]; + } + return typeof object.nodeType !== "undefined"; + }; + var getElement = (object) => { + if (isElement(object)) { + return object.jquery ? object[0] : object; + } + if (typeof object === "string" && object.length > 0) { + return document.querySelector(parseSelector(object)); + } + return null; + }; + var isVisible = (element) => { + if (!isElement(element) || element.getClientRects().length === 0) { + return false; + } + const elementIsVisible = getComputedStyle(element).getPropertyValue("visibility") === "visible"; + const closedDetails = element.closest("details:not([open])"); + if (!closedDetails) { + return elementIsVisible; + } + if (closedDetails !== element) { + const summary = element.closest("summary"); + if (summary && summary.parentNode !== closedDetails) { + return false; + } + if (summary === null) { + return false; + } + } + return elementIsVisible; + }; + var isDisabled = (element) => { + if (!element || element.nodeType !== Node.ELEMENT_NODE) { + return true; + } + if (element.classList.contains("disabled")) { + return true; + } + if (typeof element.disabled !== "undefined") { + return element.disabled; + } + return element.hasAttribute("disabled") && element.getAttribute("disabled") !== "false"; + }; + var findShadowRoot = (element) => { + if (!document.documentElement.attachShadow) { + return null; + } + if (typeof element.getRootNode === "function") { + const root = element.getRootNode(); + return root instanceof ShadowRoot ? root : null; + } + if (element instanceof ShadowRoot) { + return element; + } + if (!element.parentNode) { + return null; + } + return findShadowRoot(element.parentNode); + }; + var noop = () => { + }; + var reflow = (element) => { + element.offsetHeight; + }; + var getjQuery = () => { + if (window.jQuery && !document.body.hasAttribute("data-bs-no-jquery")) { + return window.jQuery; + } + return null; + }; + var DOMContentLoadedCallbacks = []; + var onDOMContentLoaded = (callback) => { + if (document.readyState === "loading") { + if (!DOMContentLoadedCallbacks.length) { + document.addEventListener("DOMContentLoaded", () => { + for (const callback2 of DOMContentLoadedCallbacks) { + callback2(); + } + }); + } + DOMContentLoadedCallbacks.push(callback); + } else { + callback(); + } + }; + var isRTL = () => document.documentElement.dir === "rtl"; + var defineJQueryPlugin = (plugin) => { + onDOMContentLoaded(() => { + const $ = getjQuery(); + if ($) { + const name = plugin.NAME; + const JQUERY_NO_CONFLICT = $.fn[name]; + $.fn[name] = plugin.jQueryInterface; + $.fn[name].Constructor = plugin; + $.fn[name].noConflict = () => { + $.fn[name] = JQUERY_NO_CONFLICT; + return plugin.jQueryInterface; + }; + } + }); + }; + var execute = (possibleCallback, args = [], defaultValue = possibleCallback) => { + return typeof possibleCallback === "function" ? possibleCallback.call(...args) : defaultValue; + }; + var executeAfterTransition = (callback, transitionElement, waitForTransition = true) => { + if (!waitForTransition) { + execute(callback); + return; + } + const durationPadding = 5; + const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding; + let called = false; + const handler = ({ target }) => { + if (target !== transitionElement) { + return; + } + called = true; + transitionElement.removeEventListener(TRANSITION_END, handler); + execute(callback); + }; + transitionElement.addEventListener(TRANSITION_END, handler); + setTimeout(() => { + if (!called) { + triggerTransitionEnd(transitionElement); + } + }, emulatedDuration); + }; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/dom/event-handler.js + var namespaceRegex = /[^.]*(?=\..*)\.|.*/; + var stripNameRegex = /\..*/; + var stripUidRegex = /::\d+$/; + var eventRegistry = {}; + var uidEvent = 1; + var customEvents = { + mouseenter: "mouseover", + mouseleave: "mouseout" + }; + var nativeEvents = /* @__PURE__ */ new Set([ + "click", + "dblclick", + "mouseup", + "mousedown", + "contextmenu", + "mousewheel", + "DOMMouseScroll", + "mouseover", + "mouseout", + "mousemove", + "selectstart", + "selectend", + "keydown", + "keypress", + "keyup", + "orientationchange", + "touchstart", + "touchmove", + "touchend", + "touchcancel", + "pointerdown", + "pointermove", + "pointerup", + "pointerleave", + "pointercancel", + "gesturestart", + "gesturechange", + "gestureend", + "focus", + "blur", + "change", + "reset", + "select", + "submit", + "focusin", + "focusout", + "load", + "unload", + "beforeunload", + "resize", + "move", + "DOMContentLoaded", + "readystatechange", + "error", + "abort", + "scroll" + ]); + function makeEventUid(element, uid) { + return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++; + } + function getElementEvents(element) { + const uid = makeEventUid(element); + element.uidEvent = uid; + eventRegistry[uid] = eventRegistry[uid] || {}; + return eventRegistry[uid]; + } + function bootstrapHandler(element, fn) { + return function handler(event) { + hydrateObj(event, { delegateTarget: element }); + if (handler.oneOff) { + EventHandler.off(element, event.type, fn); + } + return fn.apply(element, [event]); + }; + } + function bootstrapDelegationHandler(element, selector2, fn) { + return function handler(event) { + const domElements = element.querySelectorAll(selector2); + for (let { target } = event; target && target !== this; target = target.parentNode) { + for (const domElement of domElements) { + if (domElement !== target) { + continue; + } + hydrateObj(event, { delegateTarget: target }); + if (handler.oneOff) { + EventHandler.off(element, event.type, selector2, fn); + } + return fn.apply(target, [event]); + } + } + }; + } + function findHandler(events, callable, delegationSelector = null) { + return Object.values(events).find((event) => event.callable === callable && event.delegationSelector === delegationSelector); + } + function normalizeParameters(originalTypeEvent, handler, delegationFunction) { + const isDelegated = typeof handler === "string"; + const callable = isDelegated ? delegationFunction : handler || delegationFunction; + let typeEvent = getTypeEvent(originalTypeEvent); + if (!nativeEvents.has(typeEvent)) { + typeEvent = originalTypeEvent; + } + return [isDelegated, callable, typeEvent]; + } + function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) { + if (typeof originalTypeEvent !== "string" || !element) { + return; + } + let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); + if (originalTypeEvent in customEvents) { + const wrapFunction = (fn2) => { + return function(event) { + if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) { + return fn2.call(this, event); + } + }; + }; + callable = wrapFunction(callable); + } + const events = getElementEvents(element); + const handlers = events[typeEvent] || (events[typeEvent] = {}); + const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null); + if (previousFunction) { + previousFunction.oneOff = previousFunction.oneOff && oneOff; + return; + } + const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, "")); + const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable); + fn.delegationSelector = isDelegated ? handler : null; + fn.callable = callable; + fn.oneOff = oneOff; + fn.uidEvent = uid; + handlers[uid] = fn; + element.addEventListener(typeEvent, fn, isDelegated); + } + function removeHandler(element, events, typeEvent, handler, delegationSelector) { + const fn = findHandler(events[typeEvent], handler, delegationSelector); + if (!fn) { + return; + } + element.removeEventListener(typeEvent, fn, Boolean(delegationSelector)); + delete events[typeEvent][fn.uidEvent]; + } + function removeNamespacedHandlers(element, events, typeEvent, namespace) { + const storeElementEvent = events[typeEvent] || {}; + for (const [handlerKey, event] of Object.entries(storeElementEvent)) { + if (handlerKey.includes(namespace)) { + removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); + } + } + } + function getTypeEvent(event) { + event = event.replace(stripNameRegex, ""); + return customEvents[event] || event; + } + var EventHandler = { + on(element, event, handler, delegationFunction) { + addHandler(element, event, handler, delegationFunction, false); + }, + one(element, event, handler, delegationFunction) { + addHandler(element, event, handler, delegationFunction, true); + }, + off(element, originalTypeEvent, handler, delegationFunction) { + if (typeof originalTypeEvent !== "string" || !element) { + return; + } + const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); + const inNamespace = typeEvent !== originalTypeEvent; + const events = getElementEvents(element); + const storeElementEvent = events[typeEvent] || {}; + const isNamespace = originalTypeEvent.startsWith("."); + if (typeof callable !== "undefined") { + if (!Object.keys(storeElementEvent).length) { + return; + } + removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null); + return; + } + if (isNamespace) { + for (const elementEvent of Object.keys(events)) { + removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1)); + } + } + for (const [keyHandlers, event] of Object.entries(storeElementEvent)) { + const handlerKey = keyHandlers.replace(stripUidRegex, ""); + if (!inNamespace || originalTypeEvent.includes(handlerKey)) { + removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); + } + } + }, + trigger(element, event, args) { + if (typeof event !== "string" || !element) { + return null; + } + const $ = getjQuery(); + const typeEvent = getTypeEvent(event); + const inNamespace = event !== typeEvent; + let jQueryEvent = null; + let bubbles = true; + let nativeDispatch = true; + let defaultPrevented = false; + if (inNamespace && $) { + jQueryEvent = $.Event(event, args); + $(element).trigger(jQueryEvent); + bubbles = !jQueryEvent.isPropagationStopped(); + nativeDispatch = !jQueryEvent.isImmediatePropagationStopped(); + defaultPrevented = jQueryEvent.isDefaultPrevented(); + } + const evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args); + if (defaultPrevented) { + evt.preventDefault(); + } + if (nativeDispatch) { + element.dispatchEvent(evt); + } + if (evt.defaultPrevented && jQueryEvent) { + jQueryEvent.preventDefault(); + } + return evt; + } + }; + function hydrateObj(obj, meta = {}) { + for (const [key, value] of Object.entries(meta)) { + try { + obj[key] = value; + } catch (e) { + Object.defineProperty(obj, key, { + configurable: true, + get() { + return value; + } + }); + } + } + return obj; + } + var event_handler_default = EventHandler; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/dom/manipulator.js + function normalizeData(value) { + if (value === "true") { + return true; + } + if (value === "false") { + return false; + } + if (value === Number(value).toString()) { + return Number(value); + } + if (value === "" || value === "null") { + return null; + } + if (typeof value !== "string") { + return value; + } + try { + return JSON.parse(decodeURIComponent(value)); + } catch (e) { + return value; + } + } + function normalizeDataKey(key) { + return key.replace(/[A-Z]/g, (chr) => `-${chr.toLowerCase()}`); + } + var Manipulator = { + setDataAttribute(element, key, value) { + element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value); + }, + removeDataAttribute(element, key) { + element.removeAttribute(`data-bs-${normalizeDataKey(key)}`); + }, + getDataAttributes(element) { + if (!element) { + return {}; + } + const attributes = {}; + const bsKeys = Object.keys(element.dataset).filter((key) => key.startsWith("bs") && !key.startsWith("bsConfig")); + for (const key of bsKeys) { + let pureKey = key.replace(/^bs/, ""); + pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1); + attributes[pureKey] = normalizeData(element.dataset[key]); + } + return attributes; + }, + getDataAttribute(element, key) { + return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`)); + } + }; + var manipulator_default = Manipulator; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/util/config.js + var Config = class { + // Getters + static get Default() { + return {}; + } + static get DefaultType() { + return {}; + } + static get NAME() { + throw new Error('You have to implement the static method "NAME", for each component!'); + } + _getConfig(config) { + config = this._mergeConfigObj(config); + config = this._configAfterMerge(config); + this._typeCheckConfig(config); + return config; + } + _configAfterMerge(config) { + return config; + } + _mergeConfigObj(config, element) { + const jsonConfig = isElement(element) ? manipulator_default.getDataAttribute(element, "config") : {}; + return __spreadValues(__spreadValues(__spreadValues(__spreadValues({}, this.constructor.Default), typeof jsonConfig === "object" ? jsonConfig : {}), isElement(element) ? manipulator_default.getDataAttributes(element) : {}), typeof config === "object" ? config : {}); + } + _typeCheckConfig(config, configTypes = this.constructor.DefaultType) { + for (const [property, expectedTypes] of Object.entries(configTypes)) { + const value = config[property]; + const valueType = isElement(value) ? "element" : toType(value); + if (!new RegExp(expectedTypes).test(valueType)) { + throw new TypeError( + `${this.constructor.NAME.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".` + ); + } + } + } + }; + var config_default = Config; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/base-component.js + var VERSION = "5.3.8"; + var BaseComponent = class extends config_default { + constructor(element, config) { + super(); + element = getElement(element); + if (!element) { + return; + } + this._element = element; + this._config = this._getConfig(config); + data_default.set(this._element, this.constructor.DATA_KEY, this); + } + // Public + dispose() { + data_default.remove(this._element, this.constructor.DATA_KEY); + event_handler_default.off(this._element, this.constructor.EVENT_KEY); + for (const propertyName of Object.getOwnPropertyNames(this)) { + this[propertyName] = null; + } + } + // Private + _queueCallback(callback, element, isAnimated = true) { + executeAfterTransition(callback, element, isAnimated); + } + _getConfig(config) { + config = this._mergeConfigObj(config, this._element); + config = this._configAfterMerge(config); + this._typeCheckConfig(config); + return config; + } + // Static + static getInstance(element) { + return data_default.get(getElement(element), this.DATA_KEY); + } + static getOrCreateInstance(element, config = {}) { + return this.getInstance(element) || new this(element, typeof config === "object" ? config : null); + } + static get VERSION() { + return VERSION; + } + static get DATA_KEY() { + return `bs.${this.NAME}`; + } + static get EVENT_KEY() { + return `.${this.DATA_KEY}`; + } + static eventName(name) { + return `${name}${this.EVENT_KEY}`; + } + }; + var base_component_default = BaseComponent; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/dom/selector-engine.js + var getSelector = (element) => { + let selector2 = element.getAttribute("data-bs-target"); + if (!selector2 || selector2 === "#") { + let hrefAttribute = element.getAttribute("href"); + if (!hrefAttribute || !hrefAttribute.includes("#") && !hrefAttribute.startsWith(".")) { + return null; + } + if (hrefAttribute.includes("#") && !hrefAttribute.startsWith("#")) { + hrefAttribute = `#${hrefAttribute.split("#")[1]}`; + } + selector2 = hrefAttribute && hrefAttribute !== "#" ? hrefAttribute.trim() : null; + } + return selector2 ? selector2.split(",").map((sel) => parseSelector(sel)).join(",") : null; + }; + var SelectorEngine = { + find(selector2, element = document.documentElement) { + return [].concat(...Element.prototype.querySelectorAll.call(element, selector2)); + }, + findOne(selector2, element = document.documentElement) { + return Element.prototype.querySelector.call(element, selector2); + }, + children(element, selector2) { + return [].concat(...element.children).filter((child) => child.matches(selector2)); + }, + parents(element, selector2) { + const parents = []; + let ancestor = element.parentNode.closest(selector2); + while (ancestor) { + parents.push(ancestor); + ancestor = ancestor.parentNode.closest(selector2); + } + return parents; + }, + prev(element, selector2) { + let previous = element.previousElementSibling; + while (previous) { + if (previous.matches(selector2)) { + return [previous]; + } + previous = previous.previousElementSibling; + } + return []; + }, + // TODO: this is now unused; remove later along with prev() + next(element, selector2) { + let next = element.nextElementSibling; + while (next) { + if (next.matches(selector2)) { + return [next]; + } + next = next.nextElementSibling; + } + return []; + }, + focusableChildren(element) { + const focusables = [ + "a", + "button", + "input", + "textarea", + "select", + "details", + "[tabindex]", + '[contenteditable="true"]' + ].map((selector2) => `${selector2}:not([tabindex^="-"])`).join(","); + return this.find(focusables, element).filter((el) => !isDisabled(el) && isVisible(el)); + }, + getSelectorFromElement(element) { + const selector2 = getSelector(element); + if (selector2) { + return SelectorEngine.findOne(selector2) ? selector2 : null; + } + return null; + }, + getElementFromSelector(element) { + const selector2 = getSelector(element); + return selector2 ? SelectorEngine.findOne(selector2) : null; + }, + getMultipleElementsFromSelector(element) { + const selector2 = getSelector(element); + return selector2 ? SelectorEngine.find(selector2) : []; + } + }; + var selector_engine_default = SelectorEngine; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/collapse.js + var NAME = "collapse"; + var DATA_KEY = "bs.collapse"; + var EVENT_KEY = `.${DATA_KEY}`; + var DATA_API_KEY = ".data-api"; + var EVENT_SHOW = `show${EVENT_KEY}`; + var EVENT_SHOWN = `shown${EVENT_KEY}`; + var EVENT_HIDE = `hide${EVENT_KEY}`; + var EVENT_HIDDEN = `hidden${EVENT_KEY}`; + var EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`; + var CLASS_NAME_SHOW = "show"; + var CLASS_NAME_COLLAPSE = "collapse"; + var CLASS_NAME_COLLAPSING = "collapsing"; + var CLASS_NAME_COLLAPSED = "collapsed"; + var CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`; + var CLASS_NAME_HORIZONTAL = "collapse-horizontal"; + var WIDTH = "width"; + var HEIGHT = "height"; + var SELECTOR_ACTIVES = ".collapse.show, .collapse.collapsing"; + var SELECTOR_DATA_TOGGLE = '[data-bs-toggle="collapse"]'; + var Default = { + parent: null, + toggle: true + }; + var DefaultType = { + parent: "(null|element)", + toggle: "boolean" + }; + var Collapse = class _Collapse extends base_component_default { + constructor(element, config) { + super(element, config); + this._isTransitioning = false; + this._triggerArray = []; + const toggleList = selector_engine_default.find(SELECTOR_DATA_TOGGLE); + for (const elem of toggleList) { + const selector2 = selector_engine_default.getSelectorFromElement(elem); + const filterElement = selector_engine_default.find(selector2).filter((foundElement) => foundElement === this._element); + if (selector2 !== null && filterElement.length) { + this._triggerArray.push(elem); + } + } + this._initializeChildren(); + if (!this._config.parent) { + this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()); + } + if (this._config.toggle) { + this.toggle(); + } + } + // Getters + static get Default() { + return Default; + } + static get DefaultType() { + return DefaultType; + } + static get NAME() { + return NAME; + } + // Public + toggle() { + if (this._isShown()) { + this.hide(); + } else { + this.show(); + } + } + show() { + if (this._isTransitioning || this._isShown()) { + return; + } + let activeChildren = []; + if (this._config.parent) { + activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter((element) => element !== this._element).map((element) => _Collapse.getOrCreateInstance(element, { toggle: false })); + } + if (activeChildren.length && activeChildren[0]._isTransitioning) { + return; + } + const startEvent = event_handler_default.trigger(this._element, EVENT_SHOW); + if (startEvent.defaultPrevented) { + return; + } + for (const activeInstance of activeChildren) { + activeInstance.hide(); + } + const dimension = this._getDimension(); + this._element.classList.remove(CLASS_NAME_COLLAPSE); + this._element.classList.add(CLASS_NAME_COLLAPSING); + this._element.style[dimension] = 0; + this._addAriaAndCollapsedClass(this._triggerArray, true); + this._isTransitioning = true; + const complete = () => { + this._isTransitioning = false; + this._element.classList.remove(CLASS_NAME_COLLAPSING); + this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW); + this._element.style[dimension] = ""; + event_handler_default.trigger(this._element, EVENT_SHOWN); + }; + const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); + const scrollSize = `scroll${capitalizedDimension}`; + this._queueCallback(complete, this._element, true); + this._element.style[dimension] = `${this._element[scrollSize]}px`; + } + hide() { + if (this._isTransitioning || !this._isShown()) { + return; + } + const startEvent = event_handler_default.trigger(this._element, EVENT_HIDE); + if (startEvent.defaultPrevented) { + return; + } + const dimension = this._getDimension(); + this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`; + reflow(this._element); + this._element.classList.add(CLASS_NAME_COLLAPSING); + this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW); + for (const trigger of this._triggerArray) { + const element = selector_engine_default.getElementFromSelector(trigger); + if (element && !this._isShown(element)) { + this._addAriaAndCollapsedClass([trigger], false); + } + } + this._isTransitioning = true; + const complete = () => { + this._isTransitioning = false; + this._element.classList.remove(CLASS_NAME_COLLAPSING); + this._element.classList.add(CLASS_NAME_COLLAPSE); + event_handler_default.trigger(this._element, EVENT_HIDDEN); + }; + this._element.style[dimension] = ""; + this._queueCallback(complete, this._element, true); + } + // Private + _isShown(element = this._element) { + return element.classList.contains(CLASS_NAME_SHOW); + } + _configAfterMerge(config) { + config.toggle = Boolean(config.toggle); + config.parent = getElement(config.parent); + return config; + } + _getDimension() { + return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT; + } + _initializeChildren() { + if (!this._config.parent) { + return; + } + const children2 = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE); + for (const element of children2) { + const selected = selector_engine_default.getElementFromSelector(element); + if (selected) { + this._addAriaAndCollapsedClass([element], this._isShown(selected)); + } + } + } + _getFirstLevelChildren(selector2) { + const children2 = selector_engine_default.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); + return selector_engine_default.find(selector2, this._config.parent).filter((element) => !children2.includes(element)); + } + _addAriaAndCollapsedClass(triggerArray, isOpen) { + if (!triggerArray.length) { + return; + } + for (const element of triggerArray) { + element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen); + element.setAttribute("aria-expanded", isOpen); + } + } + // Static + static jQueryInterface(config) { + const _config = {}; + if (typeof config === "string" && /show|hide/.test(config)) { + _config.toggle = false; + } + return this.each(function() { + const data = _Collapse.getOrCreateInstance(this, _config); + if (typeof config === "string") { + if (typeof data[config] === "undefined") { + throw new TypeError(`No method named "${config}"`); + } + data[config](); + } + }); + } + }; + event_handler_default.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function(event) { + if (event.target.tagName === "A" || event.delegateTarget && event.delegateTarget.tagName === "A") { + event.preventDefault(); + } + for (const element of selector_engine_default.getMultipleElementsFromSelector(this)) { + Collapse.getOrCreateInstance(element, { toggle: false }).toggle(); + } + }); + defineJQueryPlugin(Collapse); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/category-collapse.js + var children = document.getElementsByClassName("collapse"); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/tooltip.js + var Popper = __toESM(require_popper()); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/util/sanitizer.js + var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; + var DefaultAllowlist = { + // Global attributes allowed on any supplied element below. + "*": ["class", "dir", "id", "lang", "role", ARIA_ATTRIBUTE_PATTERN], + a: ["target", "href", "title", "rel"], + area: [], + b: [], + br: [], + col: [], + code: [], + dd: [], + div: [], + dl: [], + dt: [], + em: [], + hr: [], + h1: [], + h2: [], + h3: [], + h4: [], + h5: [], + h6: [], + i: [], + img: ["src", "srcset", "alt", "title", "width", "height"], + li: [], + ol: [], + p: [], + pre: [], + s: [], + small: [], + span: [], + sub: [], + sup: [], + strong: [], + u: [], + ul: [] + }; + var uriAttributes = /* @__PURE__ */ new Set([ + "background", + "cite", + "href", + "itemtype", + "longdesc", + "poster", + "src", + "xlink:href" + ]); + var SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i; + var allowedAttribute = (attribute, allowedAttributeList) => { + const attributeName = attribute.nodeName.toLowerCase(); + if (allowedAttributeList.includes(attributeName)) { + if (uriAttributes.has(attributeName)) { + return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue)); + } + return true; + } + return allowedAttributeList.filter((attributeRegex) => attributeRegex instanceof RegExp).some((regex) => regex.test(attributeName)); + }; + function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) { + if (!unsafeHtml.length) { + return unsafeHtml; + } + if (sanitizeFunction && typeof sanitizeFunction === "function") { + return sanitizeFunction(unsafeHtml); + } + const domParser = new window.DOMParser(); + const createdDocument = domParser.parseFromString(unsafeHtml, "text/html"); + const elements = [].concat(...createdDocument.body.querySelectorAll("*")); + for (const element of elements) { + const elementName = element.nodeName.toLowerCase(); + if (!Object.keys(allowList).includes(elementName)) { + element.remove(); + continue; + } + const attributeList = [].concat(...element.attributes); + const allowedAttributes = [].concat(allowList["*"] || [], allowList[elementName] || []); + for (const attribute of attributeList) { + if (!allowedAttribute(attribute, allowedAttributes)) { + element.removeAttribute(attribute.nodeName); + } + } + } + return createdDocument.body.innerHTML; + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/util/template-factory.js + var NAME2 = "TemplateFactory"; + var Default2 = { + allowList: DefaultAllowlist, + content: {}, + // { selector : text , selector2 : text2 , } + extraClass: "", + html: false, + sanitize: true, + sanitizeFn: null, + template: "
" + }; + var DefaultType2 = { + allowList: "object", + content: "object", + extraClass: "(string|function)", + html: "boolean", + sanitize: "boolean", + sanitizeFn: "(null|function)", + template: "string" + }; + var DefaultContentType = { + entry: "(string|element|function|null)", + selector: "(string|element)" + }; + var TemplateFactory = class extends config_default { + constructor(config) { + super(); + this._config = this._getConfig(config); + } + // Getters + static get Default() { + return Default2; + } + static get DefaultType() { + return DefaultType2; + } + static get NAME() { + return NAME2; + } + // Public + getContent() { + return Object.values(this._config.content).map((config) => this._resolvePossibleFunction(config)).filter(Boolean); + } + hasContent() { + return this.getContent().length > 0; + } + changeContent(content2) { + this._checkContent(content2); + this._config.content = __spreadValues(__spreadValues({}, this._config.content), content2); + return this; + } + toHtml() { + const templateWrapper = document.createElement("div"); + templateWrapper.innerHTML = this._maybeSanitize(this._config.template); + for (const [selector2, text] of Object.entries(this._config.content)) { + this._setContent(templateWrapper, text, selector2); + } + const template = templateWrapper.children[0]; + const extraClass = this._resolvePossibleFunction(this._config.extraClass); + if (extraClass) { + template.classList.add(...extraClass.split(" ")); + } + return template; + } + // Private + _typeCheckConfig(config) { + super._typeCheckConfig(config); + this._checkContent(config.content); + } + _checkContent(arg) { + for (const [selector2, content2] of Object.entries(arg)) { + super._typeCheckConfig({ selector: selector2, entry: content2 }, DefaultContentType); + } + } + _setContent(template, content2, selector2) { + const templateElement = selector_engine_default.findOne(selector2, template); + if (!templateElement) { + return; + } + content2 = this._resolvePossibleFunction(content2); + if (!content2) { + templateElement.remove(); + return; + } + if (isElement(content2)) { + this._putElementInTemplate(getElement(content2), templateElement); + return; + } + if (this._config.html) { + templateElement.innerHTML = this._maybeSanitize(content2); + return; + } + templateElement.textContent = content2; + } + _maybeSanitize(arg) { + return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg; + } + _resolvePossibleFunction(arg) { + return execute(arg, [void 0, this]); + } + _putElementInTemplate(element, templateElement) { + if (this._config.html) { + templateElement.innerHTML = ""; + templateElement.append(element); + return; + } + templateElement.textContent = element.textContent; + } + }; + var template_factory_default = TemplateFactory; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/tooltip.js + var NAME3 = "tooltip"; + var DISALLOWED_ATTRIBUTES = /* @__PURE__ */ new Set(["sanitize", "allowList", "sanitizeFn"]); + var CLASS_NAME_FADE = "fade"; + var CLASS_NAME_MODAL = "modal"; + var CLASS_NAME_SHOW2 = "show"; + var SELECTOR_TOOLTIP_INNER = ".tooltip-inner"; + var SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`; + var EVENT_MODAL_HIDE = "hide.bs.modal"; + var TRIGGER_HOVER = "hover"; + var TRIGGER_FOCUS = "focus"; + var TRIGGER_CLICK = "click"; + var TRIGGER_MANUAL = "manual"; + var EVENT_HIDE2 = "hide"; + var EVENT_HIDDEN2 = "hidden"; + var EVENT_SHOW2 = "show"; + var EVENT_SHOWN2 = "shown"; + var EVENT_INSERTED = "inserted"; + var EVENT_CLICK = "click"; + var EVENT_FOCUSIN = "focusin"; + var EVENT_FOCUSOUT = "focusout"; + var EVENT_MOUSEENTER = "mouseenter"; + var EVENT_MOUSELEAVE = "mouseleave"; + var AttachmentMap = { + AUTO: "auto", + TOP: "top", + RIGHT: isRTL() ? "left" : "right", + BOTTOM: "bottom", + LEFT: isRTL() ? "right" : "left" + }; + var Default3 = { + allowList: DefaultAllowlist, + animation: true, + boundary: "clippingParents", + container: false, + customClass: "", + delay: 0, + fallbackPlacements: ["top", "right", "bottom", "left"], + html: false, + offset: [0, 6], + placement: "top", + popperConfig: null, + sanitize: true, + sanitizeFn: null, + selector: false, + template: '', + title: "", + trigger: "hover focus" + }; + var DefaultType3 = { + allowList: "object", + animation: "boolean", + boundary: "(string|element)", + container: "(string|element|boolean)", + customClass: "(string|function)", + delay: "(number|object)", + fallbackPlacements: "array", + html: "boolean", + offset: "(array|string|function)", + placement: "(string|function)", + popperConfig: "(null|object|function)", + sanitize: "boolean", + sanitizeFn: "(null|function)", + selector: "(string|boolean)", + template: "string", + title: "(string|element|function)", + trigger: "string" + }; + var Tooltip = class _Tooltip extends base_component_default { + constructor(element, config) { + if (typeof Popper === "undefined") { + throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org/docs/v2/)"); + } + super(element, config); + this._isEnabled = true; + this._timeout = 0; + this._isHovered = null; + this._activeTrigger = {}; + this._popper = null; + this._templateFactory = null; + this._newContent = null; + this.tip = null; + this._setListeners(); + if (!this._config.selector) { + this._fixTitle(); + } + } + // Getters + static get Default() { + return Default3; + } + static get DefaultType() { + return DefaultType3; + } + static get NAME() { + return NAME3; + } + // Public + enable() { + this._isEnabled = true; + } + disable() { + this._isEnabled = false; + } + toggleEnabled() { + this._isEnabled = !this._isEnabled; + } + toggle() { + if (!this._isEnabled) { + return; + } + if (this._isShown()) { + this._leave(); + return; + } + this._enter(); + } + dispose() { + clearTimeout(this._timeout); + event_handler_default.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); + if (this._element.getAttribute("data-bs-original-title")) { + this._element.setAttribute("title", this._element.getAttribute("data-bs-original-title")); + } + this._disposePopper(); + super.dispose(); + } + show() { + if (this._element.style.display === "none") { + throw new Error("Please use show on visible elements"); + } + if (!(this._isWithContent() && this._isEnabled)) { + return; + } + const showEvent = event_handler_default.trigger(this._element, this.constructor.eventName(EVENT_SHOW2)); + const shadowRoot = findShadowRoot(this._element); + const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element); + if (showEvent.defaultPrevented || !isInTheDom) { + return; + } + this._disposePopper(); + const tip = this._getTipElement(); + this._element.setAttribute("aria-describedby", tip.getAttribute("id")); + const { container } = this._config; + if (!this._element.ownerDocument.documentElement.contains(this.tip)) { + container.append(tip); + event_handler_default.trigger(this._element, this.constructor.eventName(EVENT_INSERTED)); + } + this._popper = this._createPopper(tip); + tip.classList.add(CLASS_NAME_SHOW2); + if ("ontouchstart" in document.documentElement) { + for (const element of [].concat(...document.body.children)) { + event_handler_default.on(element, "mouseover", noop); + } + } + const complete = () => { + event_handler_default.trigger(this._element, this.constructor.eventName(EVENT_SHOWN2)); + if (this._isHovered === false) { + this._leave(); + } + this._isHovered = false; + }; + this._queueCallback(complete, this.tip, this._isAnimated()); + } + hide() { + if (!this._isShown()) { + return; + } + const hideEvent = event_handler_default.trigger(this._element, this.constructor.eventName(EVENT_HIDE2)); + if (hideEvent.defaultPrevented) { + return; + } + const tip = this._getTipElement(); + tip.classList.remove(CLASS_NAME_SHOW2); + if ("ontouchstart" in document.documentElement) { + for (const element of [].concat(...document.body.children)) { + event_handler_default.off(element, "mouseover", noop); + } + } + this._activeTrigger[TRIGGER_CLICK] = false; + this._activeTrigger[TRIGGER_FOCUS] = false; + this._activeTrigger[TRIGGER_HOVER] = false; + this._isHovered = null; + const complete = () => { + if (this._isWithActiveTrigger()) { + return; + } + if (!this._isHovered) { + this._disposePopper(); + } + this._element.removeAttribute("aria-describedby"); + event_handler_default.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN2)); + }; + this._queueCallback(complete, this.tip, this._isAnimated()); + } + update() { + if (this._popper) { + this._popper.update(); + } + } + // Protected + _isWithContent() { + return Boolean(this._getTitle()); + } + _getTipElement() { + if (!this.tip) { + this.tip = this._createTipElement(this._newContent || this._getContentForTemplate()); + } + return this.tip; + } + _createTipElement(content2) { + const tip = this._getTemplateFactory(content2).toHtml(); + if (!tip) { + return null; + } + tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW2); + tip.classList.add(`bs-${this.constructor.NAME}-auto`); + const tipId = getUID(this.constructor.NAME).toString(); + tip.setAttribute("id", tipId); + if (this._isAnimated()) { + tip.classList.add(CLASS_NAME_FADE); + } + return tip; + } + setContent(content2) { + this._newContent = content2; + if (this._isShown()) { + this._disposePopper(); + this.show(); + } + } + _getTemplateFactory(content2) { + if (this._templateFactory) { + this._templateFactory.changeContent(content2); + } else { + this._templateFactory = new template_factory_default(__spreadProps(__spreadValues({}, this._config), { + // the `content` var has to be after `this._config` + // to override config.content in case of popover + content: content2, + extraClass: this._resolvePossibleFunction(this._config.customClass) + })); + } + return this._templateFactory; + } + _getContentForTemplate() { + return { + [SELECTOR_TOOLTIP_INNER]: this._getTitle() + }; + } + _getTitle() { + return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute("data-bs-original-title"); + } + // Private + _initializeOnDelegatedTarget(event) { + return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig()); + } + _isAnimated() { + return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE); + } + _isShown() { + return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW2); + } + _createPopper(tip) { + const placement = execute(this._config.placement, [this, tip, this._element]); + const attachment = AttachmentMap[placement.toUpperCase()]; + return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment)); + } + _getOffset() { + const { offset } = this._config; + if (typeof offset === "string") { + return offset.split(",").map((value) => Number.parseInt(value, 10)); + } + if (typeof offset === "function") { + return (popperData) => offset(popperData, this._element); + } + return offset; + } + _resolvePossibleFunction(arg) { + return execute(arg, [this._element, this._element]); + } + _getPopperConfig(attachment) { + const defaultBsPopperConfig = { + placement: attachment, + modifiers: [ + { + name: "flip", + options: { + fallbackPlacements: this._config.fallbackPlacements + } + }, + { + name: "offset", + options: { + offset: this._getOffset() + } + }, + { + name: "preventOverflow", + options: { + boundary: this._config.boundary + } + }, + { + name: "arrow", + options: { + element: `.${this.constructor.NAME}-arrow` + } + }, + { + name: "preSetPlacement", + enabled: true, + phase: "beforeMain", + fn: (data) => { + this._getTipElement().setAttribute("data-popper-placement", data.state.placement); + } + } + ] + }; + return __spreadValues(__spreadValues({}, defaultBsPopperConfig), execute(this._config.popperConfig, [void 0, defaultBsPopperConfig])); + } + _setListeners() { + const triggers = this._config.trigger.split(" "); + for (const trigger of triggers) { + if (trigger === "click") { + event_handler_default.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, (event) => { + const context = this._initializeOnDelegatedTarget(event); + context._activeTrigger[TRIGGER_CLICK] = !(context._isShown() && context._activeTrigger[TRIGGER_CLICK]); + context.toggle(); + }); + } else if (trigger !== TRIGGER_MANUAL) { + const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN); + const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT); + event_handler_default.on(this._element, eventIn, this._config.selector, (event) => { + const context = this._initializeOnDelegatedTarget(event); + context._activeTrigger[event.type === "focusin" ? TRIGGER_FOCUS : TRIGGER_HOVER] = true; + context._enter(); + }); + event_handler_default.on(this._element, eventOut, this._config.selector, (event) => { + const context = this._initializeOnDelegatedTarget(event); + context._activeTrigger[event.type === "focusout" ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget); + context._leave(); + }); + } + } + this._hideModalHandler = () => { + if (this._element) { + this.hide(); + } + }; + event_handler_default.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); + } + _fixTitle() { + const title = this._element.getAttribute("title"); + if (!title) { + return; + } + if (!this._element.getAttribute("aria-label") && !this._element.textContent.trim()) { + this._element.setAttribute("aria-label", title); + } + this._element.setAttribute("data-bs-original-title", title); + this._element.removeAttribute("title"); + } + _enter() { + if (this._isShown() || this._isHovered) { + this._isHovered = true; + return; + } + this._isHovered = true; + this._setTimeout(() => { + if (this._isHovered) { + this.show(); + } + }, this._config.delay.show); + } + _leave() { + if (this._isWithActiveTrigger()) { + return; + } + this._isHovered = false; + this._setTimeout(() => { + if (!this._isHovered) { + this.hide(); + } + }, this._config.delay.hide); + } + _setTimeout(handler, timeout) { + clearTimeout(this._timeout); + this._timeout = setTimeout(handler, timeout); + } + _isWithActiveTrigger() { + return Object.values(this._activeTrigger).includes(true); + } + _getConfig(config) { + const dataAttributes = manipulator_default.getDataAttributes(this._element); + for (const dataAttribute of Object.keys(dataAttributes)) { + if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) { + delete dataAttributes[dataAttribute]; + } + } + config = __spreadValues(__spreadValues({}, dataAttributes), typeof config === "object" && config ? config : {}); + config = this._mergeConfigObj(config); + config = this._configAfterMerge(config); + this._typeCheckConfig(config); + return config; + } + _configAfterMerge(config) { + config.container = config.container === false ? document.body : getElement(config.container); + if (typeof config.delay === "number") { + config.delay = { + show: config.delay, + hide: config.delay + }; + } + if (typeof config.title === "number") { + config.title = config.title.toString(); + } + if (typeof config.content === "number") { + config.content = config.content.toString(); + } + return config; + } + _getDelegateConfig() { + const config = {}; + for (const [key, value] of Object.entries(this._config)) { + if (this.constructor.Default[key] !== value) { + config[key] = value; + } + } + config.selector = false; + config.trigger = "manual"; + return config; + } + _disposePopper() { + if (this._popper) { + this._popper.destroy(); + this._popper = null; + } + if (this.tip) { + this.tip.remove(); + this.tip = null; + } + } + // Static + static jQueryInterface(config) { + return this.each(function() { + const data = _Tooltip.getOrCreateInstance(this, config); + if (typeof config !== "string") { + return; + } + if (typeof data[config] === "undefined") { + throw new TypeError(`No method named "${config}"`); + } + data[config](); + }); + } + }; + defineJQueryPlugin(Tooltip); + var tooltip_default = Tooltip; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/clipboard.js + var clipboardSelector = ".code-header>button"; + var ICON_DEFAULT = "far fa-clipboard"; + var ICON_SUCCESS = "fas fa-check"; + var ATTR_TIMEOUT = "timeout"; + var ATTR_TITLE_SUCCEED = "data-title-succeed"; + var ATTR_TITLE_ORIGIN = "data-bs-original-title"; + var TIMEOUT = 2e3; + function isLocked(node) { + if (node.hasAttribute(ATTR_TIMEOUT)) { + let timeout = node.getAttribute(ATTR_TIMEOUT); + if (Number(timeout) > Date.now()) { + return true; + } + } + return false; + } + function lock(node) { + node.setAttribute(ATTR_TIMEOUT, Date.now() + TIMEOUT); + } + function unlock(node) { + node.removeAttribute(ATTR_TIMEOUT); + } + function showTooltip(btn) { + const succeedTitle = btn.getAttribute(ATTR_TITLE_SUCCEED); + btn.setAttribute(ATTR_TITLE_ORIGIN, succeedTitle); + tooltip_default.getInstance(btn).show(); + } + function hideTooltip(btn) { + tooltip_default.getInstance(btn).hide(); + btn.removeAttribute(ATTR_TITLE_ORIGIN); + } + function setSuccessIcon(btn) { + const icon = btn.children[0]; + icon.setAttribute("class", ICON_SUCCESS); + } + function resumeIcon(btn) { + const icon = btn.children[0]; + icon.setAttribute("class", ICON_DEFAULT); + } + function setCodeClipboard() { + const clipboardList = document.querySelectorAll(clipboardSelector); + if (clipboardList.length === 0) { + return; + } + const clipboard = new ClipboardJS(clipboardSelector, { + target: (trigger) => { + const codeBlock = trigger.parentNode.nextElementSibling; + return codeBlock.querySelectorAll("code")[1]; + } + }); + [...clipboardList].map( + (elem) => new tooltip_default(elem, { + placement: "left" + }) + ); + clipboard.on("success", (e) => { + const trigger = e.trigger; + e.clearSelection(); + if (isLocked(trigger)) { + return; + } + setSuccessIcon(trigger); + showTooltip(trigger); + lock(trigger); + setTimeout(() => { + hideTooltip(trigger); + resumeIcon(trigger); + unlock(trigger); + }, TIMEOUT); + }); + } + function setLinkClipboard() { + const btnCopyLink = document.getElementById("copy-link"); + if (btnCopyLink === null) { + return; + } + btnCopyLink.addEventListener("click", (e) => { + const target = e.target; + if (isLocked(target)) { + return; + } + navigator.clipboard.writeText(window.location.href).then(() => { + const defaultTitle = target.getAttribute(ATTR_TITLE_ORIGIN); + const succeedTitle = target.getAttribute(ATTR_TITLE_SUCCEED); + target.setAttribute(ATTR_TITLE_ORIGIN, succeedTitle); + tooltip_default.getInstance(target).show(); + lock(target); + setTimeout(() => { + target.setAttribute(ATTR_TITLE_ORIGIN, defaultTitle); + unlock(target); + }, TIMEOUT); + }); + }); + btnCopyLink.addEventListener("mouseleave", (e) => { + tooltip_default.getInstance(e.target).hide(); + }); + } + function initClipboard() { + setCodeClipboard(); + setLinkClipboard(); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/img-loading.js + var ATTR_DATA_SRC = "data-src"; + var ATTR_DATA_LQIP = "data-lqip"; + var cover = { + SHIMMER: "shimmer", + BLUR: "blur" + }; + function removeCover(clzss) { + this.parentElement.classList.remove(clzss); + } + function handleImage() { + if (!this.complete) { + return; + } + if (this.hasAttribute(ATTR_DATA_LQIP)) { + removeCover.call(this, cover.BLUR); + } else { + removeCover.call(this, cover.SHIMMER); + } + } + function switchLQIP() { + const src = this.getAttribute(ATTR_DATA_SRC); + this.setAttribute("src", encodeURI(src)); + this.removeAttribute(ATTR_DATA_SRC); + } + function loadImg() { + const images = document.querySelectorAll("article img"); + if (images.length === 0) { + return; + } + images.forEach((img) => { + img.addEventListener("load", handleImage); + }); + document.querySelectorAll('article img[loading="lazy"]').forEach((img) => { + if (img.complete) { + removeCover.call(img, cover.SHIMMER); + } + }); + const lqips = document.querySelectorAll( + `article img[${ATTR_DATA_LQIP}="true"]` + ); + if (lqips.length) { + lqips.forEach((lqip) => { + switchLQIP.call(lqip); + }); + } + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/img-popup.js + var lightImages = ".popup:not(.dark)"; + var darkImages = ".popup:not(.light)"; + var selector = lightImages; + function updateImages(current, reverse) { + if (selector === lightImages) { + selector = darkImages; + } else { + selector = lightImages; + } + if (reverse === null) { + reverse = GLightbox({ selector: `${selector}` }); + } + [current, reverse] = [reverse, current]; + } + function imgPopup() { + if (document.querySelector(".popup") === null) { + return; + } + const hasDualImages = !(document.querySelector(".popup.light") === null && document.querySelector(".popup.dark") === null); + if (Theme.visualState === Theme.DARK) { + selector = darkImages; + } + let current = GLightbox({ selector: `${selector}` }); + if (hasDualImages && Theme.switchable) { + let reverse = null; + window.addEventListener("message", (event) => { + if (event.source === window && event.data && event.data.id === Theme.ID) { + updateImages(current, reverse); + } + }); + } + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/toc/toc-mobile.js + var $tocBar = document.getElementById("toc-bar"); + var $soloTrigger = document.getElementById("toc-solo-trigger"); + var $triggers = document.getElementsByClassName("toc-trigger"); + var $popup = document.getElementById("toc-popup"); + var $btnClose = document.getElementById("toc-popup-close"); + var SCROLL_LOCK = "overflow-hidden"; + var CLOSING = "closing"; + var _invisible, _barHeight; + var _TocMobile = class _TocMobile { + static initBar() { + const observer = new IntersectionObserver( + (entries) => { + entries.forEach((entry) => { + $tocBar.classList.toggle("invisible", entry.isIntersecting); + }); + }, + { rootMargin: `-${__privateGet(this, _barHeight)}px 0px 0px 0px` } + ); + observer.observe($soloTrigger); + __privateSet(this, _invisible, false); + } + static listenAnchors() { + const $anchors = document.getElementsByClassName("toc-link"); + [...$anchors].forEach((anchor) => { + anchor.onclick = () => this.hidePopup(); + }); + } + static refresh() { + if (__privateGet(this, _invisible)) { + this.initComponents(); + } + tocbot.refresh(this.options); + this.listenAnchors(); + } + static get popupOpened() { + return $popup.open; + } + static showPopup() { + this.lockScroll(true); + $popup.showModal(); + const activeItem = $popup.querySelector("li.is-active-li"); + activeItem.scrollIntoView({ block: "center" }); + } + static hidePopup() { + $popup.toggleAttribute(CLOSING); + $popup.addEventListener( + "animationend", + () => { + $popup.toggleAttribute(CLOSING); + $popup.close(); + }, + { once: true } + ); + this.lockScroll(false); + } + static lockScroll(enable) { + document.documentElement.classList.toggle(SCROLL_LOCK, enable); + document.body.classList.toggle(SCROLL_LOCK, enable); + } + static clickBackdrop(event) { + if ($popup.hasAttribute(CLOSING)) { + return; + } + const rect = event.target.getBoundingClientRect(); + if (event.clientX < rect.left || event.clientX > rect.right || event.clientY < rect.top || event.clientY > rect.bottom) { + this.hidePopup(); + } + } + static initComponents() { + this.initBar(); + [...$triggers].forEach((trigger) => { + trigger.onclick = () => this.showPopup(); + }); + $popup.onclick = (e) => this.clickBackdrop(e); + $btnClose.onclick = () => this.hidePopup(); + $popup.oncancel = (e) => { + e.preventDefault(); + this.hidePopup(); + }; + } + static init() { + tocbot.init(this.options); + this.listenAnchors(); + this.initComponents(); + } + }; + _invisible = new WeakMap(); + _barHeight = new WeakMap(); + __privateAdd(_TocMobile, _invisible, true); + __privateAdd(_TocMobile, _barHeight, 16 * 3); + // 3rem + __publicField(_TocMobile, "options", { + tocSelector: "#toc-popup-content", + contentSelector: ".content", + ignoreSelector: "[data-toc-skip]", + headingSelector: "h2, h3, h4", + orderedList: false, + scrollSmooth: false, + collapseDepth: 4, + headingsOffset: __privateGet(_TocMobile, _barHeight) + }); + var TocMobile = _TocMobile; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/toc/toc-desktop.js + var TocDesktop = class { + static refresh() { + tocbot.refresh(this.options); + } + static init() { + tocbot.init(this.options); + } + }; + /* Tocbot options Ref: https://github.com/tscanlin/tocbot#usage */ + __publicField(TocDesktop, "options", { + tocSelector: "#toc", + contentSelector: ".content", + ignoreSelector: "[data-toc-skip]", + headingSelector: "h2, h3, h4", + orderedList: false, + scrollSmooth: false, + headingsOffset: 16 * 2 + // 2rem + }); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/toc.js + var desktopMode = matchMedia("(min-width: 1200px)"); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/mermaid.js + var MERMAID = "mermaid"; + var themeMapper = Theme.getThemeMapper("default", "dark"); + function refreshTheme(event) { + if (event.source === window && event.data && event.data.id === Theme.ID) { + const mermaidList = document.getElementsByClassName(MERMAID); + [...mermaidList].forEach((elem) => { + const svgCode = elem.previousSibling.children.item(0).textContent; + elem.textContent = svgCode; + elem.removeAttribute("data-processed"); + }); + const newTheme = themeMapper[Theme.visualState]; + mermaid.initialize({ theme: newTheme }); + mermaid.init(null, `.${MERMAID}`); + } + } + function setNode(elem) { + const svgCode = elem.textContent; + const backup = elem.parentElement; + backup.classList.add("d-none"); + const mermaid2 = document.createElement("pre"); + mermaid2.classList.add(MERMAID); + const text = document.createTextNode(svgCode); + mermaid2.appendChild(text); + backup.after(mermaid2); + } + function loadMermaid() { + if (typeof mermaid === "undefined" || typeof mermaid.initialize !== "function") { + return; + } + const initTheme = themeMapper[Theme.visualState]; + let mermaidConf = { + theme: initTheme + }; + const basicList = document.getElementsByClassName("language-mermaid"); + [...basicList].forEach(setNode); + mermaid.initialize(mermaidConf); + if (Theme.switchable) { + window.addEventListener("message", refreshTheme); + } + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/mode-toggle.js + var $toggle = document.getElementById("mode-toggle"); + function modeWatcher() { + if (!$toggle) { + return; + } + $toggle.addEventListener("click", () => { + Theme.flip(); + }); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/back-to-top.js + function back2top() { + const btn = document.getElementById("back-to-top"); + window.addEventListener("scroll", () => { + if (window.scrollY > 50) { + btn.classList.add("show"); + } else { + btn.classList.remove("show"); + } + }); + btn.addEventListener("click", () => { + window.scrollTo({ top: 0 }); + }); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/tooltip-loader.js + function loadTooptip() { + const tooltipTriggerList = document.querySelectorAll( + '[data-bs-toggle="tooltip"]' + ); + [...tooltipTriggerList].map( + (tooltipTriggerEl) => new tooltip_default(tooltipTriggerEl) + ); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/layouts/basic.js + function basic() { + modeWatcher(); + back2top(); + loadTooptip(); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/layouts/sidebar.js + var ATTR_DISPLAY = "sidebar-display"; + var $sidebar = document.getElementById("sidebar"); + var $trigger = document.getElementById("sidebar-trigger"); + var $mask = document.getElementById("mask"); + var _isExpanded; + var SidebarUtil = class { + static toggle() { + __privateSet(this, _isExpanded, !__privateGet(this, _isExpanded)); + document.body.toggleAttribute(ATTR_DISPLAY, __privateGet(this, _isExpanded)); + $sidebar.classList.toggle("z-2", __privateGet(this, _isExpanded)); + $mask.classList.toggle("d-none", !__privateGet(this, _isExpanded)); + } + }; + _isExpanded = new WeakMap(); + __privateAdd(SidebarUtil, _isExpanded, false); + function initSidebar() { + $trigger.onclick = $mask.onclick = () => SidebarUtil.toggle(); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/search-display.js + var btnSbTrigger = document.getElementById("sidebar-trigger"); + var btnSearchTrigger = document.getElementById("search-trigger"); + var btnCancel = document.getElementById("search-cancel"); + var content = document.querySelectorAll("#main-wrapper>.container>.row"); + var topbarTitle = document.getElementById("topbar-title"); + var search = document.getElementById("search"); + var resultWrapper = document.getElementById("search-result-wrapper"); + var results = document.getElementById("search-results"); + var input = document.getElementById("search-input"); + var hints = document.getElementById("search-hints"); + var LOADED = "d-block"; + var UNLOADED = "d-none"; + var FOCUS = "input-focus"; + var FLEX = "d-flex"; + var MobileSearchBar = class { + static on() { + btnSbTrigger.classList.add(UNLOADED); + topbarTitle.classList.add(UNLOADED); + btnSearchTrigger.classList.add(UNLOADED); + search.classList.add(FLEX); + btnCancel.classList.add(LOADED); + } + static off() { + btnCancel.classList.remove(LOADED); + search.classList.remove(FLEX); + btnSbTrigger.classList.remove(UNLOADED); + topbarTitle.classList.remove(UNLOADED); + btnSearchTrigger.classList.remove(UNLOADED); + } + }; + var ResultSwitch = class { + static on() { + if (!this.resultVisible) { + resultWrapper.classList.remove(UNLOADED); + content.forEach((el) => { + el.classList.add(UNLOADED); + }); + this.resultVisible = true; + } + } + static off() { + if (this.resultVisible) { + results.innerHTML = ""; + if (hints.classList.contains(UNLOADED)) { + hints.classList.remove(UNLOADED); + } + resultWrapper.classList.add(UNLOADED); + content.forEach((el) => { + el.classList.remove(UNLOADED); + }); + input.textContent = ""; + this.resultVisible = false; + } + } + }; + __publicField(ResultSwitch, "resultVisible", false); + function isMobileView() { + return btnCancel.classList.contains(LOADED); + } + function displaySearch() { + btnSearchTrigger.addEventListener("click", () => { + MobileSearchBar.on(); + ResultSwitch.on(); + input.focus(); + }); + btnCancel.addEventListener("click", () => { + MobileSearchBar.off(); + ResultSwitch.off(); + }); + input.addEventListener("focus", () => { + search.classList.add(FOCUS); + }); + input.addEventListener("focusout", () => { + search.classList.remove(FOCUS); + }); + input.addEventListener("input", () => { + if (input.value === "") { + if (isMobileView()) { + hints.classList.remove(UNLOADED); + } else { + ResultSwitch.off(); + } + } else { + ResultSwitch.on(); + if (isMobileView()) { + hints.classList.add(UNLOADED); + } + } + }); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/layouts/topbar.js + function initTopbar() { + displaySearch(); + } + + // + loadImg(); + imgPopup(); + initSidebar(); + initTopbar(); + initClipboard(); + loadMermaid(); + basic(); +})(); diff --git a/public/js/post.js b/public/js/post.js index 6bcfe6d..c15e0b9 100644 --- a/public/js/post.js +++ b/public/js/post.js @@ -1 +1,3643 @@ -(()=>{var Kn=Object.create;var ge=Object.defineProperty,Qn=Object.defineProperties,Xn=Object.getOwnPropertyDescriptor,Jn=Object.getOwnPropertyDescriptors,Zn=Object.getOwnPropertyNames,Sr=Object.getOwnPropertySymbols,to=Object.getPrototypeOf,xr=Object.prototype.hasOwnProperty,eo=Object.prototype.propertyIsEnumerable;var Cr=e=>{throw TypeError(e)};var me=(e,t,r)=>t in e?ge(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,N=(e,t)=>{for(var r in t||(t={}))xr.call(t,r)&&me(e,r,t[r]);if(Sr)for(var r of Sr(t))eo.call(t,r)&&me(e,r,t[r]);return e},Lr=(e,t)=>Qn(e,Jn(t));var ro=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var no=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Zn(t))!xr.call(e,o)&&o!==r&&ge(e,o,{get:()=>t[o],enumerable:!(n=Xn(t,o))||n.enumerable});return e};var oo=(e,t,r)=>(r=e!=null?Kn(to(e)):{},no(t||!e||!e.__esModule?ge(r,"default",{value:e,enumerable:!0}):r,e));var ut=(e,t,r)=>me(e,typeof t!="symbol"?t+"":t,r),Dr=(e,t,r)=>t.has(e)||Cr("Cannot "+r);var U=(e,t,r)=>(Dr(e,t,"read from private field"),r?r.call(e):t.get(e)),St=(e,t,r)=>t.has(e)?Cr("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),Wt=(e,t,r,n)=>(Dr(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r);var vn=ro(D=>{"use strict";Object.defineProperty(D,"__esModule",{value:!0});function H(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function pt(e){var t=H(e).Element;return e instanceof t||e instanceof Element}function k(e){var t=H(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function en(e){if(typeof ShadowRoot=="undefined")return!1;var t=H(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}var st=Math.max,te=Math.min,dt=Math.round;function ht(e,t){t===void 0&&(t=!1);var r=e.getBoundingClientRect(),n=1,o=1;if(k(e)&&t){var s=e.offsetHeight,i=e.offsetWidth;i>0&&(n=dt(r.width)/i||1),s>0&&(o=dt(r.height)/s||1)}return{width:r.width/n,height:r.height/o,top:r.top/o,right:r.right/n,bottom:r.bottom/o,left:r.left/n,x:r.left/n,y:r.top/o}}function Re(e){var t=H(e),r=t.pageXOffset,n=t.pageYOffset;return{scrollLeft:r,scrollTop:n}}function Mo(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function Ro(e){return e===H(e)||!k(e)?Re(e):Mo(e)}function q(e){return e?(e.nodeName||"").toLowerCase():null}function J(e){return((pt(e)?e.ownerDocument:e.document)||window.document).documentElement}function ke(e){return ht(J(e)).left+Re(e).scrollLeft}function W(e){return H(e).getComputedStyle(e)}function $e(e){var t=W(e),r=t.overflow,n=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(r+o+n)}function ko(e){var t=e.getBoundingClientRect(),r=dt(t.width)/e.offsetWidth||1,n=dt(t.height)/e.offsetHeight||1;return r!==1||n!==1}function $o(e,t,r){r===void 0&&(r=!1);var n=k(t),o=k(t)&&ko(t),s=J(t),i=ht(e,o),a={scrollLeft:0,scrollTop:0},c={x:0,y:0};return(n||!n&&!r)&&((q(t)!=="body"||$e(s))&&(a=Ro(t)),k(t)?(c=ht(t,!0),c.x+=t.clientLeft,c.y+=t.clientTop):s&&(c.x=ke(s))),{x:i.left+a.scrollLeft-c.x,y:i.top+a.scrollTop-c.y,width:i.width,height:i.height}}function Be(e){var t=ht(e),r=e.offsetWidth,n=e.offsetHeight;return Math.abs(t.width-r)<=1&&(r=t.width),Math.abs(t.height-n)<=1&&(n=t.height),{x:e.offsetLeft,y:e.offsetTop,width:r,height:n}}function ee(e){return q(e)==="html"?e:e.assignedSlot||e.parentNode||(en(e)?e.host:null)||J(e)}function rn(e){return["html","body","#document"].indexOf(q(e))>=0?e.ownerDocument.body:k(e)&&$e(e)?e:rn(ee(e))}function Dt(e,t){var r;t===void 0&&(t=[]);var n=rn(e),o=n===((r=e.ownerDocument)==null?void 0:r.body),s=H(n),i=o?[s].concat(s.visualViewport||[],$e(n)?n:[]):n,a=t.concat(i);return o?a:a.concat(Dt(ee(i)))}function Bo(e){return["table","td","th"].indexOf(q(e))>=0}function Ur(e){return!k(e)||W(e).position==="fixed"?null:e.offsetParent}function jo(e){var t=navigator.userAgent.toLowerCase().indexOf("firefox")!==-1,r=navigator.userAgent.indexOf("Trident")!==-1;if(r&&k(e)){var n=W(e);if(n.position==="fixed")return null}for(var o=ee(e);k(o)&&["html","body"].indexOf(q(o))<0;){var s=W(o);if(s.transform!=="none"||s.perspective!=="none"||s.contain==="paint"||["transform","perspective"].indexOf(s.willChange)!==-1||t&&s.willChange==="filter"||t&&s.filter&&s.filter!=="none")return o;o=o.parentNode}return null}function Pt(e){for(var t=H(e),r=Ur(e);r&&Bo(r)&&W(r).position==="static";)r=Ur(r);return r&&(q(r)==="html"||q(r)==="body"&&W(r).position==="static")?t:r||jo(e)||t}var I="top",$="bottom",B="right",P="left",je="auto",Mt=[I,$,B,P],mt="start",It="end",Fo="clippingParents",nn="viewport",Lt="popper",Ho="reference",Yr=Mt.reduce(function(e,t){return e.concat([t+"-"+mt,t+"-"+It])},[]),on=[].concat(Mt,[je]).reduce(function(e,t){return e.concat([t,t+"-"+mt,t+"-"+It])},[]),Vo="beforeRead",qo="read",Wo="afterRead",zo="beforeMain",Uo="main",Yo="afterMain",Go="beforeWrite",Ko="write",Qo="afterWrite",Xo=[Vo,qo,Wo,zo,Uo,Yo,Go,Ko,Qo];function Jo(e){var t=new Map,r=new Set,n=[];e.forEach(function(s){t.set(s.name,s)});function o(s){r.add(s.name);var i=[].concat(s.requires||[],s.requiresIfExists||[]);i.forEach(function(a){if(!r.has(a)){var c=t.get(a);c&&o(c)}}),n.push(s)}return e.forEach(function(s){r.has(s.name)||o(s)}),n}function Zo(e){var t=Jo(e);return Xo.reduce(function(r,n){return r.concat(t.filter(function(o){return o.phase===n}))},[])}function ti(e){var t;return function(){return t||(t=new Promise(function(r){Promise.resolve().then(function(){t=void 0,r(e())})})),t}}function V(e){return e.split("-")[0]}function ei(e){var t=e.reduce(function(r,n){var o=r[n.name];return r[n.name]=o?Object.assign({},o,n,{options:Object.assign({},o.options,n.options),data:Object.assign({},o.data,n.data)}):n,r},{});return Object.keys(t).map(function(r){return t[r]})}function ri(e){var t=H(e),r=J(e),n=t.visualViewport,o=r.clientWidth,s=r.clientHeight,i=0,a=0;return n&&(o=n.width,s=n.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(i=n.offsetLeft,a=n.offsetTop)),{width:o,height:s,x:i+ke(e),y:a}}function ni(e){var t,r=J(e),n=Re(e),o=(t=e.ownerDocument)==null?void 0:t.body,s=st(r.scrollWidth,r.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),i=st(r.scrollHeight,r.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-n.scrollLeft+ke(e),c=-n.scrollTop;return W(o||r).direction==="rtl"&&(a+=st(r.clientWidth,o?o.clientWidth:0)-s),{width:s,height:i,x:a,y:c}}function sn(e,t){var r=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(r&&en(r)){var n=t;do{if(n&&e.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function Me(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function oi(e){var t=ht(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}function Gr(e,t){return t===nn?Me(ri(e)):pt(t)?oi(t):Me(ni(J(e)))}function ii(e){var t=Dt(ee(e)),r=["absolute","fixed"].indexOf(W(e).position)>=0,n=r&&k(e)?Pt(e):e;return pt(n)?t.filter(function(o){return pt(o)&&sn(o,n)&&q(o)!=="body"&&(r?W(o).position!=="static":!0)}):[]}function si(e,t,r){var n=t==="clippingParents"?ii(e):[].concat(t),o=[].concat(n,[r]),s=o[0],i=o.reduce(function(a,c){var u=Gr(e,c);return a.top=st(u.top,a.top),a.right=te(u.right,a.right),a.bottom=te(u.bottom,a.bottom),a.left=st(u.left,a.left),a},Gr(e,s));return i.width=i.right-i.left,i.height=i.bottom-i.top,i.x=i.left,i.y=i.top,i}function gt(e){return e.split("-")[1]}function Fe(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function an(e){var t=e.reference,r=e.element,n=e.placement,o=n?V(n):null,s=n?gt(n):null,i=t.x+t.width/2-r.width/2,a=t.y+t.height/2-r.height/2,c;switch(o){case I:c={x:i,y:t.y-r.height};break;case $:c={x:i,y:t.y+t.height};break;case B:c={x:t.x+t.width,y:a};break;case P:c={x:t.x-r.width,y:a};break;default:c={x:t.x,y:t.y}}var u=o?Fe(o):null;if(u!=null){var l=u==="y"?"height":"width";switch(s){case mt:c[u]=c[u]-(t[l]/2-r[l]/2);break;case It:c[u]=c[u]+(t[l]/2-r[l]/2);break}}return c}function cn(){return{top:0,right:0,bottom:0,left:0}}function ln(e){return Object.assign({},cn(),e)}function un(e,t){return t.reduce(function(r,n){return r[n]=e,r},{})}function vt(e,t){t===void 0&&(t={});var r=t,n=r.placement,o=n===void 0?e.placement:n,s=r.boundary,i=s===void 0?Fo:s,a=r.rootBoundary,c=a===void 0?nn:a,u=r.elementContext,l=u===void 0?Lt:u,f=r.altBoundary,g=f===void 0?!1:f,p=r.padding,h=p===void 0?0:p,m=ln(typeof h!="number"?h:un(h,Mt)),d=l===Lt?Ho:Lt,w=e.rects.popper,A=e.elements[g?d:l],T=si(pt(A)?A:A.contextElement||J(e.elements.popper),i,c),v=ht(e.elements.reference),E=an({reference:v,element:w,strategy:"absolute",placement:o}),b=Me(Object.assign({},w,E)),y=l===Lt?b:v,O={top:T.top-y.top+m.top,bottom:y.bottom-T.bottom+m.bottom,left:T.left-y.left+m.left,right:y.right-T.right+m.right},x=e.modifiersData.offset;if(l===Lt&&x){var C=x[o];Object.keys(O).forEach(function(_){var L=[B,$].indexOf(_)>=0?1:-1,rt=[I,$].indexOf(_)>=0?"y":"x";O[_]+=C[rt]*L})}return O}var Kr={placement:"bottom",modifiers:[],strategy:"absolute"};function Qr(){for(var e=arguments.length,t=new Array(e),r=0;r=0?-1:1,s=typeof r=="function"?r(Object.assign({},t,{placement:e})):r,i=s[0],a=s[1];return i=i||0,a=(a||0)*o,[P,B].indexOf(n)>=0?{x:a,y:i}:{x:i,y:a}}function mi(e){var t=e.state,r=e.options,n=e.name,o=r.offset,s=o===void 0?[0,0]:o,i=on.reduce(function(l,f){return l[f]=hi(f,t.rects,s),l},{}),a=i[t.placement],c=a.x,u=a.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=c,t.modifiersData.popperOffsets.y+=u),t.modifiersData[n]=i}var fn={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:mi},gi={left:"right",right:"left",bottom:"top",top:"bottom"};function Zt(e){return e.replace(/left|right|bottom|top/g,function(t){return gi[t]})}var vi={start:"end",end:"start"};function Jr(e){return e.replace(/start|end/g,function(t){return vi[t]})}function bi(e,t){t===void 0&&(t={});var r=t,n=r.placement,o=r.boundary,s=r.rootBoundary,i=r.padding,a=r.flipVariations,c=r.allowedAutoPlacements,u=c===void 0?on:c,l=gt(n),f=l?a?Yr:Yr.filter(function(h){return gt(h)===l}):Mt,g=f.filter(function(h){return u.indexOf(h)>=0});g.length===0&&(g=f);var p=g.reduce(function(h,m){return h[m]=vt(e,{placement:m,boundary:o,rootBoundary:s,padding:i})[V(m)],h},{});return Object.keys(p).sort(function(h,m){return p[h]-p[m]})}function yi(e){if(V(e)===je)return[];var t=Zt(e);return[Jr(e),t,Jr(t)]}function Ei(e){var t=e.state,r=e.options,n=e.name;if(!t.modifiersData[n]._skip){for(var o=r.mainAxis,s=o===void 0?!0:o,i=r.altAxis,a=i===void 0?!0:i,c=r.fallbackPlacements,u=r.padding,l=r.boundary,f=r.rootBoundary,g=r.altBoundary,p=r.flipVariations,h=p===void 0?!0:p,m=r.allowedAutoPlacements,d=t.options.placement,w=V(d),A=w===d,T=c||(A||!h?[Zt(d)]:yi(d)),v=[d].concat(T).reduce(function(lt,G){return lt.concat(V(G)===je?bi(t,{placement:G,boundary:l,rootBoundary:f,padding:u,flipVariations:h,allowedAutoPlacements:m}):G)},[]),E=t.rects.reference,b=t.rects.popper,y=new Map,O=!0,x=v[0],C=0;C=0,At=wt?"width":"height",R=vt(t,{placement:_,boundary:l,rootBoundary:f,altBoundary:g,padding:u}),j=wt?rt?B:P:rt?$:I;E[At]>b[At]&&(j=Zt(j));var jt=Zt(j),nt=[];if(s&&nt.push(R[L]<=0),a&&nt.push(R[j]<=0,R[jt]<=0),nt.every(function(lt){return lt})){x=_,O=!1;break}y.set(_,nt)}if(O)for(var Ft=h?3:1,fe=function(G){var Ot=v.find(function(Vt){var ot=y.get(Vt);if(ot)return ot.slice(0,G).every(function(pe){return pe})});if(Ot)return x=Ot,"break"},Tt=Ft;Tt>0;Tt--){var Ht=fe(Tt);if(Ht==="break")break}t.placement!==x&&(t.modifiersData[n]._skip=!0,t.placement=x,t.reset=!0)}}var pn={name:"flip",enabled:!0,phase:"main",fn:Ei,requiresIfExists:["offset"],data:{_skip:!1}};function _i(e){return e==="x"?"y":"x"}function Nt(e,t,r){return st(e,te(t,r))}function wi(e,t,r){var n=Nt(e,t,r);return n>r?r:n}function Ai(e){var t=e.state,r=e.options,n=e.name,o=r.mainAxis,s=o===void 0?!0:o,i=r.altAxis,a=i===void 0?!1:i,c=r.boundary,u=r.rootBoundary,l=r.altBoundary,f=r.padding,g=r.tether,p=g===void 0?!0:g,h=r.tetherOffset,m=h===void 0?0:h,d=vt(t,{boundary:c,rootBoundary:u,padding:f,altBoundary:l}),w=V(t.placement),A=gt(t.placement),T=!A,v=Fe(w),E=_i(v),b=t.modifiersData.popperOffsets,y=t.rects.reference,O=t.rects.popper,x=typeof m=="function"?m(Object.assign({},t.rects,{placement:t.placement})):m,C=typeof x=="number"?{mainAxis:x,altAxis:x}:Object.assign({mainAxis:0,altAxis:0},x),_=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,L={x:0,y:0};if(b){if(s){var rt,wt=v==="y"?I:P,At=v==="y"?$:B,R=v==="y"?"height":"width",j=b[v],jt=j+d[wt],nt=j-d[At],Ft=p?-O[R]/2:0,fe=A===mt?y[R]:O[R],Tt=A===mt?-O[R]:-y[R],Ht=t.elements.arrow,lt=p&&Ht?Be(Ht):{width:0,height:0},G=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:cn(),Ot=G[wt],Vt=G[At],ot=Nt(0,y[R],lt[R]),pe=T?y[R]/2-Ft-ot-Ot-C.mainAxis:fe-ot-Ot-C.mainAxis,qn=T?-y[R]/2+Ft+ot+Vt+C.mainAxis:Tt+ot+Vt+C.mainAxis,de=t.elements.arrow&&Pt(t.elements.arrow),Wn=de?v==="y"?de.clientTop||0:de.clientLeft||0:0,vr=(rt=_==null?void 0:_[v])!=null?rt:0,zn=j+pe-vr-Wn,Un=j+qn-vr,br=Nt(p?te(jt,zn):jt,j,p?st(nt,Un):nt);b[v]=br,L[v]=br-j}if(a){var yr,Yn=v==="x"?I:P,Gn=v==="x"?$:B,it=b[E],qt=E==="y"?"height":"width",Er=it+d[Yn],_r=it-d[Gn],he=[I,P].indexOf(w)!==-1,wr=(yr=_==null?void 0:_[E])!=null?yr:0,Ar=he?Er:it-y[qt]-O[qt]-wr+C.altAxis,Tr=he?it+y[qt]+O[qt]-wr-C.altAxis:_r,Or=p&&he?wi(Ar,it,Tr):Nt(p?Ar:Er,it,p?Tr:_r);b[E]=Or,L[E]=Or-it}t.modifiersData[n]=L}}var dn={name:"preventOverflow",enabled:!0,phase:"main",fn:Ai,requiresIfExists:["offset"]},Ti=function(t,r){return t=typeof t=="function"?t(Object.assign({},r.rects,{placement:r.placement})):t,ln(typeof t!="number"?t:un(t,Mt))};function Oi(e){var t,r=e.state,n=e.name,o=e.options,s=r.elements.arrow,i=r.modifiersData.popperOffsets,a=V(r.placement),c=Fe(a),u=[P,B].indexOf(a)>=0,l=u?"height":"width";if(!(!s||!i)){var f=Ti(o.padding,r),g=Be(s),p=c==="y"?I:P,h=c==="y"?$:B,m=r.rects.reference[l]+r.rects.reference[c]-i[c]-r.rects.popper[l],d=i[c]-r.rects.reference[c],w=Pt(s),A=w?c==="y"?w.clientHeight||0:w.clientWidth||0:0,T=m/2-d/2,v=f[p],E=A-g[l]-f[h],b=A/2-g[l]/2+T,y=Nt(v,b,E),O=c;r.modifiersData[n]=(t={},t[O]=y,t.centerOffset=y-b,t)}}function Si(e){var t=e.state,r=e.options,n=r.element,o=n===void 0?"[data-popper-arrow]":n;o!=null&&(typeof o=="string"&&(o=t.elements.popper.querySelector(o),!o)||sn(t.elements.popper,o)&&(t.elements.arrow=o))}var hn={name:"arrow",enabled:!0,phase:"main",fn:Oi,effect:Si,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Zr(e,t,r){return r===void 0&&(r={x:0,y:0}),{top:e.top-t.height-r.y,right:e.right-t.width+r.x,bottom:e.bottom-t.height+r.y,left:e.left-t.width-r.x}}function tn(e){return[I,B,$,P].some(function(t){return e[t]>=0})}function xi(e){var t=e.state,r=e.name,n=t.rects.reference,o=t.rects.popper,s=t.modifiersData.preventOverflow,i=vt(t,{elementContext:"reference"}),a=vt(t,{altBoundary:!0}),c=Zr(i,n),u=Zr(a,o,s),l=tn(c),f=tn(u);t.modifiersData[r]={referenceClippingOffsets:c,popperEscapeOffsets:u,isReferenceHidden:l,hasPopperEscaped:f},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":l,"data-popper-escaped":f})}var mn={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:xi},Ci=[Ve,qe,We,ze],Li=He({defaultModifiers:Ci}),gn=[Ve,qe,We,ze,fn,pn,dn,hn,mn],Di=He({defaultModifiers:gn});D.applyStyles=ze;D.arrow=hn;D.computeStyles=We;D.createPopper=Di;D.createPopperLite=Li;D.defaultModifiers=gn;D.detectOverflow=vt;D.eventListeners=Ve;D.flip=pn;D.hide=mn;D.offset=fn;D.popperGenerator=He;D.popperOffsets=qe;D.preventOverflow=dn});var K=new Map,zt={set(e,t,r){K.has(e)||K.set(e,new Map);let n=K.get(e);if(!n.has(t)&&n.size!==0){console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`);return}n.set(t,r)},get(e,t){return K.has(e)&&K.get(e).get(t)||null},remove(e,t){if(!K.has(e))return;let r=K.get(e);r.delete(t),r.size===0&&K.delete(e)}};var be="transitionend",ye=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,(t,r)=>`#${CSS.escape(r)}`)),e),Nr=e=>e==null?`${e}`:Object.prototype.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase(),Ir=e=>{do e+=Math.floor(Math.random()*1e6);while(document.getElementById(e));return e},io=e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:r}=window.getComputedStyle(e),n=Number.parseFloat(t),o=Number.parseFloat(r);return!n&&!o?0:(t=t.split(",")[0],r=r.split(",")[0],(Number.parseFloat(t)+Number.parseFloat(r))*1e3)},so=e=>{e.dispatchEvent(new Event(be))},X=e=>!e||typeof e!="object"?!1:(typeof e.jquery!="undefined"&&(e=e[0]),typeof e.nodeType!="undefined"),Y=e=>X(e)?e.jquery?e[0]:e:typeof e=="string"&&e.length>0?document.querySelector(ye(e)):null,Pr=e=>{if(!X(e)||e.getClientRects().length===0)return!1;let t=getComputedStyle(e).getPropertyValue("visibility")==="visible",r=e.closest("details:not([open])");if(!r)return t;if(r!==e){let n=e.closest("summary");if(n&&n.parentNode!==r||n===null)return!1}return t},Mr=e=>!e||e.nodeType!==Node.ELEMENT_NODE||e.classList.contains("disabled")?!0:typeof e.disabled!="undefined"?e.disabled:e.hasAttribute("disabled")&&e.getAttribute("disabled")!=="false",Ee=e=>{if(!document.documentElement.attachShadow)return null;if(typeof e.getRootNode=="function"){let t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?Ee(e.parentNode):null},_e=()=>{},Rr=e=>{e.offsetHeight},we=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,ve=[],ao=e=>{document.readyState==="loading"?(ve.length||document.addEventListener("DOMContentLoaded",()=>{for(let t of ve)t()}),ve.push(e)):e()},Ae=()=>document.documentElement.dir==="rtl",Ut=e=>{ao(()=>{let t=we();if(t){let r=e.NAME,n=t.fn[r];t.fn[r]=e.jQueryInterface,t.fn[r].Constructor=e,t.fn[r].noConflict=()=>(t.fn[r]=n,e.jQueryInterface)}})},Q=(e,t=[],r=e)=>typeof e=="function"?e.call(...t):r,kr=(e,t,r=!0)=>{if(!r){Q(e);return}let o=io(t)+5,s=!1,i=({target:a})=>{a===t&&(s=!0,t.removeEventListener(be,i),Q(e))};t.addEventListener(be,i),setTimeout(()=>{s||so(t)},o)};var co=/[^.]*(?=\..*)\.|.*/,lo=/\..*/,uo=/::\d+$/,Te={},$r=1,jr={mouseenter:"mouseover",mouseleave:"mouseout"},fo=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function Fr(e,t){return t&&`${t}::${$r++}`||e.uidEvent||$r++}function Hr(e){let t=Fr(e);return e.uidEvent=t,Te[t]=Te[t]||{},Te[t]}function po(e,t){return function r(n){return xe(n,{delegateTarget:e}),r.oneOff&&Se.off(e,n.type,t),t.apply(e,[n])}}function ho(e,t,r){return function n(o){let s=e.querySelectorAll(t);for(let{target:i}=o;i&&i!==this;i=i.parentNode)for(let a of s)if(a===i)return xe(o,{delegateTarget:i}),n.oneOff&&Se.off(e,o.type,t,r),r.apply(i,[o])}}function Vr(e,t,r=null){return Object.values(e).find(n=>n.callable===t&&n.delegationSelector===r)}function qr(e,t,r){let n=typeof t=="string",o=n?r:t||r,s=Wr(e);return fo.has(s)||(s=e),[n,o,s]}function Br(e,t,r,n,o){if(typeof t!="string"||!e)return;let[s,i,a]=qr(t,r,n);t in jr&&(i=(h=>function(m){if(!m.relatedTarget||m.relatedTarget!==m.delegateTarget&&!m.delegateTarget.contains(m.relatedTarget))return h.call(this,m)})(i));let c=Hr(e),u=c[a]||(c[a]={}),l=Vr(u,i,s?r:null);if(l){l.oneOff=l.oneOff&&o;return}let f=Fr(i,t.replace(co,"")),g=s?ho(e,r,i):po(e,i);g.delegationSelector=s?r:null,g.callable=i,g.oneOff=o,g.uidEvent=f,u[f]=g,e.addEventListener(a,g,s)}function Oe(e,t,r,n,o){let s=Vr(t[r],n,o);s&&(e.removeEventListener(r,s,!!o),delete t[r][s.uidEvent])}function mo(e,t,r,n){let o=t[r]||{};for(let[s,i]of Object.entries(o))s.includes(n)&&Oe(e,t,r,i.callable,i.delegationSelector)}function Wr(e){return e=e.replace(lo,""),jr[e]||e}var Se={on(e,t,r,n){Br(e,t,r,n,!1)},one(e,t,r,n){Br(e,t,r,n,!0)},off(e,t,r,n){if(typeof t!="string"||!e)return;let[o,s,i]=qr(t,r,n),a=i!==t,c=Hr(e),u=c[i]||{},l=t.startsWith(".");if(typeof s!="undefined"){if(!Object.keys(u).length)return;Oe(e,c,i,s,o?r:null);return}if(l)for(let f of Object.keys(c))mo(e,c,f,t.slice(1));for(let[f,g]of Object.entries(u)){let p=f.replace(uo,"");(!a||t.includes(p))&&Oe(e,c,i,g.callable,g.delegationSelector)}},trigger(e,t,r){if(typeof t!="string"||!e)return null;let n=we(),o=Wr(t),s=t!==o,i=null,a=!0,c=!0,u=!1;s&&n&&(i=n.Event(t,r),n(e).trigger(i),a=!i.isPropagationStopped(),c=!i.isImmediatePropagationStopped(),u=i.isDefaultPrevented());let l=xe(new Event(t,{bubbles:a,cancelable:!0}),r);return u&&l.preventDefault(),c&&e.dispatchEvent(l),l.defaultPrevented&&i&&i.preventDefault(),l}};function xe(e,t={}){for(let[r,n]of Object.entries(t))try{e[r]=n}catch(o){Object.defineProperty(e,r,{configurable:!0,get(){return n}})}return e}var S=Se;function zr(e){if(e==="true")return!0;if(e==="false")return!1;if(e===Number(e).toString())return Number(e);if(e===""||e==="null")return null;if(typeof e!="string")return e;try{return JSON.parse(decodeURIComponent(e))}catch(t){return e}}function Ce(e){return e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}var go={setDataAttribute(e,t,r){e.setAttribute(`data-bs-${Ce(t)}`,r)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${Ce(t)}`)},getDataAttributes(e){if(!e)return{};let t={},r=Object.keys(e.dataset).filter(n=>n.startsWith("bs")&&!n.startsWith("bsConfig"));for(let n of r){let o=n.replace(/^bs/,"");o=o.charAt(0).toLowerCase()+o.slice(1),t[o]=zr(e.dataset[n])}return t},getDataAttribute(e,t){return zr(e.getAttribute(`data-bs-${Ce(t)}`))}},xt=go;var Le=class{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,r){let n=X(r)?xt.getDataAttribute(r,"config"):{};return N(N(N(N({},this.constructor.Default),typeof n=="object"?n:{}),X(r)?xt.getDataAttributes(r):{}),typeof t=="object"?t:{})}_typeCheckConfig(t,r=this.constructor.DefaultType){for(let[n,o]of Object.entries(r)){let s=t[n],i=X(s)?"element":Nr(s);if(!new RegExp(o).test(i))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${i}" but expected type "${o}".`)}}},Yt=Le;var vo="5.3.8",De=class extends Yt{constructor(t,r){super(),t=Y(t),t&&(this._element=t,this._config=this._getConfig(r),zt.set(this._element,this.constructor.DATA_KEY,this))}dispose(){zt.remove(this._element,this.constructor.DATA_KEY),S.off(this._element,this.constructor.EVENT_KEY);for(let t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,r,n=!0){kr(t,r,n)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return zt.get(Y(t),this.DATA_KEY)}static getOrCreateInstance(t,r={}){return this.getInstance(t)||new this(t,typeof r=="object"?r:null)}static get VERSION(){return vo}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}},Gt=De;var Ne=e=>{let t=e.getAttribute("data-bs-target");if(!t||t==="#"){let r=e.getAttribute("href");if(!r||!r.includes("#")&&!r.startsWith("."))return null;r.includes("#")&&!r.startsWith("#")&&(r=`#${r.split("#")[1]}`),t=r&&r!=="#"?r.trim():null}return t?t.split(",").map(r=>ye(r)).join(","):null},Kt={find(e,t=document.documentElement){return[].concat(...Element.prototype.querySelectorAll.call(t,e))},findOne(e,t=document.documentElement){return Element.prototype.querySelector.call(t,e)},children(e,t){return[].concat(...e.children).filter(r=>r.matches(t))},parents(e,t){let r=[],n=e.parentNode.closest(t);for(;n;)r.push(n),n=n.parentNode.closest(t);return r},prev(e,t){let r=e.previousElementSibling;for(;r;){if(r.matches(t))return[r];r=r.previousElementSibling}return[]},next(e,t){let r=e.nextElementSibling;for(;r;){if(r.matches(t))return[r];r=r.nextElementSibling}return[]},focusableChildren(e){let t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(r=>`${r}:not([tabindex^="-"])`).join(",");return this.find(t,e).filter(r=>!Mr(r)&&Pr(r))},getSelectorFromElement(e){let t=Ne(e);return t&&Kt.findOne(t)?t:null},getElementFromSelector(e){let t=Ne(e);return t?Kt.findOne(t):null},getMultipleElementsFromSelector(e){let t=Ne(e);return t?Kt.find(t):[]}},F=Kt;var bo="collapse",yo="bs.collapse",Ct=`.${yo}`,Eo=".data-api",_o=`show${Ct}`,wo=`shown${Ct}`,Ao=`hide${Ct}`,To=`hidden${Ct}`,Oo=`click${Ct}${Eo}`,Ie="show",ft="collapse",Qt="collapsing",So="collapsed",xo=`:scope .${ft} .${ft}`,Co="collapse-horizontal",Lo="width",Do="height",No=".collapse.show, .collapse.collapsing",Pe='[data-bs-toggle="collapse"]',Io={parent:null,toggle:!0},Po={parent:"(null|element)",toggle:"boolean"},Xt=class e extends Gt{constructor(t,r){super(t,r),this._isTransitioning=!1,this._triggerArray=[];let n=F.find(Pe);for(let o of n){let s=F.getSelectorFromElement(o),i=F.find(s).filter(a=>a===this._element);s!==null&&i.length&&this._triggerArray.push(o)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Io}static get DefaultType(){return Po}static get NAME(){return bo}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(No).filter(a=>a!==this._element).map(a=>e.getOrCreateInstance(a,{toggle:!1}))),t.length&&t[0]._isTransitioning||S.trigger(this._element,_o).defaultPrevented)return;for(let a of t)a.hide();let n=this._getDimension();this._element.classList.remove(ft),this._element.classList.add(Qt),this._element.style[n]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;let o=()=>{this._isTransitioning=!1,this._element.classList.remove(Qt),this._element.classList.add(ft,Ie),this._element.style[n]="",S.trigger(this._element,wo)},i=`scroll${n[0].toUpperCase()+n.slice(1)}`;this._queueCallback(o,this._element,!0),this._element.style[n]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown()||S.trigger(this._element,Ao).defaultPrevented)return;let r=this._getDimension();this._element.style[r]=`${this._element.getBoundingClientRect()[r]}px`,Rr(this._element),this._element.classList.add(Qt),this._element.classList.remove(ft,Ie);for(let o of this._triggerArray){let s=F.getElementFromSelector(o);s&&!this._isShown(s)&&this._addAriaAndCollapsedClass([o],!1)}this._isTransitioning=!0;let n=()=>{this._isTransitioning=!1,this._element.classList.remove(Qt),this._element.classList.add(ft),S.trigger(this._element,To)};this._element.style[r]="",this._queueCallback(n,this._element,!0)}_isShown(t=this._element){return t.classList.contains(Ie)}_configAfterMerge(t){return t.toggle=!!t.toggle,t.parent=Y(t.parent),t}_getDimension(){return this._element.classList.contains(Co)?Lo:Do}_initializeChildren(){if(!this._config.parent)return;let t=this._getFirstLevelChildren(Pe);for(let r of t){let n=F.getElementFromSelector(r);n&&this._addAriaAndCollapsedClass([r],this._isShown(n))}}_getFirstLevelChildren(t){let r=F.find(xo,this._config.parent);return F.find(t,this._config.parent).filter(n=>!r.includes(n))}_addAriaAndCollapsedClass(t,r){if(t.length)for(let n of t)n.classList.toggle(So,!r),n.setAttribute("aria-expanded",r)}static jQueryInterface(t){let r={};return typeof t=="string"&&/show|hide/.test(t)&&(r.toggle=!1),this.each(function(){let n=e.getOrCreateInstance(this,r);if(typeof t=="string"){if(typeof n[t]=="undefined")throw new TypeError(`No method named "${t}"`);n[t]()}})}};S.on(document,Oo,Pe,function(e){(e.target.tagName==="A"||e.delegateTarget&&e.delegateTarget.tagName==="A")&&e.preventDefault();for(let t of F.getMultipleElementsFromSelector(this))Xt.getOrCreateInstance(t,{toggle:!1}).toggle()});Ut(Xt);var Gs=document.getElementsByClassName("collapse");var Qe=oo(vn());var Ni=/^aria-[\w-]*$/i,re={"*":["class","dir","id","lang","role",Ni],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Ii=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Pi=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,Mi=(e,t)=>{let r=e.nodeName.toLowerCase();return t.includes(r)?Ii.has(r)?!!Pi.test(e.nodeValue):!0:t.filter(n=>n instanceof RegExp).some(n=>n.test(r))};function bn(e,t,r){if(!e.length)return e;if(r&&typeof r=="function")return r(e);let o=new window.DOMParser().parseFromString(e,"text/html"),s=[].concat(...o.body.querySelectorAll("*"));for(let i of s){let a=i.nodeName.toLowerCase();if(!Object.keys(t).includes(a)){i.remove();continue}let c=[].concat(...i.attributes),u=[].concat(t["*"]||[],t[a]||[]);for(let l of c)Mi(l,u)||i.removeAttribute(l.nodeName)}return o.body.innerHTML}var Ri="TemplateFactory",ki={allowList:re,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},$i={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Bi={entry:"(string|element|function|null)",selector:"(string|element)"},Ue=class extends Yt{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return ki}static get DefaultType(){return $i}static get NAME(){return Ri}getContent(){return Object.values(this._config.content).map(t=>this._resolvePossibleFunction(t)).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content=N(N({},this._config.content),t),this}toHtml(){let t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(let[o,s]of Object.entries(this._config.content))this._setContent(t,s,o);let r=t.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&r.classList.add(...n.split(" ")),r}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(let[r,n]of Object.entries(t))super._typeCheckConfig({selector:r,entry:n},Bi)}_setContent(t,r,n){let o=F.findOne(n,t);if(o){if(r=this._resolvePossibleFunction(r),!r){o.remove();return}if(X(r)){this._putElementInTemplate(Y(r),o);return}if(this._config.html){o.innerHTML=this._maybeSanitize(r);return}o.textContent=r}}_maybeSanitize(t){return this._config.sanitize?bn(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return Q(t,[void 0,this])}_putElementInTemplate(t,r){if(this._config.html){r.innerHTML="",r.append(t);return}r.textContent=t.textContent}},yn=Ue;var ji="tooltip",Fi=new Set(["sanitize","allowList","sanitizeFn"]),Ye="fade",Hi="modal",ne="show",Vi=".tooltip-inner",En=`.${Hi}`,_n="hide.bs.modal",Rt="hover",Ge="focus",Ke="click",qi="manual",Wi="hide",zi="hidden",Ui="show",Yi="shown",Gi="inserted",Ki="click",Qi="focusin",Xi="focusout",Ji="mouseenter",Zi="mouseleave",ts={AUTO:"auto",TOP:"top",RIGHT:Ae()?"left":"right",BOTTOM:"bottom",LEFT:Ae()?"right":"left"},es={allowList:re,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},rs={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"},oe=class e extends Gt{constructor(t,r){if(typeof Qe=="undefined")throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org/docs/v2/)");super(t,r),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return es}static get DefaultType(){return rs}static get NAME(){return ji}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){if(this._isEnabled){if(this._isShown()){this._leave();return}this._enter()}}dispose(){clearTimeout(this._timeout),S.off(this._element.closest(En),_n,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if(this._element.style.display==="none")throw new Error("Please use show on visible elements");if(!(this._isWithContent()&&this._isEnabled))return;let t=S.trigger(this._element,this.constructor.eventName(Ui)),n=(Ee(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!n)return;this._disposePopper();let o=this._getTipElement();this._element.setAttribute("aria-describedby",o.getAttribute("id"));let{container:s}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(s.append(o),S.trigger(this._element,this.constructor.eventName(Gi))),this._popper=this._createPopper(o),o.classList.add(ne),"ontouchstart"in document.documentElement)for(let a of[].concat(...document.body.children))S.on(a,"mouseover",_e);let i=()=>{S.trigger(this._element,this.constructor.eventName(Yi)),this._isHovered===!1&&this._leave(),this._isHovered=!1};this._queueCallback(i,this.tip,this._isAnimated())}hide(){if(!this._isShown()||S.trigger(this._element,this.constructor.eventName(Wi)).defaultPrevented)return;if(this._getTipElement().classList.remove(ne),"ontouchstart"in document.documentElement)for(let o of[].concat(...document.body.children))S.off(o,"mouseover",_e);this._activeTrigger[Ke]=!1,this._activeTrigger[Ge]=!1,this._activeTrigger[Rt]=!1,this._isHovered=null;let n=()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),S.trigger(this._element,this.constructor.eventName(zi)))};this._queueCallback(n,this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return!!this._getTitle()}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){let r=this._getTemplateFactory(t).toHtml();if(!r)return null;r.classList.remove(Ye,ne),r.classList.add(`bs-${this.constructor.NAME}-auto`);let n=Ir(this.constructor.NAME).toString();return r.setAttribute("id",n),this._isAnimated()&&r.classList.add(Ye),r}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new yn(Lr(N({},this._config),{content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)})),this._templateFactory}_getContentForTemplate(){return{[Vi]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(Ye)}_isShown(){return this.tip&&this.tip.classList.contains(ne)}_createPopper(t){let r=Q(this._config.placement,[this,t,this._element]),n=ts[r.toUpperCase()];return Qe.createPopper(this._element,t,this._getPopperConfig(n))}_getOffset(){let{offset:t}=this._config;return typeof t=="string"?t.split(",").map(r=>Number.parseInt(r,10)):typeof t=="function"?r=>t(r,this._element):t}_resolvePossibleFunction(t){return Q(t,[this._element,this._element])}_getPopperConfig(t){let r={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:n=>{this._getTipElement().setAttribute("data-popper-placement",n.state.placement)}}]};return N(N({},r),Q(this._config.popperConfig,[void 0,r]))}_setListeners(){let t=this._config.trigger.split(" ");for(let r of t)if(r==="click")S.on(this._element,this.constructor.eventName(Ki),this._config.selector,n=>{let o=this._initializeOnDelegatedTarget(n);o._activeTrigger[Ke]=!(o._isShown()&&o._activeTrigger[Ke]),o.toggle()});else if(r!==qi){let n=r===Rt?this.constructor.eventName(Ji):this.constructor.eventName(Qi),o=r===Rt?this.constructor.eventName(Zi):this.constructor.eventName(Xi);S.on(this._element,n,this._config.selector,s=>{let i=this._initializeOnDelegatedTarget(s);i._activeTrigger[s.type==="focusin"?Ge:Rt]=!0,i._enter()}),S.on(this._element,o,this._config.selector,s=>{let i=this._initializeOnDelegatedTarget(s);i._activeTrigger[s.type==="focusout"?Ge:Rt]=i._element.contains(s.relatedTarget),i._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},S.on(this._element.closest(En),_n,this._hideModalHandler)}_fixTitle(){let t=this._element.getAttribute("title");t&&(!this._element.getAttribute("aria-label")&&!this._element.textContent.trim()&&this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){if(this._isShown()||this._isHovered){this._isHovered=!0;return}this._isHovered=!0,this._setTimeout(()=>{this._isHovered&&this.show()},this._config.delay.show)}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout(()=>{this._isHovered||this.hide()},this._config.delay.hide))}_setTimeout(t,r){clearTimeout(this._timeout),this._timeout=setTimeout(t,r)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){let r=xt.getDataAttributes(this._element);for(let n of Object.keys(r))Fi.has(n)&&delete r[n];return t=N(N({},r),typeof t=="object"&&t?t:{}),t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=t.container===!1?document.body:Y(t.container),typeof t.delay=="number"&&(t.delay={show:t.delay,hide:t.delay}),typeof t.title=="number"&&(t.title=t.title.toString()),typeof t.content=="number"&&(t.content=t.content.toString()),t}_getDelegateConfig(){let t={};for(let[r,n]of Object.entries(this._config))this.constructor.Default[r]!==n&&(t[r]=n);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each(function(){let r=e.getOrCreateInstance(this,t);if(typeof t=="string"){if(typeof r[t]=="undefined")throw new TypeError(`No method named "${t}"`);r[t]()}})}};Ut(oe);var Z=oe;var wn=".code-header>button",ns="far fa-clipboard",os="fas fa-check",ie="timeout",An="data-title-succeed",kt="data-bs-original-title",Xe=2e3;function Tn(e){if(e.hasAttribute(ie)){let t=e.getAttribute(ie);if(Number(t)>Date.now())return!0}return!1}function On(e){e.setAttribute(ie,Date.now()+Xe)}function Sn(e){e.removeAttribute(ie)}function is(e){let t=e.getAttribute(An);e.setAttribute(kt,t),Z.getInstance(e).show()}function ss(e){Z.getInstance(e).hide(),e.removeAttribute(kt)}function as(e){e.children[0].setAttribute("class",os)}function cs(e){e.children[0].setAttribute("class",ns)}function ls(){let e=document.querySelectorAll(wn);if(e.length===0)return;let t=new ClipboardJS(wn,{target:r=>r.parentNode.nextElementSibling.querySelectorAll("code")[1]});[...e].map(r=>new Z(r,{placement:"left"})),t.on("success",r=>{let n=r.trigger;r.clearSelection(),!Tn(n)&&(as(n),is(n),On(n),setTimeout(()=>{ss(n),cs(n),Sn(n)},Xe))})}function us(){let e=document.getElementById("copy-link");e!==null&&(e.addEventListener("click",t=>{let r=t.target;Tn(r)||navigator.clipboard.writeText(window.location.href).then(()=>{let n=r.getAttribute(kt),o=r.getAttribute(An);r.setAttribute(kt,o),Z.getInstance(r).show(),On(r),setTimeout(()=>{r.setAttribute(kt,n),Sn(r)},Xe)})}),e.addEventListener("mouseleave",t=>{Z.getInstance(t.target).hide()}))}function Je(){ls(),us()}var xn="data-src",Cn="data-lqip",Ze={SHIMMER:"shimmer",BLUR:"blur"};function tr(e){this.parentElement.classList.remove(e)}function fs(){this.complete&&(this.hasAttribute(Cn)?tr.call(this,Ze.BLUR):tr.call(this,Ze.SHIMMER))}function ps(){let e=this.getAttribute(xn);this.setAttribute("src",encodeURI(e)),this.removeAttribute(xn)}function er(){let e=document.querySelectorAll("article img");if(e.length===0)return;e.forEach(r=>{r.addEventListener("load",fs)}),document.querySelectorAll('article img[loading="lazy"]').forEach(r=>{r.complete&&tr.call(r,Ze.SHIMMER)});let t=document.querySelectorAll(`article img[${Cn}="true"]`);t.length&&t.forEach(r=>{ps.call(r)})}var rr=".popup:not(.dark)",Ln=".popup:not(.light)",bt=rr;function ds(e,t){bt===rr?bt=Ln:bt=rr,t===null&&(t=GLightbox({selector:`${bt}`})),[e,t]=[t,e]}function nr(){if(document.querySelector(".popup")===null)return;let e=!(document.querySelector(".popup.light")===null&&document.querySelector(".popup.dark")===null);Theme.visualState===Theme.DARK&&(bt=Ln);let t=GLightbox({selector:`${bt}`});if(e&&Theme.switchable){let r=null;window.addEventListener("message",n=>{n.source===window&&n.data&&n.data.id===Theme.ID&&ds(t,r)})}}var tt=class{static get attrTimestamp(){return"data-ts"}static get attrDateFormat(){return"data-df"}static get locale(){return document.documentElement.getAttribute("lang").substring(0,2)}static getTimestamp(t){return Number(t.getAttribute(this.attrTimestamp))}static getDateFormat(t){return t.getAttribute(this.attrDateFormat)}};function or(){dayjs.locale(tt.locale),dayjs.extend(window.dayjs_plugin_localizedFormat),document.querySelectorAll(`[${tt.attrTimestamp}]`).forEach(e=>{let t=dayjs.unix(tt.getTimestamp(e)),r=t.format(tt.getDateFormat(e));if(e.textContent=r,e.removeAttribute(tt.attrTimestamp),e.removeAttribute(tt.attrDateFormat),e.hasAttribute("data-bs-toggle")&&e.getAttribute("data-bs-toggle")==="tooltip"){let n=t.format("llll");e.setAttribute("data-bs-title",n)}})}var hs=document.getElementById("toc-bar"),ms=document.getElementById("toc-solo-trigger"),gs=document.getElementsByClassName("toc-trigger"),z=document.getElementById("toc-popup"),vs=document.getElementById("toc-popup-close"),Dn="overflow-hidden",ir="closing",$t,Bt,yt=class yt{static initBar(){new IntersectionObserver(r=>{r.forEach(n=>{hs.classList.toggle("invisible",n.isIntersecting)})},{rootMargin:`-${U(this,Bt)}px 0px 0px 0px`}).observe(ms),Wt(this,$t,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach(r=>{r.onclick=()=>this.hidePopup()})}static refresh(){U(this,$t)&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return z.open}static showPopup(){this.lockScroll(!0),z.showModal(),z.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){z.toggleAttribute(ir),z.addEventListener("animationend",()=>{z.toggleAttribute(ir),z.close()},{once:!0}),this.lockScroll(!1)}static lockScroll(t){document.documentElement.classList.toggle(Dn,t),document.body.classList.toggle(Dn,t)}static clickBackdrop(t){if(z.hasAttribute(ir))return;let r=t.target.getBoundingClientRect();(t.clientXr.right||t.clientYr.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...gs].forEach(t=>{t.onclick=()=>this.showPopup()}),z.onclick=t=>this.clickBackdrop(t),vs.onclick=()=>this.hidePopup(),z.oncancel=t=>{t.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}};$t=new WeakMap,Bt=new WeakMap,St(yt,$t,!0),St(yt,Bt,48),ut(yt,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:U(yt,Bt)});var at=yt;var Et=class{static refresh(){tocbot.refresh(this.options)}static init(){tocbot.init(this.options)}};ut(Et,"options",{tocSelector:"#toc",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,headingsOffset:32});var Nn=matchMedia("(min-width: 1200px)");function bs(e){e.matches?(at.popupOpened&&at.hidePopup(),Et.refresh()):at.refresh()}function sr(){if(document.querySelector('main>article[data-toc="true"]')===null)return;Nn.matches?Et.init():at.init(),document.getElementById("toc-wrapper").classList.remove("invisible"),Nn.onchange=bs}var ar="mermaid",In=Theme.getThemeMapper("default","dark");function ys(e){if(e.source===window&&e.data&&e.data.id===Theme.ID){[...document.getElementsByClassName(ar)].forEach(n=>{let o=n.previousSibling.children.item(0).textContent;n.textContent=o,n.removeAttribute("data-processed")});let r=In[Theme.visualState];mermaid.initialize({theme:r}),mermaid.init(null,`.${ar}`)}}function Es(e){let t=e.textContent,r=e.parentElement;r.classList.add("d-none");let n=document.createElement("pre");n.classList.add(ar);let o=document.createTextNode(t);n.appendChild(o),r.after(n)}function cr(){if(typeof mermaid=="undefined"||typeof mermaid.initialize!="function")return;let t={theme:In[Theme.visualState]};[...document.getElementsByClassName("language-mermaid")].forEach(Es),mermaid.initialize(t),Theme.switchable&&window.addEventListener("message",ys)}var Pn=document.getElementById("mode-toggle");function lr(){Pn&&Pn.addEventListener("click",()=>{Theme.flip()})}function ur(){let e=document.getElementById("back-to-top");window.addEventListener("scroll",()=>{window.scrollY>50?e.classList.add("show"):e.classList.remove("show")}),e.addEventListener("click",()=>{window.scrollTo({top:0})})}function fr(){[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map(t=>new Z(t))}function pr(){lr(),ur(),fr()}var _s="sidebar-display",ws=document.getElementById("sidebar"),As=document.getElementById("sidebar-trigger"),Mn=document.getElementById("mask"),et,se=class{static toggle(){Wt(this,et,!U(this,et)),document.body.toggleAttribute(_s,U(this,et)),ws.classList.toggle("z-2",U(this,et)),Mn.classList.toggle("d-none",!U(this,et))}};et=new WeakMap,St(se,et,!1);function dr(){As.onclick=Mn.onclick=()=>se.toggle()}var Rn=document.getElementById("sidebar-trigger"),hr=document.getElementById("search-trigger"),ae=document.getElementById("search-cancel"),kn=document.querySelectorAll("#main-wrapper>.container>.row"),$n=document.getElementById("topbar-title"),ce=document.getElementById("search"),Bn=document.getElementById("search-result-wrapper"),Ts=document.getElementById("search-results"),_t=document.getElementById("search-input"),le=document.getElementById("search-hints"),mr="d-block",M="d-none",jn="input-focus",Fn="d-flex",ue=class{static on(){Rn.classList.add(M),$n.classList.add(M),hr.classList.add(M),ce.classList.add(Fn),ae.classList.add(mr)}static off(){ae.classList.remove(mr),ce.classList.remove(Fn),Rn.classList.remove(M),$n.classList.remove(M),hr.classList.remove(M)}},ct=class{static on(){this.resultVisible||(Bn.classList.remove(M),kn.forEach(t=>{t.classList.add(M)}),this.resultVisible=!0)}static off(){this.resultVisible&&(Ts.innerHTML="",le.classList.contains(M)&&le.classList.remove(M),Bn.classList.add(M),kn.forEach(t=>{t.classList.remove(M)}),_t.textContent="",this.resultVisible=!1)}};ut(ct,"resultVisible",!1);function Hn(){return ae.classList.contains(mr)}function Vn(){hr.addEventListener("click",()=>{ue.on(),ct.on(),_t.focus()}),ae.addEventListener("click",()=>{ue.off(),ct.off()}),_t.addEventListener("focus",()=>{ce.classList.add(jn)}),_t.addEventListener("focusout",()=>{ce.classList.remove(jn)}),_t.addEventListener("input",()=>{_t.value===""?Hn()?le.classList.remove(M):ct.off():(ct.on(),Hn()&&le.classList.add(M))})}function gr(){Vn()}er();sr();nr();dr();or();Je();gr();cr();pr();})(); +(() => { + var __create = Object.create; + var __defProp = Object.defineProperty; + var __defProps = Object.defineProperties; + var __getOwnPropDesc = Object.getOwnPropertyDescriptor; + var __getOwnPropDescs = Object.getOwnPropertyDescriptors; + var __getOwnPropNames = Object.getOwnPropertyNames; + var __getOwnPropSymbols = Object.getOwnPropertySymbols; + var __getProtoOf = Object.getPrototypeOf; + var __hasOwnProp = Object.prototype.hasOwnProperty; + var __propIsEnum = Object.prototype.propertyIsEnumerable; + var __typeError = (msg) => { + throw TypeError(msg); + }; + var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; + var __spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + if (__getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(b)) { + if (__propIsEnum.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + } + return a; + }; + var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); + var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; + }; + var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; + }; + var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod + )); + var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg); + var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj)); + var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value); + var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/gohugoio/hugo-mod-jslibs-dist/popperjs/v2@v2.21100.20000/package/dist/cjs/popper.js + var require_popper = __commonJS({ + "ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/gohugoio/hugo-mod-jslibs-dist/popperjs/v2@v2.21100.20000/package/dist/cjs/popper.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + function getWindow(node) { + if (node == null) { + return window; + } + if (node.toString() !== "[object Window]") { + var ownerDocument = node.ownerDocument; + return ownerDocument ? ownerDocument.defaultView || window : window; + } + return node; + } + function isElement2(node) { + var OwnElement = getWindow(node).Element; + return node instanceof OwnElement || node instanceof Element; + } + function isHTMLElement(node) { + var OwnElement = getWindow(node).HTMLElement; + return node instanceof OwnElement || node instanceof HTMLElement; + } + function isShadowRoot(node) { + if (typeof ShadowRoot === "undefined") { + return false; + } + var OwnElement = getWindow(node).ShadowRoot; + return node instanceof OwnElement || node instanceof ShadowRoot; + } + var max = Math.max; + var min = Math.min; + var round = Math.round; + function getBoundingClientRect(element, includeScale) { + if (includeScale === void 0) { + includeScale = false; + } + var rect = element.getBoundingClientRect(); + var scaleX = 1; + var scaleY = 1; + if (isHTMLElement(element) && includeScale) { + var offsetHeight = element.offsetHeight; + var offsetWidth = element.offsetWidth; + if (offsetWidth > 0) { + scaleX = round(rect.width) / offsetWidth || 1; + } + if (offsetHeight > 0) { + scaleY = round(rect.height) / offsetHeight || 1; + } + } + return { + width: rect.width / scaleX, + height: rect.height / scaleY, + top: rect.top / scaleY, + right: rect.right / scaleX, + bottom: rect.bottom / scaleY, + left: rect.left / scaleX, + x: rect.left / scaleX, + y: rect.top / scaleY + }; + } + function getWindowScroll(node) { + var win = getWindow(node); + var scrollLeft = win.pageXOffset; + var scrollTop = win.pageYOffset; + return { + scrollLeft, + scrollTop + }; + } + function getHTMLElementScroll(element) { + return { + scrollLeft: element.scrollLeft, + scrollTop: element.scrollTop + }; + } + function getNodeScroll(node) { + if (node === getWindow(node) || !isHTMLElement(node)) { + return getWindowScroll(node); + } else { + return getHTMLElementScroll(node); + } + } + function getNodeName(element) { + return element ? (element.nodeName || "").toLowerCase() : null; + } + function getDocumentElement(element) { + return ((isElement2(element) ? element.ownerDocument : ( + // $FlowFixMe[prop-missing] + element.document + )) || window.document).documentElement; + } + function getWindowScrollBarX(element) { + return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft; + } + function getComputedStyle2(element) { + return getWindow(element).getComputedStyle(element); + } + function isScrollParent(element) { + var _getComputedStyle = getComputedStyle2(element), overflow = _getComputedStyle.overflow, overflowX = _getComputedStyle.overflowX, overflowY = _getComputedStyle.overflowY; + return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX); + } + function isElementScaled(element) { + var rect = element.getBoundingClientRect(); + var scaleX = round(rect.width) / element.offsetWidth || 1; + var scaleY = round(rect.height) / element.offsetHeight || 1; + return scaleX !== 1 || scaleY !== 1; + } + function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) { + if (isFixed === void 0) { + isFixed = false; + } + var isOffsetParentAnElement = isHTMLElement(offsetParent); + var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent); + var documentElement = getDocumentElement(offsetParent); + var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled); + var scroll = { + scrollLeft: 0, + scrollTop: 0 + }; + var offsets = { + x: 0, + y: 0 + }; + if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { + if (getNodeName(offsetParent) !== "body" || // https://github.com/popperjs/popper-core/issues/1078 + isScrollParent(documentElement)) { + scroll = getNodeScroll(offsetParent); + } + if (isHTMLElement(offsetParent)) { + offsets = getBoundingClientRect(offsetParent, true); + offsets.x += offsetParent.clientLeft; + offsets.y += offsetParent.clientTop; + } else if (documentElement) { + offsets.x = getWindowScrollBarX(documentElement); + } + } + return { + x: rect.left + scroll.scrollLeft - offsets.x, + y: rect.top + scroll.scrollTop - offsets.y, + width: rect.width, + height: rect.height + }; + } + function getLayoutRect(element) { + var clientRect = getBoundingClientRect(element); + var width = element.offsetWidth; + var height = element.offsetHeight; + if (Math.abs(clientRect.width - width) <= 1) { + width = clientRect.width; + } + if (Math.abs(clientRect.height - height) <= 1) { + height = clientRect.height; + } + return { + x: element.offsetLeft, + y: element.offsetTop, + width, + height + }; + } + function getParentNode(element) { + if (getNodeName(element) === "html") { + return element; + } + return ( + // this is a quicker (but less type safe) way to save quite some bytes from the bundle + // $FlowFixMe[incompatible-return] + // $FlowFixMe[prop-missing] + element.assignedSlot || // step into the shadow DOM of the parent of a slotted node + element.parentNode || // DOM Element detected + (isShadowRoot(element) ? element.host : null) || // ShadowRoot detected + // $FlowFixMe[incompatible-call]: HTMLElement is a Node + getDocumentElement(element) + ); + } + function getScrollParent(node) { + if (["html", "body", "#document"].indexOf(getNodeName(node)) >= 0) { + return node.ownerDocument.body; + } + if (isHTMLElement(node) && isScrollParent(node)) { + return node; + } + return getScrollParent(getParentNode(node)); + } + function listScrollParents(element, list) { + var _element$ownerDocumen; + if (list === void 0) { + list = []; + } + var scrollParent = getScrollParent(element); + var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body); + var win = getWindow(scrollParent); + var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent; + var updatedList = list.concat(target); + return isBody ? updatedList : ( + // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here + updatedList.concat(listScrollParents(getParentNode(target))) + ); + } + function isTableElement(element) { + return ["table", "td", "th"].indexOf(getNodeName(element)) >= 0; + } + function getTrueOffsetParent(element) { + if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837 + getComputedStyle2(element).position === "fixed") { + return null; + } + return element.offsetParent; + } + function getContainingBlock(element) { + var isFirefox = navigator.userAgent.toLowerCase().indexOf("firefox") !== -1; + var isIE = navigator.userAgent.indexOf("Trident") !== -1; + if (isIE && isHTMLElement(element)) { + var elementCss = getComputedStyle2(element); + if (elementCss.position === "fixed") { + return null; + } + } + var currentNode = getParentNode(element); + while (isHTMLElement(currentNode) && ["html", "body"].indexOf(getNodeName(currentNode)) < 0) { + var css = getComputedStyle2(currentNode); + if (css.transform !== "none" || css.perspective !== "none" || css.contain === "paint" || ["transform", "perspective"].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === "filter" || isFirefox && css.filter && css.filter !== "none") { + return currentNode; + } else { + currentNode = currentNode.parentNode; + } + } + return null; + } + function getOffsetParent(element) { + var window2 = getWindow(element); + var offsetParent = getTrueOffsetParent(element); + while (offsetParent && isTableElement(offsetParent) && getComputedStyle2(offsetParent).position === "static") { + offsetParent = getTrueOffsetParent(offsetParent); + } + if (offsetParent && (getNodeName(offsetParent) === "html" || getNodeName(offsetParent) === "body" && getComputedStyle2(offsetParent).position === "static")) { + return window2; + } + return offsetParent || getContainingBlock(element) || window2; + } + var top = "top"; + var bottom = "bottom"; + var right = "right"; + var left = "left"; + var auto = "auto"; + var basePlacements = [top, bottom, right, left]; + var start = "start"; + var end = "end"; + var clippingParents = "clippingParents"; + var viewport = "viewport"; + var popper = "popper"; + var reference = "reference"; + var variationPlacements = /* @__PURE__ */ basePlacements.reduce(function(acc, placement) { + return acc.concat([placement + "-" + start, placement + "-" + end]); + }, []); + var placements = /* @__PURE__ */ [].concat(basePlacements, [auto]).reduce(function(acc, placement) { + return acc.concat([placement, placement + "-" + start, placement + "-" + end]); + }, []); + var beforeRead = "beforeRead"; + var read = "read"; + var afterRead = "afterRead"; + var beforeMain = "beforeMain"; + var main = "main"; + var afterMain = "afterMain"; + var beforeWrite = "beforeWrite"; + var write = "write"; + var afterWrite = "afterWrite"; + var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite]; + function order(modifiers) { + var map = /* @__PURE__ */ new Map(); + var visited = /* @__PURE__ */ new Set(); + var result = []; + modifiers.forEach(function(modifier) { + map.set(modifier.name, modifier); + }); + function sort(modifier) { + visited.add(modifier.name); + var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []); + requires.forEach(function(dep) { + if (!visited.has(dep)) { + var depModifier = map.get(dep); + if (depModifier) { + sort(depModifier); + } + } + }); + result.push(modifier); + } + modifiers.forEach(function(modifier) { + if (!visited.has(modifier.name)) { + sort(modifier); + } + }); + return result; + } + function orderModifiers(modifiers) { + var orderedModifiers = order(modifiers); + return modifierPhases.reduce(function(acc, phase) { + return acc.concat(orderedModifiers.filter(function(modifier) { + return modifier.phase === phase; + })); + }, []); + } + function debounce(fn) { + var pending; + return function() { + if (!pending) { + pending = new Promise(function(resolve) { + Promise.resolve().then(function() { + pending = void 0; + resolve(fn()); + }); + }); + } + return pending; + }; + } + function format(str) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + return [].concat(args).reduce(function(p, c) { + return p.replace(/%s/, c); + }, str); + } + var INVALID_MODIFIER_ERROR = 'Popper: modifier "%s" provided an invalid %s property, expected %s but got %s'; + var MISSING_DEPENDENCY_ERROR = 'Popper: modifier "%s" requires "%s", but "%s" modifier is not available'; + var VALID_PROPERTIES = ["name", "enabled", "phase", "fn", "effect", "requires", "options"]; + function validateModifiers(modifiers) { + modifiers.forEach(function(modifier) { + [].concat(Object.keys(modifier), VALID_PROPERTIES).filter(function(value, index, self) { + return self.indexOf(value) === index; + }).forEach(function(key) { + switch (key) { + case "name": + if (typeof modifier.name !== "string") { + console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '"name"', '"string"', '"' + String(modifier.name) + '"')); + } + break; + case "enabled": + if (typeof modifier.enabled !== "boolean") { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"enabled"', '"boolean"', '"' + String(modifier.enabled) + '"')); + } + break; + case "phase": + if (modifierPhases.indexOf(modifier.phase) < 0) { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + modifierPhases.join(", "), '"' + String(modifier.phase) + '"')); + } + break; + case "fn": + if (typeof modifier.fn !== "function") { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"fn"', '"function"', '"' + String(modifier.fn) + '"')); + } + break; + case "effect": + if (modifier.effect != null && typeof modifier.effect !== "function") { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"effect"', '"function"', '"' + String(modifier.fn) + '"')); + } + break; + case "requires": + if (modifier.requires != null && !Array.isArray(modifier.requires)) { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requires"', '"array"', '"' + String(modifier.requires) + '"')); + } + break; + case "requiresIfExists": + if (!Array.isArray(modifier.requiresIfExists)) { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requiresIfExists"', '"array"', '"' + String(modifier.requiresIfExists) + '"')); + } + break; + case "options": + case "data": + break; + default: + console.error('PopperJS: an invalid property has been provided to the "' + modifier.name + '" modifier, valid properties are ' + VALID_PROPERTIES.map(function(s) { + return '"' + s + '"'; + }).join(", ") + '; but "' + key + '" was provided.'); + } + modifier.requires && modifier.requires.forEach(function(requirement) { + if (modifiers.find(function(mod) { + return mod.name === requirement; + }) == null) { + console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement)); + } + }); + }); + }); + } + function uniqueBy(arr, fn) { + var identifiers = /* @__PURE__ */ new Set(); + return arr.filter(function(item) { + var identifier = fn(item); + if (!identifiers.has(identifier)) { + identifiers.add(identifier); + return true; + } + }); + } + function getBasePlacement(placement) { + return placement.split("-")[0]; + } + function mergeByName(modifiers) { + var merged = modifiers.reduce(function(merged2, current) { + var existing = merged2[current.name]; + merged2[current.name] = existing ? Object.assign({}, existing, current, { + options: Object.assign({}, existing.options, current.options), + data: Object.assign({}, existing.data, current.data) + }) : current; + return merged2; + }, {}); + return Object.keys(merged).map(function(key) { + return merged[key]; + }); + } + function getViewportRect(element) { + var win = getWindow(element); + var html = getDocumentElement(element); + var visualViewport = win.visualViewport; + var width = html.clientWidth; + var height = html.clientHeight; + var x = 0; + var y = 0; + if (visualViewport) { + width = visualViewport.width; + height = visualViewport.height; + if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) { + x = visualViewport.offsetLeft; + y = visualViewport.offsetTop; + } + } + return { + width, + height, + x: x + getWindowScrollBarX(element), + y + }; + } + function getDocumentRect(element) { + var _element$ownerDocumen; + var html = getDocumentElement(element); + var winScroll = getWindowScroll(element); + var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body; + var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); + var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); + var x = -winScroll.scrollLeft + getWindowScrollBarX(element); + var y = -winScroll.scrollTop; + if (getComputedStyle2(body || html).direction === "rtl") { + x += max(html.clientWidth, body ? body.clientWidth : 0) - width; + } + return { + width, + height, + x, + y + }; + } + function contains(parent, child) { + var rootNode = child.getRootNode && child.getRootNode(); + if (parent.contains(child)) { + return true; + } else if (rootNode && isShadowRoot(rootNode)) { + var next = child; + do { + if (next && parent.isSameNode(next)) { + return true; + } + next = next.parentNode || next.host; + } while (next); + } + return false; + } + function rectToClientRect(rect) { + return Object.assign({}, rect, { + left: rect.x, + top: rect.y, + right: rect.x + rect.width, + bottom: rect.y + rect.height + }); + } + function getInnerBoundingClientRect(element) { + var rect = getBoundingClientRect(element); + rect.top = rect.top + element.clientTop; + rect.left = rect.left + element.clientLeft; + rect.bottom = rect.top + element.clientHeight; + rect.right = rect.left + element.clientWidth; + rect.width = element.clientWidth; + rect.height = element.clientHeight; + rect.x = rect.left; + rect.y = rect.top; + return rect; + } + function getClientRectFromMixedType(element, clippingParent) { + return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isElement2(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element))); + } + function getClippingParents(element) { + var clippingParents2 = listScrollParents(getParentNode(element)); + var canEscapeClipping = ["absolute", "fixed"].indexOf(getComputedStyle2(element).position) >= 0; + var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element; + if (!isElement2(clipperElement)) { + return []; + } + return clippingParents2.filter(function(clippingParent) { + return isElement2(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== "body" && (canEscapeClipping ? getComputedStyle2(clippingParent).position !== "static" : true); + }); + } + function getClippingRect(element, boundary, rootBoundary) { + var mainClippingParents = boundary === "clippingParents" ? getClippingParents(element) : [].concat(boundary); + var clippingParents2 = [].concat(mainClippingParents, [rootBoundary]); + var firstClippingParent = clippingParents2[0]; + var clippingRect = clippingParents2.reduce(function(accRect, clippingParent) { + var rect = getClientRectFromMixedType(element, clippingParent); + accRect.top = max(rect.top, accRect.top); + accRect.right = min(rect.right, accRect.right); + accRect.bottom = min(rect.bottom, accRect.bottom); + accRect.left = max(rect.left, accRect.left); + return accRect; + }, getClientRectFromMixedType(element, firstClippingParent)); + clippingRect.width = clippingRect.right - clippingRect.left; + clippingRect.height = clippingRect.bottom - clippingRect.top; + clippingRect.x = clippingRect.left; + clippingRect.y = clippingRect.top; + return clippingRect; + } + function getVariation(placement) { + return placement.split("-")[1]; + } + function getMainAxisFromPlacement(placement) { + return ["top", "bottom"].indexOf(placement) >= 0 ? "x" : "y"; + } + function computeOffsets(_ref) { + var reference2 = _ref.reference, element = _ref.element, placement = _ref.placement; + var basePlacement = placement ? getBasePlacement(placement) : null; + var variation = placement ? getVariation(placement) : null; + var commonX = reference2.x + reference2.width / 2 - element.width / 2; + var commonY = reference2.y + reference2.height / 2 - element.height / 2; + var offsets; + switch (basePlacement) { + case top: + offsets = { + x: commonX, + y: reference2.y - element.height + }; + break; + case bottom: + offsets = { + x: commonX, + y: reference2.y + reference2.height + }; + break; + case right: + offsets = { + x: reference2.x + reference2.width, + y: commonY + }; + break; + case left: + offsets = { + x: reference2.x - element.width, + y: commonY + }; + break; + default: + offsets = { + x: reference2.x, + y: reference2.y + }; + } + var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null; + if (mainAxis != null) { + var len = mainAxis === "y" ? "height" : "width"; + switch (variation) { + case start: + offsets[mainAxis] = offsets[mainAxis] - (reference2[len] / 2 - element[len] / 2); + break; + case end: + offsets[mainAxis] = offsets[mainAxis] + (reference2[len] / 2 - element[len] / 2); + break; + } + } + return offsets; + } + function getFreshSideObject() { + return { + top: 0, + right: 0, + bottom: 0, + left: 0 + }; + } + function mergePaddingObject(paddingObject) { + return Object.assign({}, getFreshSideObject(), paddingObject); + } + function expandToHashMap(value, keys) { + return keys.reduce(function(hashMap, key) { + hashMap[key] = value; + return hashMap; + }, {}); + } + function detectOverflow(state, options) { + if (options === void 0) { + options = {}; + } + var _options = options, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, _options$elementConte = _options.elementContext, elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, _options$altBoundary = _options.altBoundary, altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, _options$padding = _options.padding, padding = _options$padding === void 0 ? 0 : _options$padding; + var paddingObject = mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements)); + var altContext = elementContext === popper ? reference : popper; + var popperRect = state.rects.popper; + var element = state.elements[altBoundary ? altContext : elementContext]; + var clippingClientRect = getClippingRect(isElement2(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary); + var referenceClientRect = getBoundingClientRect(state.elements.reference); + var popperOffsets2 = computeOffsets({ + reference: referenceClientRect, + element: popperRect, + strategy: "absolute", + placement + }); + var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets2)); + var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; + var overflowOffsets = { + top: clippingClientRect.top - elementClientRect.top + paddingObject.top, + bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom, + left: clippingClientRect.left - elementClientRect.left + paddingObject.left, + right: elementClientRect.right - clippingClientRect.right + paddingObject.right + }; + var offsetData = state.modifiersData.offset; + if (elementContext === popper && offsetData) { + var offset2 = offsetData[placement]; + Object.keys(overflowOffsets).forEach(function(key) { + var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1; + var axis = [top, bottom].indexOf(key) >= 0 ? "y" : "x"; + overflowOffsets[key] += offset2[axis] * multiply; + }); + } + return overflowOffsets; + } + var INVALID_ELEMENT_ERROR = "Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element."; + var INFINITE_LOOP_ERROR = "Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash."; + var DEFAULT_OPTIONS = { + placement: "bottom", + modifiers: [], + strategy: "absolute" + }; + function areValidElements() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + return !args.some(function(element) { + return !(element && typeof element.getBoundingClientRect === "function"); + }); + } + function popperGenerator(generatorOptions) { + if (generatorOptions === void 0) { + generatorOptions = {}; + } + var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers2 = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2; + return function createPopper3(reference2, popper2, options) { + if (options === void 0) { + options = defaultOptions; + } + var state = { + placement: "bottom", + orderedModifiers: [], + options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions), + modifiersData: {}, + elements: { + reference: reference2, + popper: popper2 + }, + attributes: {}, + styles: {} + }; + var effectCleanupFns = []; + var isDestroyed = false; + var instance = { + state, + setOptions: function setOptions(setOptionsAction) { + var options2 = typeof setOptionsAction === "function" ? setOptionsAction(state.options) : setOptionsAction; + cleanupModifierEffects(); + state.options = Object.assign({}, defaultOptions, state.options, options2); + state.scrollParents = { + reference: isElement2(reference2) ? listScrollParents(reference2) : reference2.contextElement ? listScrollParents(reference2.contextElement) : [], + popper: listScrollParents(popper2) + }; + var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers2, state.options.modifiers))); + state.orderedModifiers = orderedModifiers.filter(function(m) { + return m.enabled; + }); + if (true) { + var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function(_ref) { + var name = _ref.name; + return name; + }); + validateModifiers(modifiers); + if (getBasePlacement(state.options.placement) === auto) { + var flipModifier = state.orderedModifiers.find(function(_ref2) { + var name = _ref2.name; + return name === "flip"; + }); + if (!flipModifier) { + console.error(['Popper: "auto" placements require the "flip" modifier be', "present and enabled to work."].join(" ")); + } + } + var _getComputedStyle = getComputedStyle2(popper2), marginTop = _getComputedStyle.marginTop, marginRight = _getComputedStyle.marginRight, marginBottom = _getComputedStyle.marginBottom, marginLeft = _getComputedStyle.marginLeft; + if ([marginTop, marginRight, marginBottom, marginLeft].some(function(margin) { + return parseFloat(margin); + })) { + console.warn(['Popper: CSS "margin" styles cannot be used to apply padding', "between the popper and its reference element or boundary.", "To replicate margin, use the `offset` modifier, as well as", "the `padding` option in the `preventOverflow` and `flip`", "modifiers."].join(" ")); + } + } + runModifierEffects(); + return instance.update(); + }, + // Sync update – it will always be executed, even if not necessary. This + // is useful for low frequency updates where sync behavior simplifies the + // logic. + // For high frequency updates (e.g. `resize` and `scroll` events), always + // prefer the async Popper#update method + forceUpdate: function forceUpdate() { + if (isDestroyed) { + return; + } + var _state$elements = state.elements, reference3 = _state$elements.reference, popper3 = _state$elements.popper; + if (!areValidElements(reference3, popper3)) { + if (true) { + console.error(INVALID_ELEMENT_ERROR); + } + return; + } + state.rects = { + reference: getCompositeRect(reference3, getOffsetParent(popper3), state.options.strategy === "fixed"), + popper: getLayoutRect(popper3) + }; + state.reset = false; + state.placement = state.options.placement; + state.orderedModifiers.forEach(function(modifier) { + return state.modifiersData[modifier.name] = Object.assign({}, modifier.data); + }); + var __debug_loops__ = 0; + for (var index = 0; index < state.orderedModifiers.length; index++) { + if (true) { + __debug_loops__ += 1; + if (__debug_loops__ > 100) { + console.error(INFINITE_LOOP_ERROR); + break; + } + } + if (state.reset === true) { + state.reset = false; + index = -1; + continue; + } + var _state$orderedModifie = state.orderedModifiers[index], fn = _state$orderedModifie.fn, _state$orderedModifie2 = _state$orderedModifie.options, _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, name = _state$orderedModifie.name; + if (typeof fn === "function") { + state = fn({ + state, + options: _options, + name, + instance + }) || state; + } + } + }, + // Async and optimistically optimized update – it will not be executed if + // not necessary (debounced to run at most once-per-tick) + update: debounce(function() { + return new Promise(function(resolve) { + instance.forceUpdate(); + resolve(state); + }); + }), + destroy: function destroy() { + cleanupModifierEffects(); + isDestroyed = true; + } + }; + if (!areValidElements(reference2, popper2)) { + if (true) { + console.error(INVALID_ELEMENT_ERROR); + } + return instance; + } + instance.setOptions(options).then(function(state2) { + if (!isDestroyed && options.onFirstUpdate) { + options.onFirstUpdate(state2); + } + }); + function runModifierEffects() { + state.orderedModifiers.forEach(function(_ref3) { + var name = _ref3.name, _ref3$options = _ref3.options, options2 = _ref3$options === void 0 ? {} : _ref3$options, effect2 = _ref3.effect; + if (typeof effect2 === "function") { + var cleanupFn = effect2({ + state, + name, + instance, + options: options2 + }); + var noopFn = function noopFn2() { + }; + effectCleanupFns.push(cleanupFn || noopFn); + } + }); + } + function cleanupModifierEffects() { + effectCleanupFns.forEach(function(fn) { + return fn(); + }); + effectCleanupFns = []; + } + return instance; + }; + } + var passive = { + passive: true + }; + function effect$2(_ref) { + var state = _ref.state, instance = _ref.instance, options = _ref.options; + var _options$scroll = options.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options.resize, resize = _options$resize === void 0 ? true : _options$resize; + var window2 = getWindow(state.elements.popper); + var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper); + if (scroll) { + scrollParents.forEach(function(scrollParent) { + scrollParent.addEventListener("scroll", instance.update, passive); + }); + } + if (resize) { + window2.addEventListener("resize", instance.update, passive); + } + return function() { + if (scroll) { + scrollParents.forEach(function(scrollParent) { + scrollParent.removeEventListener("scroll", instance.update, passive); + }); + } + if (resize) { + window2.removeEventListener("resize", instance.update, passive); + } + }; + } + var eventListeners = { + name: "eventListeners", + enabled: true, + phase: "write", + fn: function fn() { + }, + effect: effect$2, + data: {} + }; + function popperOffsets(_ref) { + var state = _ref.state, name = _ref.name; + state.modifiersData[name] = computeOffsets({ + reference: state.rects.reference, + element: state.rects.popper, + strategy: "absolute", + placement: state.placement + }); + } + var popperOffsets$1 = { + name: "popperOffsets", + enabled: true, + phase: "read", + fn: popperOffsets, + data: {} + }; + var unsetSides = { + top: "auto", + right: "auto", + bottom: "auto", + left: "auto" + }; + function roundOffsetsByDPR(_ref) { + var x = _ref.x, y = _ref.y; + var win = window; + var dpr = win.devicePixelRatio || 1; + return { + x: round(x * dpr) / dpr || 0, + y: round(y * dpr) / dpr || 0 + }; + } + function mapToStyles(_ref2) { + var _Object$assign2; + var popper2 = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, variation = _ref2.variation, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets, isFixed = _ref2.isFixed; + var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === "function" ? roundOffsets(offsets) : offsets, _ref3$x = _ref3.x, x = _ref3$x === void 0 ? 0 : _ref3$x, _ref3$y = _ref3.y, y = _ref3$y === void 0 ? 0 : _ref3$y; + var hasX = offsets.hasOwnProperty("x"); + var hasY = offsets.hasOwnProperty("y"); + var sideX = left; + var sideY = top; + var win = window; + if (adaptive) { + var offsetParent = getOffsetParent(popper2); + var heightProp = "clientHeight"; + var widthProp = "clientWidth"; + if (offsetParent === getWindow(popper2)) { + offsetParent = getDocumentElement(popper2); + if (getComputedStyle2(offsetParent).position !== "static" && position === "absolute") { + heightProp = "scrollHeight"; + widthProp = "scrollWidth"; + } + } + offsetParent = offsetParent; + if (placement === top || (placement === left || placement === right) && variation === end) { + sideY = bottom; + var offsetY = isFixed && win.visualViewport ? win.visualViewport.height : ( + // $FlowFixMe[prop-missing] + offsetParent[heightProp] + ); + y -= offsetY - popperRect.height; + y *= gpuAcceleration ? 1 : -1; + } + if (placement === left || (placement === top || placement === bottom) && variation === end) { + sideX = right; + var offsetX = isFixed && win.visualViewport ? win.visualViewport.width : ( + // $FlowFixMe[prop-missing] + offsetParent[widthProp] + ); + x -= offsetX - popperRect.width; + x *= gpuAcceleration ? 1 : -1; + } + } + var commonStyles = Object.assign({ + position + }, adaptive && unsetSides); + if (gpuAcceleration) { + var _Object$assign; + return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? "0" : "", _Object$assign[sideX] = hasX ? "0" : "", _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); + } + return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : "", _Object$assign2[sideX] = hasX ? x + "px" : "", _Object$assign2.transform = "", _Object$assign2)); + } + function computeStyles(_ref4) { + var state = _ref4.state, options = _ref4.options; + var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets; + if (true) { + var transitionProperty = getComputedStyle2(state.elements.popper).transitionProperty || ""; + if (adaptive && ["transform", "top", "right", "bottom", "left"].some(function(property) { + return transitionProperty.indexOf(property) >= 0; + })) { + console.warn(["Popper: Detected CSS transitions on at least one of the following", 'CSS properties: "transform", "top", "right", "bottom", "left".', "\n\n", 'Disable the "computeStyles" modifier\'s `adaptive` option to allow', "for smooth transitions, or remove these properties from the CSS", "transition declaration on the popper element if only transitioning", "opacity or background-color for example.", "\n\n", "We recommend using the popper element as a wrapper around an inner", "element that can have any CSS property transitioned for animations."].join(" ")); + } + } + var commonStyles = { + placement: getBasePlacement(state.placement), + variation: getVariation(state.placement), + popper: state.elements.popper, + popperRect: state.rects.popper, + gpuAcceleration, + isFixed: state.options.strategy === "fixed" + }; + if (state.modifiersData.popperOffsets != null) { + state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, { + offsets: state.modifiersData.popperOffsets, + position: state.options.strategy, + adaptive, + roundOffsets + }))); + } + if (state.modifiersData.arrow != null) { + state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, { + offsets: state.modifiersData.arrow, + position: "absolute", + adaptive: false, + roundOffsets + }))); + } + state.attributes.popper = Object.assign({}, state.attributes.popper, { + "data-popper-placement": state.placement + }); + } + var computeStyles$1 = { + name: "computeStyles", + enabled: true, + phase: "beforeWrite", + fn: computeStyles, + data: {} + }; + function applyStyles(_ref) { + var state = _ref.state; + Object.keys(state.elements).forEach(function(name) { + var style = state.styles[name] || {}; + var attributes = state.attributes[name] || {}; + var element = state.elements[name]; + if (!isHTMLElement(element) || !getNodeName(element)) { + return; + } + Object.assign(element.style, style); + Object.keys(attributes).forEach(function(name2) { + var value = attributes[name2]; + if (value === false) { + element.removeAttribute(name2); + } else { + element.setAttribute(name2, value === true ? "" : value); + } + }); + }); + } + function effect$1(_ref2) { + var state = _ref2.state; + var initialStyles = { + popper: { + position: state.options.strategy, + left: "0", + top: "0", + margin: "0" + }, + arrow: { + position: "absolute" + }, + reference: {} + }; + Object.assign(state.elements.popper.style, initialStyles.popper); + state.styles = initialStyles; + if (state.elements.arrow) { + Object.assign(state.elements.arrow.style, initialStyles.arrow); + } + return function() { + Object.keys(state.elements).forEach(function(name) { + var element = state.elements[name]; + var attributes = state.attributes[name] || {}; + var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); + var style = styleProperties.reduce(function(style2, property) { + style2[property] = ""; + return style2; + }, {}); + if (!isHTMLElement(element) || !getNodeName(element)) { + return; + } + Object.assign(element.style, style); + Object.keys(attributes).forEach(function(attribute) { + element.removeAttribute(attribute); + }); + }); + }; + } + var applyStyles$1 = { + name: "applyStyles", + enabled: true, + phase: "write", + fn: applyStyles, + effect: effect$1, + requires: ["computeStyles"] + }; + function distanceAndSkiddingToXY(placement, rects, offset2) { + var basePlacement = getBasePlacement(placement); + var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1; + var _ref = typeof offset2 === "function" ? offset2(Object.assign({}, rects, { + placement + })) : offset2, skidding = _ref[0], distance = _ref[1]; + skidding = skidding || 0; + distance = (distance || 0) * invertDistance; + return [left, right].indexOf(basePlacement) >= 0 ? { + x: distance, + y: skidding + } : { + x: skidding, + y: distance + }; + } + function offset(_ref2) { + var state = _ref2.state, options = _ref2.options, name = _ref2.name; + var _options$offset = options.offset, offset2 = _options$offset === void 0 ? [0, 0] : _options$offset; + var data = placements.reduce(function(acc, placement) { + acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset2); + return acc; + }, {}); + var _data$state$placement = data[state.placement], x = _data$state$placement.x, y = _data$state$placement.y; + if (state.modifiersData.popperOffsets != null) { + state.modifiersData.popperOffsets.x += x; + state.modifiersData.popperOffsets.y += y; + } + state.modifiersData[name] = data; + } + var offset$1 = { + name: "offset", + enabled: true, + phase: "main", + requires: ["popperOffsets"], + fn: offset + }; + var hash$1 = { + left: "right", + right: "left", + bottom: "top", + top: "bottom" + }; + function getOppositePlacement(placement) { + return placement.replace(/left|right|bottom|top/g, function(matched) { + return hash$1[matched]; + }); + } + var hash = { + start: "end", + end: "start" + }; + function getOppositeVariationPlacement(placement) { + return placement.replace(/start|end/g, function(matched) { + return hash[matched]; + }); + } + function computeAutoPlacement(state, options) { + if (options === void 0) { + options = {}; + } + var _options = options, placement = _options.placement, boundary = _options.boundary, rootBoundary = _options.rootBoundary, padding = _options.padding, flipVariations = _options.flipVariations, _options$allowedAutoP = _options.allowedAutoPlacements, allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP; + var variation = getVariation(placement); + var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function(placement2) { + return getVariation(placement2) === variation; + }) : basePlacements; + var allowedPlacements = placements$1.filter(function(placement2) { + return allowedAutoPlacements.indexOf(placement2) >= 0; + }); + if (allowedPlacements.length === 0) { + allowedPlacements = placements$1; + if (true) { + console.error(["Popper: The `allowedAutoPlacements` option did not allow any", "placements. Ensure the `placement` option matches the variation", "of the allowed placements.", 'For example, "auto" cannot be used to allow "bottom-start".', 'Use "auto-start" instead.'].join(" ")); + } + } + var overflows = allowedPlacements.reduce(function(acc, placement2) { + acc[placement2] = detectOverflow(state, { + placement: placement2, + boundary, + rootBoundary, + padding + })[getBasePlacement(placement2)]; + return acc; + }, {}); + return Object.keys(overflows).sort(function(a, b) { + return overflows[a] - overflows[b]; + }); + } + function getExpandedFallbackPlacements(placement) { + if (getBasePlacement(placement) === auto) { + return []; + } + var oppositePlacement = getOppositePlacement(placement); + return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)]; + } + function flip(_ref) { + var state = _ref.state, options = _ref.options, name = _ref.name; + if (state.modifiersData[name]._skip) { + return; + } + var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, specifiedFallbackPlacements = options.fallbackPlacements, padding = options.padding, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, _options$flipVariatio = options.flipVariations, flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, allowedAutoPlacements = options.allowedAutoPlacements; + var preferredPlacement = state.options.placement; + var basePlacement = getBasePlacement(preferredPlacement); + var isBasePlacement = basePlacement === preferredPlacement; + var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement)); + var placements2 = [preferredPlacement].concat(fallbackPlacements).reduce(function(acc, placement2) { + return acc.concat(getBasePlacement(placement2) === auto ? computeAutoPlacement(state, { + placement: placement2, + boundary, + rootBoundary, + padding, + flipVariations, + allowedAutoPlacements + }) : placement2); + }, []); + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var checksMap = /* @__PURE__ */ new Map(); + var makeFallbackChecks = true; + var firstFittingPlacement = placements2[0]; + for (var i = 0; i < placements2.length; i++) { + var placement = placements2[i]; + var _basePlacement = getBasePlacement(placement); + var isStartVariation = getVariation(placement) === start; + var isVertical = [top, bottom].indexOf(_basePlacement) >= 0; + var len = isVertical ? "width" : "height"; + var overflow = detectOverflow(state, { + placement, + boundary, + rootBoundary, + altBoundary, + padding + }); + var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top; + if (referenceRect[len] > popperRect[len]) { + mainVariationSide = getOppositePlacement(mainVariationSide); + } + var altVariationSide = getOppositePlacement(mainVariationSide); + var checks = []; + if (checkMainAxis) { + checks.push(overflow[_basePlacement] <= 0); + } + if (checkAltAxis) { + checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0); + } + if (checks.every(function(check) { + return check; + })) { + firstFittingPlacement = placement; + makeFallbackChecks = false; + break; + } + checksMap.set(placement, checks); + } + if (makeFallbackChecks) { + var numberOfChecks = flipVariations ? 3 : 1; + var _loop = function _loop2(_i2) { + var fittingPlacement = placements2.find(function(placement2) { + var checks2 = checksMap.get(placement2); + if (checks2) { + return checks2.slice(0, _i2).every(function(check) { + return check; + }); + } + }); + if (fittingPlacement) { + firstFittingPlacement = fittingPlacement; + return "break"; + } + }; + for (var _i = numberOfChecks; _i > 0; _i--) { + var _ret = _loop(_i); + if (_ret === "break") break; + } + } + if (state.placement !== firstFittingPlacement) { + state.modifiersData[name]._skip = true; + state.placement = firstFittingPlacement; + state.reset = true; + } + } + var flip$1 = { + name: "flip", + enabled: true, + phase: "main", + fn: flip, + requiresIfExists: ["offset"], + data: { + _skip: false + } + }; + function getAltAxis(axis) { + return axis === "x" ? "y" : "x"; + } + function within(min$1, value, max$1) { + return max(min$1, min(value, max$1)); + } + function withinMaxClamp(min2, value, max2) { + var v = within(min2, value, max2); + return v > max2 ? max2 : v; + } + function preventOverflow(_ref) { + var state = _ref.state, options = _ref.options, name = _ref.name; + var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, padding = options.padding, _options$tether = options.tether, tether = _options$tether === void 0 ? true : _options$tether, _options$tetherOffset = options.tetherOffset, tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset; + var overflow = detectOverflow(state, { + boundary, + rootBoundary, + padding, + altBoundary + }); + var basePlacement = getBasePlacement(state.placement); + var variation = getVariation(state.placement); + var isBasePlacement = !variation; + var mainAxis = getMainAxisFromPlacement(basePlacement); + var altAxis = getAltAxis(mainAxis); + var popperOffsets2 = state.modifiersData.popperOffsets; + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var tetherOffsetValue = typeof tetherOffset === "function" ? tetherOffset(Object.assign({}, state.rects, { + placement: state.placement + })) : tetherOffset; + var normalizedTetherOffsetValue = typeof tetherOffsetValue === "number" ? { + mainAxis: tetherOffsetValue, + altAxis: tetherOffsetValue + } : Object.assign({ + mainAxis: 0, + altAxis: 0 + }, tetherOffsetValue); + var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null; + var data = { + x: 0, + y: 0 + }; + if (!popperOffsets2) { + return; + } + if (checkMainAxis) { + var _offsetModifierState$; + var mainSide = mainAxis === "y" ? top : left; + var altSide = mainAxis === "y" ? bottom : right; + var len = mainAxis === "y" ? "height" : "width"; + var offset2 = popperOffsets2[mainAxis]; + var min$1 = offset2 + overflow[mainSide]; + var max$1 = offset2 - overflow[altSide]; + var additive = tether ? -popperRect[len] / 2 : 0; + var minLen = variation === start ? referenceRect[len] : popperRect[len]; + var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; + var arrowElement = state.elements.arrow; + var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : { + width: 0, + height: 0 + }; + var arrowPaddingObject = state.modifiersData["arrow#persistent"] ? state.modifiersData["arrow#persistent"].padding : getFreshSideObject(); + var arrowPaddingMin = arrowPaddingObject[mainSide]; + var arrowPaddingMax = arrowPaddingObject[altSide]; + var arrowLen = within(0, referenceRect[len], arrowRect[len]); + var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis; + var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis; + var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow); + var clientOffset = arrowOffsetParent ? mainAxis === "y" ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0; + var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0; + var tetherMin = offset2 + minOffset - offsetModifierValue - clientOffset; + var tetherMax = offset2 + maxOffset - offsetModifierValue; + var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset2, tether ? max(max$1, tetherMax) : max$1); + popperOffsets2[mainAxis] = preventedOffset; + data[mainAxis] = preventedOffset - offset2; + } + if (checkAltAxis) { + var _offsetModifierState$2; + var _mainSide = mainAxis === "x" ? top : left; + var _altSide = mainAxis === "x" ? bottom : right; + var _offset = popperOffsets2[altAxis]; + var _len = altAxis === "y" ? "height" : "width"; + var _min = _offset + overflow[_mainSide]; + var _max = _offset - overflow[_altSide]; + var isOriginSide = [top, left].indexOf(basePlacement) !== -1; + var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0; + var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis; + var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max; + var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max); + popperOffsets2[altAxis] = _preventedOffset; + data[altAxis] = _preventedOffset - _offset; + } + state.modifiersData[name] = data; + } + var preventOverflow$1 = { + name: "preventOverflow", + enabled: true, + phase: "main", + fn: preventOverflow, + requiresIfExists: ["offset"] + }; + var toPaddingObject = function toPaddingObject2(padding, state) { + padding = typeof padding === "function" ? padding(Object.assign({}, state.rects, { + placement: state.placement + })) : padding; + return mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements)); + }; + function arrow(_ref) { + var _state$modifiersData$; + var state = _ref.state, name = _ref.name, options = _ref.options; + var arrowElement = state.elements.arrow; + var popperOffsets2 = state.modifiersData.popperOffsets; + var basePlacement = getBasePlacement(state.placement); + var axis = getMainAxisFromPlacement(basePlacement); + var isVertical = [left, right].indexOf(basePlacement) >= 0; + var len = isVertical ? "height" : "width"; + if (!arrowElement || !popperOffsets2) { + return; + } + var paddingObject = toPaddingObject(options.padding, state); + var arrowRect = getLayoutRect(arrowElement); + var minProp = axis === "y" ? top : left; + var maxProp = axis === "y" ? bottom : right; + var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets2[axis] - state.rects.popper[len]; + var startDiff = popperOffsets2[axis] - state.rects.reference[axis]; + var arrowOffsetParent = getOffsetParent(arrowElement); + var clientSize = arrowOffsetParent ? axis === "y" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0; + var centerToReference = endDiff / 2 - startDiff / 2; + var min2 = paddingObject[minProp]; + var max2 = clientSize - arrowRect[len] - paddingObject[maxProp]; + var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference; + var offset2 = within(min2, center, max2); + var axisProp = axis; + state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset2, _state$modifiersData$.centerOffset = offset2 - center, _state$modifiersData$); + } + function effect(_ref2) { + var state = _ref2.state, options = _ref2.options; + var _options$element = options.element, arrowElement = _options$element === void 0 ? "[data-popper-arrow]" : _options$element; + if (arrowElement == null) { + return; + } + if (typeof arrowElement === "string") { + arrowElement = state.elements.popper.querySelector(arrowElement); + if (!arrowElement) { + return; + } + } + if (true) { + if (!isHTMLElement(arrowElement)) { + console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).', "To use an SVG arrow, wrap it in an HTMLElement that will be used as", "the arrow."].join(" ")); + } + } + if (!contains(state.elements.popper, arrowElement)) { + if (true) { + console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper', "element."].join(" ")); + } + return; + } + state.elements.arrow = arrowElement; + } + var arrow$1 = { + name: "arrow", + enabled: true, + phase: "main", + fn: arrow, + effect, + requires: ["popperOffsets"], + requiresIfExists: ["preventOverflow"] + }; + function getSideOffsets(overflow, rect, preventedOffsets) { + if (preventedOffsets === void 0) { + preventedOffsets = { + x: 0, + y: 0 + }; + } + return { + top: overflow.top - rect.height - preventedOffsets.y, + right: overflow.right - rect.width + preventedOffsets.x, + bottom: overflow.bottom - rect.height + preventedOffsets.y, + left: overflow.left - rect.width - preventedOffsets.x + }; + } + function isAnySideFullyClipped(overflow) { + return [top, right, bottom, left].some(function(side) { + return overflow[side] >= 0; + }); + } + function hide(_ref) { + var state = _ref.state, name = _ref.name; + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var preventedOffsets = state.modifiersData.preventOverflow; + var referenceOverflow = detectOverflow(state, { + elementContext: "reference" + }); + var popperAltOverflow = detectOverflow(state, { + altBoundary: true + }); + var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect); + var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets); + var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets); + var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets); + state.modifiersData[name] = { + referenceClippingOffsets, + popperEscapeOffsets, + isReferenceHidden, + hasPopperEscaped + }; + state.attributes.popper = Object.assign({}, state.attributes.popper, { + "data-popper-reference-hidden": isReferenceHidden, + "data-popper-escaped": hasPopperEscaped + }); + } + var hide$1 = { + name: "hide", + enabled: true, + phase: "main", + requiresIfExists: ["preventOverflow"], + fn: hide + }; + var defaultModifiers$1 = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1]; + var createPopper$1 = /* @__PURE__ */ popperGenerator({ + defaultModifiers: defaultModifiers$1 + }); + var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1]; + var createPopper2 = /* @__PURE__ */ popperGenerator({ + defaultModifiers + }); + exports.applyStyles = applyStyles$1; + exports.arrow = arrow$1; + exports.computeStyles = computeStyles$1; + exports.createPopper = createPopper2; + exports.createPopperLite = createPopper$1; + exports.defaultModifiers = defaultModifiers; + exports.detectOverflow = detectOverflow; + exports.eventListeners = eventListeners; + exports.flip = flip$1; + exports.hide = hide$1; + exports.offset = offset$1; + exports.popperGenerator = popperGenerator; + exports.popperOffsets = popperOffsets$1; + exports.preventOverflow = preventOverflow$1; + } + }); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/dom/data.js + var elementMap = /* @__PURE__ */ new Map(); + var data_default = { + set(element, key, instance) { + if (!elementMap.has(element)) { + elementMap.set(element, /* @__PURE__ */ new Map()); + } + const instanceMap = elementMap.get(element); + if (!instanceMap.has(key) && instanceMap.size !== 0) { + console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`); + return; + } + instanceMap.set(key, instance); + }, + get(element, key) { + if (elementMap.has(element)) { + return elementMap.get(element).get(key) || null; + } + return null; + }, + remove(element, key) { + if (!elementMap.has(element)) { + return; + } + const instanceMap = elementMap.get(element); + instanceMap.delete(key); + if (instanceMap.size === 0) { + elementMap.delete(element); + } + } + }; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/util/index.js + var MAX_UID = 1e6; + var MILLISECONDS_MULTIPLIER = 1e3; + var TRANSITION_END = "transitionend"; + var parseSelector = (selector2) => { + if (selector2 && window.CSS && window.CSS.escape) { + selector2 = selector2.replace(/#([^\s"#']+)/g, (match, id) => `#${CSS.escape(id)}`); + } + return selector2; + }; + var toType = (object) => { + if (object === null || object === void 0) { + return `${object}`; + } + return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase(); + }; + var getUID = (prefix) => { + do { + prefix += Math.floor(Math.random() * MAX_UID); + } while (document.getElementById(prefix)); + return prefix; + }; + var getTransitionDurationFromElement = (element) => { + if (!element) { + return 0; + } + let { transitionDuration, transitionDelay } = window.getComputedStyle(element); + const floatTransitionDuration = Number.parseFloat(transitionDuration); + const floatTransitionDelay = Number.parseFloat(transitionDelay); + if (!floatTransitionDuration && !floatTransitionDelay) { + return 0; + } + transitionDuration = transitionDuration.split(",")[0]; + transitionDelay = transitionDelay.split(",")[0]; + return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; + }; + var triggerTransitionEnd = (element) => { + element.dispatchEvent(new Event(TRANSITION_END)); + }; + var isElement = (object) => { + if (!object || typeof object !== "object") { + return false; + } + if (typeof object.jquery !== "undefined") { + object = object[0]; + } + return typeof object.nodeType !== "undefined"; + }; + var getElement = (object) => { + if (isElement(object)) { + return object.jquery ? object[0] : object; + } + if (typeof object === "string" && object.length > 0) { + return document.querySelector(parseSelector(object)); + } + return null; + }; + var isVisible = (element) => { + if (!isElement(element) || element.getClientRects().length === 0) { + return false; + } + const elementIsVisible = getComputedStyle(element).getPropertyValue("visibility") === "visible"; + const closedDetails = element.closest("details:not([open])"); + if (!closedDetails) { + return elementIsVisible; + } + if (closedDetails !== element) { + const summary = element.closest("summary"); + if (summary && summary.parentNode !== closedDetails) { + return false; + } + if (summary === null) { + return false; + } + } + return elementIsVisible; + }; + var isDisabled = (element) => { + if (!element || element.nodeType !== Node.ELEMENT_NODE) { + return true; + } + if (element.classList.contains("disabled")) { + return true; + } + if (typeof element.disabled !== "undefined") { + return element.disabled; + } + return element.hasAttribute("disabled") && element.getAttribute("disabled") !== "false"; + }; + var findShadowRoot = (element) => { + if (!document.documentElement.attachShadow) { + return null; + } + if (typeof element.getRootNode === "function") { + const root = element.getRootNode(); + return root instanceof ShadowRoot ? root : null; + } + if (element instanceof ShadowRoot) { + return element; + } + if (!element.parentNode) { + return null; + } + return findShadowRoot(element.parentNode); + }; + var noop = () => { + }; + var reflow = (element) => { + element.offsetHeight; + }; + var getjQuery = () => { + if (window.jQuery && !document.body.hasAttribute("data-bs-no-jquery")) { + return window.jQuery; + } + return null; + }; + var DOMContentLoadedCallbacks = []; + var onDOMContentLoaded = (callback) => { + if (document.readyState === "loading") { + if (!DOMContentLoadedCallbacks.length) { + document.addEventListener("DOMContentLoaded", () => { + for (const callback2 of DOMContentLoadedCallbacks) { + callback2(); + } + }); + } + DOMContentLoadedCallbacks.push(callback); + } else { + callback(); + } + }; + var isRTL = () => document.documentElement.dir === "rtl"; + var defineJQueryPlugin = (plugin) => { + onDOMContentLoaded(() => { + const $ = getjQuery(); + if ($) { + const name = plugin.NAME; + const JQUERY_NO_CONFLICT = $.fn[name]; + $.fn[name] = plugin.jQueryInterface; + $.fn[name].Constructor = plugin; + $.fn[name].noConflict = () => { + $.fn[name] = JQUERY_NO_CONFLICT; + return plugin.jQueryInterface; + }; + } + }); + }; + var execute = (possibleCallback, args = [], defaultValue = possibleCallback) => { + return typeof possibleCallback === "function" ? possibleCallback.call(...args) : defaultValue; + }; + var executeAfterTransition = (callback, transitionElement, waitForTransition = true) => { + if (!waitForTransition) { + execute(callback); + return; + } + const durationPadding = 5; + const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding; + let called = false; + const handler = ({ target }) => { + if (target !== transitionElement) { + return; + } + called = true; + transitionElement.removeEventListener(TRANSITION_END, handler); + execute(callback); + }; + transitionElement.addEventListener(TRANSITION_END, handler); + setTimeout(() => { + if (!called) { + triggerTransitionEnd(transitionElement); + } + }, emulatedDuration); + }; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/dom/event-handler.js + var namespaceRegex = /[^.]*(?=\..*)\.|.*/; + var stripNameRegex = /\..*/; + var stripUidRegex = /::\d+$/; + var eventRegistry = {}; + var uidEvent = 1; + var customEvents = { + mouseenter: "mouseover", + mouseleave: "mouseout" + }; + var nativeEvents = /* @__PURE__ */ new Set([ + "click", + "dblclick", + "mouseup", + "mousedown", + "contextmenu", + "mousewheel", + "DOMMouseScroll", + "mouseover", + "mouseout", + "mousemove", + "selectstart", + "selectend", + "keydown", + "keypress", + "keyup", + "orientationchange", + "touchstart", + "touchmove", + "touchend", + "touchcancel", + "pointerdown", + "pointermove", + "pointerup", + "pointerleave", + "pointercancel", + "gesturestart", + "gesturechange", + "gestureend", + "focus", + "blur", + "change", + "reset", + "select", + "submit", + "focusin", + "focusout", + "load", + "unload", + "beforeunload", + "resize", + "move", + "DOMContentLoaded", + "readystatechange", + "error", + "abort", + "scroll" + ]); + function makeEventUid(element, uid) { + return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++; + } + function getElementEvents(element) { + const uid = makeEventUid(element); + element.uidEvent = uid; + eventRegistry[uid] = eventRegistry[uid] || {}; + return eventRegistry[uid]; + } + function bootstrapHandler(element, fn) { + return function handler(event) { + hydrateObj(event, { delegateTarget: element }); + if (handler.oneOff) { + EventHandler.off(element, event.type, fn); + } + return fn.apply(element, [event]); + }; + } + function bootstrapDelegationHandler(element, selector2, fn) { + return function handler(event) { + const domElements = element.querySelectorAll(selector2); + for (let { target } = event; target && target !== this; target = target.parentNode) { + for (const domElement of domElements) { + if (domElement !== target) { + continue; + } + hydrateObj(event, { delegateTarget: target }); + if (handler.oneOff) { + EventHandler.off(element, event.type, selector2, fn); + } + return fn.apply(target, [event]); + } + } + }; + } + function findHandler(events, callable, delegationSelector = null) { + return Object.values(events).find((event) => event.callable === callable && event.delegationSelector === delegationSelector); + } + function normalizeParameters(originalTypeEvent, handler, delegationFunction) { + const isDelegated = typeof handler === "string"; + const callable = isDelegated ? delegationFunction : handler || delegationFunction; + let typeEvent = getTypeEvent(originalTypeEvent); + if (!nativeEvents.has(typeEvent)) { + typeEvent = originalTypeEvent; + } + return [isDelegated, callable, typeEvent]; + } + function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) { + if (typeof originalTypeEvent !== "string" || !element) { + return; + } + let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); + if (originalTypeEvent in customEvents) { + const wrapFunction = (fn2) => { + return function(event) { + if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) { + return fn2.call(this, event); + } + }; + }; + callable = wrapFunction(callable); + } + const events = getElementEvents(element); + const handlers = events[typeEvent] || (events[typeEvent] = {}); + const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null); + if (previousFunction) { + previousFunction.oneOff = previousFunction.oneOff && oneOff; + return; + } + const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, "")); + const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable); + fn.delegationSelector = isDelegated ? handler : null; + fn.callable = callable; + fn.oneOff = oneOff; + fn.uidEvent = uid; + handlers[uid] = fn; + element.addEventListener(typeEvent, fn, isDelegated); + } + function removeHandler(element, events, typeEvent, handler, delegationSelector) { + const fn = findHandler(events[typeEvent], handler, delegationSelector); + if (!fn) { + return; + } + element.removeEventListener(typeEvent, fn, Boolean(delegationSelector)); + delete events[typeEvent][fn.uidEvent]; + } + function removeNamespacedHandlers(element, events, typeEvent, namespace) { + const storeElementEvent = events[typeEvent] || {}; + for (const [handlerKey, event] of Object.entries(storeElementEvent)) { + if (handlerKey.includes(namespace)) { + removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); + } + } + } + function getTypeEvent(event) { + event = event.replace(stripNameRegex, ""); + return customEvents[event] || event; + } + var EventHandler = { + on(element, event, handler, delegationFunction) { + addHandler(element, event, handler, delegationFunction, false); + }, + one(element, event, handler, delegationFunction) { + addHandler(element, event, handler, delegationFunction, true); + }, + off(element, originalTypeEvent, handler, delegationFunction) { + if (typeof originalTypeEvent !== "string" || !element) { + return; + } + const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); + const inNamespace = typeEvent !== originalTypeEvent; + const events = getElementEvents(element); + const storeElementEvent = events[typeEvent] || {}; + const isNamespace = originalTypeEvent.startsWith("."); + if (typeof callable !== "undefined") { + if (!Object.keys(storeElementEvent).length) { + return; + } + removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null); + return; + } + if (isNamespace) { + for (const elementEvent of Object.keys(events)) { + removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1)); + } + } + for (const [keyHandlers, event] of Object.entries(storeElementEvent)) { + const handlerKey = keyHandlers.replace(stripUidRegex, ""); + if (!inNamespace || originalTypeEvent.includes(handlerKey)) { + removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); + } + } + }, + trigger(element, event, args) { + if (typeof event !== "string" || !element) { + return null; + } + const $ = getjQuery(); + const typeEvent = getTypeEvent(event); + const inNamespace = event !== typeEvent; + let jQueryEvent = null; + let bubbles = true; + let nativeDispatch = true; + let defaultPrevented = false; + if (inNamespace && $) { + jQueryEvent = $.Event(event, args); + $(element).trigger(jQueryEvent); + bubbles = !jQueryEvent.isPropagationStopped(); + nativeDispatch = !jQueryEvent.isImmediatePropagationStopped(); + defaultPrevented = jQueryEvent.isDefaultPrevented(); + } + const evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args); + if (defaultPrevented) { + evt.preventDefault(); + } + if (nativeDispatch) { + element.dispatchEvent(evt); + } + if (evt.defaultPrevented && jQueryEvent) { + jQueryEvent.preventDefault(); + } + return evt; + } + }; + function hydrateObj(obj, meta = {}) { + for (const [key, value] of Object.entries(meta)) { + try { + obj[key] = value; + } catch (e) { + Object.defineProperty(obj, key, { + configurable: true, + get() { + return value; + } + }); + } + } + return obj; + } + var event_handler_default = EventHandler; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/dom/manipulator.js + function normalizeData(value) { + if (value === "true") { + return true; + } + if (value === "false") { + return false; + } + if (value === Number(value).toString()) { + return Number(value); + } + if (value === "" || value === "null") { + return null; + } + if (typeof value !== "string") { + return value; + } + try { + return JSON.parse(decodeURIComponent(value)); + } catch (e) { + return value; + } + } + function normalizeDataKey(key) { + return key.replace(/[A-Z]/g, (chr) => `-${chr.toLowerCase()}`); + } + var Manipulator = { + setDataAttribute(element, key, value) { + element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value); + }, + removeDataAttribute(element, key) { + element.removeAttribute(`data-bs-${normalizeDataKey(key)}`); + }, + getDataAttributes(element) { + if (!element) { + return {}; + } + const attributes = {}; + const bsKeys = Object.keys(element.dataset).filter((key) => key.startsWith("bs") && !key.startsWith("bsConfig")); + for (const key of bsKeys) { + let pureKey = key.replace(/^bs/, ""); + pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1); + attributes[pureKey] = normalizeData(element.dataset[key]); + } + return attributes; + }, + getDataAttribute(element, key) { + return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`)); + } + }; + var manipulator_default = Manipulator; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/util/config.js + var Config = class { + // Getters + static get Default() { + return {}; + } + static get DefaultType() { + return {}; + } + static get NAME() { + throw new Error('You have to implement the static method "NAME", for each component!'); + } + _getConfig(config) { + config = this._mergeConfigObj(config); + config = this._configAfterMerge(config); + this._typeCheckConfig(config); + return config; + } + _configAfterMerge(config) { + return config; + } + _mergeConfigObj(config, element) { + const jsonConfig = isElement(element) ? manipulator_default.getDataAttribute(element, "config") : {}; + return __spreadValues(__spreadValues(__spreadValues(__spreadValues({}, this.constructor.Default), typeof jsonConfig === "object" ? jsonConfig : {}), isElement(element) ? manipulator_default.getDataAttributes(element) : {}), typeof config === "object" ? config : {}); + } + _typeCheckConfig(config, configTypes = this.constructor.DefaultType) { + for (const [property, expectedTypes] of Object.entries(configTypes)) { + const value = config[property]; + const valueType = isElement(value) ? "element" : toType(value); + if (!new RegExp(expectedTypes).test(valueType)) { + throw new TypeError( + `${this.constructor.NAME.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".` + ); + } + } + } + }; + var config_default = Config; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/base-component.js + var VERSION = "5.3.8"; + var BaseComponent = class extends config_default { + constructor(element, config) { + super(); + element = getElement(element); + if (!element) { + return; + } + this._element = element; + this._config = this._getConfig(config); + data_default.set(this._element, this.constructor.DATA_KEY, this); + } + // Public + dispose() { + data_default.remove(this._element, this.constructor.DATA_KEY); + event_handler_default.off(this._element, this.constructor.EVENT_KEY); + for (const propertyName of Object.getOwnPropertyNames(this)) { + this[propertyName] = null; + } + } + // Private + _queueCallback(callback, element, isAnimated = true) { + executeAfterTransition(callback, element, isAnimated); + } + _getConfig(config) { + config = this._mergeConfigObj(config, this._element); + config = this._configAfterMerge(config); + this._typeCheckConfig(config); + return config; + } + // Static + static getInstance(element) { + return data_default.get(getElement(element), this.DATA_KEY); + } + static getOrCreateInstance(element, config = {}) { + return this.getInstance(element) || new this(element, typeof config === "object" ? config : null); + } + static get VERSION() { + return VERSION; + } + static get DATA_KEY() { + return `bs.${this.NAME}`; + } + static get EVENT_KEY() { + return `.${this.DATA_KEY}`; + } + static eventName(name) { + return `${name}${this.EVENT_KEY}`; + } + }; + var base_component_default = BaseComponent; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/dom/selector-engine.js + var getSelector = (element) => { + let selector2 = element.getAttribute("data-bs-target"); + if (!selector2 || selector2 === "#") { + let hrefAttribute = element.getAttribute("href"); + if (!hrefAttribute || !hrefAttribute.includes("#") && !hrefAttribute.startsWith(".")) { + return null; + } + if (hrefAttribute.includes("#") && !hrefAttribute.startsWith("#")) { + hrefAttribute = `#${hrefAttribute.split("#")[1]}`; + } + selector2 = hrefAttribute && hrefAttribute !== "#" ? hrefAttribute.trim() : null; + } + return selector2 ? selector2.split(",").map((sel) => parseSelector(sel)).join(",") : null; + }; + var SelectorEngine = { + find(selector2, element = document.documentElement) { + return [].concat(...Element.prototype.querySelectorAll.call(element, selector2)); + }, + findOne(selector2, element = document.documentElement) { + return Element.prototype.querySelector.call(element, selector2); + }, + children(element, selector2) { + return [].concat(...element.children).filter((child) => child.matches(selector2)); + }, + parents(element, selector2) { + const parents = []; + let ancestor = element.parentNode.closest(selector2); + while (ancestor) { + parents.push(ancestor); + ancestor = ancestor.parentNode.closest(selector2); + } + return parents; + }, + prev(element, selector2) { + let previous = element.previousElementSibling; + while (previous) { + if (previous.matches(selector2)) { + return [previous]; + } + previous = previous.previousElementSibling; + } + return []; + }, + // TODO: this is now unused; remove later along with prev() + next(element, selector2) { + let next = element.nextElementSibling; + while (next) { + if (next.matches(selector2)) { + return [next]; + } + next = next.nextElementSibling; + } + return []; + }, + focusableChildren(element) { + const focusables = [ + "a", + "button", + "input", + "textarea", + "select", + "details", + "[tabindex]", + '[contenteditable="true"]' + ].map((selector2) => `${selector2}:not([tabindex^="-"])`).join(","); + return this.find(focusables, element).filter((el) => !isDisabled(el) && isVisible(el)); + }, + getSelectorFromElement(element) { + const selector2 = getSelector(element); + if (selector2) { + return SelectorEngine.findOne(selector2) ? selector2 : null; + } + return null; + }, + getElementFromSelector(element) { + const selector2 = getSelector(element); + return selector2 ? SelectorEngine.findOne(selector2) : null; + }, + getMultipleElementsFromSelector(element) { + const selector2 = getSelector(element); + return selector2 ? SelectorEngine.find(selector2) : []; + } + }; + var selector_engine_default = SelectorEngine; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/collapse.js + var NAME = "collapse"; + var DATA_KEY = "bs.collapse"; + var EVENT_KEY = `.${DATA_KEY}`; + var DATA_API_KEY = ".data-api"; + var EVENT_SHOW = `show${EVENT_KEY}`; + var EVENT_SHOWN = `shown${EVENT_KEY}`; + var EVENT_HIDE = `hide${EVENT_KEY}`; + var EVENT_HIDDEN = `hidden${EVENT_KEY}`; + var EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`; + var CLASS_NAME_SHOW = "show"; + var CLASS_NAME_COLLAPSE = "collapse"; + var CLASS_NAME_COLLAPSING = "collapsing"; + var CLASS_NAME_COLLAPSED = "collapsed"; + var CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`; + var CLASS_NAME_HORIZONTAL = "collapse-horizontal"; + var WIDTH = "width"; + var HEIGHT = "height"; + var SELECTOR_ACTIVES = ".collapse.show, .collapse.collapsing"; + var SELECTOR_DATA_TOGGLE = '[data-bs-toggle="collapse"]'; + var Default = { + parent: null, + toggle: true + }; + var DefaultType = { + parent: "(null|element)", + toggle: "boolean" + }; + var Collapse = class _Collapse extends base_component_default { + constructor(element, config) { + super(element, config); + this._isTransitioning = false; + this._triggerArray = []; + const toggleList = selector_engine_default.find(SELECTOR_DATA_TOGGLE); + for (const elem of toggleList) { + const selector2 = selector_engine_default.getSelectorFromElement(elem); + const filterElement = selector_engine_default.find(selector2).filter((foundElement) => foundElement === this._element); + if (selector2 !== null && filterElement.length) { + this._triggerArray.push(elem); + } + } + this._initializeChildren(); + if (!this._config.parent) { + this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()); + } + if (this._config.toggle) { + this.toggle(); + } + } + // Getters + static get Default() { + return Default; + } + static get DefaultType() { + return DefaultType; + } + static get NAME() { + return NAME; + } + // Public + toggle() { + if (this._isShown()) { + this.hide(); + } else { + this.show(); + } + } + show() { + if (this._isTransitioning || this._isShown()) { + return; + } + let activeChildren = []; + if (this._config.parent) { + activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter((element) => element !== this._element).map((element) => _Collapse.getOrCreateInstance(element, { toggle: false })); + } + if (activeChildren.length && activeChildren[0]._isTransitioning) { + return; + } + const startEvent = event_handler_default.trigger(this._element, EVENT_SHOW); + if (startEvent.defaultPrevented) { + return; + } + for (const activeInstance of activeChildren) { + activeInstance.hide(); + } + const dimension = this._getDimension(); + this._element.classList.remove(CLASS_NAME_COLLAPSE); + this._element.classList.add(CLASS_NAME_COLLAPSING); + this._element.style[dimension] = 0; + this._addAriaAndCollapsedClass(this._triggerArray, true); + this._isTransitioning = true; + const complete = () => { + this._isTransitioning = false; + this._element.classList.remove(CLASS_NAME_COLLAPSING); + this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW); + this._element.style[dimension] = ""; + event_handler_default.trigger(this._element, EVENT_SHOWN); + }; + const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); + const scrollSize = `scroll${capitalizedDimension}`; + this._queueCallback(complete, this._element, true); + this._element.style[dimension] = `${this._element[scrollSize]}px`; + } + hide() { + if (this._isTransitioning || !this._isShown()) { + return; + } + const startEvent = event_handler_default.trigger(this._element, EVENT_HIDE); + if (startEvent.defaultPrevented) { + return; + } + const dimension = this._getDimension(); + this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`; + reflow(this._element); + this._element.classList.add(CLASS_NAME_COLLAPSING); + this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW); + for (const trigger of this._triggerArray) { + const element = selector_engine_default.getElementFromSelector(trigger); + if (element && !this._isShown(element)) { + this._addAriaAndCollapsedClass([trigger], false); + } + } + this._isTransitioning = true; + const complete = () => { + this._isTransitioning = false; + this._element.classList.remove(CLASS_NAME_COLLAPSING); + this._element.classList.add(CLASS_NAME_COLLAPSE); + event_handler_default.trigger(this._element, EVENT_HIDDEN); + }; + this._element.style[dimension] = ""; + this._queueCallback(complete, this._element, true); + } + // Private + _isShown(element = this._element) { + return element.classList.contains(CLASS_NAME_SHOW); + } + _configAfterMerge(config) { + config.toggle = Boolean(config.toggle); + config.parent = getElement(config.parent); + return config; + } + _getDimension() { + return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT; + } + _initializeChildren() { + if (!this._config.parent) { + return; + } + const children2 = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE); + for (const element of children2) { + const selected = selector_engine_default.getElementFromSelector(element); + if (selected) { + this._addAriaAndCollapsedClass([element], this._isShown(selected)); + } + } + } + _getFirstLevelChildren(selector2) { + const children2 = selector_engine_default.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); + return selector_engine_default.find(selector2, this._config.parent).filter((element) => !children2.includes(element)); + } + _addAriaAndCollapsedClass(triggerArray, isOpen) { + if (!triggerArray.length) { + return; + } + for (const element of triggerArray) { + element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen); + element.setAttribute("aria-expanded", isOpen); + } + } + // Static + static jQueryInterface(config) { + const _config = {}; + if (typeof config === "string" && /show|hide/.test(config)) { + _config.toggle = false; + } + return this.each(function() { + const data = _Collapse.getOrCreateInstance(this, _config); + if (typeof config === "string") { + if (typeof data[config] === "undefined") { + throw new TypeError(`No method named "${config}"`); + } + data[config](); + } + }); + } + }; + event_handler_default.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function(event) { + if (event.target.tagName === "A" || event.delegateTarget && event.delegateTarget.tagName === "A") { + event.preventDefault(); + } + for (const element of selector_engine_default.getMultipleElementsFromSelector(this)) { + Collapse.getOrCreateInstance(element, { toggle: false }).toggle(); + } + }); + defineJQueryPlugin(Collapse); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/category-collapse.js + var children = document.getElementsByClassName("collapse"); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/tooltip.js + var Popper = __toESM(require_popper()); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/util/sanitizer.js + var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; + var DefaultAllowlist = { + // Global attributes allowed on any supplied element below. + "*": ["class", "dir", "id", "lang", "role", ARIA_ATTRIBUTE_PATTERN], + a: ["target", "href", "title", "rel"], + area: [], + b: [], + br: [], + col: [], + code: [], + dd: [], + div: [], + dl: [], + dt: [], + em: [], + hr: [], + h1: [], + h2: [], + h3: [], + h4: [], + h5: [], + h6: [], + i: [], + img: ["src", "srcset", "alt", "title", "width", "height"], + li: [], + ol: [], + p: [], + pre: [], + s: [], + small: [], + span: [], + sub: [], + sup: [], + strong: [], + u: [], + ul: [] + }; + var uriAttributes = /* @__PURE__ */ new Set([ + "background", + "cite", + "href", + "itemtype", + "longdesc", + "poster", + "src", + "xlink:href" + ]); + var SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i; + var allowedAttribute = (attribute, allowedAttributeList) => { + const attributeName = attribute.nodeName.toLowerCase(); + if (allowedAttributeList.includes(attributeName)) { + if (uriAttributes.has(attributeName)) { + return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue)); + } + return true; + } + return allowedAttributeList.filter((attributeRegex) => attributeRegex instanceof RegExp).some((regex) => regex.test(attributeName)); + }; + function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) { + if (!unsafeHtml.length) { + return unsafeHtml; + } + if (sanitizeFunction && typeof sanitizeFunction === "function") { + return sanitizeFunction(unsafeHtml); + } + const domParser = new window.DOMParser(); + const createdDocument = domParser.parseFromString(unsafeHtml, "text/html"); + const elements = [].concat(...createdDocument.body.querySelectorAll("*")); + for (const element of elements) { + const elementName = element.nodeName.toLowerCase(); + if (!Object.keys(allowList).includes(elementName)) { + element.remove(); + continue; + } + const attributeList = [].concat(...element.attributes); + const allowedAttributes = [].concat(allowList["*"] || [], allowList[elementName] || []); + for (const attribute of attributeList) { + if (!allowedAttribute(attribute, allowedAttributes)) { + element.removeAttribute(attribute.nodeName); + } + } + } + return createdDocument.body.innerHTML; + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/util/template-factory.js + var NAME2 = "TemplateFactory"; + var Default2 = { + allowList: DefaultAllowlist, + content: {}, + // { selector : text , selector2 : text2 , } + extraClass: "", + html: false, + sanitize: true, + sanitizeFn: null, + template: "
" + }; + var DefaultType2 = { + allowList: "object", + content: "object", + extraClass: "(string|function)", + html: "boolean", + sanitize: "boolean", + sanitizeFn: "(null|function)", + template: "string" + }; + var DefaultContentType = { + entry: "(string|element|function|null)", + selector: "(string|element)" + }; + var TemplateFactory = class extends config_default { + constructor(config) { + super(); + this._config = this._getConfig(config); + } + // Getters + static get Default() { + return Default2; + } + static get DefaultType() { + return DefaultType2; + } + static get NAME() { + return NAME2; + } + // Public + getContent() { + return Object.values(this._config.content).map((config) => this._resolvePossibleFunction(config)).filter(Boolean); + } + hasContent() { + return this.getContent().length > 0; + } + changeContent(content2) { + this._checkContent(content2); + this._config.content = __spreadValues(__spreadValues({}, this._config.content), content2); + return this; + } + toHtml() { + const templateWrapper = document.createElement("div"); + templateWrapper.innerHTML = this._maybeSanitize(this._config.template); + for (const [selector2, text] of Object.entries(this._config.content)) { + this._setContent(templateWrapper, text, selector2); + } + const template = templateWrapper.children[0]; + const extraClass = this._resolvePossibleFunction(this._config.extraClass); + if (extraClass) { + template.classList.add(...extraClass.split(" ")); + } + return template; + } + // Private + _typeCheckConfig(config) { + super._typeCheckConfig(config); + this._checkContent(config.content); + } + _checkContent(arg) { + for (const [selector2, content2] of Object.entries(arg)) { + super._typeCheckConfig({ selector: selector2, entry: content2 }, DefaultContentType); + } + } + _setContent(template, content2, selector2) { + const templateElement = selector_engine_default.findOne(selector2, template); + if (!templateElement) { + return; + } + content2 = this._resolvePossibleFunction(content2); + if (!content2) { + templateElement.remove(); + return; + } + if (isElement(content2)) { + this._putElementInTemplate(getElement(content2), templateElement); + return; + } + if (this._config.html) { + templateElement.innerHTML = this._maybeSanitize(content2); + return; + } + templateElement.textContent = content2; + } + _maybeSanitize(arg) { + return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg; + } + _resolvePossibleFunction(arg) { + return execute(arg, [void 0, this]); + } + _putElementInTemplate(element, templateElement) { + if (this._config.html) { + templateElement.innerHTML = ""; + templateElement.append(element); + return; + } + templateElement.textContent = element.textContent; + } + }; + var template_factory_default = TemplateFactory; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/bootstrap@v5.3.8+incompatible/js/src/tooltip.js + var NAME3 = "tooltip"; + var DISALLOWED_ATTRIBUTES = /* @__PURE__ */ new Set(["sanitize", "allowList", "sanitizeFn"]); + var CLASS_NAME_FADE = "fade"; + var CLASS_NAME_MODAL = "modal"; + var CLASS_NAME_SHOW2 = "show"; + var SELECTOR_TOOLTIP_INNER = ".tooltip-inner"; + var SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`; + var EVENT_MODAL_HIDE = "hide.bs.modal"; + var TRIGGER_HOVER = "hover"; + var TRIGGER_FOCUS = "focus"; + var TRIGGER_CLICK = "click"; + var TRIGGER_MANUAL = "manual"; + var EVENT_HIDE2 = "hide"; + var EVENT_HIDDEN2 = "hidden"; + var EVENT_SHOW2 = "show"; + var EVENT_SHOWN2 = "shown"; + var EVENT_INSERTED = "inserted"; + var EVENT_CLICK = "click"; + var EVENT_FOCUSIN = "focusin"; + var EVENT_FOCUSOUT = "focusout"; + var EVENT_MOUSEENTER = "mouseenter"; + var EVENT_MOUSELEAVE = "mouseleave"; + var AttachmentMap = { + AUTO: "auto", + TOP: "top", + RIGHT: isRTL() ? "left" : "right", + BOTTOM: "bottom", + LEFT: isRTL() ? "right" : "left" + }; + var Default3 = { + allowList: DefaultAllowlist, + animation: true, + boundary: "clippingParents", + container: false, + customClass: "", + delay: 0, + fallbackPlacements: ["top", "right", "bottom", "left"], + html: false, + offset: [0, 6], + placement: "top", + popperConfig: null, + sanitize: true, + sanitizeFn: null, + selector: false, + template: '', + title: "", + trigger: "hover focus" + }; + var DefaultType3 = { + allowList: "object", + animation: "boolean", + boundary: "(string|element)", + container: "(string|element|boolean)", + customClass: "(string|function)", + delay: "(number|object)", + fallbackPlacements: "array", + html: "boolean", + offset: "(array|string|function)", + placement: "(string|function)", + popperConfig: "(null|object|function)", + sanitize: "boolean", + sanitizeFn: "(null|function)", + selector: "(string|boolean)", + template: "string", + title: "(string|element|function)", + trigger: "string" + }; + var Tooltip = class _Tooltip extends base_component_default { + constructor(element, config) { + if (typeof Popper === "undefined") { + throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org/docs/v2/)"); + } + super(element, config); + this._isEnabled = true; + this._timeout = 0; + this._isHovered = null; + this._activeTrigger = {}; + this._popper = null; + this._templateFactory = null; + this._newContent = null; + this.tip = null; + this._setListeners(); + if (!this._config.selector) { + this._fixTitle(); + } + } + // Getters + static get Default() { + return Default3; + } + static get DefaultType() { + return DefaultType3; + } + static get NAME() { + return NAME3; + } + // Public + enable() { + this._isEnabled = true; + } + disable() { + this._isEnabled = false; + } + toggleEnabled() { + this._isEnabled = !this._isEnabled; + } + toggle() { + if (!this._isEnabled) { + return; + } + if (this._isShown()) { + this._leave(); + return; + } + this._enter(); + } + dispose() { + clearTimeout(this._timeout); + event_handler_default.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); + if (this._element.getAttribute("data-bs-original-title")) { + this._element.setAttribute("title", this._element.getAttribute("data-bs-original-title")); + } + this._disposePopper(); + super.dispose(); + } + show() { + if (this._element.style.display === "none") { + throw new Error("Please use show on visible elements"); + } + if (!(this._isWithContent() && this._isEnabled)) { + return; + } + const showEvent = event_handler_default.trigger(this._element, this.constructor.eventName(EVENT_SHOW2)); + const shadowRoot = findShadowRoot(this._element); + const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element); + if (showEvent.defaultPrevented || !isInTheDom) { + return; + } + this._disposePopper(); + const tip = this._getTipElement(); + this._element.setAttribute("aria-describedby", tip.getAttribute("id")); + const { container } = this._config; + if (!this._element.ownerDocument.documentElement.contains(this.tip)) { + container.append(tip); + event_handler_default.trigger(this._element, this.constructor.eventName(EVENT_INSERTED)); + } + this._popper = this._createPopper(tip); + tip.classList.add(CLASS_NAME_SHOW2); + if ("ontouchstart" in document.documentElement) { + for (const element of [].concat(...document.body.children)) { + event_handler_default.on(element, "mouseover", noop); + } + } + const complete = () => { + event_handler_default.trigger(this._element, this.constructor.eventName(EVENT_SHOWN2)); + if (this._isHovered === false) { + this._leave(); + } + this._isHovered = false; + }; + this._queueCallback(complete, this.tip, this._isAnimated()); + } + hide() { + if (!this._isShown()) { + return; + } + const hideEvent = event_handler_default.trigger(this._element, this.constructor.eventName(EVENT_HIDE2)); + if (hideEvent.defaultPrevented) { + return; + } + const tip = this._getTipElement(); + tip.classList.remove(CLASS_NAME_SHOW2); + if ("ontouchstart" in document.documentElement) { + for (const element of [].concat(...document.body.children)) { + event_handler_default.off(element, "mouseover", noop); + } + } + this._activeTrigger[TRIGGER_CLICK] = false; + this._activeTrigger[TRIGGER_FOCUS] = false; + this._activeTrigger[TRIGGER_HOVER] = false; + this._isHovered = null; + const complete = () => { + if (this._isWithActiveTrigger()) { + return; + } + if (!this._isHovered) { + this._disposePopper(); + } + this._element.removeAttribute("aria-describedby"); + event_handler_default.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN2)); + }; + this._queueCallback(complete, this.tip, this._isAnimated()); + } + update() { + if (this._popper) { + this._popper.update(); + } + } + // Protected + _isWithContent() { + return Boolean(this._getTitle()); + } + _getTipElement() { + if (!this.tip) { + this.tip = this._createTipElement(this._newContent || this._getContentForTemplate()); + } + return this.tip; + } + _createTipElement(content2) { + const tip = this._getTemplateFactory(content2).toHtml(); + if (!tip) { + return null; + } + tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW2); + tip.classList.add(`bs-${this.constructor.NAME}-auto`); + const tipId = getUID(this.constructor.NAME).toString(); + tip.setAttribute("id", tipId); + if (this._isAnimated()) { + tip.classList.add(CLASS_NAME_FADE); + } + return tip; + } + setContent(content2) { + this._newContent = content2; + if (this._isShown()) { + this._disposePopper(); + this.show(); + } + } + _getTemplateFactory(content2) { + if (this._templateFactory) { + this._templateFactory.changeContent(content2); + } else { + this._templateFactory = new template_factory_default(__spreadProps(__spreadValues({}, this._config), { + // the `content` var has to be after `this._config` + // to override config.content in case of popover + content: content2, + extraClass: this._resolvePossibleFunction(this._config.customClass) + })); + } + return this._templateFactory; + } + _getContentForTemplate() { + return { + [SELECTOR_TOOLTIP_INNER]: this._getTitle() + }; + } + _getTitle() { + return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute("data-bs-original-title"); + } + // Private + _initializeOnDelegatedTarget(event) { + return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig()); + } + _isAnimated() { + return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE); + } + _isShown() { + return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW2); + } + _createPopper(tip) { + const placement = execute(this._config.placement, [this, tip, this._element]); + const attachment = AttachmentMap[placement.toUpperCase()]; + return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment)); + } + _getOffset() { + const { offset } = this._config; + if (typeof offset === "string") { + return offset.split(",").map((value) => Number.parseInt(value, 10)); + } + if (typeof offset === "function") { + return (popperData) => offset(popperData, this._element); + } + return offset; + } + _resolvePossibleFunction(arg) { + return execute(arg, [this._element, this._element]); + } + _getPopperConfig(attachment) { + const defaultBsPopperConfig = { + placement: attachment, + modifiers: [ + { + name: "flip", + options: { + fallbackPlacements: this._config.fallbackPlacements + } + }, + { + name: "offset", + options: { + offset: this._getOffset() + } + }, + { + name: "preventOverflow", + options: { + boundary: this._config.boundary + } + }, + { + name: "arrow", + options: { + element: `.${this.constructor.NAME}-arrow` + } + }, + { + name: "preSetPlacement", + enabled: true, + phase: "beforeMain", + fn: (data) => { + this._getTipElement().setAttribute("data-popper-placement", data.state.placement); + } + } + ] + }; + return __spreadValues(__spreadValues({}, defaultBsPopperConfig), execute(this._config.popperConfig, [void 0, defaultBsPopperConfig])); + } + _setListeners() { + const triggers = this._config.trigger.split(" "); + for (const trigger of triggers) { + if (trigger === "click") { + event_handler_default.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, (event) => { + const context = this._initializeOnDelegatedTarget(event); + context._activeTrigger[TRIGGER_CLICK] = !(context._isShown() && context._activeTrigger[TRIGGER_CLICK]); + context.toggle(); + }); + } else if (trigger !== TRIGGER_MANUAL) { + const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN); + const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT); + event_handler_default.on(this._element, eventIn, this._config.selector, (event) => { + const context = this._initializeOnDelegatedTarget(event); + context._activeTrigger[event.type === "focusin" ? TRIGGER_FOCUS : TRIGGER_HOVER] = true; + context._enter(); + }); + event_handler_default.on(this._element, eventOut, this._config.selector, (event) => { + const context = this._initializeOnDelegatedTarget(event); + context._activeTrigger[event.type === "focusout" ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget); + context._leave(); + }); + } + } + this._hideModalHandler = () => { + if (this._element) { + this.hide(); + } + }; + event_handler_default.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); + } + _fixTitle() { + const title = this._element.getAttribute("title"); + if (!title) { + return; + } + if (!this._element.getAttribute("aria-label") && !this._element.textContent.trim()) { + this._element.setAttribute("aria-label", title); + } + this._element.setAttribute("data-bs-original-title", title); + this._element.removeAttribute("title"); + } + _enter() { + if (this._isShown() || this._isHovered) { + this._isHovered = true; + return; + } + this._isHovered = true; + this._setTimeout(() => { + if (this._isHovered) { + this.show(); + } + }, this._config.delay.show); + } + _leave() { + if (this._isWithActiveTrigger()) { + return; + } + this._isHovered = false; + this._setTimeout(() => { + if (!this._isHovered) { + this.hide(); + } + }, this._config.delay.hide); + } + _setTimeout(handler, timeout) { + clearTimeout(this._timeout); + this._timeout = setTimeout(handler, timeout); + } + _isWithActiveTrigger() { + return Object.values(this._activeTrigger).includes(true); + } + _getConfig(config) { + const dataAttributes = manipulator_default.getDataAttributes(this._element); + for (const dataAttribute of Object.keys(dataAttributes)) { + if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) { + delete dataAttributes[dataAttribute]; + } + } + config = __spreadValues(__spreadValues({}, dataAttributes), typeof config === "object" && config ? config : {}); + config = this._mergeConfigObj(config); + config = this._configAfterMerge(config); + this._typeCheckConfig(config); + return config; + } + _configAfterMerge(config) { + config.container = config.container === false ? document.body : getElement(config.container); + if (typeof config.delay === "number") { + config.delay = { + show: config.delay, + hide: config.delay + }; + } + if (typeof config.title === "number") { + config.title = config.title.toString(); + } + if (typeof config.content === "number") { + config.content = config.content.toString(); + } + return config; + } + _getDelegateConfig() { + const config = {}; + for (const [key, value] of Object.entries(this._config)) { + if (this.constructor.Default[key] !== value) { + config[key] = value; + } + } + config.selector = false; + config.trigger = "manual"; + return config; + } + _disposePopper() { + if (this._popper) { + this._popper.destroy(); + this._popper = null; + } + if (this.tip) { + this.tip.remove(); + this.tip = null; + } + } + // Static + static jQueryInterface(config) { + return this.each(function() { + const data = _Tooltip.getOrCreateInstance(this, config); + if (typeof config !== "string") { + return; + } + if (typeof data[config] === "undefined") { + throw new TypeError(`No method named "${config}"`); + } + data[config](); + }); + } + }; + defineJQueryPlugin(Tooltip); + var tooltip_default = Tooltip; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/clipboard.js + var clipboardSelector = ".code-header>button"; + var ICON_DEFAULT = "far fa-clipboard"; + var ICON_SUCCESS = "fas fa-check"; + var ATTR_TIMEOUT = "timeout"; + var ATTR_TITLE_SUCCEED = "data-title-succeed"; + var ATTR_TITLE_ORIGIN = "data-bs-original-title"; + var TIMEOUT = 2e3; + function isLocked(node) { + if (node.hasAttribute(ATTR_TIMEOUT)) { + let timeout = node.getAttribute(ATTR_TIMEOUT); + if (Number(timeout) > Date.now()) { + return true; + } + } + return false; + } + function lock(node) { + node.setAttribute(ATTR_TIMEOUT, Date.now() + TIMEOUT); + } + function unlock(node) { + node.removeAttribute(ATTR_TIMEOUT); + } + function showTooltip(btn) { + const succeedTitle = btn.getAttribute(ATTR_TITLE_SUCCEED); + btn.setAttribute(ATTR_TITLE_ORIGIN, succeedTitle); + tooltip_default.getInstance(btn).show(); + } + function hideTooltip(btn) { + tooltip_default.getInstance(btn).hide(); + btn.removeAttribute(ATTR_TITLE_ORIGIN); + } + function setSuccessIcon(btn) { + const icon = btn.children[0]; + icon.setAttribute("class", ICON_SUCCESS); + } + function resumeIcon(btn) { + const icon = btn.children[0]; + icon.setAttribute("class", ICON_DEFAULT); + } + function setCodeClipboard() { + const clipboardList = document.querySelectorAll(clipboardSelector); + if (clipboardList.length === 0) { + return; + } + const clipboard = new ClipboardJS(clipboardSelector, { + target: (trigger) => { + const codeBlock = trigger.parentNode.nextElementSibling; + return codeBlock.querySelectorAll("code")[1]; + } + }); + [...clipboardList].map( + (elem) => new tooltip_default(elem, { + placement: "left" + }) + ); + clipboard.on("success", (e) => { + const trigger = e.trigger; + e.clearSelection(); + if (isLocked(trigger)) { + return; + } + setSuccessIcon(trigger); + showTooltip(trigger); + lock(trigger); + setTimeout(() => { + hideTooltip(trigger); + resumeIcon(trigger); + unlock(trigger); + }, TIMEOUT); + }); + } + function setLinkClipboard() { + const btnCopyLink = document.getElementById("copy-link"); + if (btnCopyLink === null) { + return; + } + btnCopyLink.addEventListener("click", (e) => { + const target = e.target; + if (isLocked(target)) { + return; + } + navigator.clipboard.writeText(window.location.href).then(() => { + const defaultTitle = target.getAttribute(ATTR_TITLE_ORIGIN); + const succeedTitle = target.getAttribute(ATTR_TITLE_SUCCEED); + target.setAttribute(ATTR_TITLE_ORIGIN, succeedTitle); + tooltip_default.getInstance(target).show(); + lock(target); + setTimeout(() => { + target.setAttribute(ATTR_TITLE_ORIGIN, defaultTitle); + unlock(target); + }, TIMEOUT); + }); + }); + btnCopyLink.addEventListener("mouseleave", (e) => { + tooltip_default.getInstance(e.target).hide(); + }); + } + function initClipboard() { + setCodeClipboard(); + setLinkClipboard(); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/img-loading.js + var ATTR_DATA_SRC = "data-src"; + var ATTR_DATA_LQIP = "data-lqip"; + var cover = { + SHIMMER: "shimmer", + BLUR: "blur" + }; + function removeCover(clzss) { + this.parentElement.classList.remove(clzss); + } + function handleImage() { + if (!this.complete) { + return; + } + if (this.hasAttribute(ATTR_DATA_LQIP)) { + removeCover.call(this, cover.BLUR); + } else { + removeCover.call(this, cover.SHIMMER); + } + } + function switchLQIP() { + const src = this.getAttribute(ATTR_DATA_SRC); + this.setAttribute("src", encodeURI(src)); + this.removeAttribute(ATTR_DATA_SRC); + } + function loadImg() { + const images = document.querySelectorAll("article img"); + if (images.length === 0) { + return; + } + images.forEach((img) => { + img.addEventListener("load", handleImage); + }); + document.querySelectorAll('article img[loading="lazy"]').forEach((img) => { + if (img.complete) { + removeCover.call(img, cover.SHIMMER); + } + }); + const lqips = document.querySelectorAll( + `article img[${ATTR_DATA_LQIP}="true"]` + ); + if (lqips.length) { + lqips.forEach((lqip) => { + switchLQIP.call(lqip); + }); + } + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/img-popup.js + var lightImages = ".popup:not(.dark)"; + var darkImages = ".popup:not(.light)"; + var selector = lightImages; + function updateImages(current, reverse) { + if (selector === lightImages) { + selector = darkImages; + } else { + selector = lightImages; + } + if (reverse === null) { + reverse = GLightbox({ selector: `${selector}` }); + } + [current, reverse] = [reverse, current]; + } + function imgPopup() { + if (document.querySelector(".popup") === null) { + return; + } + const hasDualImages = !(document.querySelector(".popup.light") === null && document.querySelector(".popup.dark") === null); + if (Theme.visualState === Theme.DARK) { + selector = darkImages; + } + let current = GLightbox({ selector: `${selector}` }); + if (hasDualImages && Theme.switchable) { + let reverse = null; + window.addEventListener("message", (event) => { + if (event.source === window && event.data && event.data.id === Theme.ID) { + updateImages(current, reverse); + } + }); + } + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/locale-datetime.js + var LocaleHelper = class { + static get attrTimestamp() { + return "data-ts"; + } + static get attrDateFormat() { + return "data-df"; + } + static get locale() { + return document.documentElement.getAttribute("lang").substring(0, 2); + } + static getTimestamp(elem) { + return Number(elem.getAttribute(this.attrTimestamp)); + } + static getDateFormat(elem) { + return elem.getAttribute(this.attrDateFormat); + } + }; + function initLocaleDatetime() { + dayjs.locale(LocaleHelper.locale); + dayjs.extend(window.dayjs_plugin_localizedFormat); + document.querySelectorAll(`[${LocaleHelper.attrTimestamp}]`).forEach((elem) => { + const date = dayjs.unix(LocaleHelper.getTimestamp(elem)); + const text = date.format(LocaleHelper.getDateFormat(elem)); + elem.textContent = text; + elem.removeAttribute(LocaleHelper.attrTimestamp); + elem.removeAttribute(LocaleHelper.attrDateFormat); + if (elem.hasAttribute("data-bs-toggle") && elem.getAttribute("data-bs-toggle") === "tooltip") { + const tooltipText = date.format("llll"); + elem.setAttribute("data-bs-title", tooltipText); + } + }); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/toc/toc-mobile.js + var $tocBar = document.getElementById("toc-bar"); + var $soloTrigger = document.getElementById("toc-solo-trigger"); + var $triggers = document.getElementsByClassName("toc-trigger"); + var $popup = document.getElementById("toc-popup"); + var $btnClose = document.getElementById("toc-popup-close"); + var SCROLL_LOCK = "overflow-hidden"; + var CLOSING = "closing"; + var _invisible, _barHeight; + var _TocMobile = class _TocMobile { + static initBar() { + const observer = new IntersectionObserver( + (entries) => { + entries.forEach((entry) => { + $tocBar.classList.toggle("invisible", entry.isIntersecting); + }); + }, + { rootMargin: `-${__privateGet(this, _barHeight)}px 0px 0px 0px` } + ); + observer.observe($soloTrigger); + __privateSet(this, _invisible, false); + } + static listenAnchors() { + const $anchors = document.getElementsByClassName("toc-link"); + [...$anchors].forEach((anchor) => { + anchor.onclick = () => this.hidePopup(); + }); + } + static refresh() { + if (__privateGet(this, _invisible)) { + this.initComponents(); + } + tocbot.refresh(this.options); + this.listenAnchors(); + } + static get popupOpened() { + return $popup.open; + } + static showPopup() { + this.lockScroll(true); + $popup.showModal(); + const activeItem = $popup.querySelector("li.is-active-li"); + activeItem.scrollIntoView({ block: "center" }); + } + static hidePopup() { + $popup.toggleAttribute(CLOSING); + $popup.addEventListener( + "animationend", + () => { + $popup.toggleAttribute(CLOSING); + $popup.close(); + }, + { once: true } + ); + this.lockScroll(false); + } + static lockScroll(enable) { + document.documentElement.classList.toggle(SCROLL_LOCK, enable); + document.body.classList.toggle(SCROLL_LOCK, enable); + } + static clickBackdrop(event) { + if ($popup.hasAttribute(CLOSING)) { + return; + } + const rect = event.target.getBoundingClientRect(); + if (event.clientX < rect.left || event.clientX > rect.right || event.clientY < rect.top || event.clientY > rect.bottom) { + this.hidePopup(); + } + } + static initComponents() { + this.initBar(); + [...$triggers].forEach((trigger) => { + trigger.onclick = () => this.showPopup(); + }); + $popup.onclick = (e) => this.clickBackdrop(e); + $btnClose.onclick = () => this.hidePopup(); + $popup.oncancel = (e) => { + e.preventDefault(); + this.hidePopup(); + }; + } + static init() { + tocbot.init(this.options); + this.listenAnchors(); + this.initComponents(); + } + }; + _invisible = new WeakMap(); + _barHeight = new WeakMap(); + __privateAdd(_TocMobile, _invisible, true); + __privateAdd(_TocMobile, _barHeight, 16 * 3); + // 3rem + __publicField(_TocMobile, "options", { + tocSelector: "#toc-popup-content", + contentSelector: ".content", + ignoreSelector: "[data-toc-skip]", + headingSelector: "h2, h3, h4", + orderedList: false, + scrollSmooth: false, + collapseDepth: 4, + headingsOffset: __privateGet(_TocMobile, _barHeight) + }); + var TocMobile = _TocMobile; + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/toc/toc-desktop.js + var TocDesktop = class { + static refresh() { + tocbot.refresh(this.options); + } + static init() { + tocbot.init(this.options); + } + }; + /* Tocbot options Ref: https://github.com/tscanlin/tocbot#usage */ + __publicField(TocDesktop, "options", { + tocSelector: "#toc", + contentSelector: ".content", + ignoreSelector: "[data-toc-skip]", + headingSelector: "h2, h3, h4", + orderedList: false, + scrollSmooth: false, + headingsOffset: 16 * 2 + // 2rem + }); + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/toc.js + var desktopMode = matchMedia("(min-width: 1200px)"); + function refresh(e) { + if (e.matches) { + if (TocMobile.popupOpened) { + TocMobile.hidePopup(); + } + TocDesktop.refresh(); + } else { + TocMobile.refresh(); + } + } + function init() { + if (document.querySelector('main>article[data-toc="true"]') === null) { + return; + } + if (desktopMode.matches) { + TocDesktop.init(); + } else { + TocMobile.init(); + } + const $tocWrapper = document.getElementById("toc-wrapper"); + $tocWrapper.classList.remove("invisible"); + desktopMode.onchange = refresh; + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/mermaid.js + var MERMAID = "mermaid"; + var themeMapper = Theme.getThemeMapper("default", "dark"); + function refreshTheme(event) { + if (event.source === window && event.data && event.data.id === Theme.ID) { + const mermaidList = document.getElementsByClassName(MERMAID); + [...mermaidList].forEach((elem) => { + const svgCode = elem.previousSibling.children.item(0).textContent; + elem.textContent = svgCode; + elem.removeAttribute("data-processed"); + }); + const newTheme = themeMapper[Theme.visualState]; + mermaid.initialize({ theme: newTheme }); + mermaid.init(null, `.${MERMAID}`); + } + } + function setNode(elem) { + const svgCode = elem.textContent; + const backup = elem.parentElement; + backup.classList.add("d-none"); + const mermaid2 = document.createElement("pre"); + mermaid2.classList.add(MERMAID); + const text = document.createTextNode(svgCode); + mermaid2.appendChild(text); + backup.after(mermaid2); + } + function loadMermaid() { + if (typeof mermaid === "undefined" || typeof mermaid.initialize !== "function") { + return; + } + const initTheme = themeMapper[Theme.visualState]; + let mermaidConf = { + theme: initTheme + }; + const basicList = document.getElementsByClassName("language-mermaid"); + [...basicList].forEach(setNode); + mermaid.initialize(mermaidConf); + if (Theme.switchable) { + window.addEventListener("message", refreshTheme); + } + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/mode-toggle.js + var $toggle = document.getElementById("mode-toggle"); + function modeWatcher() { + if (!$toggle) { + return; + } + $toggle.addEventListener("click", () => { + Theme.flip(); + }); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/back-to-top.js + function back2top() { + const btn = document.getElementById("back-to-top"); + window.addEventListener("scroll", () => { + if (window.scrollY > 50) { + btn.classList.add("show"); + } else { + btn.classList.remove("show"); + } + }); + btn.addEventListener("click", () => { + window.scrollTo({ top: 0 }); + }); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/tooltip-loader.js + function loadTooptip() { + const tooltipTriggerList = document.querySelectorAll( + '[data-bs-toggle="tooltip"]' + ); + [...tooltipTriggerList].map( + (tooltipTriggerEl) => new tooltip_default(tooltipTriggerEl) + ); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/layouts/basic.js + function basic() { + modeWatcher(); + back2top(); + loadTooptip(); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/layouts/sidebar.js + var ATTR_DISPLAY = "sidebar-display"; + var $sidebar = document.getElementById("sidebar"); + var $trigger = document.getElementById("sidebar-trigger"); + var $mask = document.getElementById("mask"); + var _isExpanded; + var SidebarUtil = class { + static toggle() { + __privateSet(this, _isExpanded, !__privateGet(this, _isExpanded)); + document.body.toggleAttribute(ATTR_DISPLAY, __privateGet(this, _isExpanded)); + $sidebar.classList.toggle("z-2", __privateGet(this, _isExpanded)); + $mask.classList.toggle("d-none", !__privateGet(this, _isExpanded)); + } + }; + _isExpanded = new WeakMap(); + __privateAdd(SidebarUtil, _isExpanded, false); + function initSidebar() { + $trigger.onclick = $mask.onclick = () => SidebarUtil.toggle(); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/components/search-display.js + var btnSbTrigger = document.getElementById("sidebar-trigger"); + var btnSearchTrigger = document.getElementById("search-trigger"); + var btnCancel = document.getElementById("search-cancel"); + var content = document.querySelectorAll("#main-wrapper>.container>.row"); + var topbarTitle = document.getElementById("topbar-title"); + var search = document.getElementById("search"); + var resultWrapper = document.getElementById("search-result-wrapper"); + var results = document.getElementById("search-results"); + var input = document.getElementById("search-input"); + var hints = document.getElementById("search-hints"); + var LOADED = "d-block"; + var UNLOADED = "d-none"; + var FOCUS = "input-focus"; + var FLEX = "d-flex"; + var MobileSearchBar = class { + static on() { + btnSbTrigger.classList.add(UNLOADED); + topbarTitle.classList.add(UNLOADED); + btnSearchTrigger.classList.add(UNLOADED); + search.classList.add(FLEX); + btnCancel.classList.add(LOADED); + } + static off() { + btnCancel.classList.remove(LOADED); + search.classList.remove(FLEX); + btnSbTrigger.classList.remove(UNLOADED); + topbarTitle.classList.remove(UNLOADED); + btnSearchTrigger.classList.remove(UNLOADED); + } + }; + var ResultSwitch = class { + static on() { + if (!this.resultVisible) { + resultWrapper.classList.remove(UNLOADED); + content.forEach((el) => { + el.classList.add(UNLOADED); + }); + this.resultVisible = true; + } + } + static off() { + if (this.resultVisible) { + results.innerHTML = ""; + if (hints.classList.contains(UNLOADED)) { + hints.classList.remove(UNLOADED); + } + resultWrapper.classList.add(UNLOADED); + content.forEach((el) => { + el.classList.remove(UNLOADED); + }); + input.textContent = ""; + this.resultVisible = false; + } + } + }; + __publicField(ResultSwitch, "resultVisible", false); + function isMobileView() { + return btnCancel.classList.contains(LOADED); + } + function displaySearch() { + btnSearchTrigger.addEventListener("click", () => { + MobileSearchBar.on(); + ResultSwitch.on(); + input.focus(); + }); + btnCancel.addEventListener("click", () => { + MobileSearchBar.off(); + ResultSwitch.off(); + }); + input.addEventListener("focus", () => { + search.classList.add(FOCUS); + }); + input.addEventListener("focusout", () => { + search.classList.remove(FOCUS); + }); + input.addEventListener("input", () => { + if (input.value === "") { + if (isMobileView()) { + hints.classList.remove(UNLOADED); + } else { + ResultSwitch.off(); + } + } else { + ResultSwitch.on(); + if (isMobileView()) { + hints.classList.add(UNLOADED); + } + } + }); + } + + // ns-hugo-imp:/home/mmckinnon/.cache/hugo_cache/modules/filecache/modules/pkg/mod/git.comprofix.com/mmckinnon/hugo-theme-chirpy@v0.0.0-20250906020401-98acc1f743ac/assets/js/modules/layouts/topbar.js + function initTopbar() { + displaySearch(); + } + + // + loadImg(); + init(); + imgPopup(); + initSidebar(); + initLocaleDatetime(); + initClipboard(); + initTopbar(); + loadMermaid(); + basic(); +})(); diff --git a/public/page/1/index.html b/public/page/1/index.html index 43ed666..1cf6932 100644 --- a/public/page/1/index.html +++ b/public/page/1/index.html @@ -1 +1,10 @@ -https://comprofix.com/ \ No newline at end of file + + + + http://localhost:1313/ + + + + + + diff --git a/public/post/2024-09-05-resetrestart/index.html b/public/post/2024-09-05-resetrestart/index.html index e65294b..3f52887 100644 --- a/public/post/2024-09-05-resetrestart/index.html +++ b/public/post/2024-09-05-resetrestart/index.html @@ -1,61 +1,1255 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Reset and Restart | -Comprofix
Reset and Restart
- - -

Reset and Restart

It’s time to reset the website and start building my blog again. I have had this domain for a number of years and it has always been used for my E-Mail.

But the website has been more of a play ground for experimenting and testing.

I am now hoping to get into the habit of writing more blog posts as I document my journey as I experiment with my HomeLab.

This post is licensed under CC BY 4.0 by the author.
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + + + + +
+ Reset and Restart +
+ + + + + + + + +
+
+
+
+ + + + + +
+
+

Reset and Restart

+ + + +
+ + + +
+ + + + + +

It’s time to reset the website and start building my blog again. I have had this domain for a number of years and it has always been used for my E-Mail.

+

But the website has been more of a play ground for experimenting and testing.

+

I am now hoping to get into the habit of writing more blog posts as I document my journey as I experiment with my HomeLab.

+ +
+ +
+ + + + + + + + + + +
+
+ + + This post is licensed under CC BY 4.0 by the author. + +
+ +
+
+
+ +
+ + + +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ © + + + + + Comprofix. + + + + Some rights reserved. +

+ +

Using the Chirpy theme for Hugo. +

+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Trending Tags

+
+ + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+ +
\ No newline at end of file + `; + }).join(''); + + this.resultsContainer.innerHTML = searchItems; + } + + + checkFieldsForMatch(item, term) { + const matches = { + inTitle: false, + inDesc: false, + inSection: false, + inContents: false + }; + + + if (DEFAULT_CONFIG.search.fields.title && this.containsTerm(item.searchableTitle, term)) { + matches.inTitle = true; + } + + if (DEFAULT_CONFIG.search.fields.description && this.containsTerm(item.searchableDesc, term)) { + matches.inDesc = true; + } + + if (DEFAULT_CONFIG.search.fields.section && this.containsTerm(item.searchableSection, term)) { + matches.inSection = true; + } + + if (DEFAULT_CONFIG.search.fields.contents && this.containsTerm(item.searchableContents, term)) { + matches.inContents = true; + } + + + if (matches.inTitle || matches.inDesc || matches.inSection || matches.inContents) { + return matches; + } + + + return false; + } + } + + const search = new FastSearch({ + searchInput: document.getElementById('search-input'), + resultsContainer: document.getElementById('search-results'), + json: `\/index.json` + }); + + +
+ + +
+ +
+ + \ No newline at end of file diff --git a/public/post/2024-09-21-websitedeployment/index.html b/public/post/2024-09-21-websitedeployment/index.html index 906044c..b6a12b8 100644 --- a/public/post/2024-09-21-websitedeployment/index.html +++ b/public/post/2024-09-21-websitedeployment/index.html @@ -1,199 +1,1564 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Continuous Integration & Continuous Deployment | -Comprofix
Continuous Integration & Continuous Deployment
- - -

Continuous Integration & Continuous Deployment

-
Continuous Integration & Continuous Deployment

Since the reset of the website, I have been working on getting it to auto build and deploy using Gitea Actions. Which is similar and compatible to GitHub Actions

Before implementing the action it was a manual process which required using docker commands to login, build and push the image to the container registry.

Why use CI/CD? -

It takes the manual process steps away and does them for you, helping you to avoid missing any steps and avoiding errors. This also makes the interaction seamless and automated.

Setting up the Aciton -

To setup the action we first needed to create some “secrets” in the repo. Secrets are secure variables that are requied to interact with systems. Such as passwords, usernames, SSH Keys etc.

gitea secrets

After populating our secrets file we can then create our .gitea/workflows/build.yml file. This file contains all the steps to build, test and deploy the container.

{% raw %}

 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
-10
-11
-12
-13
-14
-15
-16
-17
-18
-19
-20
-21
-22
-23
-24
-25
-26
-27
-28
-29
-30
-31
-32
-33
-34
-35
-36
-37
-38
-39
-40
-41
-42
-43
-44
-45
-46
-47
-48
-49
-50
-51
-52
-53
-
on: push
-jobs:
-  build-node:
-    runs-on: ubuntu-latest
-    container:
-      image: catthehacker/ubuntu:act-latest
-    steps:
-      - name: checkout repo
-        uses: actions/checkout@v4
-      
-      - name: Use Node.js
-        uses: actions/setup-node@v4
-      
-      - name: Install Node Dependencies
-        run: npm ci
-
-      - name: Build 11ty Site
-        run: npm run build --if-present
-      
-      - name: Set up Docker Buildx
-        uses: docker/setup-buildx-action@v3
-
-      - name: Login to DockerHub
-        uses: docker/login-action@v3
-        with:
-          registry: git.comprofix.com
-          username: ${{ secrets.REGISTRY_USERNAME }}
-          password: ${{ secrets.REGISTRY_TOKEN }}
-      
-      - name: Build and push
-        uses: docker/build-push-action@v6
-        with:
-          context: ./
-          file: ./Dockerfile
-          push: true
-          tags: git.comprofix.com/mmckinnon/comprofix.com:latest
-  
-  publish:
-    runs-on: ubuntu-latest
-    steps:
-      - name: checkout repo
-        uses: actions/checkout@v4
-
-      - name: Publish Website
-        run: |
-          mkdir ~/.ssh
-          echo "${{ secrets.SSH_KNOWN_HOSTS }}" >> ~/.ssh/known_hosts
-          chmod 644 ~/.ssh/known_hosts
-          eval $(ssh-agent -s)
-          ssh-add <(echo "${{ secrets.SSH_PRIVATE_KEY }}")
-          ssh administrator@comprofix.com "cd /opt/comprofix; docker compose down" || true
-          scp docker-compose.yml administrator@comprofix.com:/opt/comprofix
-          ssh administrator@comprofix.com "cd /opt/comprofix; docker compose pull; docker compose up -d"

{% endraw %}

build.yml explained -

  • 1
    -
    on: push
    This tells the action to run when code is pushed to the repo.
  • 1
    -2
    -3
    -
    runs-on: ubuntu-latest
    -container:
    -  image: catthehacker/ubuntu:act-latest
    This specified the “container” to use to run all the steps on. This was crucial as running without a “conatiner” would fail as not all required dependencies where available
  • 1
    -2
    -3
    -4
    -
    jobs:
    -  build-node:
    -  ...
    -  publish:
    These are the names of the separate jobs for the build action. The build node will build the site and create the new docker container and push to the registry. The publish will connect the host running the container and restart using the new container.
  • 1
    -
    steps:
    Each job has a list of steps it performs on the code. Most of these a pretty self explaining on what they do. Everything from check out the code. Setup Node environment and build. Run the docker commands to login to the registry, build the container and push. Then the last job steps connect the host and pull the new container and start.

Gitea Action Completes -

Once the new code was commited to the repo the Action was able to complete successfully.

This post is licensed under CC BY 4.0 by the author.
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + + + + +
+ Continuous Integration & Continuous Deployment +
+ + + + + + + + +
+
+
+
+ + + + + +
+
+

Continuous Integration & Continuous Deployment

+ + + +
+ + + + + + + +
+
Continuous Integration & Continuous Deployment
+ +
+ +
+ + +
+ + + + + +

Since the reset of the website, I have been working on getting it to auto build and deploy using Gitea Actions. Which is similar and compatible to GitHub Actions

+

Before implementing the action it was a manual process which required using docker commands to login, build and push the image to the container registry.

+

+ + Why use CI/CD? + + +

It takes the manual process steps away and does them for you, helping you to avoid missing any steps and avoiding errors. This also makes the interaction seamless and automated.

+

+ + Setting up the Aciton + + +

To setup the action we first needed to create some “secrets” in the repo. Secrets are secure variables that are requied to interact with systems. Such as passwords, usernames, SSH Keys etc.

+ + gitea secrets +

After populating our secrets file we can then create our .gitea/workflows/build.yml file. This file contains all the steps to build, test and deploy the container.

+

{% raw %}

+
+
+ +
+ +
+
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+
+
on: push
+jobs:
+  build-node:
+    runs-on: ubuntu-latest
+    container:
+      image: catthehacker/ubuntu:act-latest
+    steps:
+      - name: checkout repo
+        uses: actions/checkout@v4
+      
+      - name: Use Node.js
+        uses: actions/setup-node@v4
+      
+      - name: Install Node Dependencies
+        run: npm ci
+
+      - name: Build 11ty Site
+        run: npm run build --if-present
+      
+      - name: Set up Docker Buildx
+        uses: docker/setup-buildx-action@v3
+
+      - name: Login to DockerHub
+        uses: docker/login-action@v3
+        with:
+          registry: git.comprofix.com
+          username: ${{ secrets.REGISTRY_USERNAME }}
+          password: ${{ secrets.REGISTRY_TOKEN }}
+      
+      - name: Build and push
+        uses: docker/build-push-action@v6
+        with:
+          context: ./
+          file: ./Dockerfile
+          push: true
+          tags: git.comprofix.com/mmckinnon/comprofix.com:latest
+  
+  publish:
+    runs-on: ubuntu-latest
+    steps:
+      - name: checkout repo
+        uses: actions/checkout@v4
+
+      - name: Publish Website
+        run: |
+          mkdir ~/.ssh
+          echo "${{ secrets.SSH_KNOWN_HOSTS }}" >> ~/.ssh/known_hosts
+          chmod 644 ~/.ssh/known_hosts
+          eval $(ssh-agent -s)
+          ssh-add <(echo "${{ secrets.SSH_PRIVATE_KEY }}")
+          ssh administrator@comprofix.com "cd /opt/comprofix; docker compose down" || true
+          scp docker-compose.yml administrator@comprofix.com:/opt/comprofix
+          ssh administrator@comprofix.com "cd /opt/comprofix; docker compose pull; docker compose up -d"
+
+
+
+

{% endraw %}

+

+ + build.yml explained + + +

    +
  • +
    +
    + +
    + +
    +
    1
    +
    +
    on: push
    +
    +
    +
    +This tells the action to run when code is pushed to the repo.
  • +
  • +
    +
    + +
    + +
    +
    1
    +2
    +3
    +
    +
    runs-on: ubuntu-latest
    +container:
    +  image: catthehacker/ubuntu:act-latest
    +
    +
    +
    +This specified the “container” to use to run all the steps on. This was crucial as running without a “conatiner” would fail as not all required dependencies where available
  • +
  • +
    +
    + +
    + +
    +
    1
    +2
    +3
    +4
    +
    +
    jobs:
    +  build-node:
    +  ...
    +  publish:
    +
    +
    +
    +These are the names of the separate jobs for the build action. The build node will build the site and create the new docker container and push to the registry. The publish will connect the host running the container and restart using the new container.
  • +
  • +
    +
    + +
    + +
    +
    1
    +
    +
    steps:
    +
    +
    +
    +Each job has a list of steps it performs on the code. Most of these a pretty self explaining on what they do. Everything from check out the code. Setup Node environment and build. Run the docker commands to login to the registry, build the container and push. Then the last job steps connect the host and pull the new container and start.
  • +
+

+ + Gitea Action Completes + + +

Once the new code was commited to the repo the Action was able to complete successfully.

+ + + +
+ +
+ + + + + + + + + + +
+
+ + + This post is licensed under CC BY 4.0 by the author. + +
+ +
+
+
+ +
+ + + +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ © + + + + + Comprofix. + + + + Some rights reserved. +

+ +

Using the Chirpy theme for Hugo. +

+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Trending Tags

+
+ + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+ +
\ No newline at end of file + `; + }).join(''); + + this.resultsContainer.innerHTML = searchItems; + } + + + checkFieldsForMatch(item, term) { + const matches = { + inTitle: false, + inDesc: false, + inSection: false, + inContents: false + }; + + + if (DEFAULT_CONFIG.search.fields.title && this.containsTerm(item.searchableTitle, term)) { + matches.inTitle = true; + } + + if (DEFAULT_CONFIG.search.fields.description && this.containsTerm(item.searchableDesc, term)) { + matches.inDesc = true; + } + + if (DEFAULT_CONFIG.search.fields.section && this.containsTerm(item.searchableSection, term)) { + matches.inSection = true; + } + + if (DEFAULT_CONFIG.search.fields.contents && this.containsTerm(item.searchableContents, term)) { + matches.inContents = true; + } + + + if (matches.inTitle || matches.inDesc || matches.inSection || matches.inContents) { + return matches; + } + + + return false; + } + } + + const search = new FastSearch({ + searchInput: document.getElementById('search-input'), + resultsContainer: document.getElementById('search-results'), + json: `\/index.json` + }); + + +
+ + +
+ +
+ + \ No newline at end of file diff --git a/public/post/index.html b/public/post/index.html index c4454e9..7894b6b 100644 --- a/public/post/index.html +++ b/public/post/index.html @@ -1,49 +1,958 @@ -Posts | -Comprofix
- - -
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Posts | + + Comprofix + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + + + + +
+ +
+ + + + + + + + +
+
+
+
+ +
+
+

Posts

+ +
+ +
+ +
+ + +
+

Subsections & Pages

+ +
+ + + +
+ +
+ + + +
+ +
+ +
+ + +
+

+ © + + + + + Comprofix. + + + + Some rights reserved. +

+ +

Using the Chirpy theme for Hugo. +

+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Trending Tags

+
+ + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+ +
\ No newline at end of file + `; + }).join(''); + + this.resultsContainer.innerHTML = searchItems; + } + + + checkFieldsForMatch(item, term) { + const matches = { + inTitle: false, + inDesc: false, + inSection: false, + inContents: false + }; + + + if (DEFAULT_CONFIG.search.fields.title && this.containsTerm(item.searchableTitle, term)) { + matches.inTitle = true; + } + + if (DEFAULT_CONFIG.search.fields.description && this.containsTerm(item.searchableDesc, term)) { + matches.inDesc = true; + } + + if (DEFAULT_CONFIG.search.fields.section && this.containsTerm(item.searchableSection, term)) { + matches.inSection = true; + } + + if (DEFAULT_CONFIG.search.fields.contents && this.containsTerm(item.searchableContents, term)) { + matches.inContents = true; + } + + + if (matches.inTitle || matches.inDesc || matches.inSection || matches.inContents) { + return matches; + } + + + return false; + } + } + + const search = new FastSearch({ + searchInput: document.getElementById('search-input'), + resultsContainer: document.getElementById('search-results'), + json: `\/index.json` + }); + + +
+ + +
+ +
+ + \ No newline at end of file diff --git a/public/post/index.xml b/public/post/index.xml index 73daa14..93b51b1 100644 --- a/public/post/index.xml +++ b/public/post/index.xml @@ -1,10 +1,26 @@ -Posts on Comprofixhttps://comprofix.com/post/Recent content in Posts on ComprofixHugoenSat, 06 Sep 2025 13:28:05 +1000Continuous Integration & Continuous Deploymenthttps://comprofix.com/post/2024-09-21-websitedeployment/Sat, 21 Sep 2024 00:00:00 +0000https://comprofix.com/post/2024-09-21-websitedeployment/<p>Since the reset of the website, I have been working on getting it to auto build and deploy using <a href="https://docs.gitea.com/usage/actions/overview">Gitea Actions</a>. Which is similar and compatible to <a href="https://github.com/features/actions">GitHub Actions</a></p> -<p>Before implementing the action it was a manual process which required using docker commands to login, build and push the image to the container registry.</p> -<h3 id="why-use-cicd" id=why-use-cicd> - - <span class="me-2">Why use CI/CD?</span> - <a href="#why-use-cicd" class="anchor text-muted"><i class="fas fa-hashtag"></i></a> - -</h3><p>It takes the manual process steps away and does them for you, helping you to avoid missing any steps and avoiding errors. This also makes the interaction seamless and automated.</p>Reset and Restarthttps://comprofix.com/post/2024-09-05-resetrestart/Thu, 05 Sep 2024 00:00:00 +0000https://comprofix.com/post/2024-09-05-resetrestart/<p>It&rsquo;s time to reset the website and start building my blog again. I have had this domain for a number of years and it has always been used for my E-Mail.</p> -<p>But the website has been more of a play ground for experimenting and testing.</p> -<p>I am now hoping to get into the habit of writing more blog posts as I document my journey as I experiment with my HomeLab.</p> \ No newline at end of file + + + + Posts on Comprofix + http://localhost:1313/post/ + Recent content in Posts on Comprofix + Hugo + en + Sat, 21 Sep 2024 00:00:00 +0000 + + + Continuous Integration & Continuous Deployment + http://localhost:1313/post/2024-09-21-websitedeployment/ + Sat, 21 Sep 2024 00:00:00 +0000 + http://localhost:1313/post/2024-09-21-websitedeployment/ + <p>Since the reset of the website, I have been working on getting it to auto build and deploy using <a href="https://docs.gitea.com/usage/actions/overview">Gitea Actions</a>. Which is similar and compatible to <a href="https://github.com/features/actions">GitHub Actions</a></p> <p>Before implementing the action it was a manual process which required using docker commands to login, build and push the image to the container registry.</p> <h3 id="why-use-cicd" id=why-use-cicd> <span class="me-2">Why use CI/CD?</span> <a href="#why-use-cicd" class="anchor text-muted"><i class="fas fa-hashtag"></i></a> </h3><p>It takes the manual process steps away and does them for you, helping you to avoid missing any steps and avoiding errors. This also makes the interaction seamless and automated.</p> + + + Reset and Restart + http://localhost:1313/post/2024-09-05-resetrestart/ + Thu, 05 Sep 2024 00:00:00 +0000 + http://localhost:1313/post/2024-09-05-resetrestart/ + <p>It&rsquo;s time to reset the website and start building my blog again. I have had this domain for a number of years and it has always been used for my E-Mail.</p> <p>But the website has been more of a play ground for experimenting and testing.</p> <p>I am now hoping to get into the habit of writing more blog posts as I document my journey as I experiment with my HomeLab.</p> + + + diff --git a/public/sitemap.xml b/public/sitemap.xml index 8c80f21..334bb97 100644 --- a/public/sitemap.xml +++ b/public/sitemap.xml @@ -1 +1,55 @@ -https://comprofix.com/tags/cd/2025-09-06T13:28:05+10:00https://comprofix.com/tags/ci/2025-09-06T13:28:05+10:00https://comprofix.com/tags/continuous-deployment/2025-09-06T13:28:05+10:00https://comprofix.com/tags/continuous-integration/2025-09-06T13:28:05+10:00https://comprofix.com/post/2024-09-21-websitedeployment/2025-09-06T13:28:05+10:00https://comprofix.com/tags/docker/2025-09-06T13:28:05+10:00https://comprofix.com/tags/git/2025-09-06T13:28:05+10:00https://comprofix.com/categories/gitea/2025-09-06T13:28:05+10:00https://comprofix.com/categories/homelab/2025-09-06T13:28:05+10:00https://comprofix.com/tags/homelab/2025-09-06T13:28:05+10:00https://comprofix.com/post/2025-09-06T13:28:05+10:00https://comprofix.com/post/2024-09-05-resetrestart/2025-09-06T13:28:05+10:00https://comprofix.com/about/2025-09-06T13:28:05+10:00https://comprofix.com/2025-09-06T13:28:05+10:00https://comprofix.com/archives/2025-09-06T13:28:05+10:00https://comprofix.com/categories/2025-09-06T13:28:05+10:00https://comprofix.com/tags/2025-09-06T13:28:05+10:00 \ No newline at end of file + + + + http://localhost:1313/ + 2024-09-21T00:00:00+00:00 + + http://localhost:1313/categories/ + 2024-09-21T00:00:00+00:00 + + http://localhost:1313/tags/cd/ + 2024-09-21T00:00:00+00:00 + + http://localhost:1313/tags/ci/ + 2024-09-21T00:00:00+00:00 + + http://localhost:1313/tags/continuous-deployment/ + 2024-09-21T00:00:00+00:00 + + http://localhost:1313/tags/continuous-integration/ + 2024-09-21T00:00:00+00:00 + + http://localhost:1313/post/2024-09-21-websitedeployment/ + 2024-09-21T00:00:00+00:00 + + http://localhost:1313/tags/docker/ + 2024-09-21T00:00:00+00:00 + + http://localhost:1313/tags/git/ + 2024-09-21T00:00:00+00:00 + + http://localhost:1313/categories/gitea/ + 2024-09-21T00:00:00+00:00 + + http://localhost:1313/categories/homelab/ + 2024-09-21T00:00:00+00:00 + + http://localhost:1313/tags/homelab/ + 2024-09-21T00:00:00+00:00 + + http://localhost:1313/post/ + 2024-09-21T00:00:00+00:00 + + http://localhost:1313/tags/ + 2024-09-21T00:00:00+00:00 + + http://localhost:1313/post/2024-09-05-resetrestart/ + 2024-09-05T00:00:00+00:00 + + http://localhost:1313/about/ + 2023-04-20T00:00:00+00:00 + + http://localhost:1313/archives/ + + diff --git a/public/tags/cd/index.html b/public/tags/cd/index.html index 4596679..eb2a479 100644 --- a/public/tags/cd/index.html +++ b/public/tags/cd/index.html @@ -1,54 +1,914 @@ -Cd | -Comprofix
- - -
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Cd | + + Comprofix + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + + + + +
+ +
+ + + + + + + + +
+
+
+
+ + + +
+

+ + cd + 1 +

+ +
+ +
+ + + +
+ +
+ +
+ + +
+

+ © + + + + + Comprofix. + + + + Some rights reserved. +

+ +

Using the Chirpy theme for Hugo. +

+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Trending Tags

+
+ + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+ +
\ No newline at end of file + `; + }).join(''); + + this.resultsContainer.innerHTML = searchItems; + } + + + checkFieldsForMatch(item, term) { + const matches = { + inTitle: false, + inDesc: false, + inSection: false, + inContents: false + }; + + + if (DEFAULT_CONFIG.search.fields.title && this.containsTerm(item.searchableTitle, term)) { + matches.inTitle = true; + } + + if (DEFAULT_CONFIG.search.fields.description && this.containsTerm(item.searchableDesc, term)) { + matches.inDesc = true; + } + + if (DEFAULT_CONFIG.search.fields.section && this.containsTerm(item.searchableSection, term)) { + matches.inSection = true; + } + + if (DEFAULT_CONFIG.search.fields.contents && this.containsTerm(item.searchableContents, term)) { + matches.inContents = true; + } + + + if (matches.inTitle || matches.inDesc || matches.inSection || matches.inContents) { + return matches; + } + + + return false; + } + } + + const search = new FastSearch({ + searchInput: document.getElementById('search-input'), + resultsContainer: document.getElementById('search-results'), + json: `\/index.json` + }); + + +
+ + +
+ +
+ + \ No newline at end of file diff --git a/public/tags/cd/index.xml b/public/tags/cd/index.xml index 6f7a264..dcb52b4 100644 --- a/public/tags/cd/index.xml +++ b/public/tags/cd/index.xml @@ -1,8 +1,19 @@ -Cd on Comprofixhttps://comprofix.com/tags/cd/Recent content in Cd on ComprofixHugoenSat, 06 Sep 2025 13:28:05 +1000Continuous Integration & Continuous Deploymenthttps://comprofix.com/post/2024-09-21-websitedeployment/Sat, 21 Sep 2024 00:00:00 +0000https://comprofix.com/post/2024-09-21-websitedeployment/<p>Since the reset of the website, I have been working on getting it to auto build and deploy using <a href="https://docs.gitea.com/usage/actions/overview">Gitea Actions</a>. Which is similar and compatible to <a href="https://github.com/features/actions">GitHub Actions</a></p> -<p>Before implementing the action it was a manual process which required using docker commands to login, build and push the image to the container registry.</p> -<h3 id="why-use-cicd" id=why-use-cicd> - - <span class="me-2">Why use CI/CD?</span> - <a href="#why-use-cicd" class="anchor text-muted"><i class="fas fa-hashtag"></i></a> - -</h3><p>It takes the manual process steps away and does them for you, helping you to avoid missing any steps and avoiding errors. This also makes the interaction seamless and automated.</p> \ No newline at end of file + + + + Cd on Comprofix + http://localhost:1313/tags/cd/ + Recent content in Cd on Comprofix + Hugo + en + Sat, 21 Sep 2024 00:00:00 +0000 + + + Continuous Integration & Continuous Deployment + http://localhost:1313/post/2024-09-21-websitedeployment/ + Sat, 21 Sep 2024 00:00:00 +0000 + http://localhost:1313/post/2024-09-21-websitedeployment/ + <p>Since the reset of the website, I have been working on getting it to auto build and deploy using <a href="https://docs.gitea.com/usage/actions/overview">Gitea Actions</a>. Which is similar and compatible to <a href="https://github.com/features/actions">GitHub Actions</a></p> <p>Before implementing the action it was a manual process which required using docker commands to login, build and push the image to the container registry.</p> <h3 id="why-use-cicd" id=why-use-cicd> <span class="me-2">Why use CI/CD?</span> <a href="#why-use-cicd" class="anchor text-muted"><i class="fas fa-hashtag"></i></a> </h3><p>It takes the manual process steps away and does them for you, helping you to avoid missing any steps and avoiding errors. This also makes the interaction seamless and automated.</p> + + + diff --git a/public/tags/ci/index.html b/public/tags/ci/index.html index 86fc5b4..2ed37ab 100644 --- a/public/tags/ci/index.html +++ b/public/tags/ci/index.html @@ -1,54 +1,914 @@ -Ci | -Comprofix
- - -
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Ci | + + Comprofix + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + + + + +
+ +
+ + + + + + + + +
+
+
+
+ + + +
+

+ + ci + 1 +

+ +
+ +
+ + + +
+ +
+ +
+ + +
+

+ © + + + + + Comprofix. + + + + Some rights reserved. +

+ +

Using the Chirpy theme for Hugo. +

+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Trending Tags

+
+ + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+ +
\ No newline at end of file + `; + }).join(''); + + this.resultsContainer.innerHTML = searchItems; + } + + + checkFieldsForMatch(item, term) { + const matches = { + inTitle: false, + inDesc: false, + inSection: false, + inContents: false + }; + + + if (DEFAULT_CONFIG.search.fields.title && this.containsTerm(item.searchableTitle, term)) { + matches.inTitle = true; + } + + if (DEFAULT_CONFIG.search.fields.description && this.containsTerm(item.searchableDesc, term)) { + matches.inDesc = true; + } + + if (DEFAULT_CONFIG.search.fields.section && this.containsTerm(item.searchableSection, term)) { + matches.inSection = true; + } + + if (DEFAULT_CONFIG.search.fields.contents && this.containsTerm(item.searchableContents, term)) { + matches.inContents = true; + } + + + if (matches.inTitle || matches.inDesc || matches.inSection || matches.inContents) { + return matches; + } + + + return false; + } + } + + const search = new FastSearch({ + searchInput: document.getElementById('search-input'), + resultsContainer: document.getElementById('search-results'), + json: `\/index.json` + }); + + +
+ + +
+ +
+ + \ No newline at end of file diff --git a/public/tags/ci/index.xml b/public/tags/ci/index.xml index 3980f63..ebfa124 100644 --- a/public/tags/ci/index.xml +++ b/public/tags/ci/index.xml @@ -1,8 +1,19 @@ -Ci on Comprofixhttps://comprofix.com/tags/ci/Recent content in Ci on ComprofixHugoenSat, 06 Sep 2025 13:28:05 +1000Continuous Integration & Continuous Deploymenthttps://comprofix.com/post/2024-09-21-websitedeployment/Sat, 21 Sep 2024 00:00:00 +0000https://comprofix.com/post/2024-09-21-websitedeployment/<p>Since the reset of the website, I have been working on getting it to auto build and deploy using <a href="https://docs.gitea.com/usage/actions/overview">Gitea Actions</a>. Which is similar and compatible to <a href="https://github.com/features/actions">GitHub Actions</a></p> -<p>Before implementing the action it was a manual process which required using docker commands to login, build and push the image to the container registry.</p> -<h3 id="why-use-cicd" id=why-use-cicd> - - <span class="me-2">Why use CI/CD?</span> - <a href="#why-use-cicd" class="anchor text-muted"><i class="fas fa-hashtag"></i></a> - -</h3><p>It takes the manual process steps away and does them for you, helping you to avoid missing any steps and avoiding errors. This also makes the interaction seamless and automated.</p> \ No newline at end of file + + + + Ci on Comprofix + http://localhost:1313/tags/ci/ + Recent content in Ci on Comprofix + Hugo + en + Sat, 21 Sep 2024 00:00:00 +0000 + + + Continuous Integration & Continuous Deployment + http://localhost:1313/post/2024-09-21-websitedeployment/ + Sat, 21 Sep 2024 00:00:00 +0000 + http://localhost:1313/post/2024-09-21-websitedeployment/ + <p>Since the reset of the website, I have been working on getting it to auto build and deploy using <a href="https://docs.gitea.com/usage/actions/overview">Gitea Actions</a>. Which is similar and compatible to <a href="https://github.com/features/actions">GitHub Actions</a></p> <p>Before implementing the action it was a manual process which required using docker commands to login, build and push the image to the container registry.</p> <h3 id="why-use-cicd" id=why-use-cicd> <span class="me-2">Why use CI/CD?</span> <a href="#why-use-cicd" class="anchor text-muted"><i class="fas fa-hashtag"></i></a> </h3><p>It takes the manual process steps away and does them for you, helping you to avoid missing any steps and avoiding errors. This also makes the interaction seamless and automated.</p> + + + diff --git a/public/tags/continuous-deployment/index.html b/public/tags/continuous-deployment/index.html index c048777..c0af677 100644 --- a/public/tags/continuous-deployment/index.html +++ b/public/tags/continuous-deployment/index.html @@ -1,54 +1,914 @@ -Continuous Deployment | -Comprofix
- - -
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Continuous Deployment | + + Comprofix + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + + + + +
+ +
+ + + + + + + + +
+
+
+
+ + + +
+

+ + continuous deployment + 1 +

+ +
+ +
+ + + +
+ +
+ +
+ + +
+

+ © + + + + + Comprofix. + + + + Some rights reserved. +

+ +

Using the Chirpy theme for Hugo. +

+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Trending Tags

+
+ + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+ +
\ No newline at end of file + `; + }).join(''); + + this.resultsContainer.innerHTML = searchItems; + } + + + checkFieldsForMatch(item, term) { + const matches = { + inTitle: false, + inDesc: false, + inSection: false, + inContents: false + }; + + + if (DEFAULT_CONFIG.search.fields.title && this.containsTerm(item.searchableTitle, term)) { + matches.inTitle = true; + } + + if (DEFAULT_CONFIG.search.fields.description && this.containsTerm(item.searchableDesc, term)) { + matches.inDesc = true; + } + + if (DEFAULT_CONFIG.search.fields.section && this.containsTerm(item.searchableSection, term)) { + matches.inSection = true; + } + + if (DEFAULT_CONFIG.search.fields.contents && this.containsTerm(item.searchableContents, term)) { + matches.inContents = true; + } + + + if (matches.inTitle || matches.inDesc || matches.inSection || matches.inContents) { + return matches; + } + + + return false; + } + } + + const search = new FastSearch({ + searchInput: document.getElementById('search-input'), + resultsContainer: document.getElementById('search-results'), + json: `\/index.json` + }); + + +
+ + +
+ +
+ + \ No newline at end of file diff --git a/public/tags/continuous-deployment/index.xml b/public/tags/continuous-deployment/index.xml index bdce945..d73c8f5 100644 --- a/public/tags/continuous-deployment/index.xml +++ b/public/tags/continuous-deployment/index.xml @@ -1,8 +1,19 @@ -Continuous Deployment on Comprofixhttps://comprofix.com/tags/continuous-deployment/Recent content in Continuous Deployment on ComprofixHugoenSat, 06 Sep 2025 13:28:05 +1000Continuous Integration & Continuous Deploymenthttps://comprofix.com/post/2024-09-21-websitedeployment/Sat, 21 Sep 2024 00:00:00 +0000https://comprofix.com/post/2024-09-21-websitedeployment/<p>Since the reset of the website, I have been working on getting it to auto build and deploy using <a href="https://docs.gitea.com/usage/actions/overview">Gitea Actions</a>. Which is similar and compatible to <a href="https://github.com/features/actions">GitHub Actions</a></p> -<p>Before implementing the action it was a manual process which required using docker commands to login, build and push the image to the container registry.</p> -<h3 id="why-use-cicd" id=why-use-cicd> - - <span class="me-2">Why use CI/CD?</span> - <a href="#why-use-cicd" class="anchor text-muted"><i class="fas fa-hashtag"></i></a> - -</h3><p>It takes the manual process steps away and does them for you, helping you to avoid missing any steps and avoiding errors. This also makes the interaction seamless and automated.</p> \ No newline at end of file + + + + Continuous Deployment on Comprofix + http://localhost:1313/tags/continuous-deployment/ + Recent content in Continuous Deployment on Comprofix + Hugo + en + Sat, 21 Sep 2024 00:00:00 +0000 + + + Continuous Integration & Continuous Deployment + http://localhost:1313/post/2024-09-21-websitedeployment/ + Sat, 21 Sep 2024 00:00:00 +0000 + http://localhost:1313/post/2024-09-21-websitedeployment/ + <p>Since the reset of the website, I have been working on getting it to auto build and deploy using <a href="https://docs.gitea.com/usage/actions/overview">Gitea Actions</a>. Which is similar and compatible to <a href="https://github.com/features/actions">GitHub Actions</a></p> <p>Before implementing the action it was a manual process which required using docker commands to login, build and push the image to the container registry.</p> <h3 id="why-use-cicd" id=why-use-cicd> <span class="me-2">Why use CI/CD?</span> <a href="#why-use-cicd" class="anchor text-muted"><i class="fas fa-hashtag"></i></a> </h3><p>It takes the manual process steps away and does them for you, helping you to avoid missing any steps and avoiding errors. This also makes the interaction seamless and automated.</p> + + + diff --git a/public/tags/continuous-integration/index.html b/public/tags/continuous-integration/index.html index f6e6365..b83c95a 100644 --- a/public/tags/continuous-integration/index.html +++ b/public/tags/continuous-integration/index.html @@ -1,54 +1,914 @@ -Continuous Integration | -Comprofix
- - -
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Continuous Integration | + + Comprofix + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + + + + +
+ +
+ + + + + + + + +
+
+
+
+ + + +
+

+ + continuous integration + 1 +

+ +
+ +
+ + + +
+ +
+ +
+ + +
+

+ © + + + + + Comprofix. + + + + Some rights reserved. +

+ +

Using the Chirpy theme for Hugo. +

+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Trending Tags

+
+ + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+ +
\ No newline at end of file + `; + }).join(''); + + this.resultsContainer.innerHTML = searchItems; + } + + + checkFieldsForMatch(item, term) { + const matches = { + inTitle: false, + inDesc: false, + inSection: false, + inContents: false + }; + + + if (DEFAULT_CONFIG.search.fields.title && this.containsTerm(item.searchableTitle, term)) { + matches.inTitle = true; + } + + if (DEFAULT_CONFIG.search.fields.description && this.containsTerm(item.searchableDesc, term)) { + matches.inDesc = true; + } + + if (DEFAULT_CONFIG.search.fields.section && this.containsTerm(item.searchableSection, term)) { + matches.inSection = true; + } + + if (DEFAULT_CONFIG.search.fields.contents && this.containsTerm(item.searchableContents, term)) { + matches.inContents = true; + } + + + if (matches.inTitle || matches.inDesc || matches.inSection || matches.inContents) { + return matches; + } + + + return false; + } + } + + const search = new FastSearch({ + searchInput: document.getElementById('search-input'), + resultsContainer: document.getElementById('search-results'), + json: `\/index.json` + }); + + +
+ + +
+ +
+ + \ No newline at end of file diff --git a/public/tags/continuous-integration/index.xml b/public/tags/continuous-integration/index.xml index fb55283..45e7b23 100644 --- a/public/tags/continuous-integration/index.xml +++ b/public/tags/continuous-integration/index.xml @@ -1,8 +1,19 @@ -Continuous Integration on Comprofixhttps://comprofix.com/tags/continuous-integration/Recent content in Continuous Integration on ComprofixHugoenSat, 06 Sep 2025 13:28:05 +1000Continuous Integration & Continuous Deploymenthttps://comprofix.com/post/2024-09-21-websitedeployment/Sat, 21 Sep 2024 00:00:00 +0000https://comprofix.com/post/2024-09-21-websitedeployment/<p>Since the reset of the website, I have been working on getting it to auto build and deploy using <a href="https://docs.gitea.com/usage/actions/overview">Gitea Actions</a>. Which is similar and compatible to <a href="https://github.com/features/actions">GitHub Actions</a></p> -<p>Before implementing the action it was a manual process which required using docker commands to login, build and push the image to the container registry.</p> -<h3 id="why-use-cicd" id=why-use-cicd> - - <span class="me-2">Why use CI/CD?</span> - <a href="#why-use-cicd" class="anchor text-muted"><i class="fas fa-hashtag"></i></a> - -</h3><p>It takes the manual process steps away and does them for you, helping you to avoid missing any steps and avoiding errors. This also makes the interaction seamless and automated.</p> \ No newline at end of file + + + + Continuous Integration on Comprofix + http://localhost:1313/tags/continuous-integration/ + Recent content in Continuous Integration on Comprofix + Hugo + en + Sat, 21 Sep 2024 00:00:00 +0000 + + + Continuous Integration & Continuous Deployment + http://localhost:1313/post/2024-09-21-websitedeployment/ + Sat, 21 Sep 2024 00:00:00 +0000 + http://localhost:1313/post/2024-09-21-websitedeployment/ + <p>Since the reset of the website, I have been working on getting it to auto build and deploy using <a href="https://docs.gitea.com/usage/actions/overview">Gitea Actions</a>. Which is similar and compatible to <a href="https://github.com/features/actions">GitHub Actions</a></p> <p>Before implementing the action it was a manual process which required using docker commands to login, build and push the image to the container registry.</p> <h3 id="why-use-cicd" id=why-use-cicd> <span class="me-2">Why use CI/CD?</span> <a href="#why-use-cicd" class="anchor text-muted"><i class="fas fa-hashtag"></i></a> </h3><p>It takes the manual process steps away and does them for you, helping you to avoid missing any steps and avoiding errors. This also makes the interaction seamless and automated.</p> + + + diff --git a/public/tags/docker/index.html b/public/tags/docker/index.html index 5860d4c..8bb290b 100644 --- a/public/tags/docker/index.html +++ b/public/tags/docker/index.html @@ -1,54 +1,914 @@ -Docker | -Comprofix
- - -
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Docker | + + Comprofix + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + + + + +
+ +
+ + + + + + + + +
+
+
+
+ + + +
+

+ + docker + 1 +

+ +
+ +
+ + + +
+ +
+ +
+ + +
+

+ © + + + + + Comprofix. + + + + Some rights reserved. +

+ +

Using the Chirpy theme for Hugo. +

+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Trending Tags

+
+ + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+ +
\ No newline at end of file + `; + }).join(''); + + this.resultsContainer.innerHTML = searchItems; + } + + + checkFieldsForMatch(item, term) { + const matches = { + inTitle: false, + inDesc: false, + inSection: false, + inContents: false + }; + + + if (DEFAULT_CONFIG.search.fields.title && this.containsTerm(item.searchableTitle, term)) { + matches.inTitle = true; + } + + if (DEFAULT_CONFIG.search.fields.description && this.containsTerm(item.searchableDesc, term)) { + matches.inDesc = true; + } + + if (DEFAULT_CONFIG.search.fields.section && this.containsTerm(item.searchableSection, term)) { + matches.inSection = true; + } + + if (DEFAULT_CONFIG.search.fields.contents && this.containsTerm(item.searchableContents, term)) { + matches.inContents = true; + } + + + if (matches.inTitle || matches.inDesc || matches.inSection || matches.inContents) { + return matches; + } + + + return false; + } + } + + const search = new FastSearch({ + searchInput: document.getElementById('search-input'), + resultsContainer: document.getElementById('search-results'), + json: `\/index.json` + }); + + +
+ + +
+ +
+ + \ No newline at end of file diff --git a/public/tags/docker/index.xml b/public/tags/docker/index.xml index 5fb232f..c0b3eed 100644 --- a/public/tags/docker/index.xml +++ b/public/tags/docker/index.xml @@ -1,8 +1,19 @@ -Docker on Comprofixhttps://comprofix.com/tags/docker/Recent content in Docker on ComprofixHugoenSat, 06 Sep 2025 13:28:05 +1000Continuous Integration & Continuous Deploymenthttps://comprofix.com/post/2024-09-21-websitedeployment/Sat, 21 Sep 2024 00:00:00 +0000https://comprofix.com/post/2024-09-21-websitedeployment/<p>Since the reset of the website, I have been working on getting it to auto build and deploy using <a href="https://docs.gitea.com/usage/actions/overview">Gitea Actions</a>. Which is similar and compatible to <a href="https://github.com/features/actions">GitHub Actions</a></p> -<p>Before implementing the action it was a manual process which required using docker commands to login, build and push the image to the container registry.</p> -<h3 id="why-use-cicd" id=why-use-cicd> - - <span class="me-2">Why use CI/CD?</span> - <a href="#why-use-cicd" class="anchor text-muted"><i class="fas fa-hashtag"></i></a> - -</h3><p>It takes the manual process steps away and does them for you, helping you to avoid missing any steps and avoiding errors. This also makes the interaction seamless and automated.</p> \ No newline at end of file + + + + Docker on Comprofix + http://localhost:1313/tags/docker/ + Recent content in Docker on Comprofix + Hugo + en + Sat, 21 Sep 2024 00:00:00 +0000 + + + Continuous Integration & Continuous Deployment + http://localhost:1313/post/2024-09-21-websitedeployment/ + Sat, 21 Sep 2024 00:00:00 +0000 + http://localhost:1313/post/2024-09-21-websitedeployment/ + <p>Since the reset of the website, I have been working on getting it to auto build and deploy using <a href="https://docs.gitea.com/usage/actions/overview">Gitea Actions</a>. Which is similar and compatible to <a href="https://github.com/features/actions">GitHub Actions</a></p> <p>Before implementing the action it was a manual process which required using docker commands to login, build and push the image to the container registry.</p> <h3 id="why-use-cicd" id=why-use-cicd> <span class="me-2">Why use CI/CD?</span> <a href="#why-use-cicd" class="anchor text-muted"><i class="fas fa-hashtag"></i></a> </h3><p>It takes the manual process steps away and does them for you, helping you to avoid missing any steps and avoiding errors. This also makes the interaction seamless and automated.</p> + + + diff --git a/public/tags/git/index.html b/public/tags/git/index.html index c6219ed..f1fce3b 100644 --- a/public/tags/git/index.html +++ b/public/tags/git/index.html @@ -1,54 +1,914 @@ -Git | -Comprofix
- - -
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Git | + + Comprofix + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + + + + +
+ +
+ + + + + + + + +
+
+
+
+ + + +
+

+ + git + 1 +

+ +
+ +
+ + + +
+ +
+ +
+ + +
+

+ © + + + + + Comprofix. + + + + Some rights reserved. +

+ +

Using the Chirpy theme for Hugo. +

+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Trending Tags

+
+ + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+ +
\ No newline at end of file + `; + }).join(''); + + this.resultsContainer.innerHTML = searchItems; + } + + + checkFieldsForMatch(item, term) { + const matches = { + inTitle: false, + inDesc: false, + inSection: false, + inContents: false + }; + + + if (DEFAULT_CONFIG.search.fields.title && this.containsTerm(item.searchableTitle, term)) { + matches.inTitle = true; + } + + if (DEFAULT_CONFIG.search.fields.description && this.containsTerm(item.searchableDesc, term)) { + matches.inDesc = true; + } + + if (DEFAULT_CONFIG.search.fields.section && this.containsTerm(item.searchableSection, term)) { + matches.inSection = true; + } + + if (DEFAULT_CONFIG.search.fields.contents && this.containsTerm(item.searchableContents, term)) { + matches.inContents = true; + } + + + if (matches.inTitle || matches.inDesc || matches.inSection || matches.inContents) { + return matches; + } + + + return false; + } + } + + const search = new FastSearch({ + searchInput: document.getElementById('search-input'), + resultsContainer: document.getElementById('search-results'), + json: `\/index.json` + }); + + +
+ + +
+ +
+ + \ No newline at end of file diff --git a/public/tags/git/index.xml b/public/tags/git/index.xml index dd35dd2..939f8c5 100644 --- a/public/tags/git/index.xml +++ b/public/tags/git/index.xml @@ -1,8 +1,19 @@ -Git on Comprofixhttps://comprofix.com/tags/git/Recent content in Git on ComprofixHugoenSat, 06 Sep 2025 13:28:05 +1000Continuous Integration & Continuous Deploymenthttps://comprofix.com/post/2024-09-21-websitedeployment/Sat, 21 Sep 2024 00:00:00 +0000https://comprofix.com/post/2024-09-21-websitedeployment/<p>Since the reset of the website, I have been working on getting it to auto build and deploy using <a href="https://docs.gitea.com/usage/actions/overview">Gitea Actions</a>. Which is similar and compatible to <a href="https://github.com/features/actions">GitHub Actions</a></p> -<p>Before implementing the action it was a manual process which required using docker commands to login, build and push the image to the container registry.</p> -<h3 id="why-use-cicd" id=why-use-cicd> - - <span class="me-2">Why use CI/CD?</span> - <a href="#why-use-cicd" class="anchor text-muted"><i class="fas fa-hashtag"></i></a> - -</h3><p>It takes the manual process steps away and does them for you, helping you to avoid missing any steps and avoiding errors. This also makes the interaction seamless and automated.</p> \ No newline at end of file + + + + Git on Comprofix + http://localhost:1313/tags/git/ + Recent content in Git on Comprofix + Hugo + en + Sat, 21 Sep 2024 00:00:00 +0000 + + + Continuous Integration & Continuous Deployment + http://localhost:1313/post/2024-09-21-websitedeployment/ + Sat, 21 Sep 2024 00:00:00 +0000 + http://localhost:1313/post/2024-09-21-websitedeployment/ + <p>Since the reset of the website, I have been working on getting it to auto build and deploy using <a href="https://docs.gitea.com/usage/actions/overview">Gitea Actions</a>. Which is similar and compatible to <a href="https://github.com/features/actions">GitHub Actions</a></p> <p>Before implementing the action it was a manual process which required using docker commands to login, build and push the image to the container registry.</p> <h3 id="why-use-cicd" id=why-use-cicd> <span class="me-2">Why use CI/CD?</span> <a href="#why-use-cicd" class="anchor text-muted"><i class="fas fa-hashtag"></i></a> </h3><p>It takes the manual process steps away and does them for you, helping you to avoid missing any steps and avoiding errors. This also makes the interaction seamless and automated.</p> + + + diff --git a/public/tags/homelab/index.html b/public/tags/homelab/index.html index b5e75e0..fdb5a5e 100644 --- a/public/tags/homelab/index.html +++ b/public/tags/homelab/index.html @@ -1,56 +1,931 @@ -Homelab | -Comprofix
- - -
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Homelab | + + Comprofix + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + + + + +
+ +
+ + + + + + + + +
+
+
+
+ + + +
+

+ + homelab + 2 +

+ +
+ +
+ + + +
+ +
+ +
+ + +
+

+ © + + + + + Comprofix. + + + + Some rights reserved. +

+ +

Using the Chirpy theme for Hugo. +

+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Trending Tags

+
+ + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+ +
\ No newline at end of file + `; + }).join(''); + + this.resultsContainer.innerHTML = searchItems; + } + + + checkFieldsForMatch(item, term) { + const matches = { + inTitle: false, + inDesc: false, + inSection: false, + inContents: false + }; + + + if (DEFAULT_CONFIG.search.fields.title && this.containsTerm(item.searchableTitle, term)) { + matches.inTitle = true; + } + + if (DEFAULT_CONFIG.search.fields.description && this.containsTerm(item.searchableDesc, term)) { + matches.inDesc = true; + } + + if (DEFAULT_CONFIG.search.fields.section && this.containsTerm(item.searchableSection, term)) { + matches.inSection = true; + } + + if (DEFAULT_CONFIG.search.fields.contents && this.containsTerm(item.searchableContents, term)) { + matches.inContents = true; + } + + + if (matches.inTitle || matches.inDesc || matches.inSection || matches.inContents) { + return matches; + } + + + return false; + } + } + + const search = new FastSearch({ + searchInput: document.getElementById('search-input'), + resultsContainer: document.getElementById('search-results'), + json: `\/index.json` + }); + + +
+ + +
+ +
+ + \ No newline at end of file diff --git a/public/tags/homelab/index.xml b/public/tags/homelab/index.xml index 92c8dda..a7ceb6d 100644 --- a/public/tags/homelab/index.xml +++ b/public/tags/homelab/index.xml @@ -1,10 +1,26 @@ -Homelab on Comprofixhttps://comprofix.com/tags/homelab/Recent content in Homelab on ComprofixHugoenSat, 06 Sep 2025 13:28:05 +1000Continuous Integration & Continuous Deploymenthttps://comprofix.com/post/2024-09-21-websitedeployment/Sat, 21 Sep 2024 00:00:00 +0000https://comprofix.com/post/2024-09-21-websitedeployment/<p>Since the reset of the website, I have been working on getting it to auto build and deploy using <a href="https://docs.gitea.com/usage/actions/overview">Gitea Actions</a>. Which is similar and compatible to <a href="https://github.com/features/actions">GitHub Actions</a></p> -<p>Before implementing the action it was a manual process which required using docker commands to login, build and push the image to the container registry.</p> -<h3 id="why-use-cicd" id=why-use-cicd> - - <span class="me-2">Why use CI/CD?</span> - <a href="#why-use-cicd" class="anchor text-muted"><i class="fas fa-hashtag"></i></a> - -</h3><p>It takes the manual process steps away and does them for you, helping you to avoid missing any steps and avoiding errors. This also makes the interaction seamless and automated.</p>Reset and Restarthttps://comprofix.com/post/2024-09-05-resetrestart/Thu, 05 Sep 2024 00:00:00 +0000https://comprofix.com/post/2024-09-05-resetrestart/<p>It&rsquo;s time to reset the website and start building my blog again. I have had this domain for a number of years and it has always been used for my E-Mail.</p> -<p>But the website has been more of a play ground for experimenting and testing.</p> -<p>I am now hoping to get into the habit of writing more blog posts as I document my journey as I experiment with my HomeLab.</p> \ No newline at end of file + + + + Homelab on Comprofix + http://localhost:1313/tags/homelab/ + Recent content in Homelab on Comprofix + Hugo + en + Sat, 21 Sep 2024 00:00:00 +0000 + + + Continuous Integration & Continuous Deployment + http://localhost:1313/post/2024-09-21-websitedeployment/ + Sat, 21 Sep 2024 00:00:00 +0000 + http://localhost:1313/post/2024-09-21-websitedeployment/ + <p>Since the reset of the website, I have been working on getting it to auto build and deploy using <a href="https://docs.gitea.com/usage/actions/overview">Gitea Actions</a>. Which is similar and compatible to <a href="https://github.com/features/actions">GitHub Actions</a></p> <p>Before implementing the action it was a manual process which required using docker commands to login, build and push the image to the container registry.</p> <h3 id="why-use-cicd" id=why-use-cicd> <span class="me-2">Why use CI/CD?</span> <a href="#why-use-cicd" class="anchor text-muted"><i class="fas fa-hashtag"></i></a> </h3><p>It takes the manual process steps away and does them for you, helping you to avoid missing any steps and avoiding errors. This also makes the interaction seamless and automated.</p> + + + Reset and Restart + http://localhost:1313/post/2024-09-05-resetrestart/ + Thu, 05 Sep 2024 00:00:00 +0000 + http://localhost:1313/post/2024-09-05-resetrestart/ + <p>It&rsquo;s time to reset the website and start building my blog again. I have had this domain for a number of years and it has always been used for my E-Mail.</p> <p>But the website has been more of a play ground for experimenting and testing.</p> <p>I am now hoping to get into the habit of writing more blog posts as I document my journey as I experiment with my HomeLab.</p> + + + diff --git a/public/tags/index.html b/public/tags/index.html index 967f886..709d9dc 100644 --- a/public/tags/index.html +++ b/public/tags/index.html @@ -1,49 +1,957 @@ -Tags | -Comprofix
- - -
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tags | + + Comprofix + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + + + + +
+ +
+ + + + + + + + +
+
+
+
+ + + + +
+ + + +
+ +
+ +
+ + +
+

+ © + + + + + Comprofix. + + + + Some rights reserved. +

+ +

Using the Chirpy theme for Hugo. +

+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Trending Tags

+
+ + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+ +
\ No newline at end of file + `; + }).join(''); + + this.resultsContainer.innerHTML = searchItems; + } + + + checkFieldsForMatch(item, term) { + const matches = { + inTitle: false, + inDesc: false, + inSection: false, + inContents: false + }; + + + if (DEFAULT_CONFIG.search.fields.title && this.containsTerm(item.searchableTitle, term)) { + matches.inTitle = true; + } + + if (DEFAULT_CONFIG.search.fields.description && this.containsTerm(item.searchableDesc, term)) { + matches.inDesc = true; + } + + if (DEFAULT_CONFIG.search.fields.section && this.containsTerm(item.searchableSection, term)) { + matches.inSection = true; + } + + if (DEFAULT_CONFIG.search.fields.contents && this.containsTerm(item.searchableContents, term)) { + matches.inContents = true; + } + + + if (matches.inTitle || matches.inDesc || matches.inSection || matches.inContents) { + return matches; + } + + + return false; + } + } + + const search = new FastSearch({ + searchInput: document.getElementById('search-input'), + resultsContainer: document.getElementById('search-results'), + json: `\/index.json` + }); + + +
+ + +
+ +
+ + \ No newline at end of file diff --git a/public/tags/index.xml b/public/tags/index.xml index 25b8990..2f87b70 100644 --- a/public/tags/index.xml +++ b/public/tags/index.xml @@ -1 +1,61 @@ -Tags on Comprofixhttps://comprofix.com/tags/Recent content in Tags on ComprofixHugoenCdhttps://comprofix.com/tags/cd/Sat, 21 Sep 2024 00:00:00 +0000https://comprofix.com/tags/cd/Cihttps://comprofix.com/tags/ci/Sat, 21 Sep 2024 00:00:00 +0000https://comprofix.com/tags/ci/Continuous Deploymenthttps://comprofix.com/tags/continuous-deployment/Sat, 21 Sep 2024 00:00:00 +0000https://comprofix.com/tags/continuous-deployment/Continuous Integrationhttps://comprofix.com/tags/continuous-integration/Sat, 21 Sep 2024 00:00:00 +0000https://comprofix.com/tags/continuous-integration/Dockerhttps://comprofix.com/tags/docker/Sat, 21 Sep 2024 00:00:00 +0000https://comprofix.com/tags/docker/Githttps://comprofix.com/tags/git/Sat, 21 Sep 2024 00:00:00 +0000https://comprofix.com/tags/git/Homelabhttps://comprofix.com/tags/homelab/Sat, 21 Sep 2024 00:00:00 +0000https://comprofix.com/tags/homelab/ \ No newline at end of file + + + + Tags on Comprofix + http://localhost:1313/tags/ + Recent content in Tags on Comprofix + Hugo + en + Sat, 21 Sep 2024 00:00:00 +0000 + + + Cd + http://localhost:1313/tags/cd/ + Sat, 21 Sep 2024 00:00:00 +0000 + http://localhost:1313/tags/cd/ + + + + Ci + http://localhost:1313/tags/ci/ + Sat, 21 Sep 2024 00:00:00 +0000 + http://localhost:1313/tags/ci/ + + + + Continuous Deployment + http://localhost:1313/tags/continuous-deployment/ + Sat, 21 Sep 2024 00:00:00 +0000 + http://localhost:1313/tags/continuous-deployment/ + + + + Continuous Integration + http://localhost:1313/tags/continuous-integration/ + Sat, 21 Sep 2024 00:00:00 +0000 + http://localhost:1313/tags/continuous-integration/ + + + + Docker + http://localhost:1313/tags/docker/ + Sat, 21 Sep 2024 00:00:00 +0000 + http://localhost:1313/tags/docker/ + + + + Git + http://localhost:1313/tags/git/ + Sat, 21 Sep 2024 00:00:00 +0000 + http://localhost:1313/tags/git/ + + + + Homelab + http://localhost:1313/tags/homelab/ + Sat, 21 Sep 2024 00:00:00 +0000 + http://localhost:1313/tags/homelab/ + + + +