From af886e9a9eb66d2cac727fdc4111ff05f85c978b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20Dur=C3=A1n?= Date: Wed, 2 Oct 2013 14:24:57 +0200 Subject: [PATCH] Import Bacon UI helper tests from public toolchain repo. --- test/bacon-ui/Rakefile | 10 + test/bacon-ui/app/app_delegate.rb | 5 + .../resources/AlternateStoryboard.storyboard | 38 ++++ .../resources/MainStoryboard.storyboard | 39 ++++ test/bacon-ui/resources/We Need You.jpg | Bin 0 -> 118639 bytes .../bacon-ui/spec/continuous_gestures_spec.rb | 96 +++++++++ test/bacon-ui/spec/device_events_spec.rb | 99 +++++++++ test/bacon-ui/spec/simple_gestures_spec.rb | 195 ++++++++++++++++++ test/bacon-ui/spec/storyboard_spec.rb | 50 +++++ test/bacon-ui/spec/view_spec.rb | 147 +++++++++++++ 10 files changed, 679 insertions(+) create mode 100644 test/bacon-ui/Rakefile create mode 100644 test/bacon-ui/app/app_delegate.rb create mode 100644 test/bacon-ui/resources/AlternateStoryboard.storyboard create mode 100644 test/bacon-ui/resources/MainStoryboard.storyboard create mode 100644 test/bacon-ui/resources/We Need You.jpg create mode 100644 test/bacon-ui/spec/continuous_gestures_spec.rb create mode 100644 test/bacon-ui/spec/device_events_spec.rb create mode 100644 test/bacon-ui/spec/simple_gestures_spec.rb create mode 100644 test/bacon-ui/spec/storyboard_spec.rb create mode 100644 test/bacon-ui/spec/view_spec.rb diff --git a/test/bacon-ui/Rakefile b/test/bacon-ui/Rakefile new file mode 100644 index 00000000..aee6434a --- /dev/null +++ b/test/bacon-ui/Rakefile @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +$:.unshift(File.expand_path('../../../lib', __FILE__)) +require 'motion/project' + +Motion::Project::App.setup do |app| + # Use `rake config' to see complete project settings. + app.name = 'MacBacon UI' + app.frameworks << 'CoreGraphics' + app.motiondir = '/Library/RubyMotion' +end diff --git a/test/bacon-ui/app/app_delegate.rb b/test/bacon-ui/app/app_delegate.rb new file mode 100644 index 00000000..43b2aa9e --- /dev/null +++ b/test/bacon-ui/app/app_delegate.rb @@ -0,0 +1,5 @@ +class AppDelegate + def application(application, didFinishLaunchingWithOptions:launchOptions) + true + end +end diff --git a/test/bacon-ui/resources/AlternateStoryboard.storyboard b/test/bacon-ui/resources/AlternateStoryboard.storyboard new file mode 100644 index 00000000..cba27b02 --- /dev/null +++ b/test/bacon-ui/resources/AlternateStoryboard.storyboard @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/test/bacon-ui/resources/MainStoryboard.storyboard b/test/bacon-ui/resources/MainStoryboard.storyboard new file mode 100644 index 00000000..5b23414c --- /dev/null +++ b/test/bacon-ui/resources/MainStoryboard.storyboard @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/test/bacon-ui/resources/We Need You.jpg b/test/bacon-ui/resources/We Need You.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d2d205a7d98c2356812aa2a068e914228d16e9d3 GIT binary patch literal 118639 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

  • VkKx=U1ogk~{2%4#7kqg^sr=~VPdv9G9hA)t z8vEYu^ZkHX^tSSK%M z2dTefo-umLM>xw3T^Ve?<5nxeuPBCtle&n!P3&i@wsxiEruY!M2PQ{-=6(d%0Gioc zMY7U+k}j@KO}}nz_ets+)DtiwJ@*^DP#& zyyOD3RT&K_3|}mIx|IPQykAFfsQG>xbX-vHjQ41>vk#0sqi^c9*jPpP`T4G;pW8(> zo02;vCrVSh&Fn&x*Cw0D-!qcPz_REIXPg|vD_NRI&b+tx^H@0Xi1DOj-|B)ulz5s? zLLa~r)cxbsleu$K*!D>s@dto28#z9hjMCX=WZq+P%IKuUkEOsk2pra25pd~M+4xG= z?q@}knf{$KY5z^YHN@xaVE%yU=^3r_y{4(&OHxtTWM>E#)^ge2#M>;lB&(@VxTCqH zIQzqN88>u|)Ua0Oy(3uVVk%%jgk0kEv^Ka(!tlOeO3ZEQ9^^`DWu^JrkTp$-UWvE_ zf3(750I(Xgi}y<6`ePjo*?aq3fyl5?YqY)^Zx1i$s(U5GC@Kc(3#cuuT(Cc-6)8+& zQerVU`diH`Y)vcQrg|aeh78JXuKsP;02?k5TOt)h#31+DQX9|I zzdaBMh^Q2L6WlQXuhyhGFm{o7#^!8LU=PW?rV3bd80Fw~)@7oNG5C%OH^i%&8`T)k zC41Fh6yS%~r42O4Ij2B_M})h;|HddV`~SAn{kL!aOMvq<2$m20wa`ZR)=vIGOKtFs zr9OKsg0iMnIPI1@GEq)GY4P%;U-*KuiD=b4zcBobV-0z!fhMz`X3(I_%2D8sV6ye| zI|-T8w8#W_sZ!G4*Y{E^-ZB5O)TT@`0N1Y6+EIoDzq~-*+t!HN{XDZC;IqjWB)WSn z-K#J6Ib2I8;@~GqRcyCqH<@fn4DHgVpS|6_%PRQ;2^AI00NW4AOU_KPfa>zJt=z?x~s3+aGs62Rfr_{w{mt z;~2A4O`$BqcoprMZwJX3AsuPzWSVD|p0@F1chAOQmhC2>hY>Svc3npMrHn7#5cphQ zOYfp6KuG9ZruOtF9`{Uds961Fp*o!dm(~%XL>1EPnCsDt0^auUD4?aT=Rlq834aR8 z5>2@)7g!ajt5ZmPZRSh|vi9B60AF!@w?b3tjy-&U!|uT@^$r&KUQ|_u0WkQ}Xs&O+ zvekfl2s8$`1_KUCH&3dDA7fFytx~_^+0ql0NK@#QCZGYA zB*^uji?q6NW(OcM(HKtlW!#wTQCGWh24ri0r>hAsj>*e59bEFv^BusDvQb@3bCWjJ z{0* zaP4B+0_op6Wb%=vK4sxu>9ISp^HVwUPemSaO=5pkzVcL|Vh(@W3Q6pV&th3olvs%a zR@J#cSg|Y`>ffGv<`pfZr5#pJpuRC1BJ}a*68Lrh;hEWw!lRAqCEP5{RI;mQw?(rT zyov|5e*2bwznD{cfPEsGx=5mY6eN+ zZuv~<`#u#?Zb4%}{It@rj?v9p9_5Fj#Sf5q}< z6foa4fufAMV}yUc#_B8p9W}9Cv(jzRhhsyPp%k^bqg#$V+zCWZW?Ej$>xbNXAKSx= zGkrHtwU9<)P1Q+Vlv+%Nhtg0-U%sS4VPQ=ft^$JyL@uN4Vd-8hL(^nJv}t^)2lhfC zXKOml)Ar0C#j${La@O$%FH#%-Rh44DR&=x_v~v;1kGJhZmYaMGP$kw)ZMS`~lh15x=7w7^KOqN&z8BdSF&`Fj zj?IIU3ZF>>Y|vkp=`D$)3M)u+`G-4q)SfT)!t+l7CnFxSWFupKSLu8(>B)w_Jdeg{ zknkvo+8GiRCu5?mT4G+1@YL+4fEC408T=f!o^7b$;2EkyPvS z^UHB%_gZeJY>U?)Ic+~oeB!L1PFKL(xOrbXy?-dPt=z1zcA!KWkK;-=JHCC#@de!x zJZBusQ^vS(R|a-*dcx{`I6C-wSyIP!qA-}u9qBY9>54>;lH}4rtNmK#)l4OtA3pHU zkN+&ip~%=faPmY?oRP^$lD=V!l`29hqp|UoNMpu4+$?DR|8IQImP|6 z{pB_bzLMn`%})AEdgIgajiuWw`}6%KU^bgOV9R)kQdIy^80Z-a(cyz}i~3&+{BYH97ohZ)znme6;Ay5GBMH)0JG1gGbgf?-_qC8eQI zfzpLkT3I=!2JGKx^WRs`wr-LPc|%Vn0kC}VDJ?hE!+1$FZWqm+G!OrX44*b8hQ^m6s*H5zsIZBa!qCNz8+07U5)TOa7C~Hm`rm*zrRD;vZfF z)5;fZ#(Uy>>Eyp+K~3m2(Gf36iVZPKMZnS89YxS(g;k-S5#Mnw+fv$Y*5}`5>scPw zgm>DfhY?HQ*5$MJshsrzl4%7v>p)M>%IPIA_3e>GEU0F1I|i67Q9$Nf^;hh_g+4p} zR|pZ@;r5mRL}04JVz1D&l>nH@?mr=E8#ZSD0jZc_VQ{{Gm0`(h-QZHhSa z_iP_wkfvc;4s%{XP8_4}eI@)@-HrB>$>ZhKL-bd2yQO5wJKBy08=%i$>yxKP$dK>i zmkV#og|;}kYG@g=GJ3Q!{H2l^UQczgq*g!JACWO=NVVK@Hmz%Ju!{$ixQD!(7`lxL z*;OKcC}M5#m}Xyn4tat6{gzt(?~9AyzuuGp&1oL!Wf6-b*S;BL1e!W$wAgGF%80wQ zq;QsOlzFWdaR@NfeyU}LSn0rNl{Wi|V*?T1b8J_h+H_(1p5t`G*Cl}b*oR5)(-KGnEw`QkUmQm|# zq}i7o{;IQsvLK>T#~|_5aO`Kd+n|FUY^+hlQE$3g1yOcdC`64 z@bM>b=QR?1FcUjo$s#_ts6aLar^x(=*M~Vw)qFksxj4mt+l3O$_PL)9V-@F{Z~Vig z0L=A?aAsr4zO7lp*i zz=M&^+JWF_0vAjAC|%qcF9YT0D(#po1&$?QgM9Q`YvX%3)ME9+3SR!h>j}X303)-M z`2Y0U=a-IcT6qKKPkA6=n0-lc<*CbGE0b(~WXQbOotXun^$997{ZIK4Ks7vB4qAoj(cCJZTYGaioH+*F{Y*`(!^D&*l(ns<&^{o4x`B-}HVvLST z$N65haDv0%OTgcEE2sJLSQC1_LUcJ+``D85uB$pgJ;qCWqgv7iTI0+5Nnmr{MEb`^ zw>W`2sL|!l7sa}&cBHGtOYLsVC8;BJ+0tx80CZC9rX8h!>mrLi3q`jvF_mJ~5Q{h_r--2Wbj)SUKJ%@~r)Ty+~ z((tsNx~b%1q|e;sl#ZV4!Stq!!4NYYyE45`-!HMOCR3LtT^)p=ULfa1O~x7ibljI_ zvTkQ8hmpf>Oi9f**}(S^M?fzM62-EReY+TfY`UJ+Q)4di_I!Wo;aE<*X|oM`bngrj z_u$cEkcyhh!-sXCJIc9uM{gS&8tbFvojvM)NhRxFq2U>0@-NvE9R+w&J>f=Kn0#oe zai8oqO(V`~M@HfO>Vh>j4^HMXmic6UK6?o1@v=GA(4Bd!ta_;xe9Ui0d2P<~Rx_eF zg5|FGU_#IfuU)}~S2dSf0Qbxe+b%*t)7}ld)|y>L0@m)oS&IzeF`ic|QpjH2m1e__Mvq^imM z#QIdjM6tUgUy0XlKc2@AD~|taq&eGn^WmyxZNML6#HxVh)H(reNX6>S_Bj3VmjA+Y z%L2+4^!2bKF|giiua-sBQ4)S%sO3nm9H8g`T55g4?_Xti7z8lbDf7U&;N3vc1YmL^ z!erBRewCrTV5*%>@l#^v?IV%+5y{~?P`tkQlNODYjubTuJ!~Sd0YEtzbJ}XerO*Bi zG$QXTfK^#I3oE}9af#~~4UcEg-I&y>{gkqTc60X#A^_K{nVkQ77JHrQ;hBR9=d(WJ zC(03+STBSBNWZ-ta_6Ob-ZsC-5yMR1kM@DAR$bCEsUCRz{L(U6NV!Wn+Z8g=7ksT} zIn1QFH!l4MtQRDct1X3GsXKY!HfJH6&}Hc0--@BqY-QZL?zFh<_>oH&-ZBjm#Vlg> zfV!^RlZU(zAWAdFnN)6)&pRaHqOk^dMTxjPs$)rCVu+`Mmt2|b0UTMGtTmt?cZyRM z%6NEZKv8_ty9+BDCzEqUP98i#L*QpFo3TxD{pcstXv+jmxdf^~!nig9Tq*wdU7vvC zPDu-vJDu;3o=MIfe5hl4W6d$M-nJx@h_f4e$zol`qnq4aksm76vs-dUQ#gvoktb!` zf!yi|SYpxUTWFvjxl%Ap0tGNb|9ckq|NqUr^3nCh-C}_&3Suf}sO#wW=m8x%sVra` z5wj=|3lp(!61?G-GLm$3-`kGPVVYXFEw6IwzuaEPH2wT#pV}?Ot0gbLB2+rI)hVGl z^o=3n%>|OZ{P7Y!y|+o)*P1h?f|&XXhc``@)&tb62j@~CCNtwc@RnuMRp^^rdJ z;VSk=?^l3wiCQan0Jwqp2j~QyeCCX1=8+F ztHD}x1{uq`6AktZ4i|3h=7OZRZ&j8J0hzpx`e4MU`8n*trYI&@y#H)J;`I{uN|Un=au`j>ssbP)#WDR zkl6amf_uKND=^vQh8=xGo53_hjXw@1wi<6#sBGxr0Ax$}rV+G~;@| z%x81!Q)cvR)#~1*T~jH9)?PV-CESweEsDBiPX-F&aWmY@&yj}fqZr;gmKDyckJHKt1om81w?xqo4*KT&w{EZR zn~r)+<&eG)L|!qe%dSN2NyV>rwH28vP_PEN$$C(p)yQc{wv}?{o27?b-o#JW|xqto(L`?!C5BTU=-D+?D^UOeegQ&58Xto@e?c zc}U;CE2{6}#xiK+&$VZ>v+mIcwhPx9k9o=c1M)nC7dNc=Q{Hp}1OqXXb#HnCfXf(c zqP|&HC6?PqlTXxVDqFfTS_UopQw)3?+HITpuB_V0u`m4>InP<~_ zP1OA(C5ltS0OtPO#AoZOt5uSZMoS;~8&nR+kM^T+sEb+XCwAHMQ1BT=6Ejo@_&bGr z8*ZLoi*MdHvj1L5VJL6LXQOv?7KN#Md`oVbO8BzRscAdC$?=?YVBImQ&d^`cv!rc_ zFE&%2Z`!;6Uf7<1FCBT|M5){;1!al3a*k1=u%k0=${qI7Y9&|H);R3zeD+3GybA2s z)uCT~Jc~Mi-2yVO<&CG}QDtU4Ay%_65_8K3IZoYp)@+n=acU1mHz8#B1O{q8i^xuL z{{!lWX^gz<6-dsoNdfO}Aj(sNh@%F7pglcVT}GjXqLKpIti(hT=?_ZIkL}V$sU$sl zyGm}40)Q=7zyR$!7S;dqACNns_rTkGB}0yhuZBKcHf*o=eet10WcBajThpxFk8gw; zl*!C-FH?w6p8kx(4W)-m&#W(+df#u4heCzo_XZ+sq1lS0PIKz(&OgyL70j zt7yF^2|kG!$JWWFc)s5<613EvMeNdh}_9V=S=lQsYX3vqhGs~FAOQ9f>$FMCIs@w1Jp2oxZ$KFZ5 za8!P<>y&)pWyv}{$d_1evb6f4eJCQ$%=k$8(Cu|R!gI-Z^!0}~4~B7?gO zWMgZNy4!LVZL-+?;V=G4CoEuUp`_}@|NQGeph%u~Mk)=R8NV;*HT9o%y@#NFx9?*_ zNRp+crQJjCQgkn+e4%603qI((@b^VW%hSmghGYbBFW4+lyMz}09)YqHhISzcu7k){ zUckG6T~6R8cIltq-yW9w9bv{;8?hlkfe! zW(9?;z+B?2>d&H}H}gS@5^V3-3Lmn4VaNTk@~kuG+lP>;ZrzdJ)7M!&&DGu+?{@t* zYX2eDR1)e$xizyO#Qo9z&Kx4yM`aq`dyG3j5Sf4(USe)b2F3vlrh2@h`};HfA87T& z#+|4UyB-Hg0fNT97pCM=Z3S_YG0C``o_b^@@{MC$-cw)LMPcasV5PTP?}$NC_PQ7} zT?duZ-H`QF0|)<`oEm(sNmXKZy(q4QL+{b$FaLn-j%4Q3nGj0PS-ml6$)$Y(d!lh@ zM1f8(CM+Jp5-B!`w*e5fcX4S~L6gjF4=R;Lqj-gvBYzU1Tp`jk$s#378|`tYZ<6IdOe5y5kxtxyPg zeQQFKs+kXn(c==>7{YGt#=j=biy!6ttH4a27pSX4{eL7n8DvZiH&d zL>L1d;4K4xQrx}h7~sDWrMXpU@mD`ot61$z&eujk0%tC2?OcPa{-?rZB=7sY*F@F> z95_;T4h~#)IAmM%R$j8}CEafoVCc)A0(>kV^MP4e>$8I>xdw=Sa)Lc$O-5eOl zo!b3BC=;Z(*kT4P(*PCX;IvaWliIb_|4N)EJv|>=dp3x#+`|$E(dqgz8IJXfx5ip>i}uG)1A+QS7rZ{CUP6WB-WoWK?XadH<*;2#~nn7H3|FaQtk+k+&Dm$_uB zTQ;Y!nm3uSk|y`QqdmQS?f!7q(RSjGEom1-rJksLL0yBX@$31Lfo_bmb+#clln%j2`Q@&gi<6{cloeW*uMj@qcv@sioM9K{vvLv* zrtRb}2)=ySsiv0aQ8zI&ZXorMQq8fV*i;+62)hM4XQkEnQ7Ng(yz+1Op;8em%QERC zcA`*}mw^&J@~Id(qF3pkGI*$1YO0Axz#Rv|&k?`MzT)Y9=qlQOhv=rw|DAm)4>xZ0 z{DN{*hJ;UIdb&|do9qS3B)7EZhj;Rwfy9Ad8TtG~8@l*8kX%Uq8u^P_RmvSel@+1Nd3N{{a$sZ9ZGwm?T?pR?oSD(BD2*p!>QI9u-Qf^q|YR)HhRhM zApvsA?&6APyOv|?w^^c)fksR^kjQXfRrXgf-*`g`C$ z>wD(`$1^Xp`XJ#vLPO=kG(|dR7T3Kgo6sLg2Rsf<#&WSde9)O2|B$R%TQwKX-OIzy zSh^^?PZmoP8HPIPET)Wil!nZ#kp$NJ28q(qhc`iVL@hS1TN6_4NnT$sgzY2>-rBy2 zebO^Na=MgJQus+3(JyLayyxnDu)*Y{~u3kyF_9p#3p91g-@au4HH-DyQ;LH0e49}+tBac)&w{c6V zd9iO3K3w_h9W3x`TMi5|yp8pLenC8;M!RVO;q6A|JVP^ASTzt+@}4BGnbh$M{MC~w z9zLqnaLz+5JI*`{Ym)~;!NDK)Jo7pcdl>(l%VW5yZJaxi+N14*HBRfxN)bV3EZTa% z#;V`)g+*iGJ?&}ORG~Ne3)*_M^AB_kctDy7LxhJWtSV^Avr8{DXBh?Yo4WH8ASXEe zPA|8Coj?cDh>OA1XjNzn@OOBvo)mc`Rqu~&LpsIUd5nNj4Xw+<17iq{I~*t2Z|G6;G6ql zkeFbe|1^5dfI8}9{IOK5!KxU#BZ#Rs`7bX0KwW%cu3Ixr1UctAr&QhwD>8I2CI@%uISvm1Z`i|ytxx=IbcOCh_$gWWdS|=5FA=ey8=7t~Opp9~KHB1$ zbBc0nv%+@+TbPe$(HjBerGnhj5+W@zIVwZ+l`Sd!FjS_QFd1A5unI>%zStTP*IlARQ$@u( zfv;Ps-AB_+Ow7X#uu7d}|1uG}xqh{cQ6b^P%@-^f&!eI+VU8+)3i0gp=VF{a3|{W8 zF-eyIsCVtrJU!r{)(N8a>`ll2DJ$;{#6XtF`~w>3j{0kP#=#=Q>!pi%cQnWp8(#ho z$g5eHvzgW8vjaZ7?CQlrI-sI{_o%-ztaW@WJAbmt)Mi^ z)+5?b;~kN0T&xGJe8=<_WXa zDRhW)bR_G^-cgj;pfw!fJ*nHVyl8M9po~lZ@i4GbSZ}jbuhPXD@Al4=J-ZQeEsRFW z`e-ou^gs+U@?36|CZB|jQB7F><^~>*MbMia>W!+T@4;^1$nNv~DzSI{tKU{fI3(p; zC1syu{b!SDz(L^)KrnDySE70nD+>13cF|<8zEH}TXzm&G!fFw zACP0jCYOTBuny4(^H-*TVTn7@7SJZyG4L?6rO6{;+~)1b+y7+I=R`xXxs=5E!rrHq z#O1{TZ=^b2`TIDhXOpu=&pmsmDN&v-Pq(g;E37rD;UC|q9Q3OdFK@alFwfv1CNd9f z+`rK<3MY$~t4pZPz4q4ES8mgu&|r0WdI3A(z(As&);51o=%EaWdZf~AyTUNLSBBwWj^?sgO`7Uxd zt>3IUOygsPqOi5@CHT`7^{CMp8!- zpOfBUj3$K?^Qy1RDjg-oCRBFP*9_<6wHQs_IVwxRM_lh`8cE zAmkkRJS*a2c^^9D{SerR!R7w6ZYGm@xo3kv{o|m8os-|aXei~H_Jm8@P zMsuzMqGqz;@#<>>SiO&t(>63LUK?N%&_3lnAE?y*`5 z;gAxaDq8kEt>0{Gq@5R!Ie^75y&6D0As`el>jU z9QzIGX)Pt|OC)dg-`owY`KyuEyw5>K&*L>4ZBPGn&zl5vO{Miq zHMN$^m$q?!Fux;AFBEyEXJ+wUpKsPsW?d^}NpHt1yqDaFP@;3HQSgQnoUyCfAg4!^ z@ww0Yit;?CDX=Zf>O&|CyWi=hVojS@ikNB2fa zkb4{5hTf!%a!qwJ{)V0iUV6K|o+OzC+>Sg`iArwlglFfV8k(l`$mVao^M+QG(^=p0 z^P}S^tbBTrDm9F27U7&3ng1rw^+lEdz0dRd(g_A7bFH6|)%0sv>3#-#K39H}qw=#B z2kb}K3Ep_>l{UlP4$+2OaP8b=-9j=|;6;wwRLJS&l^dLRj~GRL$537e1csHit|22l z-=QGhn^`7Qo#m_J5Xw2!zx`MXYBAw*+)#jol+)gT0b{4Kp{RjRAboP2c5#>W`3-O! zPe=HY-GOLay!rcV^|1eTwJlV3xGLy!cay4=8mC=|jER>O-NC3J_6Q^J0V$$PrTC{^j%~Iit2Z6vjju?%EsUMC%qDj)&2$j zsnwVeFgtS9RP2aLI=eG1^~?A;t`PR3b9t zi{{2OczH$l^p7fB_G7oplfTt2+BDQIh-yf;W4mbU+Tfzjx>jloGZ}+KibOzI4b z_Z6Fv>7Pst;QBK$_C5~-UFa+S4Rm@9p?~a@00n37+qvMPe_t zaH0qmX%epH#Lo{f_Zk?&loV^dEH{?R|Gw6-YMwW}TN+*?Xll*4fIeW)Vu3`G3137! zF>x+=!Sb*(BkY1|Yb2z4(@(jBJS!+^No9o6S{pg>RlwPKY55!`@B}J*g8Q9psd@US zM54&}seD+3_tCqj`_0N5pQIv#6678gMa~^^{?X2V#uo1-U0Ofy=Kk1nswX+932J-7 zq_^SI+QR0)7c=hXl&@+Fdu2P(*V#l&uh;#7QI4vKBaEn_Ne)EXx`)RBgPUfW@_`dl zl_zXIIzQDO&z3p`bbalF<8*P2-PHv){NQo9juh+@h^L1?KCb!SyXwwHqKbs+N5|m{ zS##eCG;Gh)Z?*&Bf(TgS7LtyLuq~EWht9P;m2bWUhdgwV1wNX;p67iGEBr`xht-}B z*F+y%{Vz0C7$f{uRTNQKsw#%A&I2xn79rJCz)naJ7KdFNYY9+xWG$4})mGFuyhBxO zuS-_++G2i1-8TgKxfXZp!tveLtUekx3_II{d|Y8fVF;$Gp2)aN=Oo>LPj6eDb)OWY zI<6OJUaBp-Z~Sy}<>;|rXYcv0tGCHcVAYcgwswBWOnE|8Qg@Mql4USVys7#aupLSn|VH>T7n)2g~( zTEVEKNY0Xl#Fn1Dti#;4#qDs^1Ya0-_<15wGjNg)iz{slgK0ZSBD?oqhszW7K7L=S z8z@`68HBi`DO_OVo5pVjTuOmehz5&ip>gN6CZJ_oK1{MR}%>cvK}DtpQx zi1fxNhQ}!+#D!e%rK!q13I2`W%MTcnXYtjh^4NmB6%I#bM^2U*&qEjYCtm#WXei=V zx$<$nWZS#Sg!-oXjx6887?9H78gNa)b++GoJ9FxP)MkpW=0xc_AFLieiw3>C^A89f z>JI%}<5XFn_ky7n{KwbEy&s%(Ja`iKL*k$*`3WcafbFmAM@`jG8PxwAnGrj)kM+1% zGIQSMmW3BT&Mhq|{q(Y|+<8YO8Yl!ON%@nLng94PYiu`bRIlojcsGFN3cgM=6M>4$ z{?!KCx*Z<2gepM=aylzknT%W6D@TvDVGLH6A^jEgznL32EayzVIMA3^)KnBspV&FS zUf|V$-}Bbg+<05WZ?Qw?@P)TI$Zv_C;PW5A(0?N~vW9_CE#qeQ`^*i?nR&Kl#&iMB zx1<-Ncw?P4s@D7*n43f8HqTGm3g^w3vkuh17V=+Da^%N&G`^z$p5>|=5<)M!(OjP9 zx~mY3GJ}53|3I)guCR&yT!F@!Lr=0i;}Hw3Crl~l?`RVL-b~UBwJ}y=z0HNWmX@cJ@d1o`#y>H*;(*4PZ^J^uvWH+-mUcRss7(R%iF@tMDmcC33Kp#HMm z$*H%g%9K9BDtp_|(OERo+}$0U)f{j&vM_HEu&^kpLKclQw{w5voR~x&hHR1G6r8tU z=TCq@@a*TuQZ6^hRyv3xRoR7KOr9c|jpQ)*5=mOUunU4@*o@|=O60G9N1GnqUlvq;Kjvwm3bm2~~pJ{Scjb8GbZviSdRgfA@ zK7o6GT*s}rD&PaZb^{(1=Ftr>}%>#M;87NfT9cB1o{~u5clL}C}O^`L*cz%2B zvmP#_ZTelJxdupzFc9pBa<*A*KPKhxO3hM+Pp&LnQ(sBfAh8o#{4Q;N zM%|&=dGCJU{zlhTz#x+0Z=+w1n#{&v8;?)S181GOTq}2IkjgLx`xb=}{1hVe^wu_I z9NOo1$$GY#c{MQowcvq#UoC1o11Z;Yc>F~Q-g~wr8yLLS&Yjio z0wq=@RugO=BNXo_=dBaT(Kf|H@zJ*{GL*p8&wteR?Cx7RW%F#!!p_Tk0a$-hN7>{p_D58N=iYXjqiT36yct}~ecuVfyCl?D0guUCb?{K!fFeyo zBf~&5tr(-1yI0|D0fwW7xuH>G&mc}X5?8)$9wW9nPo;^tRSK2LL0nyS1$~*6iY=VK zU+R6ynsmc@d+jt_V^?f}rK;(hR(bZ)jYnS&=wH!1%VtA(2Q@A% z!-VxhCxtMm+3vihJ{^40;wnWn1mvMca1O}aYU(}$5u_)mutz+lsRU$%>l?;k>jLk~ zYtNrI{>S`T=Oz}8>%9&EN4^YqojjcCUcRPX>o(@fgz-d-j%!B`+m=t=df5xk==DBX z+x5M1p8$q(-Q_Tb#mYF8zdV6^?MJ6jDPy<9@p2bk=|mY}kTtSI7!KhOfWK zY9%Wyc_9WEEIIMb=`N3NqlNNJq)1<&e$>tVS?%!7lPp*!;;{2%K|6&(xqW?3#n#6! z#k{;AV0we?kZIv-xL;}oVcnILOjCV*cnt@sFbhY@t-88qsG)jdK5g~k?=1I1US8G* z%lD&=BT->Ew>qVPp=WjJ0X-6z(iFv*e zEuQJpt>EKlaCaYZ5Cs#)Mm4i>o__aMDMiDz3I?w!TN6zkQWoolsI|-33vnxvq~+!1 zEjnCN2Op9-&GFDsZBQ2UGol*SJySPFt4C30nWcIOA?z&90tH^bk>iv&DIyg2`?h?0 zZ13N+RJCFW>k!T9T9{um>-6;;OhCDpn-k!V6K>k48VvMQZL^y$LdN_iT#P1Pz2s~E zewMypOF5IDF%38?oYaQRZ>x;ml4ROc{;Eo|N=Bx$HQ{3qS1lC+CR$}EzUeS3Kpk!nbu(!YvL)k96<@eezLL;Ng$XG{Xe+|a= zb1e*#JjfVd7yWjDl~M5y<$*Mpkr92u2mNjGVBHi)f2jIL_W*(jZ+BL*)fn%invNE>JQyruA>l{}>P*@@A5gBxBYUNj{2)=YksrL!No4zL5g?2KqA@bB4$9Q|L ze@d}}nEp^E9Oj>d9(+{SJUQC}K*@6+9~2p=dKi3BofmatjJI?5mn5zgtW9ZRScKhh ztz~5Q3qJ%7ih>p~U`M2o-k<4Ho=KjeWIZXE;fBVSEWld!Vk{Bq0RI_xn3KC#js2;I zSDc-b5BKty`J2OPXlRy{gL?1#T8($xPd4jTv%@q{EcH>v$pE`T=&yQCOrwZI=x_Ic z^PYZg9oRfzeF^jPwtstZr=uA01*~1w()omP>^sRxTsD)}q=JyoVk?=4G1ieKN0#|e zAH#72g##yT1kDzL%~(bXkP{q3`ozh0`8h>DOmrd|2s9B#UXa z9r>o~t;BmN|bZ#c2u5<2L}%^m8F-L9ULx` zSgTnsEVzoW@(XPCuQ^);TZBYmQ7b*SImqGo9OSE02LOkw4>Js%j?tbsxnw#{duIND zSX>@6#vE`q!D zj~?-!U7OsAr`JBcPGtNbJME*jOegY||A-1;<4-ohgD}MvgT$t0uANforh19;$VWcvyuv=_y-sk=1?#7+1`JtJx|1LBp$i@ z@O0TZt#jeD%DQg^ueMdnPAAstQ-t)?rkRE_kuxWe(-ViWz1%YcY_MtQAosq@uNaeO z5eM>PLaY{}O~>*2zuFqV%>M&YQ~tzqh^KZlS9t5*F1qY*yTQdmcuVO8PGI%_!OYyj z_*){0MeUh^qCvt?J@>l`mYPQDowI?AeP0taH zXIZk%1;3~5d{dIhBc|rRRl0e-)V$G-&4Ke|F9ijTE$jYymYEPb_UclI)u)^B*KhN! zFJkc?)vSW^`0B7P0~^IHATPdeYeC}xrRHs}t{h>o7OHr7c`GsQw0S&Yow)kq-Ken* z26lM3x{y)E&7SobHf+z#RMqq(yzFZ=jx|r)iQm zL687EfJL~Qo_KDj8DVb!&eX}MT-sq{+1KMN_%9Y3X?S$gP@%m&ikjHH1ykoceNMNJ zU08BH73Nn3h~|@Y(JvU0E{hIcWi7Zl(Y#5Kd0i4gd2)Z#MS>1#!8WZS99VOI7a}{e zHPL9Yd`WmeD~no=G#7q3T5||iZ(A?@@UuR~f^bL8BNRRr@h{rzs7sxerfQ>V1+l;i zpO3Z0)8SdIG|rK0J|zhE9EO(DV!V{9A;_wWw)qsicWkWhNbA2md$yB!lJEwrIo3d4 zyW9FTh|w?gAT&WHn?^Qy{u2`ZvV$Su-qXpf+BWFsasR5Is8+geE^s;kvI!`xT&!+ z%l!ia@4NTkQohlO(eY>F(85KZz;wam=$&37~&lX_r=$7|J;$!n4}@+!iEukqG5D z{R#Yk!NPep6o^^Rr8*_O-?F2nmaow*#JR!gSr8(beK;{nF_*y}6TR2*^HAp3o_hvj zS4`l|W$24E!47Y_XqWvTR@B^I(@vtJDUXHyc04wH)4yi*-&OdOTI}-8uf8vZjG<0< zy-i*sxwc42-eH==Qp2p&hD1+p8jpoZknu!~H@+~hNZts4sB>#i@Em^=1Ep@`uJN^T zwShHhm1`xFlHM>ql69tq-b2Xx8ny`p$gqQFaK=0R&;BBp=06k^IP3 z&ubKp&6&hj+|^djqY|>(k$lctJrX2yO60dx-5mS-)*k^eenex@i@~II$aSN(KIPq1%=Kuc{I$o`TMyrQtZWo_lbSD_dfpJNFbwMEAm@~ zphi}dS~n-Qpz3S?&U7ky>FP;S9axSWJ19*VynfI(guka>N?H2k^ybmEI-mbsl|MH* z?F%lx!ac4Fv07PuSL;={bdFQa`?mgPQVq~j9k++f0v>9jmw+CxlXJ2awQO%vxwJad zr4uMqqbsXBhPc|p0X^PNVx?s`CN%`eIc1(I@rHs+6f2Q~sW{(j9 zWj^51+Q@01^=29MqiU*P;$3a3D71*@Ey{wQUdy$)F2^;_C6IBkpFOe#`HcML0=;!QQk^}sHM=A3iF*$BPB~AWd16wI`y;eW+enL9u?h~jACVCih2}77NFN){`vk_ za;m5m8?-A}dU3M|?@t9r+C~0!bjRH?lP|WJQ1=C zj%XuWA`Y0}D&^c++)Tij@%M~;87IZC!CPXMf-En6uT~{9BAwNAVQKgNlaL>??QV9W zj%!2MUI$Y7NTH$LqSWVRyuzocVw@AXB?%pwzp~Dce$=(@lM#H1_`I-(^IVwFI&~@< zi4yDwt~WdTeLK_D;7Jex4anO|PIleH4H5@#?DhlizY2C^3oy|2kq+=Y(f18i*;(%9 z0dmJiEK)Odc=^^1*;3pGrpdp^T*D%^<~l6>_ms{!ou=h3vX+rC@G@Cc2%uqUCOE@2 z8&3NzcA0HYl!ET#!~j}s+aysz*l2YKV->lpwEf0_Vm~K?>_4Q-c-X(?4rv%{Q&jDamH<&`!c2#_tw@oTd3_h zvO2Gx4i~0^7SwWcEXkw&$yV&%SCcwR^j_yHC&96Z&$mNC;>udjdpQt{kqy zhacQjU0t7D9*r#Yy5)2oV3DUg{!{k*vq?m-qu7|Nq4ln9)>RQyra4pdu;)pgr>=j4Zpm6AM;lz?(?&{5oFfpC%yOj)5N`wFVad* z=kE@x;b&8%SLSRLDQ2i0X;W&eqcLomIy9;VD~jbCOf+P^h&oyqA8*J3 zk;3Q2FZJcfy(Bm@#wH>z4sj&2$e}YFe_^<2x84OMy1`vP~_8w-Xd^Di8>SLH}l&$p( zLmh9&o*Xwx3fWv5TOU=A40}`$4QPH`oH6D9a)>QyWc@9#Xq@nwENNM?{jJTZ$w9Fq zKu4!$kkt>bIZRjE8T%WNNI87=`krbsr_bu!%d$ss=jZ+TcoG^J!y1Y*T2%9I)IBl0 zLK(RS6SwN!Pwf+W`==BVRi*Gk{c{4F5q=IpFW%#`~`%I$@7NV5O#|%_Q)(H zsRi8N3XQF(U+%(kP`EmF0bZIod#3W5E1xyU;VZ*!Tet8R-icn5c*D3mu*URAa0U~5 zYg_oF5bqgCT54=wqJ;VUW@p8kg=_yLi$BX7)zQJMQ-`4z! zJ@q493d(fuR38-PI0eU?UF?ycgvicf1nNvP01b?t1|JCNc<`2$?`ROM@INRAX^F?{O~W6{EN|L5_AzBsM9-IWrqbCbN*e5rJ9?T zs-$S8(H1ZYD-83K0%NT#UFWJ7cAQDMqBz^B+p4LscZ;8d$}(es8(?>}3$fvJU3}2o zrDt&!3(9Ux2KyIq&j6GhxocHCS!pX-SHpwBC)8vDo$oMhSHVet?tMsA#)qlW^4ZxM zDh)hh^ga68BfBu$u~PRumT~??9PuCH2yBk_2Il2;=+zBHbIuQAb1~lDKtz}!?M@mR zn8|+JPS)zs#08J%g8bLj6WiVMR^{nHRP+0>$i?n@AcqUYQa)tFe@sg|5JAid_Q_YaXoY z!!N2La9Y*I8^?~rimAw(A=2o8G!ANm-D2DI*KWTgz9g{97Yr0!KNaf)#X-W>oElm= z$pRXQ0mM0a&uwo*sWgrSX8!mx^`c}oOM}6zu|n6JNtnl^hd{k?yn`MgTlyt&vH!}x z<(kj^UH;XwC2ao#{2T}UvrFku^nnW$zzj6HDxMbN5#T6x<}Mzwc_94&3@L0%g%Z+OBI1nJ|~P_b%aQ61Dc3CS%;%?N`L?n-3kmO=j;cw?DN9`B9}VP>l6-*^wTBt?%Gxvd%Rm!ruPWQ zZv=kuH6WG!chOXLwc?}WrGW@kc5c{%0lx^w@`*M|?Yxf2z&~mGl)z7Y^4Py2T7aA* z8>RO;h4e-jW-cV}z@N75vX&MN+rP+u*U+>w(tVWKHX&pnvr|>D_#IFax(uBgr)5o! z9{1cKtu1}_xdvZRx4)*O=B)mv40f|~l2sBiTb%z`?2`Za<+Yz~KdYzoBR9A5V2jW{ zl{pW2$Gh807t_SF81^V$3CvKoJPJip%(N~o;-L+v;d>M+2Sf0NyrS5jEzNP-y ztl@sQ!5z97P>=J*MU5Dvx2J<89}2-u=8~k>*AebPd4ae={G0Q-U{fdgbSv^Z*3BTx zJCt7=cz%)0b=|6tSppK|gs;5?aY&1O?w4!#56+#N*)n~*Z2ZCxQLl)kU7ligWiy+d zFRjnt?;h3tEt-2Q5N`^LW|C|dP4o0`n(x_ZCJznqzUB*9T1F!AU^tYHgU@{B?_nfx z%HHtkktC+p6@}YBwS>gZy=`h+;3q#^Yc{o@@sR^n$!*BF>Tzw0`)OYaFs;+szMy&h zSfqxTIeouJ!u2K_6MYzL@j400DF8>>zOPx#*VfmZGa0$3U}!rd1UR#VX7%;;o`CjK zpZ*jR13l;8v2O@(+~!d(LEA!YKkY6HuqS<5<;23bN|YNzuD2m>^`lWZbIVA>uRLVR z8J#KCbhVE!<9q5ywdTEB&io{1WVJH434f<@hkkj6bSu)=Tz~GWeXv!ssY-**wyfsR z$E}NSVKi`|6%8HGbnwW4*hRK^`hI0e*HV$cw7=Ej&j5ykmQPRCws$pi;g9y-vOP){sf}`VC^o;njjmie*cSPqms98 z#(n))o5_6h8MMiHPDQnEfJDN3t8{=la6063%Qf@GQRNTP3RP@tyRZ52gSdFfc0*gy zIK4u*Z)_Hk2Ual*S_)wmMM{WY*BxuVkPAl^gw*o~md^>pARqf^2AJj3F{p8^4WG_7 z*&4sYoAJ<}Q&ntIbZE0+DR-%d4-LHfwbfLV?)fDre?KWzwJ9zsF$gDqDtG4@ry(QW z0r=^QfwPg`Ejzu@M74D_5mxw%V5R=j|H0UMhr{{4?Y=~ms6h~Qh?0aLgdrFuq7%LM z8b)-Z4Ms_b-bsjFM(@2RdW&v!(R*if-~Hs>`}eN5t+m&`k2#Jxju~@b*L_{*`8h}I z0UD;jg&LZ2aE?~rTk9McH-~u-1uVkbc&aPnP^RbuuQ)q-XAhs2hN7IHD5rIkf;1K+ z5sSt(1xnZC&6?e&#rpo#uG50nrb?~#>fki#Is4=Nu ztI9B}`doa!IIv7G_L@)AG!Eicj05eTGs}|KpgT zTWr5p(79SDfWr{lL>n?Vq(t|f&JyPXR4+V&lStvg*{If#B$ixWSGak4$pq{Ayqn83 z>qMA2M^UrsS80of9K1)Y5`1O&=PgP(B_HC}$IGhkZ2uF{=YKT`Q~zZ;5V}{A<9?`* z#_1Cm-E{qQyTMF1bZs`IAjL9G6I5ZW1h%K~4BEhPPwr-#H@1eq@P@jtr)imQ~{m zzwzm>jM?JW5N0c=aRI3g?YebY3&Z0=bBX2&!wq@W*Ez@bJ3IhXNBL#RnmJ z2HSaZ>4o;{?^b8{w*B6wm-AeNfUHYzE$(m<)N@bVa&_*P#Q2@+>~V&S<%1=ZW_R|z zDA2F;VKrg7%VuLN{0f_1T-60CM6J?mcuEQEdvzd9QL5IT7q~ifb>j)3@wrro(rR#i z9~F}v0W&rw+jT@R_!be|$Ut&m##OV6!cmz5OXjU@(<9E<*&jR1*yS-s))M*dgcdAArI;cbF!Ir~OCugUvZ9>E%iF$- z@C6y9UIv1{v?W+LeCcw60BiHem4eCJKJ( zdM>tYBP~|-#p|&M+rcmEqAppGL(=J11A_DSS@7FQxI1=2!4Lb=vN8h(t3)?*RWLZY zFzW^2@QaM#do6ud`stI|!}~Jm+nbMeZQtyaX0 zwpM9fWOL=ym@n}ON)}bezHeDljzs<73sSJ1{oU!?#wp2r3dk&C!Pp;SK2Z4|Iy$Sv3l3;nC_VtuH9C7=_!CdrRVD};y7hb1h`fMl35!R>{`ufwVxZ@bY z577k!uGZXVPyTyz{&yEPvwKgDb;{%AzMi&oncn;cWLw^DGYHIW5B}a9}J;;mB|e^k}lsy9h2nHVCL}bP^H6#l%9iGc6_^#i8Ia7iQY-B z_;ZTGht8xACU}W!cNIKLc@2BX`YCXLne~GxUY$RlX9`XnRW=c}9BHHX#sgVVw`GXL zF5I7XA&u_C*7kV9@C_Nb#ZFyWZ|h-6tYQt!{?8yvW5X6)J2SLq8pS^68^)~5l8~UZ z8pmlctg;hxX%^1kb|~Xj|Ni}GUDwy~D=709<)nz@W4o^C3xqN=7Rue3SS_u4xq7y2> z2xVxQp*J00Vi8(m9bY)CaDoJ*W(pgHF1js@yhPHl-bTe(bsn^&);pc3e{{1t>KODd zaQ@b}UBn2Z^kGeiEOro=3DVFGkYev|=dJufVaZRJV-oOk6gF9?7+#uDa3bnsTXV9s z5_EEzIz3S5tVz+7ULs(TP_v*gecI`NIz0>5(A?*ouxSs7Dz7aO31$C8_Ns&}c?U+7 zACykl(zV96ZW~j-A38KJ-a<9lz9~uz;ukS9?|gu)*XU`=o1Nl?%BQ#qUV$X*AUpy)9j+MNgY6PXh3^2%__?b7~e~{uSC&w6tuW& z0zJ^cKmD%S9_w{MI3!EQ8nC2ZFZaEcHa-SJl^j>vzB+8u2t17=0%GOnl4$_h0wc0(W#VZ^=ej*}NhoS;Wo|Ru4&_-o~a%FCYYXIG5 zRIsiwdPdQtHCIJyG*kC^Co&%2s-3)*u3%L91t3e+*k468V&8P*yUp<^ zsJ}k>wUTMTj6*`LfnUf)lBYm^ehp__k}gtJm#2wL)Ya~4-_=HJ7{++D9di5UO-crZ ze}BN9X8V$wXx`eGE)>|GruhW^i4ZO28dY;KuF5p5Fr}vG@U3!?BL_9<41JwHdg=#XZ^F7UWj;AEGwWwZOgjuzN9#gJp`xhl2 zTnQbnbo-5_u(!CEB|j%x{mM%a;D_p{k^(R7nu6pc+DPb%%{yju=&a<8s9B{H9TbDG zw|hySd;G{}^;Tllhw#PumL)GqhzHEhhjpQbr%&$dfc9()=8=XXNn|MpW|mfiI_--( z0p{yFJj(r)G7o7!hodu4Q`M7KxF2Pj9wlZBsoo6|V+B+w$>rN3t=0ms;>D>O)BGyP)`eV4r_5=RHtk^d@GJb)>&7RFQaE^g6fztf> zvOPhuZ<$*zgaOv((T*l0(pqu$gVW)W?$0$PKmS@S$Sv%%az2lr-qQj{CWDjn@~W7P zIU)3%oP6v?x)w3a5fUuN`%0yA{QVJhB-iC4*HHb0@U=7Pq)kI(JBR1nh(KC90V1)Z zh&jy$UmG{0$=?dc0|eTYMPL}^>fC~Q0J8Y!f$zoA6E%lsm+@Hx@B{}_++~DGq%2-c z@t^71t+G-oquLjRIZ!K#k`M3vhfE`d-n~C zDOC+sS3@)NAV%Q_0ZCM?@XZ?A0^Xa=mtS(?C)7Xf7ew`psn~re+SQ}UL*dNNxoSKe zS=K|;fA{X>_GvP*$6(3ftV}NCdID147`kI)xl4W8VfW-=!ovn?^PW5Z6Z)r{X}wce z6SY)rqH+IVJV8fDV6nBl+@aIfbNsdLKVdJ+3RF%n$_sJWTgFwu{1eJLDX?n^NNO~H z-lhtG6yObfc|uFd)tb-J-pz)nxXN<9#rXvcnU{O-)AmX=y9Cd*42^s^n{Z3qp7$>1 z{Dw*2BX63u%wp7NF3mztQXKf-6Mmy#@=F%?UE&W+lXzwEm_^C4WhG`Jy{0Dere@v_ z{@IANI$yJApf_-BAOP9x=f%=et*a%QtJk?Suy+-hR>QLA6WDkiS1GWmcGyqRb7<5s z{DZ;yMd^!5jRcL6HT2@%uO=7KxkY`i(sU-t=aX96{`-7ng)7)GRnxyfJxFx33_05Sco+Npu+UW+CI3v6g7mePrVGPA?AO^ zjgC4K08;|>sN`+}VZHS6s_`P-NC{6mk&JRxK7gpCZ!H=dkmW5cLp;uh`&FazcF!pB zIJ=7JeFGzX)9x~TgwA;YLADaDtWHh;+!o;a8sm1jTxzT^pF`5ai9og}kt^RR}|5 z7x_$J{8Acz-7-u8-O*6AM5}D$gP2Q1$Jj0_>(8sd)^ByO?+m9|g~86F>cbyu$dto7 zSl)g77+aWEY*9GDy*4)Xgs88A;TNqn?}53J{0o+}FEL*f96iXd&P%BJMZ7h>4W%?! zoD3-^cWn}j;;$3N#UJ;@<;5#pm&s|$6$<;Ne!RX(ht#L8*DutDOz`JK?{KW~J`VNn zP`Ms)#oO5Gbedkue74LoMpCu{Di8N*F?jw9h`x%pABw15>(lBS*HkYN-kC&Fry#5O zC&mXmd1d$p)}yX*%G);RHo0_s%G_J3@x-O`#X5u8#cz1fXI!)Hc!!@d8q|c7#MtO$ z_IK7APis~a@n88GzdG5nMuF14eCA@|EEX>g$2hLTY^xS+{aGQevK7M@(=p-G@+y&w zl~<^WIQww6nL|Y)wn!#*(locXqJ>_Or7)q$jg=`@`M5H!m+|JYj{PA)VgDI2J?6?) z*~Oxg`HAsB5y8yOE>@FS5LB;T%2Z0Xz{rC5Y2eQ1x;%^LTOHaAJz5vh3yj$q_oXz13+X@9ne-P12DGi7Vcpf$SZ5Y06Mv_-27KN4zrTSJjVTNKz=5lV7R>>e zH<6=@l0jowpqY)%xm!s8J>dMQrwzVE0dhAPiPXcp-mtspSIT->H=r{GlnHtJ!}Oy~ zfL>tumo)SrOV_{snthhmR9o7l)OVMDJgiUsgOV#(<9JgLq0A6TMPnh4>nY)V{+u&+_Oq-=l9hM7ih< z*_o2fb#};qE-=&CRx!Asi}4rtzUHf`4Ed=0+^3nDb ztsm7jTq1iPhpaecX3-o_4@&S(PL$L3rqeR${=@*~ zrbJ~>>BFZ0->Kf!S@kS+QkMmzF2j)=d+snDc}`TlMb^ksZ;b6t9a>+_Y8A{=;+hb@9HuU4P!MoE>{?T^;5H)lrQcR!BRH_r z*NI#< zqVm~^N=a@&zL&;pUdLrg2H6^x6ZujtLM=k#RP{o|3LrQIh#YoMDTu^;x5E;ahS_$` zvZQ=|p*#t6G(u>v9Uf{s(S*AEFSd{6%0VOPedt5|-6^i0D#VYT4cd36_ff8_0`_U! ziSuqNox}q(R^O~=C$BeSilRYLuB8cwyAxL*vtFLKSC&s3P_7MV^nDoJA2j^*b1h$1 zvq*}sVs&dzzwcFzW-*0^3vvtM4}@dB68A3K1K!6 zH(4mJ>r8R3K)9>Q>Sk1npnv~|k?WaUaR_n;x4H?^P#2&dO0VcFo56tixW6UCNgXRD z(NUOi<&cnLU_UjtQiZX=}09S$4iUK72P*EKCHP?uBSuqF@{;N*^^ z&g2Dx^%$tdDb+UPqHc%x?T>4VFTkKx@TyR}`}nmiyN73q%*;es&FP0FFY{3IKl5~| zQFgvc_mYy6E3h6f^~q(jGOJCVlr|ETiY8K>8r5+bTYkQSsI@FNS8ou*qpxmEA-&aN+^4Xj;9K^_pd`;j?x2P7y6v63PKELt z^5Qoz=dN697s1p%i6+Ntvi{QJ0ahz9r^!BQHHpV!XBTg8EE{JRB^&kM1G2s1sGQ@> zhuRzLLJwUiip%+{BZXz3wGH34K=}_;w*>yjs2iAl`hfA3;BD@`8N7-ibYv&Lj&TDx7^-Y!#veZkx=yi_+>_ThrmaBhO zrz@$CRg?o)wt839m?Hw_shBDgTUcrC0?{~;^>lE|?dn9i48eq_Y@Sw#z1cpY!yU+k zKI@|C4y=&EeIIs};fAx?d6u@Y!}&!S1rMu)!`;oZJI{wL54PRh2x`FyBa5RsB;q_5 zVn@&EtIw3MSNJ@4PGiC~{!~Gg%i;kg6LSHQb0&A{(2lcS zdaX?6JVM{=eKI1sT(DG7Yxe`xcKO%vS4|B9b?(|~-fF%2=pQ7#=DDiUOhGS_0`loO zqw=8>xqS2bu}YV>Gs-sz>jdbmcVnGSf}fhE2JZvR2N$@v%BXaxP@RF6Bq6(k^Pn7y zLBRxysD~Y3G_+u;b&QvIokvQMQ8+g55MobtUtBYYX51|4?|w5miSE}zjUvxqs`flI zRu%w9Y2i+(+OpwRK8riclEK_aHNvQ}P~ZePmoDu&V- z{h8a8^3lq@x8a;+4)$GQvAOzo&VKk`LB}uuB^v* z`yUL;^fjFE1HHy<1r$6eD5{`UVm$0py`<99T(=s|u7Me->Dql-3T;^I3R>*56u)}` z8CXOe{$x#0EKNTvr8RhXq}!gC9{pW9>MFnDjB)+0W1H*q2ZXdDDCPw6X@P?xrcE(s zXF1C?hK`oPV=X)(fnJuqU)IDPGDx6DWZ)I+m4FkhBIncS%R=e3{7+}#Iu~Ee2 zE~>?ALj*dA@v2}O+o9`{ChEcM&BZnMb&JqNx;S^Q=;5>v!BkU{kHh{_9axKsUXE8L zd4U>A2j*h0OwLW+vHcjpO!UMz4PO0JUrV=fi$-R*IqadE z*iw5h@A2BNcm@zPxcfV;jTe8!1`*MkM{CY7&u~kKuH_9RF044ndey3m)oR&AK|wK; zDxGDDWpT07ZfL%!3OWAihNmI=qrn<4YJyD$H0YXu9vV9iZwgvrlDss_=ew#HmLUL= zj~?9&A5fbp{cI`%Hy@JmRSwlxc!Iy`JYr45bDYdvvwAqKNC~9u8SNg9ynJa1RcnO~ z+~Wc=N4ebf)I4={k?YnG#IF{JrPwlfa^~p*+PGIF7xqs5H)R^KEVeN=tKn@3j#fHP zXh2%RowK;mwW~dG(PsWjvEIm{?y4&Z zGQ>_wkSbw_p;oZ@!mi@lcEk|FM{jif>O zB+#zCypb+jAE{~n2O}Zsl(cK$gV)Vwmz9yC?)UuTrh$x=u3;UEN7l~gm$EL~#*cYY zu?q}(oMqVVJ4TjH-g+{(p!efj*v*qA*Yft+Mo?sNz!n%K^&$;YQmscd$4j9>3yYKd#5 zt?pbbT`}e0qaVW7=J_ySh8%98K*S-a#M0d1=ef!s+}eIZUzJW4_mA4s!L&xBFb%ao z|6U3E>O3u9FKo<1%w8(5_uXcl2#A?+x$Ef(He0(%GNWGKy zE4Ir!Uc6^5PYwi9Hr78)CDD3gv*U5d2Z;Qf^6iK$6sQC~nVwUU9XeWjB>>5E+QOsr z#FNsy^o`}zLBBjVS+IMbTs5)Bs+pz$N-zQsrzh}0sd6JC&^czMdV$#nH>S{c$kg^q zJ7Z$b?z}N5dBIOKUhEHBdis0wmm&Rsb_;nti|u@wS!Fkbirqd$W(71ROPtGx%Ga-? z0iG}%6`yn*EzAUe<0RRyj3c28d4IsI>kF`f@Yy-Ia04$d1?lS1)8yMBmqf5i{I?yi z@ADOult#)eZ*t7ld#U#McH1fWFw&wB>WG)a8!`){W0SDW4u;E;9<8UJ-$ry*?t&Q} z=j6T{bP?XKUF0{#tf4xY<`z@76rjByuvG=GKXzK9RlN&SAB(SSid(LO`osexbnQ3C zN%v$WCuKewYL>pLfRfF?+jq{Qhf{iS_QOKcbX=#@A{GuilDyK1?9_pI9U2;QZ+%0w znOeo?ue~03@31-5(?;4BLvpfv>CeXPqzV&By_(@8 zAuLC8Bl@BiyCZ9<2orQT1L?7;j7=>=9W>PVu{906N!~JoOolp=FCsdHzTZAY1c@%q zE|K14csB|LeyaAHV9PrPFuq*$22i|h8=Gw=WKe8!;uB;}P7X3OEi^I}Cq6GX$KM>8 zgZ%0nA3^cN2e*8IL+wNM*p6EKGRldR9GnGo4^Z6GYw_~?;DzQd9_N+pFT5Dxhh>Oy zfnoc+K70Eg)9|LUR)M|#lJz>_IPQkyb2zHxrdjs9!^X}hD5ftqCu{yG(YAkS$&l;- zL$ifO@8|1@`=wi%L~eTyIUpXor!4p>YrzT2c-Dm|*YXqBJHhCRe=roMLA~19SGS`OyV`6Mr&i$Ig8|Fj(2*C62ZCa%$#&&uLkPPGqgv^$0c}=Eoh@z6rZr85Ds@MF+ zf9lS8v`%!roV0PGA1()%oRqphOEoNDT zv_(r^0d`ZTtyZhNr&uFc2cWI&|I7LDe{-S!t7S2;45j({F|QzqJy|}VEw?B)^?m%g zMgorrg+>jjK%So0Hx`Q+62fqaKR1mcF^zo$2{E#af$#8o8Lu8Y3r(|FFaTkzS2o@e zajyIF>0vE_-(ssOgj{gx5&G*V&WXKlV(-S4iMerACe?U8rETx%ZU$q17a3xuI-1?Y zJ;*VQYpxr7G3zw=E%1-3aa(Cl6uKru(O`oH!h{juO+}(eIkeUq|sqt@nnpC)f=15>$mGt zb!od{JGx~8#Z6KR3&G#!(r}h8dW^`>-(k6NDLPM;w2MQB=KBg?A#`P%(O@~U_1mMMz<8ZWSaQN5pNC;gS7p&cP4W!Iv&AQ<`kC2M^0 zi(K}e;Pu@}u+$icyDj;-xmi=(dXKqWe1}So`u<&@TvTBfjG-IJ8v-zHVfQ~HOVqhp z*e{Y^8jba7@?axl-uY3tZ4&6?q}#2}8RM0+f8-M&ZX0tHQv_Yis$ll;Lx}9qrZh56 z4XiQwyGytF=mh7Bg}Y z1Z79EZ6PH4bQ*!<&R;h}N)FTwo}&YIkbnu2x&6%WnqbXsef#d}>t)?Zmyk>T8+cv$ zn^gGG1!lECw>vA_(R2!}wO#)YX%MqQa{_OC<>vNco?Y8B4b(3YUQ??dQ)**1jzRZ} zORm+vCUZ<9n7N%Iio8y*Am;Y$^CEZR6849-FDmQ3CVW$_gswr-ba;SBzgE^VoCw3Y z6GU5;1l$A5R+ZZ3Ziw!=qnd(=la6-7dV6|c&(r5QoPRALC)yN1?tf?1%c$3pzcV~K z6}kJbr}YC10DPL5vg<@oV`>Y$U|W;*wd99!@xiyQ?qTWqG+E56IUuOs#RdpYq#QHD75rcRG&EaP$Hv2w-c{G4Y={`s)u(}Q) zL2jY0k9*GA{^k^rrDYB^)INqVqDd*>&hKB#PudFRi3rJ&^*IW@OE>6UkSJxG0A+3%qSOac(ZA~(SN$Qdh z6?6>){7>0ZHB-$Za$KY^(q~4WUy@cjQ`B?KUvW(P*i|;3wzNteUSEG0DVjF)*Ppp@ z_Z&N`HFrASm|VClS>V%{?yGoPZ&OJ0N^r|8Q=Z1l5J#=`9n;3gNP;4}EWqdC+95CfpE0XZTC91!lBoMII0(i@*$b__Rq<4x_MeM?me)kUc_jW0l{}nlXX8k zOj%Rp-PX-H?hzue%-7KIeGGQ=gXFz=9|dADk%d;|LJj_Qsn?P&aV~z)<~ShKSO3X; zqRapwo}wtiKJ0NRO_tp=hY@q0{dG_DJ-CF3W@I>fRB_(7?LlfA&uNZ!b$7_JNw@#n zIVAgeQ;6j@=ThOp#0kP?`6C+zY^_Oh4=UO~L5xmAmkbM4Zb9o$9m|vy8?#NZy{pt@#QrAdzIHU@gNf* z+^9Iw*LYfh)#wIZ7oNVQ#E=Oje0{xN^fTxn=3HmUf$6m#mt_q9JB{gIMfZPx@PCeu z&fhtmrXQ%P+ZY@gt`Wv9b*B*BolYrC=C1#wW%Sf4t2Coem6}QM_r$_euaJs{AFkog z%6cY*$SU!2!X*X_x;zJjW0z+0J#<|aNcnWlS;%s(UNiCvJaHtJlF+nt=a1-gf1LKm z!;^H&Oa1oK73UJ-=?zDf@R(tZYFkC>;Vi^|#+dnDboq4TxAXT;_XmJ8AC8q(^)@-* zshU2x)-68%+fsEIRLF23I4>YEe_Tsl{Wlxl-O!AK`%M@}0llZ^7^$5wC(XiVS%$X> zP(5}4fS5m$A{=9t{mx7a02^@YZ_CrmZ zPX{Lj1G1?aYOPix$n+Lcr-jv-=|vG%_Iu`{-?wZtLnZB;sGq%LCRq!~)|q`rXwT35 zk}wh($c$g~@`UlOVaw^^(Y$n(_;R*rD&fml{yCuBn`hdrEE10)z_@Gx{rm6}43dCE3khr)C{B=mpCDK~`)f z%9Xk5n<&>qDOkVx^T^VeEiOunN!n+NZv$=DQ=1QHbHnRM`*`0|3gGSL3-bkJ6j3}< z;uN1;5n@@qkOOzsTKl~kiaEi$y?frcbk*e=`^j!D=1Q!(5==YX>#Js&BrXMke_490YkhJ520ym0+0!+nw7B5tk&8xftU zl53ZDB7>vkhU~nC1i84Kg0LnCy88fZb`6A6A|oLXuY5(irW>Dw)UHLJ<=CQO_a1xs z?@HT-x*C%jP2`vm1(aQD!t}_SWTm!pp|OC>7nymv8uGKfc_lvvM7r*P>7}U4rym0i zBH&nx^<6E?+HjM{uRl6n<|ZeHywzmF#@NEFUs6Cgp2|+@{qZ6$fUjH_9keC4y@7)o z-6=&0Q`x9s8v8BTQIFr4zpR*k1fu$qr)AFKi|?(;4tbw+9;Y&O?tkF5@s@GzKz{wV z% zV2cRNM!YBC@*_UnN=;p;zg2RxC9jRE1d9k~A@kwnZ)%<9V#`YE7}n-=Ar<K~RNaQU$Q9-% z--aaUBu<#`bhjQ~mMl?E*Cn1@X3taH`8PDlWc`EDFvpeDTG#s1C$LUbX8rl@CsFhe zeVry@+#lx!|5~1e2vKPvTvAJ?OlOU4SXpR1%460f@`Zb9KIJT%h{y^;aBkiB^Sx1m zlCAUJkgZD?z}1c*SpkU|&y5~^EzXE~0WwBzQ?>N1#yFT(T6g-7EmH4B+h8_F(E52> zYx|KO=PI9FGJ_;z zGyMnS+26Gtvoh?AXF_~zr!nr%++K!Z8<3hz3Zct0*lQYCzta7KVdU^v;y$IGtBJ{e z{gd$?^ZAJRr&K9MQ(WNqfW&8GwaBJk@~WPo)$U4&P6lXKko+_>}Dl zQtuxOT*IsceYp0ecR_=Dbg`addO26@du~Ovlu~UY zaHRuCk-dn2eFBBG_uJNCqIQSrVgy$J?VeEahNv|l1dj&V^%A(x%13eE|52;>->={Q z)r9&#FBQZy!yN5=hM$|j+^!c|-p-2RLpAmyn~IQG11R;8DhQ6Sm&tBs;q2Y_+JZH6 zZ!5Rh%5(`+(l5P^-0P993s+`RkyPaStcBuOjpE4-pZ9>kF536QrL*PH%d$PWWBvgDZBw z8R_LaI@E8e?7ZGmkY>9p`|(!Bo8auGa>h{LnrL*4V=HdF!*si>!@<}nDA9Y!mi^Tyjx=5J|slySeQ8|w$A3`wry^^y_|3!bUspmzi$1= zp0nm#V&FdE*$fR-cLJ~Fp@H8&7)_M>xUW97KBI7{e~Xi#WsIQ`OreHj^UhX%)R=F8 za7l)REJ&UKr-f=hkAwP0MiNDG&**wZ+>o3qKhC=}p+dRm8HGWOL2dz-7QACq>NyoP zrI8s?j*ynFuABiUTVWYNLadjJqyAbH42n6xd~=KKk-Cbt7q{{2CT7;jHrg8(4>R_~ zKw*Z-!j3rhikT^sH<`6-|_U_ zB_Q<`KQ%+Z`u6q3rPrU? zU{?Q+LSM0D+eTF&ZNL%S_982h!>DFTIF$d{$L64eb?IDg#(Jp=p?4(6vkTSP_VQg5 zGMmi_waO2Kzx^o3#6e%wO=R1s=-_3k-q%fnSn}a8GV7d#>LMRIE8`3Sbu&Llv7V(y zhb+&NrRDpHD|#7JQxhx0&HbIL)fV8bNTCcgb4znCFoxOhx77)N#XhR7yR*?~=VcGs zdDkw-);U-dy(}!KNH{p2loAD(HYS@=_O#F!tOf0GQ$bT|b$&ZK<&&t0Szq~i$$46H z1vES4E%PF8Q?bN=9m_Z3#d*PghNP?1HX#|Ludy9h)7%`Y0$ji6Qy17_#p9{?#TVbJ zz^0C1zt7Fxe7_jYt4B0h`#k84l>TaI5B~?6#?XwGR_9aQX6+`^H~Vj_z?D17C)@(XnvtzZDUX!|$2z=U(s^FTz&^bzgNyMHj0 z0oK1W{@A4rN;_t{*c!WZ$i&|_U~dqz`=A8X$YjXL)_e8*Bn*BVooN)Y7g2D0Uk7v5 zRz4hRlT0f+U}#>tJT|Ou>ajXd{H??^7q5?Ca*56kds^A2ilasSG5$;FitvfsLTHEm zxI#+e@fw4v$9p6iij*3OVmR?U*Andha)SWAv*$7=&Lmga9VyeNSH_w5KW>Q6%u%dU z^xp0?dpVCe5oMHX(SOxX-BOIa*Kz`cc0Z~9{Dbj9Y!L!H#F`{1;+$q;{p49U3Y_T1 zWq()IiL%a>-S*TWm@#sREWZ~hfI{(jK!zOsrT1DbT?$P zbCUJ@?r_%u9b}|z@0IKq#4j(F`7AOS5xbw!ku^2}dF<1SC4skH7LTVS0S*f^TMp1i z$FVRRc^66R3DEDzidpkPqzx@EO8-{|;J?$6{w4ML_Xq!D2J*lE^*_GcFaYqBk)AP5 zN1gvQ?WG_Bmw|ae?VqQ`Ci5iHmsfAXB;>z`IGrdwIg|v;N?pXM@s%@QF3i9f!S(2) zhI-0>Fl1KS#-Nkgs-uOUp#*wZ@1(>_Nc0PGMH-#Z!+KlaymvDUfSdm(&g4I&E%%bH zrSs07qmSk*E!lrafB63GXC$)(Sl~W;{`Qy@zT9J$XEwYLe8hs*c6p5kQt?2wG4xPyP1g?XY^{ zI#af`KSZyEU51E7wX~?%wm_D#z~0`$77=xJ!NflH+V*7Yb$3qkc^aDoN%Xhd=i9bC z@&5LYL=%j6_a{eYWzzL}R9lx9-$l5oh(Bb&5Y6h08e8159^{LxnSy~C60lV7)OafM z!77cxEK%-0&xNj+RBTxY*o(?dlnWjl@e^q`U>L1#?`O*=JMOl}bd+YWNxce~-#X_! z%dN-2GSj((>^=C9E?P6Hz9hyf07m#8M1Hvpn_SxKx#%8F42Y_bKM+z%8iQc5>0$Cy z$iUGpn*1;Z0X`e!1GCv_sCU|W(PxA4@$O#^R<**PP?FuI%d;Qrqe9bE!=a+Z)`5d@ zk>8V-pY2m8jgPh3ZKIt;(|nkr_XHP4*Yi3=Lno4(ZSGcuPNzeL-*&`8t4Jb!Ahbb2 z@`MoZa*uN2{-;uK$Y__6l#z<2_5;3T%ZcLVfx4M&7BFdb^~z=^^M(RO&CL_c({2CN z{`Ts@f-Ri%Bdc_qvJd=A0~}YLYc4a8;p9u7(VIHAkL-(0&JM&Kv%@nfZO#@fA*Qia z0*!E-DwmJEn&Ua{$u?{#4(HAr(~E_Hjz~O*99az&Y$0)w*$50)RW~ulC-Lp-NBZUz z{o!qEE44j+4mgNA7p<+g`hrO0axYkAOhDs6kuKh)2f{aJrDBtcqhJg zm)cehSwS7;TzpK=xr&7Ir3$n{elc|NnSjUxhHkM(>T~1vEMKUb1w2p@y!{Z_?#xqa z2H5Io{O-~Q`7yi|XqGOQ!tQD+;G3QY3uRoJb4@Zfn>I_&bG(QiOs@ zjMZthdt!nBe6dzI32SgQJYHZ<-@|3U>Jk4|?^w=p#}87)2@Q1!#NMO<9 z^f!O$3!AjWZ@*Ko8oqU)xR}>_)R87K*hc0Q0gE7-XT7kcrI55j`qBnS)%1-!obahS zdZkjks4Vmc?l@oQ?9eNd%H~ux58WsDqZWP0T&;vtX8#kUoRz0pc)X*_Mzfgd@|a}7 zy{XnDT9kZsxc_(F@U6xbYZ@~C(;zW|iFk865{OU+DX`3VBfIa{d)|LjT4Xwsb5V`gHyj)8#|zHoms1qZm5Y@vKEX9R#qnUZX3rhIHwcJ5m4a3TQej}pGJ(Oi&aGp zWT&W7YqFuODvUhdi8lag^}e{3FrgZAdXC+%jHSWn`JfW+u0EXA-7EB_{#Nqs`oVtD z1U+Aqt-xI0Xj9l4n`f&Stj(If#jpvAwmMwABXdY&}=u%n>;86GnGf@Nq* zMT#Yql}d1Zs6l|f|4BM!3>M4hqmhQp8ztNsqnHD7A4t=a`_agR8|ACUC-?m4d7C>Q zl4ju_D|n|%2Ijuwzo=7ov~LCjvagCJWYx*^tq*v)EUVpY(%MPm>9v6!7jNvtw#Ycp z<5!(z>JHlbjR)G=NW38_hOe))(Ewi`UGBr*?Bv7@q==r0829#jU@$g}+mc~6fQ}gk z)R*aB&|AD)Ys-%UJ)3%djkCG)=oUVHD~CP@5G0D`&g}~ZOcQlywb^FkRM+XqI-w<< zhfs4Wu+Vo2{X08*#B-n)>ez%)Sg^Nevh6vvmy6u_W-rKT@{4$()L59}^rnNr<#d5V zJtK45hYCTKx7Qb{rV}t)$_M@8*ZFND$AGsGiP!!0ApDhr5y0sFwbMpb_x}X|efeJ9 zn_Db9k)yAA8w1yy0t`YIQ2d?KT^~XpTS=Mv*E7Y$5@cS46Xa&Rd?$Wt-oDUCZ#!3B z4kEU1$FG67l<~#<9@qc=5Aqr^9 z?a2TC%U|0+|J4-wf1dXKtFV%iq`{megD-~_9u5Gl%HF_IP{b56QV+9PtNNBk0+jap7M?X7WjVY153?ir7oX?`!k zSLlEodHO9Flx|jP;ICM!{RLN@Vb40u7|8ya?5|S$o%tY;+%N0bvP|LXj>DcEi@Buw zcosg4v5#h)?Q8ENLJ289%`pry)Z*7H#@(J**52341g#}n?Aa5I5(3~lF;xfcmKQ~s zsL&Ys$XuRip7^*TljqlY>GzcJ(%b{&gokK=P%G_wmG+JJETo4egCcp-8(p5qTXgJ zD=A3RWwl`$FY2L_t(|w*4-3(G{>kIPj~9Y3&NQE@h>oWfU{^b3B@TFB-u7L^_2jlL z&p#b%kh+y_&3;F9oCAeH6g$bS$HV-vr%y1b&M!(w3GMC|2Cvi&G?&qQQcDfZ`V1 zU5ZPP;zf!R+}(=1Ymnj&#ht!+KAbb>Is1S1-m~9KW-@cnb>H`wTx(rxt)DczZKi|5 zzh{rfyj4|$O93QM$FgOYM-ETW%fAu6k5XIrI^CNcf|#`aK{oHHp}^IJ8f$ zWiya0+7Rya#|lf1w5}>0xU1<==htk>=p@?qx~G)^_4TVud8Wa!7n3_hlm$gWnr~&D zF9b5bJ|?>BNgFmNN&J$}3q5D$BmgO!lsWm=_4>@To5Tz9#O@V!N}xk2+eW^{ZaVWaMN3AFB$2F&Vnx; z&J!V-%DHaqAew}Yyl`3zxTN2lEmQ4AcgcP~%6PrC;Q!HYUsxhPMhjz(TopMYxwSXFlJMM(~YB zi_9@;?OdA5rOs6lhTE!_F_`lO$l~$4SgR(-+B*A#n{zGuFHw1ggg*gz#n>7eDAU>* zIR~~!*v41PTfuZTCp`NW%RNfwZe%5FYO!iTvnmd4xf6G_4y(%Yu)CGs!J+(+Y>Y-G z%ivCHar0r#1=R@sb4M%B3Ck?JF}cX|pK&=5nk8 zm=@tCJ4JOuqpD$@DFtTs;^w}s&zZ*q#44BVX_eTh#EFByIg6HzE$ zT{A^-^a@?piQg%(S$8C0TAA<8U%a`U{dDQ!x(|!u)?(xoG)ycY8_ACMc6oHNw}A|? z?<-Do^G!$!A8#@X%u9-CcXT&nV9R&HMyQ7^4whCUN+n;vGGt`-7u_!E_JMXki4EnD zryM`d)wLNMlEn>!g3I=w_V$)f8eCY-^DV7sCyvTe2iNkKiS@FZ*cV2>Ua$OG`8YRO zyq6kW@Rl>bVIMQfum)Rmgbgl_TliWCt-+w?HXxVC{++OZ@jfU=MokNJk2cw!fO)o` zgFF^#3`I}hG%vJ@F6y|z>@l(|7wSGd4vW(iA^2PJtOKlh6x3g)^?Yfx_#mTJ7|YGY z0K2TwcuP#^I`sJKEu+&?4@Sdm`=W*Lous9zVhpkb0*s%%p{NOX)u3n;y9@p^w^npk z)OWV-QCRkCKhu9zSa3k_y24Y+`4Xw~E>^|d%v^qY`+&i2=7j=#3iRtF>`&Q*Wm-&J~YK5!8aY*&3Z7|T{=dE!|mLme;Tj?5Xo?w`_}gQB5eP{LQ8nY zE8NP~mmFA16D+}I7l~@34iQ!jE3O51=uNM%hs}q(`cEyrf*kCp;uf?QVMVRbk5ZWn z9X>wkfc8PITOMn0jJHHXn~v97(J^bvG7>*jkLPM?9SPHO(Yx4(Zq?M;$aVr(65Alf zF*zEaJnWc%2Iteg@7_%Xe7O3Eqm%M=;j7zdkIC!ckEc>h0~F<9>>eC|N~T;ah(Jr9 z_>@rkwZE3FX-ufZXFR2E3e*Lc+Xv`9t})e5fFU8bao09x1@%F!FN$iK z<4rExEvDBU-B`Bhkg^XRkeQck-OKVC{{0j5QTZ8JBg7z*UI_;zXH8Q}6Vm5wg^MN? zClp)!oIx#zWuFNX4^6bcKyJ*L`%m&F>lv+DDDYu?d| z%{NjWK_KMhPP!bu7^@CFS`7+jn2q98ynOhyRAyiN(H?G5-ZiGdrQ#R=Yk&X^=CfE= zI=O#*2CG})K<$1ZgwYpfipvq_HE&)fimgH(V%)pP$Tc{|s;; zcCT^!YuiVhcXt1%SnSy$#zX$FGlm#z%eAW8yvK2UC7mFe*RjRf1^*8<9^i5hQt6ln zuUd?=w%vh$!-dg>Ok$PQRjPg2G}gKlt>3Z8^z8~fRdYICO#3}>Qoz+=g}2L)vWjUA zN9}VSn#Rl2EER%+Or3Ds_IOYIvcjgZT%aJd&_~J3fBBv+@{%6x+;)gK2z^>R^6-E( zc^cIUvVE%3(T97eV9^RG%BH}%rZv>6CN?arm_Xtm7kC99uUr8H8!B3){zt5-isOmE zmZpVAn4%>qTGMC#SG?@4>7+Wn@mK9QNqilVpx(ulOh!UC%aGf8P)NP?b|i7mv*YL%H} zsNe)o%6xO+L@6Xxbd*=6kCGCHwn8jojZ`6D5&(&S)1PISqv^!9(K>yu4?tmwKRa7= zoy2d>2IMORh&S_ztLo{YPAC2H1K~LwMpu%qUMEfOGz>1=-82js-W%BoCejrQswfkA z$y@in$iE`rE`uylXPmerjY@E8b#Tr50E`{kk*ap#b$8gYNc3QbqS-sI^L=kj zbrzmC#wt&?nV|JP|63CBKS+p}foZwfsgvX0bSowGhb_>njbO#@_h7m$>FY}MY2pyQ z1EK~aDx9psJK})eojn^C%;w7teKuixT2ZQ%xYu{9u<|19xt;S9)pKMG?0Cw-kpbF~ zPrbIXL!Aonp3}a&gkNHpapKF;hB>3$B{s}F^>(eMHhFriF3hk!RIJVrkZ+^>Ap_-` zn^PP{XwI?;Pek)fHH4riv|_83x1>3Za>$gQ?DWsk_|)=7VBE|;>DVlo#(i(lJG|G?UZ z1h+NAbe6ucdq$v(FJ-Wx()*w2%0D|kfKYO+(s_vGRgF)(;2T39c%U3pylBxDTxsD* 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 GzX<>{ before + + before = controller.scrollView.zoomScale + pinch_close 'Scroll view' + controller.scrollView.zoomScale.should < before + end + + # TODO currently it doesn't rotate exactly 90 degreese. I think this has to + # do with the center point being off and the radius not being a perfect half + # of the total diameter. + it "creates rotate gesture events" do + before = controller.scrollViewRotation + rotate 'Scroll view', :degrees => 90 + controller.scrollViewRotation.should > before + + #before = controller.scrollView.transform + #rotate 'Scroll view', :degrees => 90, :duration => 5 + #after = controller.scrollView.transform + #expected = CGAffineTransformRotate(before, Math::PI/2) + #CGAffineTransformEqualToTransform(after, expected).should == true + end + + before do + pinch_open 'Scroll view' + end + + # TODO this spec fails if the Accessibility Inspector is on + it "drags from point A to point B" do + before = controller.scrollView.contentOffset + drag 'Scroll view', :from => CGPointMake(310, 100), :to => CGPointMake(5, 150) + controller.scrollView.contentOffset.x.should > before.x + controller.scrollView.contentOffset.y.should < before.y + end + + # TODO this spec fails if the Accessibility Inspector is on + it "drags along the specified list of points" do + view = controller.scrollView + before = view.contentOffset + drag 'Scroll view', :points => linear_interpolate(_location_to_point(view, :bottom_right), _location_to_point(view, :left)) + view.contentOffset.x.should > before.x + view.contentOffset.y.should > before.y + end + + it "drags with multiple fingers" do + controller.scrollView.panGestureRecognizer.minimumNumberOfTouches = 3 + controller.scrollView.panGestureRecognizer.maximumNumberOfTouches = 3 + before = controller.scrollView.contentOffset + drag 'Scroll view', :from => :right, :touches => 3 + controller.scrollView.contentOffset.x.should > before.x + controller.scrollView.contentOffset.y.should == before.y + end +end diff --git a/test/bacon-ui/spec/device_events_spec.rb b/test/bacon-ui/spec/device_events_spec.rb new file mode 100644 index 00000000..62329d48 --- /dev/null +++ b/test/bacon-ui/spec/device_events_spec.rb @@ -0,0 +1,99 @@ +class DeviceSpecController < UIViewController + def loadView + frame = UIScreen.mainScreen.applicationFrame + frame.origin = CGPointZero + self.view = UIImageView.alloc.initWithFrame(frame) + view.image = UIImage.imageNamed('We Need You.jpg') + end + + def shouldAutorotateToInterfaceOrientation(orientation) + true + end + + # This is all for `shake` support + + attr_accessor :shaked + def shaked? + @shaked + end + + def viewWillAppear(animated) + super + becomeFirstResponder + end + + def viewDidDisappear(animated) + super + resignFirstResponder + end + + def canBecomeFirstResponder + true + end + + def motionEnded(motion, withEvent:event) + @shaked = motion == UIEventSubtypeMotionShake + end + + # Accelerometer support + + def enableAccelerometer=(flag) + UIAccelerometer.sharedAccelerometer.delegate = (flag == true ? self : nil) + end + + attr_reader :accelerationData + def accelerometer(accelerometer, didAccelerate:acceleration) + @accelerationData = acceleration + end +end + +describe "Bacon::Functional::API, concerning device events" do + tests DeviceSpecController + + after do + rotate_device :to => :portrait + end + + it "changes device orientation" do + rotate_device :to => :landscape, :button => :right + controller.interfaceOrientation.should == UIInterfaceOrientationLandscapeRight + + rotate_device :to => :landscape, :button => :left + controller.interfaceOrientation.should == UIInterfaceOrientationLandscapeLeft + + rotate_device :to => :portrait, :button => :bottom + controller.interfaceOrientation.should == UIInterfaceOrientationPortrait + + rotate_device :to => :portrait, :button => :top + controller.interfaceOrientation.should == UIInterfaceOrientationPortraitUpsideDown + end + + it "has default orientations for portrait and landscape for when the :button option is omitted" do + rotate_device :to => :landscape + controller.interfaceOrientation.should == UIInterfaceOrientationLandscapeLeft + + rotate_device :to => :portrait + controller.interfaceOrientation.should == UIInterfaceOrientationPortrait + end + + it "creates a shake motion gesture (for undo support, for instance)" do + shake + controller.should.be.shaked + end + + it "sends accelerometer events" do + with_accelerometer do + accelerate :x => 0.5, :y => 0.5, :z => 0.5 + end + controller.accelerationData.x.should == 0.5 + controller.accelerationData.y.should == 0.5 + controller.accelerationData.z.should == 0.5 + end + + def with_accelerometer + controller.enableAccelerometer = true + yield + ensure + controller.enableAccelerometer = false + end +end diff --git a/test/bacon-ui/spec/simple_gestures_spec.rb b/test/bacon-ui/spec/simple_gestures_spec.rb new file mode 100644 index 00000000..87d84a2c --- /dev/null +++ b/test/bacon-ui/spec/simple_gestures_spec.rb @@ -0,0 +1,195 @@ +class SmallControlsViewController < UIViewController + attr_reader :tappableView, :switch, :lateKumbayaButton + + def loadView + frame = UIScreen.mainScreen.applicationFrame + frame.origin = CGPointZero + self.view = UIView.alloc.initWithFrame(frame) + #view.userInteractionEnabled = true + view.accessibilityLabel = 'Container view' + + buttonMargin, buttonWidth, buttonHeight = 20, 150, 34 + buttonY = buttonMargin + button = UIButton.buttonWithType(UIButtonTypeRoundedRect) + button.setTitle("Kumbaya!", forState:UIControlStateNormal) + button.frame = CGRectMake((frame.size.width - buttonWidth) / 2, buttonY, buttonWidth, buttonHeight) + button.addTarget(self, action:'buttonTapped=:', forControlEvents:UIControlEventTouchUpInside) + view.addSubview(button) + + buttonY += buttonHeight + buttonMargin + @lateKumbayaButton = UIButton.buttonWithType(UIButtonTypeRoundedRect) + @lateKumbayaButton.setTitle("Late Kumbaya!", forState:UIControlStateNormal) + @lateKumbayaButton.frame = CGRectMake((frame.size.width - buttonWidth) / 2, buttonY, buttonWidth, buttonHeight) + @lateKumbayaButton.addTarget(self, action:'buttonTapped=:', forControlEvents:UIControlEventTouchUpInside) + # Delay adding the view so we can test that the `view` method retries until it's found + view.performSelector('addSubview:', withObject:@lateKumbayaButton, afterDelay:1) + + switchY = buttonY + buttonHeight + buttonMargin + @switch = UISwitch.alloc.initWithFrame(CGRectMake((frame.size.width - buttonWidth) / 2, switchY, buttonWidth, buttonHeight)) + @switch.accessibilityLabel = 'Switch control' + @switch.on = false + view.addSubview(@switch) + + # Nested tap gesture recognizers + tappableViewContainerY = switchY + buttonHeight + buttonMargin + container = UIView.alloc.initWithFrame(CGRectMake(10, tappableViewContainerY, buttonWidth + 50, buttonHeight + 50)) + container.backgroundColor = UIColor.greenColor + view.addSubview(container) + tappableViewY = buttonMargin + @tappableView = UILabel.alloc.initWithFrame(CGRectMake(10, tappableViewY, buttonWidth, buttonHeight)) + @tappableView.userInteractionEnabled = true + @tappableView.backgroundColor = UIColor.blueColor + @tappableView.accessibilityLabel = 'Tappable view' + @tappableView.textAlignment = UITextAlignmentCenter + @tappableView.text = 'Taps: 0' + container.addSubview(@tappableView) + + previous_recognizer = nil + 3.downto(1) do |taps| + 2.downto(1) do |touches| + recognizer = UITapGestureRecognizer.alloc.initWithTarget(self, action:'handleTap:') + recognizer.numberOfTapsRequired = taps + recognizer.numberOfTouchesRequired = touches + @tappableView.addGestureRecognizer(recognizer) + + recognizer.requireGestureRecognizerToFail(previous_recognizer) if previous_recognizer + previous_recognizer = recognizer + end + end + end + + #def viewWillAppear(animated) + #super + ##self.navigationItem.rightBarButtonItem = UIBarButtonItem.alloc.initWithBarButtonSystemItem(UIBarButtonSystemItemDone, target:self, action:'bla:') + #end + + attr_accessor :buttonTapped + # RM TODO: Assertion failed: (i != sel_to_attr.end()), function rb_attr_generic_getter, file vm.cpp, line 2753. + #alias_method :buttonTapped?, :buttonTapped + def buttonTapped?; @buttonTapped; end + + attr_reader :tapRecognizer + attr_reader :tappedLocationInWindow + attr_reader :tappedLocationInTappableView + def handleTap(recognizer) + @tappableView.text = "Taps: #{recognizer.numberOfTapsRequired}" + @tapRecognizer = recognizer + @tappedLocationInWindow = recognizer.locationInView(nil) + @tappedLocationInTappableView = recognizer.locationInView(@tappableView) + end +end + +describe "Bacon::Functional::API, concerning one-shot gestures" do + tests SmallControlsViewController + + it "flicks a switch" do + flick "Switch control", :from => :left + controller.switch.isOn.should == true + flick "Switch control", :to => :left + controller.switch.isOn.should == false + end + + it "by default taps at the center of a view" do + highlight_touches! + view = tap("Tappable view") + controller.tappedLocationInWindow.should == view.superview.convertPoint(view.center, toView:nil) + end + + it "taps at the :top_left of a view" do + highlight_touches! + view = tap("Tappable view", :at => :top_left) + controller.tappedLocationInTappableView.x.should < view.frame.size.width / 2 + controller.tappedLocationInTappableView.y.should < view.frame.size.height / 2 + end + + it "taps at the :top of a view" do + highlight_touches! + view = tap("Tappable view", :at => :top) + controller.tappedLocationInTappableView.y.should < view.frame.size.height / 2 + end + + it "taps at the :top_right of a view" do + highlight_touches! + view = tap("Tappable view", :at => :top_right) + controller.tappedLocationInTappableView.x.should > view.frame.size.width / 2 + controller.tappedLocationInTappableView.y.should < view.frame.size.height / 2 + end + + it "taps at the :right of a view" do + highlight_touches! + view = tap("Tappable view", :at => :right) + controller.tappedLocationInTappableView.x.should > view.frame.size.width / 2 + end + + it "taps at the :bottom_right of a view" do + highlight_touches! + view = tap("Tappable view", :at => :bottom_right) + controller.tappedLocationInTappableView.x.should > view.frame.size.width / 2 + controller.tappedLocationInTappableView.y.should > view.frame.size.height / 2 + end + + it "taps at the :bottom of a view" do + highlight_touches! + view = tap("Tappable view", :at => :bottom) + controller.tappedLocationInTappableView.y.should > view.frame.size.height / 2 + end + + it "taps at the :bottom_left of a view" do + highlight_touches! + view = tap("Tappable view", :at => :bottom_left) + controller.tappedLocationInTappableView.x.should < view.frame.size.width / 2 + controller.tappedLocationInTappableView.y.should > view.frame.size.height / 2 + end + + it "taps at the :left of a view" do + highlight_touches! + view = tap("Tappable view", :at => :left) + controller.tappedLocationInTappableView.x.should < view.frame.size.width / 2 + end + + #it "taps at a specific point in window coordinates" do + #view = controller.tappableView + #point = CGPointMake(view.frame.origin.x + 10, view.frame.origin.y + 10) + #point = view.superview.convertPoint(point, toView:nil) + #tap "Tappable view", :at => point + #controller.tappedLocationInWindow.should == point + #end + + it "taps buttons" do + tap "Kumbaya!" + controller.buttonTapped.currentTitle.should == "Kumbaya!" + # this one actually shows up a second later + tap "Late Kumbaya!" + controller.buttonTapped.currentTitle.should == "Late Kumbaya!" + end + + it "recognizes a single tap" do + tap "Tappable view" + controller.tapRecognizer.numberOfTapsRequired.should == 1 + controller.tapRecognizer.numberOfTouchesRequired.should == 1 + + tap "Tappable view", :touches => 2 + controller.tapRecognizer.numberOfTapsRequired.should == 1 + controller.tapRecognizer.numberOfTouchesRequired.should == 2 + end + + it "recognizes a double tap" do + tap "Tappable view", :times => 2 + controller.tapRecognizer.numberOfTapsRequired.should == 2 + controller.tapRecognizer.numberOfTouchesRequired.should == 1 + + tap "Tappable view", :times => 2, :touches => 2 + controller.tapRecognizer.numberOfTapsRequired.should == 2 + controller.tapRecognizer.numberOfTouchesRequired.should == 2 + end + + it "recognizes a triple tap" do + tap "Tappable view", :times => 3 + controller.tapRecognizer.numberOfTapsRequired.should == 3 + controller.tapRecognizer.numberOfTouchesRequired.should == 1 + + tap "Tappable view", :times => 3, :touches => 2 + controller.tapRecognizer.numberOfTapsRequired.should == 3 + controller.tapRecognizer.numberOfTouchesRequired.should == 2 + end +end diff --git a/test/bacon-ui/spec/storyboard_spec.rb b/test/bacon-ui/spec/storyboard_spec.rb new file mode 100644 index 00000000..7277f487 --- /dev/null +++ b/test/bacon-ui/spec/storyboard_spec.rb @@ -0,0 +1,50 @@ +class StoryboardViewController < UIViewController + + # The view associated with this controller in the storyboard has a single + # UILabel with an accessibility label of 'Storyboard' and a text value of + # 'Hello, Rubymotion' and 'Allo allo, RubyMotion'. + + def viewDidLoad + label = UILabel.alloc.init + label.text = 'Code' + view.addSubview(label) + end + +end + +describe "Storyboard support when not used" do + tests StoryboardViewController + + it "does not load from storyboard without an id" do + labels = views(UILabel) + labels.count.should == 1 + labels.first.text.should == 'Code' + end +end + +shared "a controller from a storyboard" do + it "has the label defined in the storyboard" do + labels = views(UILabel) + labels.count.should == 2 + end +end + +describe "Storyboard support defaults" do + tests StoryboardViewController, :id => 'main' + + it "uses MainStoryboard if no name is provided" do + view('Storyboard').text.should == 'Hello, RubyMotion' + end + + behaves_like "a controller from a storyboard" +end + +describe "Storyboard support with named storyboard" do + tests StoryboardViewController, :storyboard => 'AlternateStoryboard', :id => 'alternate' + + it "uses a specific storyboard if one is provided" do + view('Storyboard').text.should == 'Allo allo, RubyMotion' + end + + behaves_like "a controller from a storyboard" +end diff --git a/test/bacon-ui/spec/view_spec.rb b/test/bacon-ui/spec/view_spec.rb new file mode 100644 index 00000000..962cf8e7 --- /dev/null +++ b/test/bacon-ui/spec/view_spec.rb @@ -0,0 +1,147 @@ +describe "Bacon::Functional::API, concerning location helpers" do + extend Bacon::Functional::API + + def inset + Bacon::Functional::API::LOCATION_TO_POINT_INSET + end + + it "returns the points corresponding to the view" do + view = UIView.alloc.initWithFrame(CGRectMake(100, 100, 100, 100)) + _location_to_point(view, :top_left).should == CGPointMake(100+inset, 100+inset) + _location_to_point(view, :top).should == CGPointMake(150, 100+inset) + _location_to_point(view, :top_right).should == CGPointMake(200-inset, 100+inset) + _location_to_point(view, :right).should == CGPointMake(200-inset, 150) + _location_to_point(view, :bottom_right).should == CGPointMake(200-inset, 200-inset) + _location_to_point(view, :bottom).should == CGPointMake(150, 200-inset) + _location_to_point(view, :bottom_left).should == CGPointMake(100+inset, 200-inset) + _location_to_point(view, :left).should == CGPointMake(100+inset, 150) + end + + it "returns the opposite of a location" do + _location_opposite(:top_left).should == :bottom_right + _location_opposite(:top).should == :bottom + _location_opposite(:top_right).should == :bottom_left + _location_opposite(:right).should == :left + _location_opposite(:bottom_right).should == :top_left + _location_opposite(:bottom).should == :top + _location_opposite(:bottom_left).should == :top_right + _location_opposite(:left).should == :right + end +end + +class ContainerView < UIView +end + +class SimpleViewController < UIViewController + attr_reader :purpleView, :blueView, :redView + + def loadView + frame = UIScreen.mainScreen.applicationFrame + frame.origin = CGPointZero + self.view = ContainerView.alloc.initWithFrame(frame) + view.accessibilityLabel = 'Container view' + + @purpleView = UIView.alloc.initWithFrame(CGRectMake(100, 100, 100, 100)) + @purpleView.backgroundColor = UIColor.purpleColor + @purpleView.accessibilityLabel = 'Purple view' + view.addSubview(@purpleView) + + @blueView = UIView.alloc.initWithFrame(CGRectMake(25, 25, 50, 50)) + @blueView.backgroundColor = UIColor.blueColor + @blueView.accessibilityLabel = 'Blue view' + @purpleView.performSelector('addSubview:', withObject:@blueView, afterDelay:0.5) + + @redView = UIView.alloc.initWithFrame(CGRectMake(110, 25, 75, 75)) + @redView.backgroundColor = UIColor.redColor + @redView.accessibilityLabel = 'Red view' + view.addSubview(@redView) + end +end + +describe "UIView extensions" do + tests SimpleViewController + + it "returns the first subview with the specified accessibility label" do + window.viewByName('Container view', 1).should == controller.view + controller.view.viewByName('Purple view', 1).should == controller.purpleView + controller.blueView.viewByName('Purple view', 1).should == nil + end + + it "keeps trying to find a view by accessibility label during the timeout" do + # This button shows up 0.5 second after the other views + window.viewByName('Blue view', 0.1).should == nil + window.viewByName('Blue view', 0.6).should == controller.blueView + end + + it "looks through all superviews, until it finds a matching class" do + controller.purpleView.up(UIButton, 0.1).should == nil + controller.purpleView.up(ContainerView, 0.6).should == controller.view + end + + it "keeps trying to look through all superviews, until it finds a matching class, during the timeout" do + controller.blueView.up(ContainerView, 0.1).should == nil + controller.blueView.up(ContainerView, 0.6).should == controller.view + end + + it "returns all views of a specific class and sorts them top-left to bottom-right" do + window.viewsByClass(UIButton, 0.1).should == [] + window.viewsByClass(ContainerView, 0.1).should == [controller.view] + window.viewsByClass(UIView, 0.1).should == [ + controller.view, + controller.redView, + controller.purpleView + ] + end + + it "keeps trying to find a view by class during the timeout" do + controller.purpleView.viewsByClass(UIView, 0.1).should == [] + controller.purpleView.viewsByClass(UIView, 0.6).should == [controller.blueView] + end +end + +describe "Bacon::Functional::API, concerning device events" do + tests SimpleViewController + + it "finds a view by its accessibility label" do + view('Purple view').should == controller.purpleView + view('Blue view').should == controller.blueView + end + + it "finds views by class" do + views(ContainerView).should == [controller.view] + end + + it "returns a view immediately if given instead of an accessibility label" do + view = controller.purpleView + # This will raise if the #view helper would not actually return the view immediately + def window.viewByName(accessibilityLabel) + raise 'Oh noes!' + end + view(view).should == view + end + + it "raises if no view by label could be found after the `timeout` passes" do + start = Time.now.to_i + e = catch_bacon_error { view('Does not exist') } + Time.now.to_i.should >= (start + 3) + e.message.should == "Unable to find a view with label `Does not exist'" + end + + it "raises if no views by class could be found after the `timeout` passes" do + start = Time.now.to_i + e = catch_bacon_error { views(UITableView) } + Time.now.to_i.should >= (start + 3) + e.message.should == "Unable to find any view of class `UITableView'" + end + + def catch_bacon_error + e = nil + begin + yield + rescue Bacon::Error => e + end + e.should.not == nil + e.count_as.should == :error + e + end +end