From ff9d710288bcf163b2025ee17fac4ab88a664aa1 Mon Sep 17 00:00:00 2001 From: Maciej Caderek Date: Wed, 23 Mar 2022 23:31:33 +0100 Subject: [PATCH] WIP --- package-lock.json | 68 ++++++++++++++++++++++++++++++++++--------- package.json | 2 ++ public/sfx/move.wav | Bin 0 -> 1412 bytes public/sfx/snap.wav | Bin 0 -> 28540 bytes public/sfx/swap.wav | Bin 0 -> 23980 bytes public/sfx/take.wav | Bin 0 -> 15098 bytes src/player/Player.ts | 20 ++++++++++++- src/player/sfx.ts | 22 ++++++++++++++ vite.config.ts | 1 - 9 files changed, 98 insertions(+), 15 deletions(-) create mode 100644 public/sfx/move.wav create mode 100644 public/sfx/snap.wav create mode 100644 public/sfx/swap.wav create mode 100644 public/sfx/take.wav create mode 100644 src/player/sfx.ts diff --git a/package-lock.json b/package-lock.json index e09d6eb..4c43e87 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,6 +16,7 @@ "gif.js": "^0.2.0", "h264-mp4-encoder": "^1.0.12", "hammerjs": "^2.0.8", + "howler": "^2.2.3", "i": "^0.3.7", "is-mobile": "^3.0.0", "npm": "^8.4.0", @@ -25,6 +26,7 @@ "devDependencies": { "@types/common-tags": "^1.8.1", "@types/hammerjs": "^2.0.41", + "@types/howler": "^2.2.6", "@types/node": "^17.0.8", "@types/webfontloader": "^1.6.34", "typescript": "^4.4.4", @@ -544,6 +546,12 @@ "integrity": "sha512-ewXv/ceBaJprikMcxCmWU1FKyMAQ2X7a9Gtmzw8fcg2kIePI1crERDM818W+XYrxqdBBOdlf2rm137bU+BltCA==", "dev": true }, + "node_modules/@types/howler": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@types/howler/-/howler-2.2.6.tgz", + "integrity": "sha512-9cLZICB6CFNIbwk0kJGvIvlEVI7D0dbbtcj00Uin81jQSMeKafaLq7r3v0RWQOX8BkM+KqboJaOeH5S/qpNqJg==", + "dev": true + }, "node_modules/@types/node": { "version": "17.0.21", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz", @@ -560,6 +568,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -637,6 +646,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -655,6 +665,7 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "dependencies": { "color-name": "1.1.3" } @@ -662,7 +673,8 @@ "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "node_modules/common-tags": { "version": "1.8.2", @@ -1072,6 +1084,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, "engines": { "node": ">=0.8.0" } @@ -1148,10 +1161,16 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, "engines": { "node": ">=4" } }, + "node_modules/howler": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/howler/-/howler-2.2.3.tgz", + "integrity": "sha512-QM0FFkw0LRX1PR8pNzJVAY25JhIWvbKMBFM4gqk+QdV+kPXOhleWGCB6AiAF/goGjIHK2e/nIElplvjQwhr0jg==" + }, "node_modules/html-entities": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", @@ -1245,15 +1264,16 @@ } }, "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "node_modules/nanoid": { "version": "3.3.1", @@ -3585,6 +3605,7 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, "bin": { "semver": "bin/semver.js" } @@ -3631,6 +3652,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -4130,6 +4152,12 @@ "integrity": "sha512-ewXv/ceBaJprikMcxCmWU1FKyMAQ2X7a9Gtmzw8fcg2kIePI1crERDM818W+XYrxqdBBOdlf2rm137bU+BltCA==", "dev": true }, + "@types/howler": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@types/howler/-/howler-2.2.6.tgz", + "integrity": "sha512-9cLZICB6CFNIbwk0kJGvIvlEVI7D0dbbtcj00Uin81jQSMeKafaLq7r3v0RWQOX8BkM+KqboJaOeH5S/qpNqJg==", + "dev": true + }, "@types/node": { "version": "17.0.21", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz", @@ -4146,6 +4174,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -4205,6 +4234,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -4220,6 +4250,7 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { "color-name": "1.1.3" } @@ -4227,7 +4258,8 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "common-tags": { "version": "1.8.2", @@ -4435,7 +4467,8 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true }, "fsevents": { "version": "2.3.2", @@ -4489,7 +4522,13 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "howler": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/howler/-/howler-2.2.3.tgz", + "integrity": "sha512-QM0FFkw0LRX1PR8pNzJVAY25JhIWvbKMBFM4gqk+QdV+kPXOhleWGCB6AiAF/goGjIHK2e/nIElplvjQwhr0jg==" }, "html-entities": { "version": "2.3.2", @@ -4554,15 +4593,16 @@ } }, "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "nanoid": { "version": "3.3.1", @@ -6147,7 +6187,8 @@ "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true }, "solid-js": { "version": "1.3.12", @@ -6182,6 +6223,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "requires": { "has-flag": "^3.0.0" } diff --git a/package.json b/package.json index 2aaae2c..0eb2e9a 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "devDependencies": { "@types/common-tags": "^1.8.1", "@types/hammerjs": "^2.0.41", + "@types/howler": "^2.2.6", "@types/node": "^17.0.8", "@types/webfontloader": "^1.6.34", "typescript": "^4.4.4", @@ -25,6 +26,7 @@ "gif.js": "^0.2.0", "h264-mp4-encoder": "^1.0.12", "hammerjs": "^2.0.8", + "howler": "^2.2.3", "i": "^0.3.7", "is-mobile": "^3.0.0", "npm": "^8.4.0", diff --git a/public/sfx/move.wav b/public/sfx/move.wav new file mode 100644 index 0000000000000000000000000000000000000000..78a25ac721f117d24ebd7b5e5287d3ee1753fa5c GIT binary patch literal 1412 zcmaJ>dr*{B6uxlfVZPo#blT^t6c#AP+Ci01)yj#00_8(G~;IDE*SvMAP4jTe=q_!)Y{w4Y1Y~Pl}S_cLvmH?&WATm^|W+81WgeSl3G04jjhK! za=K#&1FRXePr2Ijj<3)3GwKI3G;+Pe<#tFNUxynj9xu0cDMF{I`~v;8noGgju(+`E!LrwW@!apI zwGBNl?K$=EOxvpVkViGWGlm-N$YHier(er_|G=0zp*|;-8*%*b!QQJKzAZ=Z&b`~( za=Girv3KNec?Qp#98f%~)5qu<;7|vy@Rx1-tgUA4nA@n+*og@Z4wO$Q(o~0BOH_AU za+NubZA=$_&t7erGj#K>XZ`L^o1V$W7~5H*k$>-4rCgy(dqw4@aZ6O0CLNGzXerk= zF>dxSpEkc?sk9izizl*Q^w}eX!}tU(0r#OBdKWE2#n1?=K|R&edip-x$z-x+PWzQw zmu45MbFs3{3Cjv;A-~e99&;Yf8z9e@4El~-vwX;%pc=Mp(s#;M=cCRt-VJ01|RfT*QB5gVtt?%G@^^F}iNFYAo6EV8Yo}zzqv|00$wvtF;sD8m7nqasz3fvq(jmm5 zft|t160p!4N=o3anB}jk~&cM?Hj1|N{%E$!iA&1FT;zO%xAH77= zsa&emj*sCW+#oI&ZwW>rMc6Hj2*KiF@r5>gD7``q%z&5S0oV++ z=s0ReHzkxJ4tBynU=i$sDx^gwREEx=Ec6(zfqTFdu%2d8HLWFY>XQrxX-?_mV-xi8 zQ7b$pdqZaWrcJ4)+^y-UxjCuEY~y<4rp@X3Kp&N8V5PVzGdNeu&?QFy!-4~Y!Xy?K zpQw~rQtp7^$&`kl=%i7$lhV=sKcn6Y%^{H?&th z)m(qjLS4{L)J}a{9n;sR4pF;Ya9;T1$QTm3St{>_p`iWkpU+6vhF{mF=`X1bG^#!D_>390_|MRc) zdHqda)X|XgOJCK=`kD6W*V?Tg=~(?7_=9#p^Fm52@E=Ha^nINOo>=`9a9@9hCNYp7 zs}Jg*(Db|hSI6nUwbC;nYm}CHwDu>nv>#cj1IS!$la)H%|6w)gD?p#E4KhuqB7cE@ zI%EyfNqQ{W9-vcnZ!OSQsrx`)N94N!dg%uhAC&O}D&EMy?`8K}caXVhtix(ziUZIJE+ z-p<|Gvhr!NiU^xRg zi~a(>Se*+v686rczv?17Ugt)g?C5g@4x{S1i4=)c3?C$#pTFTI3E-q$;k+6qtG zrZ4FOC^?FDPk?(T`n4TW_agnDZ>)nCZA9%I=+}0@26)+W$e4pVGvKrR^mV{p^y#&p zhBl_5jla;3O_28wY;yp8Jpvt0L6__Bk^2~vr|91U?E#m7g)~Yi`31l7V0;M)M;`-7 zBF52+J`<9bxZytmBr{5KkWi8dJxoIqbSUWAz#9r)Kk^g&DHwk*{6@o0aj;S>N!aoPeCP!9+yVdI3*P;( z^#Rm70G*G)H_xFT7g2TrzsYUzrycN(Q#yidLYw2z_r9p#7yLcp7j4ngX0T&R*rGXn zsT1n7gAeor^oGsG;kP^!ZLb3?f}BahrT58KW_`50Jt1azOPbCV6|?=1MpO#EK9L$80)hqV~j70_!ZykZ&j*p4yVj`sIq zEH~+U@QJ&a5ANw*7~jJvI{+Uz1mE0?^fB1;ChU73G9SPOw_%UZu$k1^;f;CWg@s8F za43l&{`j*=8j=fRR)}OFl}RM23VJ!rtz|H3RRQHmdeVgCCvCygg=8b`NKVof`3|Vn zjuZhD0OTOONeMEDR41cIZ8Cv0CV!C@WHr)DAZa0~L$*Qs0;C6^&L~oiOd~bO7}V)X z8j${^9_c~KLVg9(i_{{mAh9|b3%rqxCuc}!a)Q((JHgq56a{Z)QkwXYV(^{3fZVImV_8X6+#SqKfJe{aZcKE_l>9Jx{OHmEnuIFyB5z?hnR-V@|oR%j#0(lg`MN zlBdokbzJTh0fAr4h`_Ma^)lBCtRI+$&5mm99}{W^`se&IU8Bqe&sJTI@8gb3oE3qQr)j|qYI${!AagXz87E5UYL90%&iVD zqaQc>6>{tQ(?)mOB-BdzCqwxxCnK*G`)U<3Uw&NlsQsJpHyMBDcoO<$%|-g@#r?vu zSHGW82l=DmQc(+X6w3ZQB3PR%scbfm%yK% z=YETg3jWXivZQ<9zbN39-I??u*HYf6Y)SqU-yzxK%_Gyw;iero+1e4`(`cl}`VF=& zgmeph8MG=@sB41Jk=>!ANjq6amGaDWip7?d1>UsO@5#gNgcC`UC#B~wbC3xl1W8xxSr)cM8_HS7o@H6O{^>mb=hOmbHglajPB6Pt^DiPz;8cO3a8`m!422rtO$nX~!7#$fiD zE+-*0BY8$D>x0zPO?fMFo$sYp%%Z%670WspiF7(2!~U>y>>FJ`uj1G8KqufA-%Z8q z;c6H8qUO<9b)SCMb!ilBLi*EYv<5vx-EK8L5W{vd=sx z%VfmTwni{}Ww_}=<0UO@Y@q{;Wcq5bUJB*17#&lo-FXu4Guq!Fq$y{GPz zPUaf&?RS;;G2leFT`^*#1nC$i=wE96}O zc=!Nf8gof5qYLr!M9At1-KUYiI3qjxef@yn)qn9nx+nL*M!)q>CUkc0(^L2@-Gm>} zUAR9f3i>X#MPFc_^cR+>pR!Bf8Luny^*WBd(L31$y@++!tJpvKI$Nq2u$8(6@NPCh z4`i!!J+@P?X1id&e|0*xTsLAT^-OkF*JKy8q=$4A%388Jx<7jl-WR$dOGO5;x}+^D zP1>_iQkSJCxmhL>%9@g|G%pb}H8Gh%e$j{eHC6gI4IxSNlRi%W=w$!qRF~9eWJU=|Ju=5-Hd+LMd=Zpl`hd2Nh4i`gzGzMoBByIl58|B zNk@C>E3_8*MCR$ybg}M7M(M%&g_??acOdzJ=%=o3L+g?=bR@}1f9oGu!)}s8SYw-E zmEDSYeg@|Czjbr0WmQOStWi&qPtd#ddi<6i>-A&>If*sqASsBIDL>Yv?}$&6uy$%h z^&b$`*F)Sg3bl)o_M|Tv_y6^*6p7Y_$psxo_8`JpsS98=twAbcZEAzR^jNiGQRW5D ze=E;tT?ElfA*`FJu|vs9{vcx6ffalsVw@R>q5j6|egmu2eMAy3kbj0KZ6ns~W_q@6 zg*dYT?Y1SZ8S%;`>rM`uz<$<1s{*4D^ANB>E^lBZ97$OVy01=2!!u4>hP@52C z%+Zc&pg*bhIxi%Q*Ygp%bigXrQKv%e7p=PKo9aLQ`MTnNdkHmBn|h(H2f6iN0T=c? zzg0i%lD6uXYK^|ArlZbU?4FkEYw92UQytJg?5rNCIr^Mhs$b}??w7Az%bQc_ftdlM5ITn?s}OTt~aV)dNFh# zp_=I)s=V&3%IX2Cm7c5G=!L2l(pB|%)k#l9`9$zdQ}y)Us;Qo>n(Hor$*LjBD(g|G z*G-kvgOH!1O6#$zB-*H;hd|~8RUdpcAhWKXp^EFlDw`guGU)y)jqa|r8m5?@qinS2 zr&lVf=c{-%Nc~VF)jKsWvz!-m0nUn_2?C73vAn zFVqa+h3bKt4Lk?*4JuCUR2+7&^m>(qG}T*`3wE;gBDB3&h3YM;l-{Sx=%eVvc~ucM zEeCybK<|9us|`E0*Z*J~Ps85V)fW9gt;87Z*N@dr9jor@XX-k}<}~P^FqVj=5hX_= z(oBzEKtAjm%E8wgAet_Kh&c!Hk%)M5BPz{-h%+am_dgaCz{RLu^_Zd*Zs- zTQtTVxH*0cy%Bj&#;Q62yNS7ofY)Gm@V5>o%MkU?1Rf7P{wrIi+aQ83k0`DLS%qlt z0@AyY9*f`G7F`<97Qf3dL}mX)$`O#08FD(1&7hsaZ}p-cNv`OU*Bywxwr zb^U-G)lbM?{e~RZ?_sTPm}^T=k1m2}!$q%Y2_6sT(od*=AG+Oyo?o%&O~BlmgtjPU zBsJE8^i*JO=OmH_l7ci1DMW)v0h)>Ar8X%|qexS%B@JjnQkj+~^=SvvjP@ioFyB|D zHIc86^4_E+9YfmC8NjPZSGt`Hq$kM)dXG#8o=-QCQFIPspAn=Npf{qt!E_p#MCX#F zbUs-{$CD+1Idl>kNBfg8v=13iyOL?NEg4O#k>Ruw=q1S@S_t*ikS@@x7ERP;=xbdT zYglRe4E=ttqX3au&%)?eoriwW1+kVD0Z&oTO9NNI`c@6JDuC)VMwg?Hbw+w$htrox z|IigcuLfKPvMW-8wJHX3Y?2S_Xav^sq-NzWe#@R$7_&$>u{TM6N9r(yStXek#CsFq**4H0c4L_0M z@To|0jHDu`QMMmt8<9RmqR1VT-NUZ!E_QM+Nh$If{GYMIyo!C=0aA%vCru%*Ik|$p z+d=FlPlM++c5kP#2JgeJ@g&yBqgboAlal0L?CiE;Ro+M%0rx~Zy};8IWr+Kb-hs7y zEAR^JE*D}?x(W2T$d4r5$#gOteB;O*)E|!B<4`gfD|lz5+Jdto>4v(4p-W#-nvwcs zKCp>CtpNX2{9=#cJYuffcB*|W{k`S;<>XziTxEw;oe-8^57hMzD|Gq z{B&RAT44Edsd8<2TRL62n0y&dFz|-OP}gb1~vOzEvvxK zc4A8EcA2Bow)s=|>AWk8UN&LFT?aA@3>)u+N6_%F^j}J^@#Zxyzn}E^PfXEkWfSI| zed)>i?1huxwgX-jKA-hmmUP*#hI|ffpLV;wBxD#r?)zDwj~5xR&kkCWGXP`^(3H*Rxcr}rsN!#}~+ zQqeBpg7GM506Xq?#vYKmaY(74Cux2M1gF}|OSq>dE&Xl#F2!_X*<)A8af##gC%21+ z%6OwFUuG|$<;+sP14bFymvEI|r;&r{I2}PRxeKxlNgGHNae@_f%GsrSmFyEvptV~1 z+k34Xc2{19-jdtZIqU=Nl+(V?@z=d$llrR`?z%LeC!C~{edrUu%&_=EbG>fqs;f9R zjeNYMao-%Mg3W&N4X5%5+bJFXmH3ROtf$eM{5Gn}4~9ik8Mbklog>x6b!UJW;Qb(r zdX~xwzVj;C*)DE6Eu1~h3a5*&oeq)bNg2%CrN!Smt#gBv)SZm3ysBj)w!EPWu-vZN z_F(g{yy3m$O-$JB>)`pLQ}MOjKXrBb#&4C8*(z&IW{pUccZa7};xx~DcLCi^>{TCe zZnK!5H+}39BHW$oGLhsJ{YJ82ZK^5vJ1sE-mA8kb8fH&4GL!zEqMk3_|4ukJdU7TA z_?^qsKBczz3M<1erC*#zWUNOcWj!%8F^qaib=fPWPI8*KXP$KAIZI_`<<uY2U?guS|+Co}uZ7K;lyfVTbE z+rQ<@i>c~<{}vDy_iyO8lyxB$#Pq=RDmk>btQi&M+>FZYsh6#$Jezqny`G_w9F{h1 zVt{V>?MhtI^G4CDZ=L*}XKlZ0C6_+jKxaVz}qS6e^kl^J3-@kbaecJ8$@wtT0`tq1>`I6o*_s_4K z{g}@d{+ec7j8DgE#f{}flb*ZwdxKrkDYto#lvIA#;&uh3`X0k0e%0bKKDU`VX)oWA z(AFrGl+l&d-8A*il)kPU?swJ|C#$QvE^qJAKa9!byB$rM*yp@?n3b536>=YA&3y5s zsn{SVJF|6I@;TW%>1E2mlrU#j(pgs9nP7IZdMHUYIrrU9yso4+e@6Xo`?K5k$G<=S zJeE8xX@i%GX2~y=+effpu4|8!hwMn-WpduvLvNFVt@%!ZJ;Qs4=S|v4Y9&ReB+nGG zTg+#D#d~te$;LnOrl}w4fYdI}G^=b%NvnLq3+s36duw8B9Txwyui!sBOZ6+QZu7Za z%C8Sa6aS5FM`k5mFv8-974tjLsu*jTEn{O+CB)}S)%VYGGyR|PX6LxmE-UF(K*f|D z0W#r8DtBxyf1a>3a6&@1G^=6{29A%Z;F=pVELHm0Wr4AON(No~)5AYL#_Rv$_xr%d z(X|3!e*fl|{C%xotLV}G9iw*#^!hCWtH!TM`!4x>`dXg*nacRihW!w$!&*CoGj&Wl z5_&RjK}hzvrJ<=33WTmpxEYcz{#@vigwmm35>)7egh!zl<4dNW9s4?c&zQaGuKsQr zGW2);v^8T$$fKBwX)gbc32yXfX2_=4xglF(zo#o0|1Et$(uj=FN$E4CPT81whWly+ zaR+A!aL0#_a9`6m2|41m7IW)0u<~s?c!yY7#4C|egHO!NkChSVm zps?4;d%{AKQ-xhkbi(Q-%@1FYG%z9{xq6nI$$!EFQoe>?bME>?{$a>F{CbERDMPwUa zpR66cg(G9UDXbRe{La+CS>Hz7{o#T#g#A6Qh`Z5w%MF zh@35JWL+gnX1VX=$`U9xMZ9(9MsyHgBVLMBSw_hL5o2U%M2ZZ^GE|+47$-AD43g1V zO6e<+Da4aCk`##8qc(=$Q8&V;=z`%BvjlB(>#`1@bVmH$5 zWOLIEVP8Ui(Ul>`Sy0GMwma<;b}4NI9+tKRSHZto=`_7~RNCD}yEJw9=HNGML+}ya zKj;m67C4{R2+C#j4l<0>flrJzfw{~RftHy)aFs~|ub6TErwy0?Q=^i9b90q{ygA#y zxOF@A2eW$CmF z8fIU!8ra%;ZsoM^S!M0#)HR@f@SZkyBTSTlxfH8+#F<^yuU>`y|i+d6~QUq3LH<5;$%{%YDf$l9WWd0w40 z&#E@o0JYd^uDJD59x`vqQq~rk-P$2$nXSY<^My0coaOW|4>{8G7xCsz=exPWx5OOa zTW>D%Ju$EPYFamab*)LhidM3>ixuP>XnpW*G0%C0`P#eIy5x-0#dA?!)Fn_b~IM`?)#a9cwmnUp0%kgRDsRIrDT%9&$O1M_2Y zl5spaoB1HQi&-o=*xZpk((IMuvc{w^%SoPL_DF7L)5;skyzaWlV@IFT<-%+B{DcH`-jdh+&3)p?erF!1E$`IEwV zv84HITw)G3Em6|H6AQEDiG^65#AP&ZVh`FhF_bxpKj_)SDRgk+TDmZ?FI|w>m}X53 zrxgOl(W8B{n5{ z5+{>WiEGIF#115VQh72r@r0bsNeLx|QZ}ju$y3y~ZB^am+-gN>yw{ljyYlyM#L87nwlNjNyDR;Zm$s_I`;lv~zY=LYzeTbe0ktPkrnqB8EB8i`#eGyvaWi?{omGB!7eTv4<#1108R7XN zrb2cXcQ4VyJyXncKNdcBn9S^nlvmt;#8US~vDST8e04t;86h{;{YGf_84>JxEFQRD zi^J}(;+gxNc;$X1(t5(>U{7Az(c=?8AajO$n)nO&vU{!g?Y=F3y5ETt?r$Q|T}WwQGg`uDdyj=Cq@6Xad@5_#0UM(%f?l5TenRnzkj zHn|R)zmdD#>*XT%PWi9ao-eW@Y!l>JDJA-l#WMkY>yN&) z!EdgWOoCnF-0kHP*zkvYnGEpEm0_OUz^`Nh&l}mt^9R2hLrwL(gO9|^jh^rFj3-6j z@C2w?p3}0FXNJt{Su2NnPRRY9WEl;c{q*?ccJQtD1grO+2=&WTQvLCyQQu+9CmuKI zW>=>7FICaoT@~_HS4F*zRS|Cs)yCUMjrR^!OTBZ|aPKHJ!`nmM@vc&)@2vXnoubxx z`>2_~ue^)Yd!*-}?l5n5%nfbSS?^SJ!aG4-^v+k$y(?9$ce#4)ou+)?_4ln;(mO_3 zzGdo{ce5hCXqDFYMqLB%E$sg}N{s)x^`n)tYG4gP_U*9Uc~_^zpDzQbyY@3C5mI>UV@RAb*?st)F_ zQod0tz}H#T^=(iyeM{5=-+Z;!w^dE|O;_uE-PB@VC*)hGC%(ymS?aWJyjtTMtCso( zsQ$h-YM!r;`U6?HoQ>*(Z;rZv@`tFi$5&b1^L1B-GeuQ!R;lIABel~xq-r|#)LUOh z^}|yMWnthY<)r`s0YGd`$SQl zLzdLJWk=mjcGnx_M7>##)iY!#eL!~A337q9a33P%CS6(G#=XNW-AV1!b=3;oE$r48 z)H}TmXY!rYOx;jT#=XK3+-4oXS^a+8q2LV*&LDE(jwdb7nq4?~j>3s@Pn>)A#NAMS zoKBa(8<2jums*5-qRBXMUWS)U{x~zMk8{`TcyFX}u8^DH)fUd+hGBm{8s~L`aRW5~ z=fw;0R%a$|rq<)U?gVb99^-uLGzr1ETarG9bKHaEqdt$9A3?Mc$&NF}bU1S?NE_qK zwL4jkbJ@u_Gwn(7DuY%f%jhWFCJ!XrfKSjaWDl)FhR}AT8?8eAq788ln*-;lA*2${ zB|FnLq%LiM^Vn`ABmJmjaNd`XS7piUJYB(7)0J!%ZHe~*UcC9(N*|Gyd^~+>gt1aa zBkIq}q93ui%Ugq!_W+zP{!4N&AL+(|=vaE0ye3m{CRiKi+KtF2=rWe=BQdNct;-(( z4$>9;JpF-N^$=q#oyVKg-s~N@fHqp-oTDYZK`v5@7GxPfuY`N?AS&qvQk?xF(^xDy z$-a`*Jc0D)nP_|70{7#4X#~GO1Nk|?S<3ka>f%c&<*Vp7Hir`AAFxSu4r@-Avhnl~ zn@OLsk@ODhMBlOAv^4nU@MOAyzoV!4V|tbUqO18IIuLj2>v(Clg?ni~{)P4j&p4h) zd!xJ+zYF|`E&+WLzfO9V=`UWi5^Jtbmb*Wi}KwjkGL< zf2E&zJoWJq7GT8F=aBV~+w2EuxA-mkl)t3m#s?aNd;AJU1Z!l3vQ9=xw%F*)P8x04 zA|neMX4GKkjV%rv22o2j+HRp;XXW& z^*3s>IgnM`2m!4jJ7sKT9%D1xWsG2>j9TopQJ*PeB70#BW3!9`>;UQ>HHxz(Mi84~ zMAN0l89Lv1OP3odbcvBbR~pagB)m0PZrq{UjMwy#kwo_zzv&d?5#4E|X4i~-Y^RZm zZ9?5;#&^2N_)7mq{aMB>I>fjK%+VJ&Ee-xm#$lQhkk|N!1{!;59^*OQGrXq_jTf{T z-Zs>Rj9h3VpWy-cvAm#J#s!+fAJX^y4n4{D(Zd+aoBTGljbHQ~zXW@3rdRk;l-*dHCe*vk$HR) z8O?_QFClCBY_fv4BK>%IG7xwY&rgc;Xx)ihWCO2`w-AwJ5Eptf-chXMW$><}7@2|h z5DoYXU7Nc|9`4ood7LiFzv|vR05Stf1AbGN<~wu%UjL-9MYbuK;%uu>P} z$8`vwtm9dJ9nFgAOuRGRqu`d1*U*u?wx&F<-pk_EO_ojPdH2$-t4aG#g3}VY_)2^)`Gr3&1NUmP&P(2XDw7q)>AcRZB;8aR@Gp`RUuYVm0>ki zZB|c(vD_*@cq*|%DxCQ#FU_nXSpk$~0Hjm(SSHngrBO9moXo_I$~^3pECI;H4$4yO ztgObC$aHLg%+6-Y#_W)6#a780YzknEY|dKAHmt71%Ou%_g~(2T8cd6}Oo*<`mQ9#T zHe{xZWHBO~{SoQdC&8H%Sy-GX!Lp-nM%j*~ku6yXS)b*U#n~58j6D|ZSgh#B5=Afe zL=LM6rt^CwNDotPk5Gnz2V>Ec+=|vh!jX z+a@NX-rtPKJIpKYu>Vf_UyFI{p_ss4q0W8aM`9g&Ar?c8_?^)59-T1%EIV>74wJwV`>~B$-jT1$oYdy9> zbYk;G12$e%W6MP&wn_A7e~AHX0Qd%r?yL*?Iv6&aA$qWB(788c4HtvhW-*Ix6&u(h z^k1HSYR-X!oo-s+X!Kc!4^LFnx?1P*=!4^_@iEW@CzOMEmMew3H5^ zAJh)K92`q>;%$I|Hw7D&McSzIy01!2rmLJ}oXSPItG1-3+DMwf4jt4C*ku`Ms4kJ7 zuxUqi6E-_a`l#Dvu=-5KsC%R->`+vlAeGcPQe54|4d704LJlU!n$q-uw8Z;COm1i#EnLsWH|MvbSbR6i zN7hQkv&KrX0VH^!P~1?%<&&sajY{P8NseXLB>c$VK3VfGp z&JU_i{FrLVx2RTpjcUvft6}`I8pW>y9|PY-)t>)E-qd4xX1$DO&`Wtuy^(j($9Pk{ zhd2Cx`W&CF{{X%MV)?&1$XKI4W6eFxXX+>Xuzt?h>eqaaKEogD%lxT+%zx<@JVl@5 zKfojPEuI$ljop@(l6AQC@=#<(Wu(UX4t^ z`^kU#XtEly#4ui$)ZukVBi@Cy;Uh^4KA6xlBwN^P za*TZ?-ysr%-1d zXzOVNAQ$Kj*lXIDxxpX7YOzq3890EIXHl#t%f;HUJgh&f%(}B;Y%0p62U;4N7pK9SYnOIUqA8n`y= z1!%|{u-?2ATf&F3dAu#4B>S6}Vk@w-+s*3$w_~e$2ey?rVyAcwb^+!8^1N&l&&Y1_ z-0UNEJ8mKqWjBu-Tac)FrLy%*hO^wf24gFk@+%2 z+M{R_~el!ly`^E_R z0ugwi`7h0FZb4a38e`O<0cJH?$E-u!nyqO)vns7+hS4TwAZ=x)q7%$=^l!jIGn}q8 z3(&h}A^Oy;PH%wsu34KNGYiw}W>NYH<)2MSZkr#;E%ODrYQ83)&8L7{h;@i$wziNg)&`QpnorVOT}YILlK`tHDR1>6rK}nx zlhqvQQY4p^nFLwsh@X`Kyy;09DDgc*AQj6 z+N&zAN~)EsqiTV4TUQ}f*OeK3OqFoGl{H*DWM$WJ+0b=U)^^R4^;`pG71wgv)^$w| zbG?ysUGL-+*M6io1D45gt{JkstC_6ostx|evW2U!9PSz|JG53K|TyI5Z*DEpGCBz1oTTFC)6N6Dc z5VZcTU!tGundssAAO^S|qy90`#&to=bX^u}U1w2#LNo@gool;j>)Ix2x#o$ot}&t% z@-f7fimT#E&FtrTDE72>TuM%=Y0i6{0f@xcB|9JK!y z$LwWdw>?{|vqy_@b_X%W9xvvDcf37LG__}nq2L>14-)0g$ykQ=O4a+6hGuCm$ykCFdaQ{-Z6fShLakprzRa)i}SPPZ1yG1eU9C*rlj zOgY|~D|=fTAY-GP1iaYVBbQqL$g$uX3cgv^Jh{x;Dkob1%2C!bIRy0a)&a;oD`!{_ z{Tx-3S>wss1HVd%SI*s=40Pf3!)_b|r`UG7*A^!z=qApsw)P1Xv+GS->ORPXO z&x(_MElYK^(yJjT?{8_eT~IBs5XD)D=B&|)@}VFfEctCmV{ zwN$CBV(O2XUd5aK%59qJnTN)ew1;5MDvGCGNYwqCQG;J zr~EBbWwu^PKkKXXw?4~kfFjmAS;_h!D_9?8ee0HNWj&IuVXHpY4cXb+3EBzJp2M~u zd zw>rz*@WV>*%|=#hjNv@!ut@f@#=&p;!|z(iVODqaX$t&jI{a+}`r93N0LrJz(eS^q z)@;yb%O%z{IUh16S#?k+o9twzh5i=&6gx}!{YI-S{4W#yJ{SBx6h4?;9=0k<4PU4B z5c$VyDg*7tGQC|%M%ww2t}b)gJ!M&5_gIyiuQ#({Xw)4ms(1Tn}rPnSZf7)4PgewwrWiiZ^tz>#vA6d{f0`qYXSqgJ& zR##q>7nP-56=hM(tz}(BWD!>uS=g0ZR&*5yPYIbHkj0f^~yjeujDOytr)N!`$~u{IZ{l_x2qT4Y~{SY@q7_=Etid*}f>; z_GQ#NAdcAoh#P>9sOPbt2w^`EKmK2~QM|I}gT4xK_d&)+amyYK`F+uDU-8Wz0lt;u zC+5y4_H@V^Bpl4O)U_VEEkOBnv@>21*I?o28Vx*6q;m~Gx}Qkp8in*|A?>N)pC&Q_ zn5#AFbcF0qA_?uJaZLt&A?EZ!BFHsC2@744E6d!$AxwuF#vVz*kPi!T~IW$Yl~`j zEm0h@tD#OgJEy2_M~FNqFJY$xE{L)Mq9WR;YS$EH?Rp}&T~uVYqeQS>QiR!+gg@HJ z2*_j?5eZf<5n~k+iB?r%LUs_=BR{*U2)9d!e0D{V-ENJ#Erhm;V(lp@ep~efMcovu ziFj+(7B8%7;)_*Qe7B;+T`NGGvHZj?D_ESc(uu=X1lFH0tUKw&3@b!TMScYM`dg8r zFUos^)*QU$EK3x!5}gdFU&Z30nDxPNSq~g${d7XCZ;qc81Nh}oE5%7Lh4b6A#RD^~ z_+(}lcTJyj)codbGGm-ICKG#2Ke5jY78}5~-TdRsGe0>U&3jIB^P1DnyzC4zUpf=b z56%eF5F<>t(;emQAfvl!iMA#Yr6H$)`N}C|zH!Q-tcvLp<<0b>jOlTrAU_M*O^bFj znVCcoWOxjZ;}~uy1L`|QxbPZT1UJJ(Dl=R}8|lS;BdvG|`WM3%uZ*mK>_`_D2}Vir z+Q=p@7@5UB@EripUq%Ko19+@aNc1(Th#^K*(a)$LS{e;SEu*QZ09?+fF7lx)t5Hit zpv=!GE8M(<5WI>=2E6Bm#6un>p6~+VHLnL~DK7CA;tX#f4)T&>4bLey^2%Z@uP&zZ zI-(z-FK;Zm@%ExSA1JExAtHiL7QuX$2;iec2%jPR_;lgmWbYdrB0jUO;u&iuuCtnA z8(=M7+pc5{aiZ4`r;pP>8;MiKwm7kCh10;6q9yArYOr3S7HBQm7@UqS5v|xhoGNY? zb=kk7IZpgqv2)-#A_}uLq9SkuoJ!Wk>1J_;*AqBJ&4UxmOgP;n?73jxfjaHNsXnCBRG{Q+;H#wX3l0E5A zoV1L_NnKA_mbQ?E@GWj0+5x9BT>!&mHabIQpp&FY7s_NZM}8tpU4i@6eQGMco$8Hmrn>7{sx7|fYKm{DTIkjIM(mjCin~|rD)6n_ zaaBhjRyFb8K$_v(s22JSzBzl16SWxCQM*+WorG`0lq!tx*z)6BseC#eZeg?GYp8sH zbogH(xDimf@Ks$|d_k8_Q-B9~kBY$UZ3S)PyQpYYL?@$MsDk)9u9E(PFV_=m zZi(7~FVePxb`d?jjWfRodJ>?Wda3K-|C^M@ZE`hrL044gbZ%HHOr3>wFY8R|n$D+Q z>-_4uHgPMRC@<)*@{;}{AL}>rt$r_sPL{FSE#vev`Cea;UjXs?IAEJ}k##bdY?e`E ztHc*oG7niIOOV;J44EQJlF2eB!5stX09rd)mefW*rz}WH$O5DY=sCe3Df5vi)DM=$ zh#z=@WH}Omx)kZ}q6T>{%8}Qi5P2(dlZPS)xg)BOuc8%sA$pPPqBA)nYLnHXI$00A zSX3s@!NAioMBnS{HHj(UN4`|y-2CT@#C1g98y3V|md6-YDj z9~7o8QH6$zn$!Y#oLbZiNOoG$_fBj2-04bRIUVQ|ryafNbfK4=?(~GyiJo&t(kspc zy3ZL!H#$A&I;TI~=s zXfGh^Ilbt-qn81XokaS@`3`&=Wl!im$4#Z9pwBz{2l+TB4mxIMMKK%J77bZe%y1qj zH4DT&Q3eslm?*?7lx4#`N^3C7ni8)qoH>9k>Io!;y^;D$4tU3CVr7fyHf%IO6DiR`^IkG*qN z0hXigM&Nbq7a+#j#-g2b%=tfF2U#oF1Hdz9Df+u?2EIOJxBhw zvj$~b@ShB}qRt8MUSZ#yv+R#^j3qfof%miT&OY|ZImEs?Cs{n;3;155tw+vv_S(4x z{G8o&K0)62Xz4ro^aHvkX8^N)o1}t(sY`&A4?{F->$8p#W$B!R!2;U0+VURu8akE8^!T)ix^8-$Ge%{H+*E%22 zhX-t&6U|n`21lGEb`o`OI+^)X{D+A54&(P6$}d8%vrZK1MDp8C1<-5qH%={n9WstP z>G&2W2inQP7dV;tawh|@!TY0bfBc)BsnBOR@MiRR75cjYx^I9!JE8v-@V|7z`F+Qq z-+=CKoDlxQ$;aOT9y(e12PZfGh<0B&lAXs`{SAAp#TXobtTSl$Hrl%AxS*RKzv^U! zob3D(>~|4zA4Aq3CzQuJX}EOq^AM4bhl=bxy~w}=M0%bE*bmW%DY9}y6ya{Pm-v6) zoZ!m}$i#yYq2v~Ycrj6c7ZDW@{gmV7!CO+~Z>QJklP+*IHr04gG((|`I^B9FqZQu(% z`7x&>--q#9|XXq(}2>P7m-5=SQ4@kkN&& zaO(4gNS|_sLHD6VX!pG{5#u$Qdz?woZ93P^ROmm5e{*{A?@lY= zo;)6U#5pZ7#+|tj^(E+Drw?pD{QvZi=)-qs4Ej73V>1GFTFA4Dk+4}m*kBmXEXKe# z;{hWOd3HxxPeh+X0PT5RKxy!`5)*k_(FtSK0k-dhD6~K5129e_Fh1ijW`h7dd1s`@ zi3NPBSjk6R&fT4zot@cT&d#0lztPB8 z;g|t`1W(he?MO$sea^ANKIT|w@2AgA$cc2s*vB1*?O5JAJno2x_VM(+1ie;LA8GHR ze2XIr+GTHc?6H?KhB=Nu(QzN+jgZa<1afOI(^{8P}Xt9c6LPD`Qc55_ocNG-ov)C zp22e$nU}bx+vOcZkR2}4$w58`?K7=a_7&)F>%M*8a+gn5IVs~PCzTwvq?qGJd1+Bz7@AuFAn3N}!=PyWXpauEtSx=2+=eaYjfDDSM2l4-S++>SPq-_b-mZPL(kw=nZ<&hg!X?bpy;d4d!-JnX6%TYoy zX!qW7lGj!tc|tBkf@RxJ;eBV7lB?)=l6;a|T$8MPvXi`$Bjl94x2ho9gE7^R7glk( zX({S+Nh*0Rsa9c0h7zpua>c49_uzSARc1^D zd^i=>w$9jfkkgd>7eDOdOU_P9%aA6F(-W$T-)fTc;zoZpEK?d{=N9<8o>fUoV1p`F zD|o!6I{7@!tQOMPswZWwvXaSLzMsrm^49c`cV-94WBG}bRh#eAD@#7c^c^`UrL7Qh zO@_;7^JjQMsYI7Pk%-Rccxugvj$-_9Gm=2&?Ty)#4QH7Cv|oIc;1ttoFT z*Ujd9Z{Ja_a2maB_NIL&X0YXSV~!qqzq%q zYgM4n{ODJh{#>Ajl7_4Y$hl#9OC0wnOk z3Ho?3p89eMy-%2J$UErC)t4NDdJ=;^>lxQlvpjh; zIOAVtc9AvE3i_YV_$FenG3HO?;&_mU(^NvR!4UcyX||J5*n5^afz$pZS!GV)Izy&% znxAS;gKviPBmaT7Y$O0b1)BS%4{u=)BS&YXnZWgw3^3!7bzb_D%M(aWk1x4DUC9?3 zXg-3{r7t-XJ1uwEpSZ6>PLD5n7@eUG)VG4bNFdMWHc^J#QjzJTV^1V{%Q>jHhy)`#bPmGUA9>#7Y8@ifcL7cu6*n%Uz-u$;N3(H4uyNu=YOn5L8ZWW1JCA{q~gXxua|%W3#8(Dpq2r4hYwkgrn0te|p{v-HWx zt?n5`$Tg~V5p34#=lSohrwH13z zN9W(M<0RvWj4(dQC~W*6J{yd!N8`64#trFWoR?ti9c?Zbbfi|~kbD0>! zQOaVZ677mG7rsMYQDeJ^juxe3p?E2ToR9jTe9=cFi%kBfdXpsUb#h0qmT!79v5;i~ zQj^@(5!`PlPO?ir=mYXh?}cxNJk3pRrd!=%D}2j3tV??eIoIVes-^jWJ(J z8&kPXk^II8`Wzy;jj`Bjx{!&3t;Ta7imW-%3hc97GW2@JzftZ%kBARFWBeKV4DIh> z%iG9KUZ+FV4}>+oC>txuuLRph2Xcko9dc1w}3`UYb^i_EKXo48b(enea< z0lF+#^l3SRUE}EMEOxkr{rBq)vQaOU^?IIcMW>B=wyf0?WSbr<8}xW6gtCFMLJyS~ zJsh52BuaPVa~Jpq$ud1mCc`&^@{u}JX6PBvT$!y`$|Aj1mg2iL_&Z#$lDT@OEXe66 zT%z&o4(7*p=ErX8H|jOAlCoKp&Bq@9#l|zR&rD?eMj04gyd@F=?V!KiGM+gzkvTCN zJ1o>EWi|d?N!eO_x)Gjm>Z0-SM#{EQ7EYTrI!3~nGZD;(D1C^!3j*3FW4VrQDfIgq zecw=@3jY&irEz^Lk;M77>96RSiOwc(n|x2?w2F$=wbT(^Po0Ajw2!)=TM#2`sm^FG z;)Xulx1p|~I<4!gL&OdDfx&nj-oxCV(KWf&J=#3Ws*E2Va8 zXB7ket&77~Se+;4ctU4MJbLWZ&l$s0S)$XiQ8o#_Fw|1=AeZy@%o6Y$=j%emJ&UP7 zh+R&h{bcT^5zCyUD-b9B0i>{UY9#$lM#rhpZ^Sz%>E^sq<3&EDC)d{MKe{7r0*IRq zBF;L3Yaca1cjNwN_y-`nA1G#h=&u7Z{OG4A*HOe@`ykt&cx_Xn!8M5@*9E<-0eP3z z>9;OOTeU#kssfr=C8EmZRWI}!sLK%JEd`QTY1NYZw%939S0wi9L?ro}cz`0=Ks!Jj z)7-z7CXlDj3vUq+y$TR3&QD!_?#n?gM4)ScZdQ|fcaY9JKsIZtf{5*QAhz3!F%8q* z>9Y?}?(WbSP|-rsDU@qp_=eJdDD7wFPB4>$!v6RTs2g52!is7y0Y?I)Hbp{6TZ| zrOpdPyo@7RtR)9lg}U2HxTNEw8IB21X ze7o{Mec=0t$Jpjy{a8K2KJWBr^#z_+*!QWv1y;>H^%D9Fuaoge6*b=T?aTuO-m=QX z_V@Ts;);&qyM`!ri#c>{T6I#d=bN1U zeCKdLCF1An`Wif^*jr9fm&ksR$R2YK*&q0B;tP9`&Ak(N$R)8uVbE|&>L+Fo1-6LPFZoWzfj^(~tx~$$M!%q_gUI zP!8Wag9u&_WVi41Nb09izW|K#U+Hf&Z}9y>*;ri~?<>}2UJ&7&L5*|ceYQp*!FlPS z+7BeT_FTO|TyGEWAY@F?|K;BTB(GvNE&wHRF0+xh)|q=NDBXx2QRooGybJ@KZmZq} zKIB7?rXMl-f0%(`It~dJ(D52=PtkU#p3TgQ0I4nx?8v*|+&#lO$@&PNPwPKHvAaOq zlg!Lx`VcbWX%$b|b!>kdyFcX3#3X!i1J09h9)K?r&W+6D4V3KAH__*@-pn;x|BJ*d zFf8+c(r1Asr|IP#T(3a7e1+T>Aeg_=dztUs;ok}Er|l{FIRakZaoWa$l6e}u>fQ7l z32kJKZ)I-pM9wzw^>%<1co^PYtdYHxN9Rxm8oj6eNBa8AeJ1k0BIB#x2a4c6u$~Wr z?6n!avaz(Mf`T}Ob(4+3J%PTavwmhEb2_qS(q=w3T7XVV(I*nQtMnawkwjf8d>_~i zDu5nX3BKqTni!2FHV_ID-16ypOpNS_sbH|1t6lfM)1K-=)BvE(jie zKJf4J8r?xE9LqbL3y`rwR|B=MGJIv=`4J?;${->Z14FO^D2UD=9aaY=vAQvdenLSG zokySRzz$po`r%Uev&$w?{~NNV(l&&$5wx2Q<~2JXc!PD&$<5da?S*fzZUWYzJASGK zhI$L^>S>(NzTg3Rg9qr(yP@sCUH1YT)eC&~X1r_Ko_9yRj4a(2tTPcGoVRRsOJGN`HUV86LiRsf7uC+_ou z9ajnr)rw%l{Xn@hTt&f;a|JK1zR`+Ll|hND@P763=z9mjeN(OcLX!r22NL0sL+ezKcc_$T{F3_RPZ+pBxCZbsAp zujuj{8vcjbI0g;Ju<9qUI;Sv(@#r3+pK=vu=qL7)Y()Co>^V2k<!|rkuol;qi=~(CyeI#;!6Pw<~=FidXDfEz4nu6sXBkw-iC&HV8wcpV`ld|{J z-KXsX#`Y9Srfnj7;#tO%%y`o9!!zvof?v{jh5ueLwwGLQVXs7da2I-r?H}Wt``9i8 zTi#{o0LvJ?f8jp+z3kC^9z)%5{4j{V$1$G0oegMDP(VSh#(-_2R zAIu6KK=}X=NGIst=r@dC@(4Ei=}u5TcAepr4}`ZRzwY4+UmtYtitc@p6KsrTXBZ9* zMfXvPrz;5TwF4~G+ssq1# z5Wp`#1h6v(VW+mt=OAp=5kLB3Q$Kd)R+P12UHh+;9 z2g278f3{)`G{Kh*`0LdOzt?9*HfH|T%elYI6ICKlTTghp%gTAm>O%iP{1vLt{?Q73 zIx&Ve-22c^Yo5Zg_36Rq>|cWz#ys(29(ggpI^x^@=-eN@yy?FO{r6=T>dxl@$R5qS z8h|dXS$SML^EWntzs`a5)0**Crfnno z^TMtzXi~XQ1tGYP4RAM)*!RoGxPUZM}UY;GY zI`(woT8MV}Skd`d$(bsGHhXzuItU&yD^`W^gtVRh525E3_;>0G$a6s-U)HoA{X6rw z_BDKESpTij)f2s4ky#rZtKg#s*s29~bHz3uth+$=I)CP1oKqd0cy$9ZwF2(t#pd2g`N1l8s)~5YZb_a(@t4VHf4EoEd=G|*Nk$JMU;!D z`OoT>`l^nrH|h{L)O%Exid7%fG0Nh=s*Y0`>LA$Ed(~SN4Q}-z^-6(=p^m_Rl?okCf$>rr_myeTKaeY!1 zL#OiSR-9AW_h7geC7Y=jR8AjLU}&fxdD?f?ry0vRPQ~}Z+fD(qJC##!GMLV4=M#)CMcyIDO)|owpUd=cKQcH)sFNy}U6FUoeqw+&D1#4~%HQ>ap0972b26P*yLB$NM!w=9#fX42IAkLj3)%& zj#P!gLpO+u*x;2rabJ{Eem+iadB`*?rl%@ra_x!{H7G@SA+Xs?5=AKsxsh{MkH|@7 z-3xnl!oU99`%=~yJN}~Fi9VF4yb}3)o;jH9qlkPA#iv7<<9#R_oP)n!8=Un@$SF%S zrYP4EL@Y{z&t6e4qx~}G{YtRgm#RP_4IRNZ??E=Q&E4(iS17e*=~dR)WV zrxvNXjD0TsWM|(k=7c+iQ|$yjS&b%I(jWQVbboZ}3-v*t(L^RfnU^!Dn?T(N)f*di z<=zk7IO7r7>Bg9YlsD0+#@shzyg!iF=n5uG73}1$d#eh_E3dm^YhP^Pg)O}Bg`aZh zKztO$n(Ikfd+NJGov~9l{MMQ^T!*#m&U&oJylsZRymRFxWE1KYU5BhA!+-SwV;i(?0X7DycMss8|rQDM>(2=##AHNJ_ zOv4z{K%!H_bH>?#@~UJZx-yQ6)Kz0H)Wdd-@j*7uem3rYOFf%CZV`LlJlamiHleKh zY4~)p8i=h2;k#gb*9Bh$;3GeL))C(Y;HLm0N}XA+oro^=(;HNGy%w9VQ9Y>(Vm^2y zBb)r0A0AL`WYvXQ&{sobR>$uZ(4#m$bm3Y7AG_hx(&$h{hvewe5*s|V19e3{{e#+h9dv~ literal 0 HcmV?d00001 diff --git a/public/sfx/swap.wav b/public/sfx/swap.wav new file mode 100644 index 0000000000000000000000000000000000000000..048f28c1e173096873da228a552a9ea14f82877a GIT binary patch literal 23980 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

~aS@WNRt6UOR#auxrlN&# zX0?{^R27(MJlxcPOpvMC!BAg`X5tr^Zxq>if%s8OgAB8KORZp zS*a>fu?DKGJhO#oLXp=%`Zqi|6sb0=ROKz)(9ji$d{q}Uo_y!e=s3Ke#w>TSm;js8 z$o|3L`cL&A(6x~NcayJw!6W5`2}b5SM#M1wAo+Fx)lwBzn`qw#3RfV>9V(GtWZ2W7 z+n=8xHJf|OS+NaRT1^h0Ne*;J|KT8eJ5mfL_v-9CQ;lR@U$Soy*j+|u4#01z==?94 z@<&$QrG_!vLN$k<)~Y;tc`y~xajbZcXC`y~JayH4<*B|>nQ|0pDNJr2MYS~;F9i`( z6V-Ipgps=T*-Z^1h`$lcz6(t%sdq9-HX;I-V8Nwm@gHgu2)-vOA#*W~r;rMbkYuv(0FRAw|@K13n|0^mANe*Dw<3wH%k+=do2ZDe%_$wYg zUs2uVqD2Prev>$j#`bC44ORW|{s7kTgN<9W_7dcMMa&q?{Q{0CN7d93c5sD3d#RdW z!4KRAqyK9xp`}b>#t<|PM#q6zVj5ojsA|JjU$CBw$Yz$3A_94?fx_$9ZVK_g9E`uk zLmpu17Lh*%`)pTXAf+Swh0btQb5?DN6ql)C?@(1I6S+yM2y-?E4GN7fs;O$M!y_w^ zJCOCSVf_KjbP%kcCN@6no{B!&KC_9GfjqGk88_g|IO_4EMBIHexCcLeC8E$nKYM`L z?<3W0Si=ulZ-C#Y#K=I^Uj43yfP`hRn?IJgjKzQx=>K@0JPi%QI)C5qp)^K>UeE~VX8MiFAK)Mfq90(SUo^?U-EVdl_YbhYP?~H zNvsuvA5CJn95d+ox1#SE5VDc^wCC=EyB$PZC{{a+mG@(>)u3i6u`&j)4QAF+NFV6% zbt*aN6MT`ari(-3PcrEsvSKB63Kg+~r?7&Yk6@xK-+$rWaP)VFDQ1%0Dv;-Hf+U?) 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 new Promise((resolve) => setTimeout(resolve, ms)); @@ -99,7 +100,24 @@ class Player { this.ply = ply; - await this.board.frame(this.getPosition(), this.game.header); + const position = this.getPosition(); + + if (this.ply > 0) { + if (/[ce]/.test(position.move?.flags as string)) { + sfx.take.play(); + sfx.move.play(); + } else if (/[kqp]/.test(position.move?.flags as string)) { + sfx.swap.play(); + sfx.move.play(); + } else if (position.mate) { + sfx.snap.play(); + sfx.move.play(); + } else { + sfx.move.play(); + } + } + + await this.board.frame(position, this.game.header); this.board.render(); } diff --git a/src/player/sfx.ts b/src/player/sfx.ts new file mode 100644 index 0000000..7e5a3f1 --- /dev/null +++ b/src/player/sfx.ts @@ -0,0 +1,22 @@ +import { Howl } from "howler"; + +const sfx = { + move: new Howl({ + src: ["/sfx/move.wav"], + volume: 0.4, + }), + take: new Howl({ + src: ["/sfx/take.wav"], + volume: 0.5, + }), + swap: new Howl({ + src: ["/sfx/swap.wav"], + volume: 0.5, + }), + snap: new Howl({ + src: ["/sfx/snap.wav"], + volume: 0.5, + }), +}; + +export default sfx; diff --git a/vite.config.ts b/vite.config.ts index 06c15e1..31ca950 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -6,6 +6,5 @@ export default defineConfig({ build: { target: "esnext", polyfillDynamicImport: false, - outDir: "docs", }, });