From 20b67afc1c0ce065981079378dd8c9bc1cd3208a Mon Sep 17 00:00:00 2001 From: kalai Date: Sun, 21 Feb 2021 17:23:24 +0800 Subject: [PATCH 1/4] feat: Customizable Wave hertz feat: Customizable Wave hertz - Users can change wave speed manually; Any value [0,1]. chore: Upgraded Gradle plugin version to 4.11 and Gradle version to 6.5 - "Support for builds using Gradle versions older than 2.6 was removed in tooling API version 5.0. You are currently using Gradle version 2.2. You should upgrade your Gradle build to use Gradle 2.6 or later." --- app/build.gradle | 4 +- app/src/main/res/layout/main.xml | 6 +- build.gradle | 6 +- gradle/wrapper/gradle-wrapper.jar | Bin 51010 -> 53636 bytes gradle/wrapper/gradle-wrapper.properties | 4 +- gradlew | 0 gradlew.bat | 180 +++++++++--------- library/build.gradle | 2 +- .../src/main/java/com/john/waveview/Wave.java | 29 ++- .../main/java/com/john/waveview/WaveView.java | 5 +- library/src/main/res/values/attr.xml | 6 +- 11 files changed, 118 insertions(+), 124 deletions(-) mode change 100644 => 100755 gradlew diff --git a/app/build.gradle b/app/build.gradle index 7a9ac8d..0c8ad01 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,6 +20,6 @@ android { } dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) - compile project(':library') + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation project(':library') } diff --git a/app/src/main/res/layout/main.xml b/app/src/main/res/layout/main.xml index ed439bd..5a15c7d 100644 --- a/app/src/main/res/layout/main.xml +++ b/app/src/main/res/layout/main.xml @@ -12,9 +12,9 @@ wave:above_wave_color="@android:color/white" wave:blow_wave_color="@android:color/white" wave:progress="80" - wave:wave_height="little" - wave:wave_hz="normal" - wave:wave_length="middle" /> + wave:wave_height="large" + wave:wave_hz="0.5" + wave:wave_length="little" /> vWyn zySw*bELd<67^0#K7&t5l2sAVZqBpEW0wM+U|5Q{@%&Y`nO^l3t=X>WLAphS`IWhQu zhNr3ix4tm`rzQb@?4kV6i;6?9M#5Jzwj5YZ$j0?Z`hcIG5wPy%2~1PrrWrJSsw zoe`Ktt%s>Y!b9CtlpWhW)N4_6)6W#*A85BjvsZkN(|o*LFNdeAw;+?A)}%3kFmMoH zHZ)rt4Y4uk94eYCHw0)p?KY%{WBskaeBdXr^!FijTcMLz_W;T8E0@H` zjVF)PsKZ`bNM=)ZQaeu}n@QawsveA25dPy?S&wk)*r__g*D4+Q)LAC!Sdj2|@(tg= zfJgSk$-Mj(#(M%_lD(`dG986bXuR7-)YDR?Oh|*Zw&5DNgbKhDP=FN;CW~e{R`<}Jw*w6Jr5xzwNLOjpG`VZic+4z?__mAq?Y!DIm zpHE)%&S8Goi|@Ii+wbr?@_uw;QjC^rk-#wQTsf&v32S#2aZ*)H8yBsV#H8?G6~0R5 zqq1hM%JWP83@4y$^@4%95YTD(sb-N(yDRUaL*bq@JMRvunUJ1K~G%uKt+2-H@W zEbAxY8%l??Qp|B5$@h+Yw#k6}#wfS4f#W&+Nm+!makZ|$W^6yaee@(h6&{|I(NfD% zC=40>hR(pu4?DMbAe_d;#!-pVFh+X2Jm&f`<9{Fo^Z$UB6bgRwAJ8;8LKK1iZ-)hq z3i%)WOe5%vC;Y?D8zcw_{eSSIh=>PFvQt14LLU3OdAbrL5ExKcNP10@oxjHlgQUi+ z29F`>D^ly2N_HH(rN@4+Vnxb)A41fRWR~5dlV80#%*oos`k421t^4sYH)jBHaz`B| zlRja{5rrQOf8!)LHp9pH(&5!VBa9nm#b-MIY$tekrOsKe7iLuNWa-a>Fa`^Zu9^8$ z1|PEX9(k?4L(!&}A7Fw{Q`q-asplRzKhrMWUb!dqiSGcpxy4es! z5$f5}Iuozy_EM4SuonBL)n~b}`^CHpZRh$XBgby3=}n6qZQ$26>oRWbD#u1{$8JOP zT&|a|t=Fjhk%r!B(e{lur3DFa%XbrYg`vA!v1YDYZmtVF^%n$WU8x zRh1c5`S-a}T%s${LUbLaqRnET%zsxoR+UIzP-6C$Uo^$Cy*ylG>Dt?81upB>U$tdV z>l+sV1Aal@z@DLw{h~`}=KbWRDu&YyA!wWxKHHzjFk-1N2^UU+yO`!|c2(rW|+bx$(G5!Tu-Z zD{!ZtWG*3=XceREZ_G)?Bm(h7TL_p)=VThgn-|GIDlQlEs0OF4_T*;v)9m-tQee!zEcaJ%@N^#&OVbnS%085^i_Wk$@AO*a^o} z8HPpZ5aVB0ERNfQ1pSxk^FT*Bz8IdR2)v^PQfiXer8wgjOc|LtNjkn7zA+!XqX=?h zk~mK4u^35GDL|G+NSS5ag+fvdAu&-XRjO$bs+jzzwRC(lyfT?a;FzL6noaS!xh}Wdd5-|#_xC%(9|kqwNmF9LG90>yAX(n=70XhZ5di?F)d z;6RPAWy$YslZ_oo&C-#4-R3-ugZ+^ug9w^gi5}MwSidir`TX;B^uuDHc=i+gij?^T zk8rU6PvvhI$~1rChm>k)4#`?F=?50$HA-m|?zxBVh*T&(IYq0SHDMCNUifsaH(t`b zgwIe*ztA<7c5oQ8#X5$7CKtz4`Br{M6d>=9S2d8?x4mSf*uJzrx&qqZUU`xaxU((% zoFNS9o1&>7+C>Z|PqQCq(Ld8XEHrgOG+^|}B)5a6{MYbvk@kc)OLj}v(ONWBOSHxERYL`%#ISu7_3oGQV_J)`tJ z8ixz>iDO2mnCpf|d3Lj*3F}UyiMV2=NwP}qJBCx;F)0{Cb}m%LQNr`q{M|LBqk(w0;tmUhP5w5#v03*{Ew>1r`EiZ*%nMl(V` z2%lp`v;$8kw%$kp`<=v$ss2(wfT3xjub{n5!FAptX(5&pq;8nmDZea=^VEnS!fKkpZobygRgi)dl!rRXM6+vHW{I(@a#89 zZ)jag-s;1${2QO25wZ=}n)n9MvBDKcmVztH;VBM>{Te~X$ z2k5C`S7n!RUppdOluC6Vr4zS__hbp1XfTH!PTAQBA7$n2GI&vW-S{NAT)u5|&d(pJ zws|FMY{8Vch7w2l1ii#o7b1sn?zO*Iw7LCfq8P;{4)z#FA8+NTcA&H=I)`9Eb#cqS znyEab$Er;-FbK5-8Dw4|LUXBg+T!bLCU{gFOqd8;tW!bQ3 zbEqK4Tw`+4jupi~_l9R%b~#dR7=xhWQTDh@4i;Cee}`pL<-w;1!wmO2F%HlD8u;EK zr>UIXRotSJ*JWsA0~lpv090}w$pX6JhGvGsGL}m{@wNaRFKdqmczQijz zL8T}C0JHwtu}@+BKb@aXVRpKRufk{={o_pHQ@y0h-;qYdpI$ zG2C+Sv{H<4!cB@x`$*d%mq}0m0kut+Ev`l!`sG^C&@^^d9}|A~0@^bqf39@Oi|s}N z@te(o>!|W#mEMNZ*!#ax}AI*z0Gf=&WwswO#C6jh^R-CQDt~Dy z_9@$BnO$8t@wzb?$BkzHXVE2tGg9U=s$5I<5Yuk=$J}p!4M)c&Aqm$^JP{o~ zVde)a7Y=Ea%V|7@k)dL6Esa(ad6=^a9|miqlx_!4(yO$%vx11LtVCfMClwU) z?_{qNN{0&F>H%#5D4<+#xh6v~FJ=z6&$Df*44*>%wA0J^Ah*M*t<{Mnt45|*knAb+ z(#evcH{=_mh)?bOvp^ziGe6S0Ekz0mn*uaFw~KH`ihAhEr^*tK8RXQwHgR+1T<}Wi zzzm$(;{j`{uYI$rBt4G_x2a22(uUq})wvscqijjqnOTaz43Mb&3C>%gBH)qJuv0vo`0NS$1G^@rScQuyL9s9-aqB`6sp)u@i7W-`N(s=1@qi7EQV6g2^5vul$NrW8453GD>^AcQ2O@d80$pMcF#{6(a zE&s#@N|by+Q+j9jRXw29!+P+hq^|E5>(MV%cumY#3<)JP$sCs4bM!B}$jRRR?)-Bd zx?+#*G_zvD?`&?vE8Epo%65}{rY_sm<%SniF!MmyZ(+r+4vKfJkC1wUq0g{Zxnx)+ zH78;x2fR?9ksahpJ%b(-HH|9OL8i~K4nPUh^X^))qA<>^T~`OtJUd@j;3~;Z(Q~jT zYr1J$HL~SSXl1Gfvm7H@(C;KL++N^I{EAk;RW&A~RP|S$e@&i*db0}2Q+m^K`Xsp- zvf@u)x}cZ2O&KnA7VN2dFcK(yaCu+{$y?wJ1Rg1N;V3{A^q+d+&r?-7h4wS3_@8>X zj-i%|_(oyUDZWAMkg3L2`bHb5zWM-w2K|~WEGvuXE$Ty%gDl6{E3BGxRyi)jFBSQDitXIR2E~BmQ!lVIou+!Erh~?fQyO zpokX7b&?H7Y2tp8w*lWS zd^ab@WuEXjw+X%RvGZc!Nm*$roI*va3ZiW#p92AKOFzl!1N*9V38h96W@Kl(j0$oz zxnK2_bytoe+Cc2-^xWIfpax}t)eKnE6J}EqwQ~XusyVtEb;m-y2?-`o^BZ{5855(L zaWS;U`Abq$vj`^Oe`d(G4=WTJ(o7$eGuY}vVf-A|p-oJ;37BeyVdW8v5{;me86^)1GH;D_+}A7}vzGNbaqrTh9zr%z{P zgI|0z(D^xOaStdC3?b%?Br5en;QXK#xh@w}jP=-XIjNWTqWC4c%WBrf8DnGtNsPa| zry5LaNuYKGMq{v(gQPg^@Ox%wPMY_Uyi8#7p5$pXZi4$KVMemC0TUDIB6-+UUc0wq zRrf(E=V_!k2+~{}ymLZ8nOW!zGQt#c1M^*5a-V9cv`X32+*Bz{3&#`4_+opnV(s0` zFTuF%h!J^2OZlsxxMBs&<76H&R7emQ!3{2Mr&5Cz6JCTeoi{JO6tHQ>nTBUovJI!; z!j(D-wbGj6Cd=U@tYAzbP9|kJ-`t=5)1%d(teuQ{zt%Wj*g5!sXQL=_>@6J}*bm5V zEZwqqg%lW$Y$W0{yT7LG=hv5IjzyCdj5;%GNlI<*Y2ySW#GJ=QJrZ==a|qi^%f?c0 zzC5dYGVF!Ap!(c@1rmKtNBRTGvGWyml=iv2d-9e=*eVMjkRbq-h)Vuqe@Jls=J)R) znk|$-uHmniEkSdDU^wQBY=Du~4p&-pfNrKM-nRUaZ-nfXZ-lDXY})wo&>7ab3^s}t zqDnaWlML;L~kYiL09 ztUjOP%E^`m&;PQ(ugM-%I^XjOJI`6a8JDv=Ot__?=hqHnLNdLj%685aqJc24WtZ~B z)-lpHFKAE4PgFg{_VB9luHpm+hf~^r>mA&cV2?^^F_r-6Nk4eZgw48-PH1AbX!Qk z@t~%DQKBTsTubP1ULUq$(-Phel#OF3ByGWUL%8Y88QYpRN8*}EBA9_RXhoSyPe{*H znNv?p1JoOG3&%xv4F;mF|K`J}7_>7Ta~|x87(xtqUajR&7-mQ=3h&M@8}~DkxjCm- z49akYRC=*!Z67Lz+AoVRNGmPy(&G-}XJ0a5+3lcQ2c&;st}NJz*EIC9Ho#B=DDww} zCv87V3XH9)rhNJ@XiD2#r8W}Uyq*_)lbR&O$I{a8p)x;-a>}?xkcVTCapA1sX^x*= z1b6E|p(&#vq5L*eb~~qlf!S4+dPzd}+Tx%mwljW_hqdAJ1PkWGswI*OnM+r2Oyt@a zi~v`=oW6H8ZDsoMJU^rvFya$iy38uBLXFneH)f`~7W%%<7JB68D1h6W!jkX666jwe zZ7%GlCH!iGuxD>WFRW=luxwvmz3^8XkQ)b}+Z|DVy7U(^zk%pDU?qI5dsL}X+ZQKxSBNZOQwYaG!&bKQrmR&|+oO z-iE-?R&q{%ae;HOpOR*yvpWJWaL zmf6pD5%~c5d};4rvBrPN4L{R^+9&Q#qh3+fE}JS>%KWgw+3$7rS6pt!o3P(MV1*w zw%W)RJ%|TANID%vd~YR01p~1?(VzX`Ie@Ucb9=ianm!;2PVn)*M980bAacH&A|Y!A zB6ags_3sS${B;YLd+lMRi+BOX$Xj&YN&X;=s|y_OBwx__snHLZU)UyL*>!nb3qE|8 zZ-)Vup8kA2a)K^D^`jHo2;xtH6C&#G^IO3Ns2~;?cKos$d~)7IEu0#dZcj?&w?>mM zf;T>VcHFkI8ix5A0~hQ-@S#hlbv#J} z2h#OEaTg<46l;OC6yx8F=Nia9Y=a_+9Y{X2B?d!3NFNHTJ1`d<@Li54WPtC(UFg~5 z(9ej9W!Y|e42_)>>{*GKa=y9~&|P*6TSXt`qHGn3M9gQ45>EL~*FU5|4*2avPTtQe z{Tm%$!@gLO;i29qFx$(3i1XA~uNC#qSN##ZA?NNm@H__ldksPJmT-uSQ&MNGOJVVF z4njb|eQ;YobkS7vqKXC0antwCWV@iHs1eSi$xR-JH zPt28Jz;Vig3@&S+L|>R)+g|ur{P$k*OOF=s4Fvtm{2E*U+!b)Nkb?(tQeeCuD*3Mf zRa>jkw~3>Z%cUJQT6l8oV^OYUMYTA=LhC$`F{ZZCy)v8tO8yhZa4mvb9)WT18|J$2 z=Q>af=aGo|_#0H|FDo24@=T;AtQ#U1Y3gELen7U(QqIx_RC@BfAkP~c?ZFzcv$;~ zhsYbk_g%_sGAZVSVWLr~f3&3sl*8HZ6!kCM^nR!@y|-2hBg}kO^96&Wl*uD-0qA2p zE7&vhSLAQjj&7Pf$B(k%`<-jbq@U_l0aX}hpG053qmQf)4AtlB%e$DP)TUwLM#YB&M)P6W{SGnvDtsrs?PGf1OHoS+wPZ*82;yWrTlX^ z{@1a1>%?uEqnic)j~Xnw(nh}Y&t)US1_7b|zlH`>(iAfiP{Yd*Uk&H4T;qg2$5OC; zVk->|9fjTEjM&t6Dw&iD?)Y!p#mvH$i5oVpwX5LubwX%ZYHC0sJ}J7WSWTPIIb?W1 zA?66)?T5hqAeh75%Zw~X)21B)@G9%2=cVWN)o;w_cW)iD;=2H{vo9T0ZROEon1 z{mjcoYm{NGVZz1jszP^0;3WZltJIH!Xm3(U@+Jz~^+Qp#Qg**6o z{gwVaMC>0-1a*)0$rg}DQ@*>1M}Tv4jZ1J&fWOAiv(@Hf>FHQ*;b|%>RDR21SGSU| ztc*qgRGN}4rsSZ}T(m1*OigWcx15NsH8jf&sGYTplMwzsQ9K>zm^+E=o;hos-Nu{c zv+;0kHW+x&>k;WHA`2Sg4?*SUg*XUYDrK(8QWsXB)jUbhZ9tufE!g6jsng!u$dp|C z286L1xkA$;-YiX{`w>iQF5%EpO^O$|cxx*FM_Qb+8u-kMpUElFt1nrnBVu7xqNx7F z`jv`PHkp(?UblL&l$ujSqa*#kVwS~q%^+-QC6|p2_4+w5GV`X6uHnVU&;Rj9GjyeFAf=m5b$;))$sq};WUXm4p z!fC!N15LEJG#n8(!BG@o$(1V%(Q+tuL{uaml{pygxYmlJ^3;)d*O6e@y~;rZwA<=5 zey+67<7Uc_NOpIV+Wd}yU6M`RM!y1)s`O#TicU?r@trzT z$?{ir{~;bdM^CP#MpPB=+Ioy;U?)ciR&dzMe7fUOrmG51k_g z+*9!t9k{hijpT{x5st;1%T>NcIew~fTy|$INX4XCvayyNIK)P0sqxVQZ7)(H&Z&zE zcyYfOy8e!DI)eXI;rOP&V;A#gOSs}-nP`tmeQLbxCGF1~O-8Wo>i^?_k^1^hgz{;? zS9ahvi{5Y87J1roQ;hxj{^skX(;OLH&%ii+S}RM6leYM5F@3~DtEGls5}dKE1d^`u zOB#>=f#G(3rulk-<<{B*sBD69B^7RHz+0e{qRhvNB<}B^arf%96nP646+=M~d&&?~ zpIZoUX73Q^YzfVRjiJ|dp|^vzsqp-s4Q!FS-cOL?uL*mhNSwH9C*=4;W5S40ia_?8 zkWl&p-iIs6T`tLf(x%1_LFLJ6uPV7MY;8+CQeYkTnRMt~S!HddXgna&a%WHVc+UOVQI?OR-s!!J z+{RWl$YJO%PvbZR3d#jnmG1GR9hiyOGE`Pl>P2@b1}DEQbkANyg6`<@?yJA2>j>p; zq@=qqLoDeJt~&*H@gkydf3tJ2SmAy+D~!TMMvPLrRUA?{6Fn}ZHD*tdzpUtZ4y+!p z70LIGcm^2JHNhWDwp%|(sS0ft+PkzZjDK0-Ja#m^L6i&wl^g~)jOR=s%DhV46|BvZ zv08H@&%Ml#zu>gA;~$=7q`j^cJm-^4$;3qYQT|2`CCoWRg+a=R+0$s=V>M5yw4yPdHJ3u ziaor~RHXWV<05rplJ@SiBF-I~20ORUX{!Q#YUKf;PPyR;xIeiSe$bxgN6!?P(xC!! zLL3myOq!@2GD3i(sd%TFv#dW^U1O)RRn|-{<1;Lc)C@_fcz^WG{KlLhb;MGiE-_h5-M-fd`LfwL08iVQI4%aUlhmY;j`WZ>aLoel!tV8;I~Y==TaX|+L~gj zq3g*lP~nd*N?sZTlhTJNp;_@pZ(!oOQQ6yA`60U{K(+HnnQ76rl@(w-OceTK(l&7| zXxTWfsIS{laobSw+87zTOJi2$jHu*{h-W#)G_|g1*)*P)E`OLW zJgj{IT}=>f2KhBlK^rh+xa|YtE`M_ov~UF}38GQ$)754NLC;dOp!BSXa&Zg|d$s>K zRS~Bu(GBo%B56Ep{lOPBzZG@d4xgq%C?t%k!jas>Q69;k1P^Gi0Ck`_^~G^cE+6%h zf5wH;v>{Tm^#T3ke!>@!Nw?9lH~>F+(43J93^5F~wbQBiA}w!rWoNhtZ(e9AjDF*f zp|uQ=njCY;{7{#FarZ$$UK1(!qh-tWk3DncXm$BxT1+2I<7m678zCYn9lMvFh1V#% ziM9iJB3Zb_=2+H`j}WAH@n_9JbI@RNWDvA$;q4BPVeH&19&Il^`7S`yI^#t!bI=!n zVkp~RH3jr$^3Q0MXX%X10-0iS^2#kWTDE@BSSg05B&yGwH@2HJxh>%;&2_=4=FT(? zsUeV<{xD#_hmij?wI9+sB$m5LIhJfkfPSivda zDxE?QztxqD!q-*D9KiN5!G<`NtDMDpCT9iDDOx-=CZZJoW4J zBR`A9jBdF~=EE-eDKN*a;P(*RtHl=OYKv=NVFfIBcJOf5hf@?{F>wy}`|DSgUSC#e&~@?8LR^+cFz}b_FJD%4v~wXAo`; zM%{BzPG4{J4F#E)%%+ZJ)5p}(v-qGXz{S$i7_Et4uHbu%-27QK6BpZ^r_~j4K zv$?3&Bjv8pspLJpZ)eVXc;75M+<3O>g$;U`1x=7Cb z8Q7h|!o?qbY9ol;x;rFk9+mA#x5{_+5V!Y-{xIHkk;k5SfiG2>AxPz#p-r%a zib`Z1TVY6m*LWhN%JPvgwPI$HKFZ^VcwNG0lgYTa^1DNn4j@okQk;gF~le%{*N4EOq^Bu`^pWh zme6}l9OL_bU4jq9GW58cSUEZC%h%Z-{msjhw$Y(sIdGkZe`~s*qEvO5xpW4~; z$CN{VQpa`o6xFpfRTc3Ml?{rm@9wTIr2S&Zf|w!uXNAW|)YyT-U0y(e``Vo_m87_d z9gglSuc44Flo3VXC`+*xjzK<&s@~}3&*8>ULaexFL;w@+B!!7$arTp7{Cu}0gFQAj zg)CNUBo5goIY$kCQMiRY$hDSSMxZ=Y-Emdkij3I16Tgu*_=TgV(#R&ofF6sEo` zDIFe=$Rthyn_2vf+49pR{9`ee#KJIEOZ!h3n@|8_8gCKbKTn((!?%x$|_tS6nf;M7v{- zPA8yLT#4x`oi!p!X`Bf2$m1j=o1ylN!T}vQQeAzh9;SB%7z;a`g|Ay?9B-x)yWuwJAgtRVSFN!J=yB~w<#1#7 zDS_%maC+njeZxzxYPGyL?B6N8#d0*p95F03Y@e`w>UVeueIvKwF1q=9o&f843%tK^ zwB`FRuR)=L2MVy?)%%REv`N+{!q*s zM}gp}-tBcNE61AAShI)q+k7~28ShLs0YDdL<)KHXtfvFkrfm+n28A|pog^ufXbg6e z`|qg`hMzT14{Fs`Qc-v~dHOPKF&M&hhLvVzP&01SSr(Iprd^6C0&?i#!gAEn<##IV zO2M0&;*T^1BZ=}R9q9@&8ln-D(qb8;lk5$W;OI&P5z-BsC^BqH6u`>! zX6_r>Fa9J(C}k&F9&=N~5?moMy5GZM$_BeinH3Rc#vT2w9Q=fwHS_gC9?{Gw!U^fQ zvaw4|1x4nhN0oTSr_cm)=_UoxSz9RlR>9V*|p?((qQsDd<@6 zo17gq`?|+k0^0Np=9Vv+BzP1@g}~s_DsVN)kuaK)#j0YPLh<2@*xW&;qRoHh=k>Ils1N9?a;bxm{@TMWf=Wxb}uu|UF`J-*sBVY-WAVS z2rX0h1ru6a=IX0jP5$kM2PlY<924-`Oo^iLgTcx65&;Xwu=3>JfGYib2CTHv+TJ^A zAu}&5C>P!?l^S;+dF0mf8sKmo(v;UySJtrtUDNf zAz?+!7P%Vky7Vzqi{B3_DO!)zItTIeK=CTFgBf3Nye*A2@qRsZ%4AHh`W_@|2qeK?!WpCG3v?O}8l{bo;d&BBRlaZ91o@2`pjr@xhumXegI+`!C=2Xu9nm z)i2?0Rs!eiPo_8GqM@z7i+8w=9<$!t?inWt6;7iCH-=vz>Odo~)*p8y;XmM=MSC;5 zAgB-gscq_vOoC@i||jhEx|PQylXRqKnNsW zb%LQoBgBlILJuNge0)*iI&rBQ>a(I8ZqZ>wDHYca;NBM%A%l7YCH9E4v8gWz9w3%? z*dmwa&HE|-?Z1G5AQfsdGcOsT`k#voutQ%n>PQ&~iq<73T$i{YGo|gk?W! zp^Rx^O}!NlxWwi0rnjpp8M;skfuxflV;JGN5@vl~vIAqX-aax96}C%%8+pD%26KECrI~y^O)n6Oky?C-m!2t zMNZT%ym@d?_3<=4RINS3jUSxAN2z1gO{#OnxP98dvOx`6>9YL#({a_=w5DdZcK_$5 zu`8`M$@{jpKa`E5)X54rt)#(f&X4*$bMT~K6b7j46w9IwsJ*qk#=P?g=!D!@wA@{~1DCe-s z`ver8P|*EQlPyk>9lFJaVWcPlx{hI@Fdx% zh4Dj4(nM}bC-iI}C?dacyxy@WWB6J_rq+`-+1)O8O-#x9vciuS$P>MlJ<7RirX~p~ zk^P$iuW4j}H?cjK!|*c0@UlqrlwbuzA)7DA8D~FzpnTzs(rt};S@IX`znSguSonvTwDq z@$cienDyD2ddz*{PWwFEy#<085(sDo`upl-I!L_NMaDhnSfK2*+Tu(Ikg}PYlgrLPDtQ+300tfyMD?JD!W52yB6yDYcg}Y|B$DZb^$N69iF@ZzdQt$ zLQqu}0;1@jMMMBNzGVp^~_whp0Cm3V3@`e-hX~j?=0SP z0KfAO<26bV~y3v@EJt!dt;*xPUqI%Hs)euRMSs+)`<2)(FDqb!L(BC#(cy;qvmzw^lHBwpk}&{N4X8=& zMozWGi4_Ph9lvr^0b%9kWWMFwt2`ZgprKIhKBAzzh(l}Bbu`RgbLQ&!oG-y zuqKB{ByFu9j#HG5^RJglV**JGEuh_ai*<|YL$8-N^NdckW}x>FIAqVF?@L8*lg!kr z*7NA8MB$^e8?qf$vbC)u?ljFO1jNczIk#q7g`57S{iT(52+2(N-nUElN3HiU(rFwA z6FQe# z>Dflvk5#c^(|kVRB2S1qW!^l$1a%)LSS4Z{p0q+sbhpGDsU@pwjUG9fmMG*ifmeQri~tv^~CU1k2JS-_?``k=Bl zuOa?IQ%s}yX=SFXHww#qz{nS7Q;Am4f3U$_&4<-~Au#Hz2kO zUwPI@4SW~h$f7I|0 zPw#a8F$tt?_s?pUwzNZ}VesD-73S3_h)VwOuQufkC!c6Zc-oL~24)niMI`e`@#Ihz z%+?GmowzYE*Q3Io(~BBFx{xlnWXUqG5Brm&fMZv?oa0`quL@zwUr-iNI1j8ewfkcRE zCy0kOy5M(t680Xd-{1fLJ(n9N=lTpIFPMS=(1A>eGyGu`eGxhdz0yKBrSDz&s#C zzx$_(nMp`J827>!Bd(6wA+@6#@W@Gav=A0zOf9<~3?LAU6m>#oJQoBY9F#Egl^q>Z zV>?6xWZp?(ARVe0zb(NMD*aPf)Y?!A14MzHQF7Wi-rugB1RwMI1V+N0|LubGiE zuihX#bD~{=4&|PpyQ=r}*{by_vc2@t*{F#su(_&t1Q5Gwcl;2$8h2no2!)B)g2<)U zgy=FeKC;6xRAQm1j8daGbGI>Od>Ddzv{)OutG1eKqb{7G{j=AI{cc`|bbHE*u2lL0 zr@zZb1S%f~_hdyL@(Nq@LXlFM{MH$Ri*BC&9gjlF)HPzvIrqw6kbdKT~?(#&B^U5&<-l zYpC>)7PvS4PpZ}E)}y%CQ>F-vvRVoywnGKCqZ>7%BxYRpqjc-`)xT5nZ+LUroQ)R} z?$KaortD2hZPrS2&G@`{y9V#L*zq1?jgZP>P|v16ZT;=#11@>_2IHqc2a`z#9VXY+ zwM99tk3*D{PZ+d;Ef2N9t;~)D+b*?!Su?qyr|Oltw~vhGb!C>j3i7GW01Wu$y#clJoJ$s&HY~ zM|?3OHQhOEqLp3}sW|hDSC(s0P6%y>{J5dag+{7u9wynqh#Ze?U7)<82sq?Nic7#v0`t~j`(Q)hVzzMnCw>>R_z znZmzi1_#6zy6Fxv5Yp~k5NPhsD!C-`!UCfWEMF=7OZHbi)ke(_`UV`#KIMlnKJ|x) zM45>Ci84Nb(R-0Oa~=g#1dF-DM z4&$#?|MVI;1mM^u?l%eQ&A=A08oX0IGo{}aAddw=U3Y$$Lvl?i!fm)2=xtcSIdk18 z%9)LS*;HdcLa0)7bbh8jr#qxaa5w~D)PXS>RWt!{tLPj$33*!?%Vr;SQaURwBjJsC z7DIIo7GPj>irfGuJvPfqZ9D3ucd%+YZ#;Fc)#b7KH|!@*zNuJlCTas!>!<7Um2YD{ z6obF*ZfIt+(j2@>#v!n7WXx>GXlue!5t5~gg9B_DT2*P(t#xIdHni~~R_e4;=B3}e zCuD(zS~S|I9Mz6WD)So`b@l1YoGPPVUYHNC44W5w%75`z#=+IpBw#KpSyXj6R+mwl zFgNuHkVKK_T?~8Mn|U(YAV8-cH>7ov7e6ne(W-Q3FD`oW7FJ-2q-FndGZ(4z zi^CdzpPuHzBda7aI8>+;=B!?~OIByFSxW->udXqP+{Bw&3Af-a7G~RzvZkAdjY$I_ zd+n(e%<0F;|DAp(k-gv>x#x^Z1eD>+DdnT7IfTdy&E?-42DeMQ1k8O_Z^NvoM{S3vK&2+$@W9#j zgK*6ml?&4Ta?`4oXqK_?Tn3SU2m$%ldwMq}B_hTf2FePsum*S-VYnNUxhJ6AQc8Dq zu#7JtcR1oD><$I*#DaSjB%uLc5)cqOUWwOVp;g|fjku)D`NZt`MA-5uKo}Jd`ONB+ z-9s8zseOVP+h9UL=q2K+?y$`r<3FPl=Ux`$WEpSE@)eyHP| zRGFpMr5Zl((+h~i#v>AV!VsBO`{!QEO_NUaW`g_fC2P`2=GU)gNd5(Swr8pKQf&>n zlWtA9&lBCC=@D-+b{cyAbaj4BH9t19RbW%BBFVjb8AkghNt_EU9(W&&pKu6M!kKG{ z_}oBZcW`NI^K%x*4OVS4GPxcOU}n<5ii3kzElOQWKrI|8B-6AKgDaniCn z4Z^z@tVDE@4e89k1-MDD8YI9e`ypcF?nhcRi?-o4GEO~+&e#8G z<0_z{+@keJBi%4`mvl->BSVOETBNjej$)YQN` zc;@{}l4+LcU-0q13v+_glu}|TX*lYQ7d*pX|C2QPJJMc<0syjL zNjX7C>Kk&%upTmGFcYb~*17Ew=5L6ei*@W5*m=@!97vEWJ9rvQszq=oJKHlVU8>O? zKF^>rCKzq}G=Of{B{yW1L5XaZ+3vZm?qfU)8kGpsFC#rcdJ3S_VgJlb#Q11Wo)GU0 zUQ`D0Xn~8PK~kHBLoMtkVICl8vWAO;XJg^%x$uUEY3-=^-F3G(`~~NNN(x>8I*&JY zDB+rFv>mf|4!FLgBb}yQIi+(xm!Z_J|G9o^nG5VzONS&GltLg2H+!Uyo7`rHCBn z&L_f{DAJAhgM_`3n>T*W7wpU4((}cf068RDm&x4snBMcyZX(ajAJyJYmG7}yT`Kg$ zlkiZSry5li!6x7LHDOit1tx0itzA%nFJ?q0TRcd&6XDM9TVJ9U z$W$FfWMNa@xt_@2CkatPrS>fLI}N(XMuqX=WI9F+Zhr`q?R&G$mK8F?{}6sQD8iBd&Ec2$cZJ&`u+hFnR&cfA=<8&#yCa%(g_RZ;sK zFgq^UDj|{{oj1d9Qm&s4+CL}UoL}2u{89O? z&g?Lp;o`Q<95L{SAJu?yt43F6$v^Ei;2NADW_!rmV1vaZ=m(Fxuk%aDT4%eAO1o9= zP?bcBpuyMK*h8!J{Lm9oyakKiX#a-*PZggg{tb$F^bsC^hwQ%bje6_Qp*<>cqn%*l zR_+>47*S;Xl#5f?UpZKJ;}q{=~~~`RQ6e_&x_hi&Wwkk`!#ZIQJAK>RUF^u4TH| zdum|yMw$c-f!X*s6#3uQ__-LV6A2t6t&>y}+v}VwOVxq#S^Iq;frAg)AFc)>^pK&2 zLwcay=rR5?B$+1v<_5Ba2i>5d4uBfI0`3rsv)O43(;85zm_K&$`^-va{`Mv$}b{A>QkxRMM|LqD=)UCw}I>n8t5~Vhc#EgijLoLhX z+Az)S3Jf_UYnsLYcRF;r`m`iNS^4m{*S1g2#b^vli+X@ges)glgUy=z4bIR(Kd!co zM@$}0JZt1Pg^Loo5bx5uGoAm?J~sKNgAvB&~56lGL&W)&>BAHRJ*hZ1D> z!vyu$vT)b=*6b!j^|`WKm;PNKt&eEnw3Ot}*sy&!8 zpv@aLD|Z%R^ViV6O)0Xcbel5K1Tm(Ci8+qP zXM}FQqFxoxRN%ewR?1Rsdd5gZ#>m6|8Y;yu&RkVs)`-1+9D5!MbclsdOMA{=C7oMD zpGJ{FD&wsZCOZ#iqBt$fLBW=dG(Oc|jA-EoUB5JdBUqF`l1k6kEHX!Ux^H3DEyE%dA?he-hY%aJ%8QY0V|tPJQ`g-Zh+~y5%_Wn&V=BZ-vS8J98F- zd$XpZR8zlHcsh*~J+l4Le~Q%a?;Q3%4*$I+X!Xg1yT9oBXI2oI;sO9&EC2w*--|vH zB-tMYjOL;~QEA9}EC_+X(?tS&MQE^k-$el=KOS;RtA9b@LKdF*@f7#+pID$n{k!lfd9@N*%9c8I6`6I#<=)8J6W(<5H9-Z4*)sxBS} z@MF%9HQX?eW8T{{ySR$=pQt^-k1y39`?4$xtBI9Mt5jM$Q6#t9uc@UR=|c(aE4z*z zbo-9^3{&jFl>1#$l`9+MKM`6qNM|2+J_b3~y)Yp>t_4nQJCt(jciDUBGip9nF^Rr5 z%a(uoN{ndJgSt3kK?e9LQEta2^Yad$H8^6Q1*dkV+d}#P!Lc>J&w=~q7k+ky8LNRMduTz+> zVuw)yN?@UxK~HFB0r6O@2K4AP-5l{}q;@OE$Z%zz_g%EAVbxqpMLh2&gKY;McY}S7 zmXui&J~1yELYu6G$7(?Bv+a=vZ`?mrl7#7ubk&el^I}S@bY{oxyk@Z_#^fQGKz_&d zsmjzM-Rk{g_gt$mJymz!EIU8*3gA<5;;>HA`YOp{OrAM7r2c|Q`SCvBR1J^u#~A~Y z@xF)K%Z)QD)m-AA~n#Va_!{F$34$J#W zo%(#u1UoYV!yaCix2*LA!oBa*fsT#SsPS`Mul2r%I?I%{ug8^#>?Tw5%xN0)XxDJ# zTIIhFiD#qE&wGkrps;IY%xO8@$F2{TglNKqKdnJIXH`iz(Ahy+0?(JU%rOAQuhNF9 z=1;3PeZ*(NBAqGojb!1g5Ce8_YA16kNiyd}ClQ6l=}8ej**CyPM_vWR>eFZL#LhWJ z5`y^ADuH!ERk|aUk|?UIwBJn3pd=W52OTNG3lx4pHL*7~Ri@G&&lQUO6lgfa-6ML( zm_e~WzFLx5c8*%A27^KI&uqax78Dn#t(cYoXuq?7Uhl^aiXSlwVoWLG=20l!TZ)WBQIIikB|AZ)x4*q;*cpp30Nof)*N!asSdVIK|PoXDx z0tfWf?%*CN90`8c`ZSI#`o{$0d-X4@BCL)FB|8qL%1Vd?A5xA_X7u+2DR0JnKe(pM602hZiGJMy1cR*XX?lUgkX^7HgO2^tZv;+>?~F z33ZT3P;EyI|4h=6_7Y4?>_9YcH7rp#mclV?g)}eW%pIok({O^|U^louD|-4($grUG zFjh@}N_ztyrP~X!a{x9nze_5KMK^=pitr{AnzMPs?2>iUXiDG~SJp~uxUa-+WEb$2 z@gc$j5%TT{T%!#dD#?0tV;!KKKE`|rFLp*Ri|Gq`%|kY zuHF7t>DF>+OF7rf(#8dn@AaiCN?cLH2^<`=rv4K&bTMjk!7h?8J}=eHW^Wq$LRt8k zsyJ%=dINI70yTfZ_Z;p!ojh6HCiuwjI!#behDQzNd}ydFE7gMuIfCMv%@3>TNZ)S{ z*b3ru@aySIa4wdX>+LYxs-_d0o4Ow@r6X!ChT{YcGi#qV$8jXF*h zNdtRJ1#vMQi3H@@?0AR+(x7`L#Ir$22_Xry%cUlM+UQ5jW$NX|vg?dU1$!Q0uLLeI zRE;EivohWJ9St=|;T9W7)f$7@68aS|ydXFYY5}2OdVS16@+h;O4PQj5GQoLJo9)W{ zCDhyeEW23_136gbSeDD##a3vu_ifE(;;n5f{snJL=JJx~k94`qtu6AG9JdWy;hlxy z5?H8bb`7>E1w%qP8am=`!)##Rx*w*ggngpLBzU_~kIhz>>Pj4Jsp=>+$`}H zWt=#GGt+j@xTz@(XBE!1N?a%FH0ZoP;}7=d?3Mt}wCW*kgGm=z?D} zXWa!Xn72Dk@vR#n*A$nH`65KHcu8(@u36hCx7s^vq#7ipQ!lZ==;RQWs!b>{YCxsU z)${&WgA#Az$hW9H24t?u zS-KD(af;{j^B^(}%4w5M)l>AG;#mT<9$enzfC5{+1_OU)^avtU0qM5q$Uj*7*7&1C zz+OfCxdVev!J^qM%J66!qqVk4w6Qa3kwt^25|Mhbm>56TsO<#aZ4RhNn-P}L4Jq(# z_?OJQ*u+~x-b#BXl^f{m6G~Q1`C8V5CdF#_xIo*UH`Zfs=L=)#B_=;f*4KvFLTlrs zNO;I;mUcJoBh==Laf{%zBZ(WK>#)v{A~3nw8EbC~nuHq)`lFpK4raVWZg;BhB890% z#1+6jBPFto_R#r`>lPoCObe42!fCYnMfuy@CV`r|N6AOd{`f^Q6MLQ?RmoYpWS8;@ ztgE;!jW~*{iP#*L^pn>FSi%x+zM;g9zU}l;&8K(7!b8|>^P3E{)u=vJk#`Gh4h9eF zRQSe!>VfgBxX5zISs!$q$V@bo|FVnJy7kRt`{FL9dM8-Rx^fOn63&Dl#2i|1)sD2A z>4>|=heuV%R2cpgEhL@`DGrY|V-Cx(-x51PPe|O)M*f7KkBnEq50M*DezKFPUow{9 z#(Y3rJIoi~H{Zy+LVN^Rm6T`D4FDg&mE@->GHMhbjd73q4XHpsdF_|HJy*{=896Tlwq9{-FwdGBZ65{9xvUzvTVS^7eE#N z#W5*UiWSD2q&8Gh-XrYw^RWyD9iiG~l*N$c6$+sp>@eiaMfeqFQQpd~o%6F{UhLgR ztqw9Tw$9f$_EXFA8~KfKm`qR#e@xw6tT#y(vbCn6mE@?i34uoHL{VRsoVqtK*Y(Qf z?s5`%*O83}G8ZSq9jbSRXv2ZifW?-x2Ycy#WYPn~%j-(=>N6wts0)1YY2&zGu34^f zABUO{4sNGTON!J74n{h?4;wnzNqriaGkgHDCdwOrM3OYSlsm}QM*z_fmp(3Ky@~St zmNUYmvyB?<7Q8+ea9iuKHr_91#_Z7hTuXopR{n~W8H2smXM79{_YeV>rv?5%rc2Ui zNeX`nSPbJ0=O0n;aA7l0CK@5s1!+YDfoIKG9o2XYl-L~bbmU7lrFBR}L3<~-h+Fj) zVO~gi=S->@O6=36@g>QEzLXD`7X+_y{A!kxYwfcCDummT3Z$u z3(p~2c5ZNuauJr?SrR<$N&f8oP$YA;&7BjvEi$P=aeso^;rIFRrxMoIX<7=!V`C{} zDZY)9fzaDWlWw@p7MD-mkVLV*9t)Rra6LaIbLPexaYwjXo@@a(%UF}kMJunrQl%6{ zPB>@el2sK=jx6NwX#9AG>c-_QWY0xIQv9`+I?ED(V!2dDsz9ay&(4OZj||mWLw{?> zp*^?J@|H5{mOcToKD9QWRLO_5u_C3ZA$3K%a#mxH`6qrYrKAF(tI3oLeD7RdZ>tm0 zkKwCZijD&gIL`|3r`*&wBs`#AWJ^@152rVU?uWJUYh!q>r-+jbRB>2UaR~JT(s~#i z1>TgC?L(wX0wd0NH+-meuia(j=)kaKS<6q{D?+n5^=D(t$&4lKd?_w*hOOV6DP2`r;Y_g{!pHvv>)lpV{1X~yt9 zLfmoNY6u9%Z#o7vVln0qf^Z3d!T z>U+g`NsG(kUR>&2q4L^}ST-TgEXZ2#?jm00D)2mye`;nW3XUE<-T-LmO>%IW9J|nV zu8L-4vUBtYU2Vjer6L=Qt7x^vnKZgTzqD9m1M8QU6@0GBB4XebRgE2YVW7yG0}S5$ zIDPbVS2tq=uIvUSsS>Fr^W~`Ki8lj{JzWOjaPcFGUzjPbl+TWnnGk=WeVw&2d+M3e zP>L{v@WT3*^_KMPhn)DMD?t`;m}7?9L3WEz%xeIl^8g!f76DE=1$q2)0r*w0~(L$pdie^MV-JnJKr@k7rcqQf>(^v_8-< zE(R)I9>7kA`)i8O5;}<|X_#tdLqjO8DBpbQ`~_-u*52)7AB7VAYE}I(cu4n)@^%FL zh6_uId-pVZyf8=i8+MquuhYp3eC>TPN$V*dbxmSnj})Tj<8F)6U>O3o%?i~4jUHU)cBs&I@S^HIT9!PIf>5< zr8QC<%b1A=o*`8T)Y)$WW`=z47%BvaeXYrdPsnZd#s9-Te*Y8;Iri{xit9Rl@vpQ1 ztwi{f*osMm`uXhRf?l1Pso7VIN9eE5GE z)gi7`JpWLtLn^9-{!pd=tYZHo&{gyO5e%wD{|HIdN~r&^s6$Sw&HpsNsR6<{AwW`| z5I}Mfu(1D+pHf)=YsCA02qF-2Q-l6T54{!$hm3OHE?WD9>bKH{v02S76(7?1;U z+4v{e2do?qfX;&V7GGc@L-gu__g4Qsvj{t~_y8Osbq`h&A^K;|{w@0k0B9b7gO%^W z)w2K33Q{)!;T$yX``HOGAg>ze?ma&!v3p?5OY0u|r{WIx9{f-G90sI)0G@mW@zSJ! z^51>)`{(pe`W%+|g|U4c<%R+! z?%%BMzA(yc(Fe+SX7|9Nc611`FE%8v4gFqWlNRHr94u@QOo{7(!msx*1u{s}n?FnP z+qyWB*{^O`>N*g{eEiV*SIc|rdhf^}EiHe?de;nut9H0=hb6!vQY~cn9@pMZFfPNq zS;Gv8Kkzv1d=E~xruf&$a0?KQ$o)PNlvd(<0}pcS4-D*m{KuPlEBQV6-)uYV+57|W zwhtuCl?gJ~`ZwH#Rv=tkFy#89$iGWrsa2%_3l#x2o3am-qeJgK`L}W1dwGxncmS0C z3pD9HcMsDc>c zKgKgu{~h0${xc@ig6^aK&x3f~=QvC-5D+H_5D>BCL-Wl`Z9}Q_k^5|FVQpT*I<~O@6jiFnVhfWA~cpbwDey5Omo8}R`qu^m;40f<#rCnGN zYrVyyBzyOw`J^8Fb}rvPWfkv$1trWxbNm8juALF2Z#FGl=oV_Tu?X(>;7aj;)mc(0R%qxA`iMX>x@g+!@sITZ zah+OaFgrbxY$2o%=1v*q*pq&euQ`PrlR<^eF&Y&^rvr%7@=BLGs;Lvn6PTI(&5mu= zrp8804qaJ?lpm`_y#PI;C5`Y8PN&Qoc>`Q=y`acyvqbs7VE-Hm{{L~eM57ok8U|768URzSi7CT%$^3!#KrCUYqeaLyGnFq{b$ z#_3){b$}?Vr*Pnx2q}x`MrKb*$6V2_C*J%VQ4JIe8G%F|5GAo#Q^=;ri-ez_nVS=Q z^1j{!27H12eH|j1K*k>Gd2GFGTZIeh z)DxgiTz~NQtYy_%_TvOxuMhH8FI%#H*8LJ}0!zXX&q{fGPF0|cJLucRZ{Dz z_|~PfA-IdWL$w6d_zN1;peYa@W|z?C@U{FkUTDqlc8jJfQny!O1WYLnBKBI{+;ZYk zh2KbA9iI$dg~2^35&sa}W&gWU2#1TIMy;Y+M2Sor*!um+#&u$X4xP)|jVBEFmWBKV z8o{cx;7HK$WOy??jElaCz}|{O{2aV6 zs7?|w5^M(}><}qTPG|={DLg51Oa z(MboD=$%krv5^a^A|te#A@L3Wf44eie*){1f4dmYzb*0yNHYMH1oFRLI*Y9i{U0xV z-#LoBM*;!KB~Jc9Oa;_}^}{%G2P*o`*s#O6kuaQUnZmlsZfhCY>0?uL#h`c%{*>HI z#O~=Po1Y63yXJCsa45GC3 zg0#%Q=J9?Lu^Q$WFn}*&$mN*0=x%xFu>%*=3cn+HFetZr~7sFm5?f!GXd?hxkD)oFn{_ z@&?|)jf)ZV^J%W|?r8Ukt7n4a3FF5$S@90sojKgg%iSFz5uaO=qtW%kU|`;ZC^*?L zm1H+Efl(DcUv2IpkBN>+m+4Gf%*Zog8KBpK)Y=yIPXngx1!!L^4GQ}_rAZm4xsITf z&N9Jr8W1z~g20l&-a?|C2kQ6Im5ZN5v!XjyvX38WnXVjOGy(SPUa+X`^TwnWt#!`g z8y<77uZxNzWq3;n2LlFAl=6B1DQLpe9XncBZ+vC@!_8=KpPhVoW>2q$nxzi675Vdl znx9BJlC>7bpUh;P>jn#)$K1T<&GH!X<;|j;QD9RewitqfPM5`%zr>P7S8GLvQkEAS4UM#%sw%Q+WmAbhV-X{v zd|;xfbf}|cRo3c_p9!=)dfSa1J$W$2KK)-!YdO+ftOHryzqWHsPTZn3qjY{FRk7 zJ4?mT?hKb<7E5tiH1DO9@h<_(QMUhn@O})%ynvN8uqENFMtM4g_)Z#!IUQ|&;AEO} zA}Wsp85K&RiEAU-J>1oV7&J}8W^A?iLpO-g0y)EZLHi)!IqRV#P3TM2d8j3900`3w zHO8JK83VCI*7C~6K@b{b;i8qCT&m1pCL5wFP9GX8!*Wu>FcHnf@iTZ*RcUSsw57^) zRHd1UcEqo8gd2Rykvi(y&+`2_#D3QN@4-5*Brl4{-zHLKNXwZLyM~32MZ!*J=%qy|L{ezS(|DW!;;-><0fg% zYac^(Q73PIhlQ1WuR!h9X(B?cy-4+qgcZRo!7gL?+jhg>N8v1z)}yeK1mLi##Z=ac zenI7h|4oy8X?{Vz+6DY`k4(SVeATn^?+h8JT#buiH(`q8JCJU?F71gzht$Iqr3-;5 zn(bm2rZ<{xroREHcgNtgkBkl)w)M5*{6B?7F8OKu)1gT``ZVB>EBWN+i9b#fJbt7$ z#CGJ#tH{0WUMwJ;X;$5zh5?UHomN(o4??WNotYZg$xv6(T-PlwlG|vQw+L_Za|go- z5w|S7;3ny6=53Na>==6}x*h8X#2LqdW`}HL>VyZ%sGp3f$dA~|54LcLr@0XDtoT4r zvi?< zM2nJ{NmXZb@7-qGairAvC)h$4l@niWRWFefX+l-5s-^Uji4{iv{8D_vWqYesn(Tv2 zy&VL_Obtz~6Pi4Y4-9PLmwcu7mZ`S~{fU85St`ayahII#GMAVmQcDrs<^hY1rK%!> zJRvAYDGu_H!zAq)wMn|N}Qm8qQ02+w!N5HUlxqoLW^-cC<24j zn9)uy^lV1$o!$U1C=}y$z5Lk;SMvz`XQ2t@7CLnWE!BnwSLq{;K=mViaUG52&Sv!^ zcR>CW@_jIEzoC+nYRlmOPZApD2T7=4!6P&zH}X?B3x}ZwAy8d_>DF6}x=#NxEitG| zJDq6wL-sHcIXXDO#h`c%5TJGve@_4>SoV1I88St55>K*PpUdb3IXNShQ+Vpo`{3(7 zwiYM))DuA$t%r^a4OO!DiDZaGy)9d}2~#>&R;n0&|8i``<4uN~@A;Bbp+{QjN-zzV zO}8n0J>5qS1>AKPrfUhr{#9S<=)EIeZ;N!Ez(}Qv$r#`v$;2gvZBFZ9@D-YJ5~_}m zYDE6$h?T=+Q1C>o>nTIeLz25KM@zL4-aGNE!9-?;7}J z74KgWWplEH)*HN~Gg7bSN&FEui|1%xIKs|59Vfrzxqwoga6vCNu&l-)&|rvVmt#df zbq@3{{T?EqjBWTgkMk#an1E?Y3V7?VSUz1X#nYrV!ukHJxFG3Un@cRY$>5^ejLCHQ zlRSPjpB;2**0d&f&GDc17FC++s1_(r5`88SOD_0~9gb_K;vxq-optZ>dNFFLx-$J& zW*k3X&VdC_UR%DRD0;6DDOxjq4O91^s$?LLC)vA+t*>T!2NF>wklreB@#etCDP0um z&C>#JOdM!&+Ho?VqB0>|RlEQ%i+gMbjuTBcWW?rfhGXVuq(=q6{OE6%BPAClZAMJHN2`JoLqqS}5RoOZU`z zRO#ud#6(G8n?sSVyT?k?{o{u=<|BiOcnSA0ytgh^g-c$QLHXr8Q=%pMrUY#{<;04d zZN;xd%Y0cux_OVRQtpZUVk92PJMd7K9H8G%0g%pWlE2Uw#^(Ox>^1|O<>+}{*^oy;L5X3LCL;j% zl%)bLQ9C$eI}BqXbYvm8qyRXmXW8(FB;%7A`>!QRwc>Jc0f*!~v57$VgKI?g87eE& z@}CR!>rc$0GhU}?E|0J&r#^zgdvdui6!wMk^YVcQu-f8$s5_939ptL~u;}iAZ`S8# zrw7*cKNx@UPxCw_6nWnR=&oMd&zs}6s?TkopRgmt3`6Bqk^Y4t^5ei0WxrIZPc=fX zM5w&tx0z*MXkA+9GwX_D>qqbW7ryLS+*G7^NvVJ*EyRyYko=Nld3-qQUE0TCCLZZl zu>e}>rw{rP45M2c=b%D@o%;mKy{=Ww{G#k^0=w3_EjTBJ1k3XFu|MP=eDis4QUyj= zQVJ2VKVV4k0T3loRuw=Ad^TdVEL6za_gy#$s@#^7;U1BGxqh(5X;i#?Q9Cau3v~ay zIxfHs)Y{+rzDt;4yj^Pv)XPwJ%W^DcFM`=fqfJ*;LD3;`@A=;ti$06E0O$}mnX z$f*6#VFIUL&RiF4HD*I1n7^To^23edpBhFXpYwl;v*1+Z-Iifl5w`KiJ+=rj@mRl^ ztj1wol)CBk!ZZNkuQdww#eTmDg-Koj2KKTUQ2DjSSvhjGh{kh-N(zT$4G|F93$m;e zb9WV$y=}A0p{f-1`hNTWG)5ElW6{*znd$%eYEIoPWjjcU(DXu_0}2*lA#PV-SZe4h zW>>%@3_AIVcfNMPNo>M>_!p5X(?VPiP_S3RRIa=o&#wZkO+Cd-Q3uu){3ZypeT3^0 z=})z&SkPSJP(E)jUHN%@w{TY`?NN}xb(66cZgK0{!(@@c-u0%^s}qkpIb<2gQk}ME_;ft(eL2TueYMPb0iv zIN!Nsl1(no5q6dbKVd+5o6K2dr9`awz{(7?6jZ|7F0{MWvCMM0a#_x$bgi@)?4_|5 zAPFuUtRfLRgk-lCmU`b9cYGJ*Km0u{FG}>5?!))G-*!2HdtQnG*OSnMU`};ta7U{@ z3;=`G#TA3LLmdoJI`}angSJ5PGk4=2fgsM1hcRl0aRTL)gE?x`{908O;X!EZGgz(`G zsvzX(xpyKLm)xnfi!j`mjgS@6DNS z=#>2chS7&t?-CGuY7IT*Ozb>MYpv!jj#f_NX^CG1!(^hvy=29va3+7dTXu9THKyg= z%Iu~mq^O^A-Ty?hz9 zm*iRPGd&I)VFpSKBdzsTcpGyEO9J*aOse)AO>9lOrED__+R<3PY;=<0VNo7^R_S8g zbq-T!FM1Mqo-k+Sv)c-$B7<20%US0+4J~pSciX1c|K3fd>V)wj(1KONZ#~&_Xy~=|Wfo&RO{`kmkv`W-9lb+k%oV92CZX&NG zgXgsZ+>+_X4E(@)ZJ&5$Be*y$@d?anB`29HTuotxcHZ`wXXyqwi$$6ABYlC$Gz999 z2Zph|rPdg-rEL@Q%s9XmVXn+_R;^{5HG&=iX!eqwZo7;Ex0GGpR#{M&oVJ$#>I%zn zpO`&24I5;8M51Zw#ip7xy7zCF8D&pjf9ySr6)Lx_cxd3@zJfR=t(C1m4-MWb!9?Va zdaWjb?wfGZ?-FFQ=0HpRGV5gl2El?z$t()$$Y7G$EMihbP#&w0gDABHKhjV*+;Q+@ zqH+mvd1HwVv-E7$XK&DhC(=Q${2iYfXWO7_^R;zQqef#~Y%dnsm1JXN1cTtJI2$LRFX5wEpe&q8Xa06S_xVU0yfDs@#s8~sV zMAyVvTTuOuL#X-SvR!d_R#X>cqSZ{L{wYEoKofr1Dj^`A;hz4Y>2iM+1)hGy>2j~j zZ3T0l5mK>5Z^4R$u%vzH3x?7>Lj&E2Ghy>PcX%RamJjN}QD{42{R_Q{H7gK!g z+}4ae?^;LfD?t}3KXCF1KuegHtKUz+K83co&ayC#u$E#HuDPm-S7FYdr@eZ~wl@Cq z%`0VaW=OB(qtV@3LM6&wf%ox?Pn;bae*t!sDrR<9HW+1f#=SdfSgs$923cl3a~QA? zSe}p@=EEG_1?>u|ZIiw;y~PtR6xIs3U(G&k{PU~Z64sVY9KxU=Eavb%=<8JfN+)beQosFPYAAFgLj3TU=L3FK zThtvi-pt#kI`^rLLRxnA7NzN{sB~!721SGWRDRDnMGJOhazMT~RvD^Q^l@OdYY1S3 zR25#jq#l}=+ajv{Qi36^!z3{eps(%5qqy-PyJL}n{|fazOa%Bvk3=$MElN*stNKL! zQkJ9Tuap&MO!1A2ugtl5{j-Eu^$BEgpiL~_o{>%t1g&h9Cmn&Yo|9D+ek^g2t~Xb5 z8sRuA>N&86e9LIpFkNU?9pnzE+)2(#U8<+K>})YG))>7Ca8`fhVZyj*^rL8p>g&%z zfaM|DGT>>cHsS@U8zS*nor+lY`4$N(5+>9qq`bN z<<1YfPCoF}K{4m+4Mb^En>JVA$c~)O60=2bHsZ`UW(&VJkaM>fy zA$_1R)PTjLo8iIms!fitkpex9Hs~+MOcob{wSI6gC3YcSB47&8`=AG2UNXm<;)S*> z&m!e-mYikzb=r{36KmEsrQx@3ck(g^`$QRtEtcaC9*X@z9YM2~Tu6{26gI_+?IQTI zwRtD1dT2m6Z#2o4#*^P@&LVI6fuJFGq~=+_v7>u&oqKwldwV;Y+Y4mf?p43t&79l4 z6tyzIa^Vx)dg+npGbGFso*sT%IBY&n9bSCtgfE`}>Z1(V&<}ZAjeH>7LvkTvC7qIz zH>4S26(e84Jo)GaBOdpspfL{4u19n?Ob%Xvkvg%aiHs{ukz!^HlmxHuAbCVRQADa7 z`N2j#z0Y#uNWvO~`2k(pvN~E`(QDY_O*)f_--?WJVQ+uv66N9mM3{F+#bqNx+fapmKb?W%Ws1rg@NlvOA`qQ;yrN}kNj8RTZ=dizn! zQ_rIgRp}Cu$#qzvrjME@(_iE#y@)qr@fq<$B1HCl=h4kYbN5`RYDyn3C_O~yps^O>nLO-aB!SFI} zUP$gf{53Qmf(_7#A5Nj3x)?RJy(4@qz=Y&Lmpgiw8LY>1DJ;6s-MN6ki$g)PZ zc5l{eVac>HSZ)el{f$e*rZKo2p$JPq;CYm=etm(U zPy-V>oX>~P1HZ~$f*6YA2$e70488ILU^3Dm96?d7uqyzaAz{bRjI6DgF`dSZ9;t1T z!?(EGh=2+|pna!?cARzx?zbm+k0{%Ubr*hW{wQfrdyFlTfm3|Jm|BznOk#^{ghk|8 z-BWqASnmd8<(91*Ua^lhCa5y()+(JG+6!Q1%i?D9$HLX3{niwK{J+6x+)&Cr>A#RO z6cYr576b&u(Z!O<(#6=!&YUSZ9|9)%dK3$os|D+YJ`VVTo;L9Ag(AbV6K(+f*axSV z5<#;QF|mWT3$eFrxJpQ?D;?EHXo+h%lu9ns^eOjTKDEl?uwL#aw>Rf>5ScHLzx&g7 z_uO~a@_jASM9(n3hMe(hrsret?=C{T;Ku?PNL$nkt;aqlK=M>(aWJJoB$&*K*T|SmXj!1DBkBm8uponiBR+2x^kMq`9?C-AiR^K2FL=nXvlgsZXRR-^5m)mKzNtzR|Q6`CbQK9>$GMG{{@Fd&G< z+1BStX6v*Tk4@1-RZ1$eevy#YWiF;tg#y+vq_E;gL;22l=_!hpG!1hg2GR~&9AXC^ z2ilK9ODLAnlL_Qls)H;f^GYC$<}?<$g~H2bE0*lzPui-8H?SoZ8v-|@#)9ClR1~4F zh(mWw$4aZ4EG~GBLzdH|E3Vwnj~?)>P@q)TI)?8aiu zrphX&AE;&0O_2i8&w&^e)+IA;EOu_?Ql{t5fdKD~-{`E?)7q!X_ACUk;u0|psJV@g zW*mNnDOjyJTi+Cy)x~Wn3fT4Zlf_8Vb;bxsxNi8%31OuqU{R=CntrzL9DSnV(XqnW zPlmCsZmwA=+2t21hsz6A=<$Kr9AmavwLU#%!=`!j8ed*SrccPl z`8EF9J;F9M!`t|1*;Fp}YVF0X+Ehey2L;7W{_(wKU@YTEx0ZnlCe;#EaoR2QAFR*R zLFIF$s;iu9EntNb+N&enSKR^8dwCd8n(0e7>Xm4F!pEIKKgSNULdWe``ZK-LUm#VZ z5Jn_|B8qxBL^6f0NCZ9Vp0-E@y{e+9cP>ef?M1{ZrUYGs&Ec4nrgH&9xi+#?MQt9{ zrXte3NW#c6K2It`gVDq(c= zdu1$6T$!8AI~TQ$tx@ltd|XF@261S*h1 zw?9koe73klJ5$4z-ub%UEQD}kv#A|5qlDRGqw}xnS-#{VITl>SJ}PEgy}Q{Z|z6?7U&D+Tn;YS$|Y&6?IrVm>RmEs`GVt**$H( z17R(tUuQitEn>G;}q$hTsI&PZI#m3*chy5M%=sy zrOG;-KR!ODZopdYjB6!VeI#9`>>7Pot9|9qhWa_ug=u`qaat9iqOD<8y*%I~c|Z7^ z>m*KQ53EJI3WhoaYR9eW0iol$b!)$T5MeVaoO5?KZVz)s87;TBn}<$na&bJg zw3g$#C1e&-HA$e1%H-x@F<9{cYYbr2tb&$RYg5k8}2Ij5QiEIemK$yt&C61{0h zioB@u#Heub5F^^P+w9>ar9b#nz*pycgt=lr6HGuZVLuhP`Su+R5PLV0#qi`jWV}4i zLMb(nLm=Kph2e(&EnT+DJU~$wiai(LsobH|EPV zM7}++wM%NN8p(xuT0A{zHHy@AMNJ~Ofd&dI`|=-Uc9*kyqldomyJ|z19j{sjclQ?faXrlQ0dpbM868X z^>`KqqNf#-$4~lhaNKqSp*qj69{FMj(9P|OT{}!Lc@-@~J6$j}bDO+>EpTi#C9x$z z|Cng~t4AP05QaldhLEa!ZDw&&qbVs#FbIK1JT9S=&4d6lL|aw{-XEQAR@B+ zj%_h}K^$C`>}}of;s_KTI}{kb#Z6{57xj7O8T@G5gg9%0{Nvo#kJiKU^9RjnJl z1RP<$7eT4g6py<_bve7Dy@qzji_+oL2VFCNbRqRXTO6KmOW_qY|6aQ{{AQt)V9PHR z2Vpmkhf0eZXUa%x(+}wn7T=v%Ir?ig_BA}}f)y2fHBz3fs^A^)|HhfOzFu9pP#_?S z2+45}xXHI8P(X5KMpHXuSJ!`yZ%uSfjBkDx66TmFYMmPD+Lkctk=EKEYA_ueF-XYP zHg~B!W4DaRWY~xu&+hfj-gW<04{B9qav_nD@uXqh+upmk z08j6`St6j}AH)G%y}VGK>mv(6PX6s@D3l>kA|xoKD4?hSAO24wXfKxx$@upN>bLmD zV;D|cPXBE&@N3 zzu2!w7|2A(`>?yU@QROBjG0H@0D;ZpxjNT#LZCeYvoYoTynB-L)4O>ROE$zD&GD`Hf86^W;~7 z+Iau!h=ywZtlB3&I<<@{5Qr6|}y1RaFLTsrg>oGGRg6dF3} z%Ltbfg-`7O*jfUZWe6|6wQZbv^T$sMqVzUffvpslG`r?7x#1-futOAP*BUV~B$;3r zp_!@j0WoTr_K^Kn#w3cTyOYeAgPKdS3~jSM!TwQuB+fSM!T?^n2GB_4Yd(h6LWnWQ3M1@rFtmq?DUa{vfN5&@Yoz~hR%p_dGPF}q!FwVdq%GF546`r{S4!g1pD8OqGZ2lpI&R`mO-A+LsWp#qWO zUZtO_#RY-1#Rh?*@HexU2vB_rJ7odj#gx3Hv$sn+@~XK*W5t!i1!90;nQwimF}W41LEL zN1OJ`aMT3(Qon%L*Hvz;u_RgT7g%-*?FnrfT#OM}d>ZU$+>-n*%{zOD;R(edW9T)M z`mXc#FW;|xJXQKTkIa;gHo){wWw{egb_cypc}Up%o@n7liP=J`^S11P?xJpKj78E6 z?3FM@Dg5sp@>WsME@ByAS-E4PW-e`ovtBN!r(Kq_SrUYh$4X@zFA1_SsX&7F5i- zQqC!B1QxcbkMl?2dhXe`fwTBZgcA}JCPAHm1^E3x3hDnxAZbql zCH*}%Vsn%FD(HWN_FJLhRNT-YAU=p7ASC}Qv_}SNSnJ~bliEm1Wi9@|B>vI(kG2oR zuPGc%B^7dTW6(z-R57H?+uflrz?w>N%q@;fv%5>Jm))eZ-Abj`I_$gFD;e}elLY?m zBmZUk3va*23nOjB&v@ABddK}n|I~Mu*ZKW>eg_#O=75OjHwh{BND+RT8`3oHBM;+# zQB)8R2_Q~@X-7cOLk=x@>+J4DUENV~*c8X1w}?8bPLMx*R{9$rx3A(zwu3U9>FQr` z05|BHa|f^Rs^0p&D=z&3k)VD*8&~4^P}gOzTII1S%+c0Me%O=EPjmQ3 zCn@Y^@jAoWoP6>85ovi=rbwrx0_P#Oo_3X)#_5PTRU}?kRp9P-yHYv1@pQ4WAsvO( zN@v9?TN?D7(q3!bOpP&8#+Z>lvlwK}5L?Di<;Xx#++e)bwVV|BpM0) zV}G0eJWmIsu+BYZl|7|v(xs<|G6#PuG8k`TIXl#IaeUH6i{LZuUDV(?<&h?lj?b!z zQk+guMw+vj{Aylpl+8`qPGzeb{ZZOP);4@pzLAuW*sAwSXt2+wEA3w5%tG~-+SBWK zrJwM-b(IC<8BBU(v2HusaE?=NkNOLcV8^CfD8DBOKvC(Y{wXH>$6`I@1a_PSey02y zqm4VS$h_qm?rbEfLPf$0YbrWA2m*R8mX)GfF9*Q#w=Kz(Y4V!#y2(vuD8E><`k1I(3S$5X&NQH+UrC<8~7*mE9z=MlOvP%=^-F^;%V<*gNLfY#MSI-8CDiO?xi$ z%vlY{h4^J7mX3ECnwp%t+0|H4#dBHZBfW7e0g$k3SN0m3WL(zXWaQN*DYOW6)EJ0( zHYJX92A6bN89;a80u92{f9+Y4lGX^F(H&Jp{6rAcbovAZw0?gR@!;5tk1`?jgtn`H zE)CS*+k*cq3?Sx=Ndx*>?~#CY&1{?p_-~yUof0}ylBO?gRc1f;rVo&5zpVE4KPLyY zbI2eb`NRCd)IK)`44q~M44p+s<-zX`9H9&b7&JyAqPC!DwbY%*2lkxT25>bHYh<a)7IqyLQN)EuSh`r=nD!Y8{g1PWj7qsJbc~f+oHuf`}=wa)pUezI?v)P)<+;`Kx zlngfoPd$@vH@&x3TirFis78yl8Slwo*xX7O{`e6|n5H(|n|GBB^W$B;&YEi7i5wh` z>g_uJ-SzZX7H$ovf$;`%AOnMqdtu$lZym!P#GcAj6l-nfpCnLfeKeIDe03uj2+F%V z!*;^fXQI-lu3OvTS@)Hj~#)F9#NFT{EOt?B;Yj%v-^U}xjaO7BVT{48;ITiU{d;XUWYYKbF=efeEGctXn*-U zO!FlNg>XL}ppOXjjOs3}qr>b9zULQPE3imWxAH`(9FP7jKolDG_t|A3-qdbg{fIha zK>9XK;H*RU))B8tsJ`H3G;pv`9eZo%WqAkWEEv(c{nwJiFnO}-=LV}+S{lt!2bELWPHFvflK7o5jf zFu;vUlpuU_t+fP`yJ%e0xi%=AC0-KD@u<n$?6)0 z%4UOfgkEz2(<>ONT~a6uWwTwo)}dSPf;FHYKxYm#etuB+p_nh+H&5$2d%rP3FWB>I z>64Q^iw_mNeSrmVW$G_Lj$yH>zCo+6e|@5887g&+aj+lCXC_VD;}0 z5EIxkCF9(tPf-dSP^{J}@J1vHzLEbg5n}){w3Pn!4HS}Z3`KD6rYQ zW8qMB@<3Gn!SaLcAX(ao1`+V@@RHu1IMw7odz@sT5ecx@VVD?Y_fEZv7%69yK&wf; zs;T8thrr1r0zvC%tw2C7W#`SGwGH-}uO5l%(UKhO>)3a=MBCyHY>Gxvu}B@$wcd%p z11H#`zHea@NRpvsabK}+oNjUWNEK`^Q(cSAH>G~&(CK=*MH6FBVJ5W4mYAJ#D3_K+ zr3NmnWV0Hn2Qqm6u9YNI!9`e)lC%>qe(=DMmap6WO54H^KKwt!BayOB4Jm%+Ycu{J zQNDaowkMDMd-yk}VGTRH3ThkFg?aC&>zV(Lpyz+qnCxv#2k}3kxxzRc4E28yi=laZ z*}r9<|GTJ@8)L|m&CJ^WYeQuI1@>P=Vs-w%2+=kP^gr_iv8=ww{{=GP=pZ2c|1+<7 z#qI|BzviQEgy8>0XP!L&izs}TApd*s&(9A~r2qLe8C#eV?Y~!apd>T-0+MTLP=Wu= zyHhp)Hy+xGFh-CVYZ5o9;W7%LFXochfkxH&cP5K@pS)yj-F^u)c2ud5q!^XiI=N0d zy+k(2LE$Zx(INY}@}?`G%g;9dD=gqD{VS^Lu9p=J4cF#(VCUH`_tu|0*ZBzG=UF@u z$_b(WSHehBRJ;w0aVI!XJ4L<5D#9l_3Qkvad#lFd(3>l_Vh9kQ6~zuV>-nruu7T63v4do3AgGt-XJ zRGZ`_qrx9OZ?|4%s5c+_Nd8*gZ!VKf{iCZ01|}nU3Rq*N%u%rqy*;<`Ox{RQ2joGu z;oBe4a#*O-d+GrP`{a^`aMs*nLYuU)1?q`imKd{0wTm(r+G@T3~ZMp`iw(zukQKx}8OU1_%TDEV@s{ zO5a25VT*#JiOg`Sf9I(yR>0lb-rCHnC)luZDK}4vtEOnQR+Tf9%P^c2RoJ2Q3?LC~ zH98pe5y(ok?kf7S-rx?;NR-csnfKPEO|iM3Nq6gUU{Q36w07I2m(8#@Z+DDL8ks|G z3}9^)@ZkdSS+UPX8ERGvuRpt)O(nyjj+GU=wxwkz!5P#}RG*a{DaZa(j;?-?r zFS6hHL%&>w2;vp^z8QQA?q9}rn$%~$cm>-BQw;FB{<65qYPQO28?jet>m)*zzVgC$ zOk9vpqKv&n6U5|+BVKzA64jR^M5bPE{xBJGj&TPL*2Y0U5CROBAKd*!M>*a7;5FTQ zVjbzE_881DZ7oC2-;w&N4}Cu!>`L`V-`qbz1l61tho@MWE%wNjjG`)MKmz)goDuPO0%GBL0)pXh#M&B5 zh;vX+6kFyA<}{|i^%}`^ZY7p2=@$d0Kqp98MF~qiclV{l9dw{uB+2!ydJ1AumzU8d z{**RUpA?wSpPHg@C&pWD=CQe_*$o4Wt1!Qed8z3SQg zaz!<4p{p~7ef9Z(W=0?>G~sbBziQ`CDU~Zk08aF2xvk1 z0nQZ@(y>KMdnl$Xqk7$ebTh%=Mw>CW6I8cPJEyWc}*CL-y4{xD@BbRTUOL( zpd+Q?Ja0w+$5%|HQSBJhXE6ep+`UUW6q{1c(FF)Q& z7>GgVf|a^p&LNd7r@7MWO&-Uqkykl%+fUAMj+M@JGjV)Yl$r}~9x2%!>D%~-Kw&5O z0{yd>*antbE=b(`@>%|OorJl(M`wRe&r~nJFBW6+Iy)}LHzZyHLO*FLJmeUtio<`; z(V};lhu7iBn9fCLp4vxwgKWy$SN(yFn#qCfhs&BY$i*;!AWgb>enyiQo~;GYX-3q@FC2lr zYW4}EDx&4zAmem$Qc#k4zCZy=TI5Q|)ACKZjhUNB&le<$AxG;K@ItzF>?i-m)J(km zk-M|D((V7UyTh7nK2O*cWp%tcmJ1B6XYY_ft39t1IQ59=fYPcYX(AS}yl9Dsjr@5C zRf?z2zAa^m{nW9(q<(m;0{$IN{os0ZRKFyvbshmfWOj$l+P#aYq?+D z^{=b+EbbFU{#Th}YuGRLnyD{h%t0Adf^ofbpxGz&ZCFP;+|^Mu4HhFN~odVpWw z8=8(ekI%_r#|h)=%5;=VhtNOlB0m%F)p=fsSZ1;eC8c1-5?R@0ph0a*x4sz-*p^&o z=vJ1%Ljq|Ld6GddxRoeyxG=cyBDb&ke=8CH;rNB91aV}=4!+Gsr~Bw?wfJ3bYMgw1%=WkjW(nBiAHP}77>*M0yPK|k$y~x zlQ9#L35ya+D^shJUIl=>GAM1UqlRUUYIUz)ZQHzYZ}hL9e>1S(^S!aXx}y9GJloBj zkz=HM9gp{&%X!MZ^Sk=?J3F3@&*xPTbA6vBz5y0|r_bk~JYju&su%Y|Ufex5DhTit zE+bLqW@WI?Ela1b7AFS^zcwkB{l&G#g?{9o=u#-=HY^9@U?VJ4MU9_1Q`SqEFYZ(l zD7WI1D97ud9x!#!8aQGjtY0=mg7gad6i^pH4>d_r(0us+y0{W>D7!DtSd+bMW9Oq7 zTlQp^ofI-;YmhCJNJ0i<30cR!Z)MFocCs%+7&~QWY$01&LjP%0-{1E>&-=XF@0{Pc z=ic|uJolXUEaB)xMOhrBaC7S6Nt5aB?&AzVQHQRnya|t15`pon`W;Mjx^}%wdIBKc zB|RQe>r1n|M;~c#j@I2gl8zsU)bZ`KSx5M<*qOW^7EUYK0ff=5BT^o_7NC_C5r&Ig zQmLE4=yylS*VN~*6W@lA&qxrlbY$dxf@k8NuRcPn!H4k-S0ezRF>trO$$VQALp>@w4P zp3lMByrC3s#f2h&wF&a z-j>HbT%0p%qWE~*sj%Y)-4$~H8Fa)wu1QF5!s2=7duzQTK)t;C1Zw6MQ=zUB;{t>f z_KjzlD`vrdZF1hfR?MPh;jClcR&^(bnzY&4|gilRd$@0f$i zSn^Kki5p=f^1D!b!ttfL$+W0V&7o&EIgs82wJ@y@cZ^y^o2(Weg5s8)-a-$ntsIES zkNWWB%E~S?W-NtF_ZjfAK`IHj81zBx!M2hOo1|Q&i-PY&f)Jhi3X^yO-k?u@Z+z>) z90&_c7`3Ye} z^aF8`@7OS8%Q`9UvBLOvYFai*y_>c+f8On5O>vsU{?1Zee?32~ia);q($JhP^mdUo z+PON?4Hv{3e#!Y6cQo|#ER<@Mam2o4hJ-;{i5R~t} znJ;3}N8}jtU8OzhkGQE36VPTOnO8&1N7!hpwi;Ge>@H$2*|GyIgBgCLCM29zf5G7D zvn8~8*|ku?Jm*#dcaD3>mWG=f7eudjqqG_&2|*p)v_r9PwFa?74ou^;;}Q&rT-m%! zeeFZ&8{k(_ce=0QtLz>z`R;k}hml4>e#V z3$K9Yj@x1lvvUK`-AbRDsZ!xX7cXYTjPjwmFGqy$de|lU_-Y=N3@qa36-~LXMfafz zXS>H4yspeTZ1bNGz@DH#`#j?6rG87^5pDE{aJJw4YSt}M+2$93lFaAw*Vx4`m zjpvoyLNPQ=DA#U2b_jv7QaROH2hTlQAn3b~l$_kxhp2WQsXizm0^cq?~mCi!y%I(0aNctgmJ2~LOR za@&1$_NZX#(D`ek-eVc*+xK9e&*E|^C}Eyl3k@RFB3VYhHfBSgjy_@FrGwPDQTxNgmp%DSVJ{6o%t-^2UiY`s8wjg)sl9s zc8Z^tH@aJ+KN=BEYgOBxkinXef{#x^tlGWbg|#giGKH$tg(h1L<}idSqWaxLNS-gu zFE1>+xfe08$H{y3m=#P4yNq2UEZX!6GZ#A)qq4F1}kpJTTCayV7(0W)ldas%!@D6gFEqVgGh#N@81z9Ml2 zpsR~^U^4j;OD=#`wSruw&&y&->5Pv_E0QKn&5?xCBzD%$uHUG5Mc>hn8t=&bTJJLA z6aafG-*?rm7~PEG`zBocB><+1+q`L=)$%D-KSDf@tnuDAOD*+$V_#Dg#O+Beqla{2 z-3{8o#cD35e_#h&q&GhQvz_yxN(-cN6S4VBhOk@4>p~@*1_QBN5 zRxSZ3?}>%DH$Cn^P_-!Xi)W9$|*TfpssceOIg5hDNy#xih6TY6Y^w?-EJKqml zYeks!W3{P1CaJwt;y#7Ak<7g1lZhg6>LdI^g}T+d*H0ydq(EJps&P@1#I}t44xmBI zx|`X)6gttuH&i>&j_apep>d+kQnOVf&)AN-e5)YtH;XJ=z=U_>Y50QbI63PNE~_~x z4VwslpwG9D3hp}}A)Up0gr(bh$Ry^G;#K1KF9mP3CNg91 zp>0k#*}@(>KUZRXs2?;`N_A+jocx}TakBTzrgEr>`Gn$;?)D+wN_+o?4yy*OlnNu}vprA8L zM;3DE+O#@_MbN8#%2y07Rj8LCyoLteZ&bdc@^Xh9PBj`v8H)Vu3=}*PSXxdX`^sNR z=6)*eUw`SJzk+jgozlbzg?#-+nbBm8ZMr&09XhxCx79^RVxPVtz7K}i$m z2KFbcVK!3TPt*n5_n#--T`VL$@_??6z)sw|!IEV`+{`(C-bqvcXy%GCEqe-?Oey6u z=UmDlJ(8EM40<9M+R-=uAXACjn87=WPkekrK;ShIB1 zgpc=r=p8+TS-KKQ6??jzwgj3umN|>#ZanOm5`CaYz;yqJBhDwUQ_w!>f~g7n7t^TT-50&}{2ApTd#^YIpHmCAG^P#aHxYk=kRU2?X#wXD69v zYuf{QjkaWEBorMhJivLst+}6MlxsK(`@C%ap<~FCIJn#4hxhP*H8z#y!FB2xN$8V~!GEDnGH9jgB`q>WjTu;PQ zo!^zysJqnQwh^O@=H@k%3B5!rXrZr`d&STNC0Pt!4- zQoHq%b92FQq%YO==GV8NL&8sO5hycn(x!+ZS(CMrd9a;alhXK3kgE*zXSmaX9E$%0 zTo)_%?(^P1Ke)boMn0VG4lEfO-)@AxLs{-idQfmqT4}+o0%a~6IY^P!Yrnm=sy=kn zHwH=q@{6=DOd@+Yn=uS}JHBRzvWsjnWAw3Z3aU(N|N6i?JWXLh6@4PW=d7pKVNV4!pebgq@-{3g|14Gt3s&(k z;s6+{xBMuHM4oDDE{@^8pnVB5oWi3$s4JZavVtP5Tg=poFX59o?GLpc?*{fPj+*II zmUM%cUQzNGEhQT-mZ+f(v{^<>V^kTx|DbG=D_PC%&?1W!Pe9dZK#4Tth+FmdQA2Il zWUn*6M&_4_<01j2eO42X#6Q`)L-`nIZd*0~krt}DC{==3)YfxvU*>z>i9TY2O?*j>!nTbxb zq-^S2mWEVNJ6xsaSRBx~QH!Hxz+NGitSNNWwWcUO4R5f{N3HU}I|)cq1JPm~g-t?| zgoR|BxA%ip6@6O+EfK(ad4I9i@ArGa4HQuZHMDp$cZG5e2B85gndxCZk+7_LuC!|> z)TA19$RU@U;SeuBozX5^(@KhYc1;0bLykzJRij}h=EnzZzo!Qx5&Zr^UR#?at-uUnRA9T{Q{1 zOAUk&2!~^~8g$rHO%GZAgKgB=f2N78**j3^7-xRh*dJw1Datx*Tr~XIr~QcwZeyFx z(2GO9V}bF(gPO1zwCO&}tfJf;cvba8>NH^%5P!9SS-xXC&WFa7;9*=OnZ;MtHOK9- z(jS}qjvhqwN4VNV6EeY*vmA(~LW3gTB2~&Q?*ewlEU4GS=eu*cJ65r@s<>f}K0m$= zdeR$T4!76xlZvHXeU@;-T+>2KaR>QY8;;7?Zw$^V4Mgj z5y}fE<48x}?`J^I<~YJnR)5Bj#E$o_(<$hb(e-lXS0CB%9&-qD{tQv+`{s^k#}wP$ zcrWH%RJm6{$L86UnP*Bq8&t<(c;%a=Z){&RG<;Zq9_s2;R(Ic8Q}}fM-cqXZqF(p9 zi+$8xxk_=Gs+*VQ9!sliHeOW;;8g#>FV-aU;*40iU6@(ss>~9q{h8f&Puz*|gW+gy z9vRR4iVupuI^5nm#ag-LU?lpz8hi5(8oVw|v9RWY2+_bZe6^piX;JBrnvMtMt8E(mFnGJ~O8ze}o zAZ@PiA_~|EL;UTRy1n+#a@>xIjri$rhSWVZz0%UJRL=;mazeysn}&ZUL3pCJ2qFeD z8g-AHi8lAvUBx~<7LsMy^hTsBd-5-bqP)pBpWBukEDw^|%26CM4$k1$ePhabaoPgK zxl8spdj`8^b(*>TJJPh1GyD5&B)1a(d>t#S2!Mx;K2bX|A!6Bg>M-A4IA=a?-|h07T~Eu^YZqAkRP=x(Ev=*OxO3|bECxT{W7-7ck$afhcl>_eO#dE@x)Z@NDd`g1_Zqr|Z z7yV}XxAq|@&I@1*1Gs3{4Ypq+^ly9`lUzoB0kmfT59s2? zz9I0EE+AkR4Dan?KEK|;T(cX(1^OA_0}vqmRyXPSea&tlpy&Zy!HSpi|3~dFB6ud| zS%NX<87F+M``S7FG7<<#GJ|K9@WAgPIj{z;a+2+;VvNzmjJg{a3<`u`gqh&QNKP#9 zLa6uxkjWChgVa1{knaHkWFKQ0PFyMB8y`ur!b=vT*XA({PM9GkcR~1}6TGEI8w=v_ zKt6~jz`;qxWYt|9gK5rKQ*=B@v0d}4eJKtm1GyNx-~GzayP(na1(v?Bml><|-}v-@ zwK~6qCl_(RNj_4a+s^h82$=PO&xA<-@-S9d*a2Lnfw3DOW7e;U<l%IEu##NA$6rGnZlRZ6^Kh7ecteTSC77_NP1dg8oCy ztN^@>gLCVT8JHu&7nO<`80zPWJo|xw;4DnD1pYee!X$e^FybwIr~gmC4FCatc~~!( zmQ(y~ztSM>@;b)DUKm#C3&IQe*e1{+7=OJ0=j^yBAb`6V&WuvUI**^m){h9|yn2k; z!WV>(O0dELnDl9(o^wyDR1qJ@V3>L?{kMI0%YQqI08To{j@5i|p8r=h!gsk6Gwbt^ R3t_5;wo&5X*j4>{_&ze=o diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 58b1e16..bec4c9f 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Tue Mar 10 13:55:47 CST 2015 +#Sun Feb 21 12:55:46 SGT 2021 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.2-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 diff --git a/gradlew.bat b/gradlew.bat index 8a0b282..aec9973 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,90 +1,90 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windowz variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/library/build.gradle b/library/build.gradle index c20db03..1ec6754 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -19,5 +19,5 @@ android { } dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) + implementation fileTree(dir: 'libs', include: ['*.jar']) } diff --git a/library/src/main/java/com/john/waveview/Wave.java b/library/src/main/java/com/john/waveview/Wave.java index 020211b..89f0cba 100644 --- a/library/src/main/java/com/john/waveview/Wave.java +++ b/library/src/main/java/com/john/waveview/Wave.java @@ -18,10 +18,6 @@ class Wave extends View { private final float WAVE_LENGTH_MULTIPLE_MIDDLE = 1f; private final float WAVE_LENGTH_MULTIPLE_LITTLE = 0.5f; - private final float WAVE_HZ_FAST = 0.13f; - private final float WAVE_HZ_NORMAL = 0.09f; - private final float WAVE_HZ_SLOW = 0.05f; - public final int DEFAULT_ABOVE_WAVE_ALPHA = 50; public final int DEFAULT_BLOW_WAVE_ALPHA = 30; @@ -85,16 +81,25 @@ public Paint getBlowWavePaint() { return mBlowWavePaint; } - public void initializeWaveSize(int waveMultiple, int waveHeight, int waveHz) { + public void initializeWaveSize(int waveMultiple, int waveHeight, float waveHz) { mWaveMultiple = getWaveMultiple(waveMultiple); mWaveHeight = getWaveHeight(waveHeight); - mWaveHz = getWaveHz(waveHz); + mWaveHz = clampWaveHz(waveHz); mBlowOffset = mWaveHeight * 0.4f; ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, mWaveHeight * 2); setLayoutParams(params); } + /** + * Clamps input Wave hertz to be within [0,1] + * @param waveHz User input wave hertz*/ + private float clampWaveHz(float waveHz) { + if(waveHz>1) return 1; + else if(waveHz<0) return 0; + return waveHz; + } + public void initializePainters() { mAboveWavePaint.setColor(mAboveWaveColor); mAboveWavePaint.setAlpha(DEFAULT_ABOVE_WAVE_ALPHA); @@ -131,18 +136,6 @@ private int getWaveHeight(int size) { return 0; } - private float getWaveHz(int size) { - switch (size) { - case WaveView.LARGE: - return WAVE_HZ_FAST; - case WaveView.MIDDLE: - return WAVE_HZ_NORMAL; - case WaveView.LITTLE: - return WAVE_HZ_SLOW; - } - return 0; - } - /** * calculate wave track */ diff --git a/library/src/main/java/com/john/waveview/WaveView.java b/library/src/main/java/com/john/waveview/WaveView.java index 62088d1..2199246 100644 --- a/library/src/main/java/com/john/waveview/WaveView.java +++ b/library/src/main/java/com/john/waveview/WaveView.java @@ -22,7 +22,7 @@ public class WaveView extends LinearLayout { private int mProgress; private int mWaveHeight; private int mWaveMultiple; - private int mWaveHz; + private float mWaveHz; private int mWaveToTop; @@ -32,6 +32,7 @@ public class WaveView extends LinearLayout { private final int DEFAULT_ABOVE_WAVE_COLOR = Color.WHITE; private final int DEFAULT_BLOW_WAVE_COLOR = Color.WHITE; private final int DEFAULT_PROGRESS = 80; + private final float DEFAULT_HZ = 0.15f; public WaveView(Context context, AttributeSet attrs) { super(context, attrs); @@ -43,7 +44,7 @@ public WaveView(Context context, AttributeSet attrs) { mProgress = attributes.getInt(R.styleable.WaveView_progress, DEFAULT_PROGRESS); mWaveHeight = attributes.getInt(R.styleable.WaveView_wave_height, MIDDLE); mWaveMultiple = attributes.getInt(R.styleable.WaveView_wave_length, LARGE); - mWaveHz = attributes.getInt(R.styleable.WaveView_wave_hz, MIDDLE); + mWaveHz = attributes.getFloat(R.styleable.WaveView_wave_hz, DEFAULT_HZ); attributes.recycle(); mWave = new Wave(context, null); diff --git a/library/src/main/res/values/attr.xml b/library/src/main/res/values/attr.xml index 4994d9b..f621076 100644 --- a/library/src/main/res/values/attr.xml +++ b/library/src/main/res/values/attr.xml @@ -15,10 +15,8 @@ - - - - + + From d273c537f5f0d059b3670f13dffcf7912f497d5b Mon Sep 17 00:00:00 2001 From: Kalaiarasan Somasundaram <44941115+Kalaiz@users.noreply.github.com> Date: Sun, 21 Feb 2021 17:29:52 +0800 Subject: [PATCH 2/4] chore: Update README --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 4df412c..22830fb 100644 --- a/README.md +++ b/README.md @@ -2,10 +2,10 @@ WaveView ======== -[![Gitter](https://badges.gitter.im/Join Chat.svg)](https://gitter.im/john990/WaveView?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) +[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/john990/WaveView?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-WaveView-brightgreen.svg?style=flat)](https://android-arsenal.com/details/1/1260) -A wave view of android,can be used as progress bar. +A wave view for android, which can be used as progress bar. ### Screenshot @@ -34,7 +34,7 @@ A wave view of android,can be used as progress bar. wave:blow_wave_color="@android:color/white" wave:progress="80" wave:wave_height="little" - wave:wave_hz="normal" + wave:wave_hz="0.09" wave:wave_length="middle" /> ```` or you can just use(default progress is 80%) From e63049cc9b1c595d1b47d9753640657df22c2890 Mon Sep 17 00:00:00 2001 From: kalai Date: Sun, 21 Feb 2021 20:40:06 +0800 Subject: [PATCH 3/4] refactor: Following default sample values --- app/src/main/res/layout/main.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/layout/main.xml b/app/src/main/res/layout/main.xml index 5a15c7d..eafba09 100644 --- a/app/src/main/res/layout/main.xml +++ b/app/src/main/res/layout/main.xml @@ -12,9 +12,9 @@ wave:above_wave_color="@android:color/white" wave:blow_wave_color="@android:color/white" wave:progress="80" - wave:wave_height="large" - wave:wave_hz="0.5" - wave:wave_length="little" /> + wave:wave_height="little" + wave:wave_hz="0.09" + wave:wave_length="middle" /> Date: Sun, 21 Feb 2021 20:46:07 +0800 Subject: [PATCH 4/4] feat: Public getter for progress --- library/src/main/java/com/john/waveview/WaveView.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/library/src/main/java/com/john/waveview/WaveView.java b/library/src/main/java/com/john/waveview/WaveView.java index 2199246..b11369b 100644 --- a/library/src/main/java/com/john/waveview/WaveView.java +++ b/library/src/main/java/com/john/waveview/WaveView.java @@ -68,6 +68,10 @@ public void setProgress(int progress) { computeWaveToTop(); } + public int getProgress(){ + return mProgress; + } + @Override public void onWindowFocusChanged(boolean hasWindowFocus) { super.onWindowFocusChanged(hasWindowFocus);