From 6ea2d5320af2a29c01b2ce7746ebca4d9b23bef1 Mon Sep 17 00:00:00 2001 From: Aaron Rich Date: Mon, 19 May 2014 19:35:54 -0500 Subject: [PATCH] Added test status in the DHTML browsing section (left nav) --- src/Pickles/Pickles.BaseDhtmlFiles/Index.html | 11 +- .../js/heirarchyBuilder.js | 10 +- .../Pickles.BaseDhtmlFiles/pickledFeatures.js | 198 ++++-------------- .../Pickles.BaseDhtmlFiles/tests/Tests.html | 3 +- .../Pickles.BaseDhtmlFiles/tests/tests.js | 151 +++++++++++-- .../Resources/Pickles.BaseDhtmlFiles.zip | Bin 161658 -> 162016 bytes 6 files changed, 193 insertions(+), 180 deletions(-) diff --git a/src/Pickles/Pickles.BaseDhtmlFiles/Index.html b/src/Pickles/Pickles.BaseDhtmlFiles/Index.html index 59d454e04..08a71eef9 100644 --- a/src/Pickles/Pickles.BaseDhtmlFiles/Index.html +++ b/src/Pickles/Pickles.BaseDhtmlFiles/Index.html @@ -19,7 +19,7 @@ + - diff --git a/src/Pickles/Pickles.BaseDhtmlFiles/tests/tests.js b/src/Pickles/Pickles.BaseDhtmlFiles/tests/tests.js index 51ddc27fa..9f122e406 100644 --- a/src/Pickles/Pickles.BaseDhtmlFiles/tests/tests.js +++ b/src/Pickles/Pickles.BaseDhtmlFiles/tests/tests.js @@ -17,19 +17,94 @@ var sampleJSONForHeirarchy = [ "Name": "Clearing Screen", "Description": "In order to restart a new set of calculations\r\nAs a math idiot\r\nI want to be able to clear the screen", "FeatureElements": [ + { + "Name": "Clear the screen", + "Description": "", + "Steps": [ + { + "Keyword": "Given", + "NativeKeyword": "Given ", + "Name": "I have entered 50 into the calculator" + }, + { + "Keyword": "And", + "NativeKeyword": "And ", + "Name": "I have entered 70 into the calculator" + }, + { + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I press C" + }, + { + "Keyword": "Then", + "NativeKeyword": "Then ", + "Name": "the screen should be empty" + } + ], + "Tags": [ + "@workflow", + "@slow" + ], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + } ], + "Result": { + "WasExecuted": true, + "WasSuccessful": false + }, "Tags": [] } }, { - "RelativeFolder": "12NestedFolders\\ChildFolder\\ChildChildFolder\\NestedFolderExample.feature", - "Feature": { - "Name": "Nested Folder Example 1", - "Description": "In order to test nested folder output\r\nAs a silly contributer\r\nI want to create an example of something several folders deep", - "FeatureElements": [ - ], - "Tags": [] - } + "RelativeFolder": "12NestedFolders\\ChildFolder\\ChildChildFolder\\NestedFolderExample.feature", + "Feature": { + "Name": "Nested Folder Example 1", + "Description": "In order to test nested folder output\r\nAs a silly contributer\r\nI want to create an example of something several folders deep", + "FeatureElements": [ + { + "Name": "Nested - Add two numbers", + "Description": "", + "Steps": [ + { + "Keyword": "Given", + "NativeKeyword": "Given ", + "Name": "I have entered 50 into the calculator" + }, + { + "Keyword": "And", + "NativeKeyword": "And ", + "Name": "I have entered 70 into the calculator" + }, + { + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I press add" + }, + { + "Keyword": "Then", + "NativeKeyword": "Then ", + "Name": "the result should be 120 on the screen" + } + ], + "Tags": [ + "@nestedFolders" + ], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + } + ], + "Result": { + "WasExecuted": true, + "WasSuccessful": true + }, + "Tags": [] + } }, { "RelativeFolder": "12NestedFolders\\ChildFolder\\NestedFolderExample2.feature", @@ -37,7 +112,44 @@ var sampleJSONForHeirarchy = [ "Name": "Nested Folder Example 2", "Description": "In order to test nested folder output\r\nAs a silly contributer\r\nI want to create an example of something several folders deep", "FeatureElements": [ + { + "Name": "Nested - Add two numbers", + "Description": "", + "Steps": [ + { + "Keyword": "Given", + "NativeKeyword": "Given ", + "Name": "I have entered 50 into the calculator" + }, + { + "Keyword": "And", + "NativeKeyword": "And ", + "Name": "I have entered 70 into the calculator" + }, + { + "Keyword": "When", + "NativeKeyword": "When ", + "Name": "I press add" + }, + { + "Keyword": "Then", + "NativeKeyword": "Then ", + "Name": "the result should be 120 on the screen" + } + ], + "Tags": [ + "@nestedFolders" + ], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + } + } ], + "Result": { + "WasExecuted": false, + "WasSuccessful": false + }, "Tags": [] } } @@ -48,12 +160,13 @@ test("Can get folder heirarchy from JSON", function () { ok(sampleJSONForHeirarchy != null, "Sample JSON object isn't null"); equal(sampleJSONForHeirarchy.length, 3, "Sample JSON has 3 items"); { + var features = $.map(sampleJSONForHeirarchy, function (el, i) { return new FeatureParent(el); }); var expectList = new Array(); - expectList.push(new NavigationFeature('Clearing Screen', 'ClearingScreen.feature')); - expectList.push(new NavigationFeature('Nested Folder Example 1', '12NestedFolders\\ChildFolder\\ChildChildFolder\\NestedFolderExample.feature')); - expectList.push(new NavigationFeature('Nested Folder Example 2', '12NestedFolders\\ChildFolder\\NestedFolderExample2.feature')); + expectList.push(new NavigationFeature('Clearing Screen', 'ClearingScreen.feature', new Result({ WasExecuted: true, WasSuccessful: false }))); + expectList.push(new NavigationFeature('Nested Folder Example 1', '12NestedFolders\\ChildFolder\\ChildChildFolder\\NestedFolderExample.feature', new Result({ WasExecuted: true, WasSuccessful: true }))); + expectList.push(new NavigationFeature('Nested Folder Example 2', '12NestedFolders\\ChildFolder\\NestedFolderExample2.feature', new Result({ WasExecuted: false, WasSuccessful: false }))); deepEqual( - getFeaturesFromScenariosList(sampleJSONForHeirarchy), + getFeaturesFromScenariosList(features), expectList, "Get Features From Scenarios List - Happy path"); } @@ -86,14 +199,15 @@ test("Can get folder heirarchy from JSON", function () { } { // SCENARIO: End Goal! - var startingPaths = getFeaturesFromScenariosList(sampleJSONForHeirarchy); + var features = $.map(sampleJSONForHeirarchy, function (el, i) { return new FeatureParent(el); }); + var startingPaths = getFeaturesFromScenariosList(features); var expectedDirStructure = new Directory(""); - expectedDirStructure.features.push(new NavigationFeature('Clearing Screen', 'ClearingScreen.feature')); + expectedDirStructure.features.push(new NavigationFeature('Clearing Screen', 'ClearingScreen.feature', new Result({ WasExecuted: true, WasSuccessful: false }))); expectedDirStructure.SubDirectories.push(new Directory('12 Nested Folders')); expectedDirStructure.SubDirectories[0].SubDirectories.push(new Directory('Child Folder')); - expectedDirStructure.SubDirectories[0].SubDirectories[0].features.push(new NavigationFeature('Nested Folder Example 2', '12NestedFolders\\ChildFolder\\NestedFolderExample2.feature')); + expectedDirStructure.SubDirectories[0].SubDirectories[0].features.push(new NavigationFeature('Nested Folder Example 2', '12NestedFolders\\ChildFolder\\NestedFolderExample2.feature', new Result({ WasExecuted: false, WasSuccessful: false }))); expectedDirStructure.SubDirectories[0].SubDirectories[0].SubDirectories.push(new Directory('Child Child Folder')); - expectedDirStructure.SubDirectories[0].SubDirectories[0].SubDirectories[0].features.push(new NavigationFeature('Nested Folder Example 1', '12NestedFolders\\ChildFolder\\ChildChildFolder\\NestedFolderExample.feature')); + expectedDirStructure.SubDirectories[0].SubDirectories[0].SubDirectories[0].features.push(new NavigationFeature('Nested Folder Example 1', '12NestedFolders\\ChildFolder\\ChildChildFolder\\NestedFolderExample.feature', new Result({ WasExecuted: true, WasSuccessful: true }))); deepEqual(buildFullHierarchy(startingPaths), expectedDirStructure, 'End Goal!'); } }); @@ -377,13 +491,16 @@ test("Can search for tags and feature/scenarios names", function () { "Feature level level tag search - across multiple features"); deepEqual(getFeaturesMatching('@doesnotexist', sampleJSONForSearch), [], "Neither a tag or feature in list."); + }); -test("Can find feature by RelativeFolder", function() { +test("Can find feature by RelativeFolder", function () { + deepEqual(findFeatureByRelativeFolder('Workflow\\ClearingScreen.feature', sampleJSONForSearch), sampleJSONForSearch[0], "Feature exists"); deepEqual(findFeatureByRelativeFolder('Workflow\\ClearingScreen2.feature', sampleJSONForSearch), null, "Feature does not exist"); + }); diff --git a/src/Pickles/Pickles/Resources/Pickles.BaseDhtmlFiles.zip b/src/Pickles/Pickles/Resources/Pickles.BaseDhtmlFiles.zip index da793456a0208010bd7dc4b1e4dd5f103a5975df..67449d8814e1af00c29fc0b682c62df3c21b77c8 100644 GIT binary patch delta 19300 zcmY(KV{m5M7Oub8wrv}oq+{E*Z6{xB+qTV)*|F2H?T&r-Is2ZvbyuyL_10Kp&R=s> zt!Lov8fNzn22oK43>+QspC>h=Su_!m1sqkSQ8XDvjw;a_@xQv!*GcMMzgG>!|DvNtvJWVCd(vu(v& zvp?Xx?GgMARKkit5S3nltHp!b(v@7d#be)q6H{VFwR0hpp_SrciTZ33cu0POBTz1( zj!a_Mup%^;$?*we8yfol`kei}J@S0w0PN`&Wn+m~`1!Fb>R*ISwb&?us?bBi9i#vb zq;er;4v3nf0v-chS)TmwfWBAx<@fM#Z^&p!p;n}lq@&x@M;W3j&d4*Gyi^A!_2OhX zMx!tRN5=a=r8pQ`V`p!%hH;!ds_^s9una@uV+Lxk31v#!k336q^MeR_OG)2H#{f%V zh>^xw5&U52fkdMcn(J4AE{cd~GgPHxygvn#Qwp;uXFr*c zXW6W1Q{>qJk-za}%h22Y^v%OWLF^VV0X6EE0Z2I0;QRFWJ~uCgF>$j&9-BY-dFaEW zVfzxvi;{sm7}Loj1njquB(Z7dI;nY@=DT7-d7-3dB)G9Xk?!40<9yML#G^W}Y(;SB zqZ#+8b0R31e}Dxr#NjLmL=vYMU_aMhRustvOny+^# zSgVjIkOH_va)uXxi{%Bjg01;s^N|{^M2H)1_m;9gix%;hBl^54uW-KEtUifCa6n*= z31?{}Q8LUNciJvR0ffE@0Tug`S_m5cjQBWw(X)2K)frxO%iqpfB1UR3iSn2>myK-( zyKCSxFFbFg3VfNVD=%6rk02G<1KV->Ecp}(uEzRW(9VgGBzOK{qlRczra2P!UoPcu zKYaiQIL8pWa(%u)5qw?%PLM7`X}3!J0;j5k4O6+K(bJo>$O&ulo+$TU!JwJW*)w(_ zG}(hFU5(og@w)S7spuYrzV^Ytxlw#ZY5hQY>nfvdtf)C~{ZOZwv!ImoO;vsMROh9; z&sxwVxFoj_;~F!D0QK`X$utF;=wEH7q=J7P9y>6%r&E%OrUfADB3_t{gb9``TFEj-1dtbeR*(evR{H!fQZLoU47M?p_=9wo9DFIg0$;a~HMcvXUNFSG zICPz$>>0{$y0c9C3h@i9^A$u}kue+iG>_019!Iq{3NM}bNExA?NxZ%e-q!9qR$_ve zk)3)WJ(RgS0%l(Ea%%-zI1}lWGiQPNN;(~7^~gEhI}}~F(n_9)Y;L5>odH0u1{^Bv z=ZM!P!=z(`?vXd~TbO-@(0S4g?}0ZvhBfiUspTKLW#&+7>B~`Rn|b;(4BY|s=XqrE zCwbHrpT4JHbXKbRLC1K=`^s@J9Tq`vXwABMma02Z-VRTx!Hg3Mg;`Z{*Z#a~@6t$T zTD_}cw!)FDN=u6}XfcXrwbbIl^2jt2flq~jLdA4sJ$S)8UYv$QBut7L=@8mXN?AZ} z+}yTMW~FR8>`r&$oJMJ+319%ZtAo_i4iDlHhG{DlU{}PF5f)3#X_Mm)hZkrnbzNvo zRS9t6k(M^dJi9ggVz+gqbgj_8ZEzFu=8wy9VghvKMKEW^gGxteM_Y6R?FfqTcxLg= z4E^34xBiaR=s^zkYoYYO`wSJ2vXk-hzg$pQU3JwBuSg_}D8ZqU^ zh_XF{93v!g6b&Wrd1+QD$iQ7Nl*jO<2+78eESzu!5Eh-z{-jb4EepZqE&`C~S$(Q7`A z(Xyeh{D8Bpq_M24mBk`VZaUN+H>Bsy#{`5tnVymB+$YD6@AMCKs(v)qo4`IF){pO` zee>V*-afVa7huNaR`2^GtwghgMQ1flPKl>#WN+l%JMFF;ipmI)X=h_q% ztI>ybUQKEE?MFaO^8m3v4K@_kM&k=;_88;jXt z+cFaCWtB$dSNqpLyK^_uetFnFW=m7?M?Z|3G;!-vj+nbd75U~BI$ZaC%M0{V(t@U= zBnh5r2JYC%l)QQ9*Ze@K@!h*c8#9-=PIE5oh*zhEg@Om#TmCFdaHKfiRSToIDu{hD ztN=x#wl%4Qf_%3e`IhrOC3LsEMl48Y7ftq5AbatjmE%H#psl5@`O0>tV9clv^ky}A zJb_VFBi&h!C046cV%j@@_ot{9>>Oe8_zZCP9Gv{|t6!|F>K@nOBmBJO=1|-&q(PAl zj+K0qSIGca%ucV2%0#IbR^C7ceo~2&v*^AaO09k#$szOT* z>yx_l4;r6D3klwM7}Ixltgo?wv4MFwWY}Zw$-}^U*)!csL6&s2$Z*B3&n;K_DZ(jP zwi6(3h|`2o9>{#_pE5?slS)1Y5U3ksX{pP<=9K+jB!8O3Kl`^T$afdgx5?9^LGgg zoR9lE+#|lKPFf($|BkMJ$CBJBeyOo};fZ1cDawtc&I(M~h*>r%z$fM&1{8x(|C*}5 zc~pS|L56SX9{m55)N!|CS{p)z();a(Fhu3W?v*a@)1}9#9A}Y3BC&$j?IPb~C6Q7> zs*u93(shJ;)oWBrgHPK1nW*pexOTiy#I$$I<3g_OgADb-1v=h4-io4S?1Qw-YYIcM zO<9bjB4CYpuXrk)yCYz?*#V&ZlivgldnG_|TQVRX<+|*yc>|);<41Jkf~b zS?%tLT?Tx7szF&giNiUq%0O+az~YEO*g9=VoWMvlkhtcypP?C@WNhqufOX2-#PHPv zN8PV#{0FptdFvzc_PZr*aLbmG6y}7oX|35R*N%UQ$FJC`<{N*P7fSEd4A4ugCd<8? zm)V{zOds1M8@nZSp|$!I*p6S*iQ~7-lU{N5>sv{ipM!__DF)jY23|RF?*QRv5zoM z+|(a8Gm#Xo0#Q0R!r=?*@>NuBq_(H?0^7LndQFrlt)Ene*pXEsz2{-VoPym0uzX_WVn|L_Ih;pWmMdrPkEAOo>;jRL&!~esXM!GQ>Rpa zemUAa;r?c`_@meMhch(4t|1F5*fBkR6R+RTH^x6ngJjd3#)6WmoP$*_@?8RlN3h8 zdCcdd7G&X*qVW60BCUf}%^oW~+QUgrwPXuKHi z2k{^ia_?(UlTGL8xgOaoNXWN&WX-ft;(uE8ch^*V_y$(;ZVb7=skb{07+2kf%hQ9 z>5lfGQ0eb>pfJt;<6j{EItNVr0z>)Fe!r%7R4On4UxFG0|RTw*`$@nt(;hiJ<50R#=70KLiCd|4IT^!1@g#XZZ-3 z^j3`XsK=ii`>9%QypeGsvZng2#YQnEVKkZy-Au$!v74Njj`Pu&Y5h*sbyyK`opsfn zbpEwS869@MQd8884znQc$@l~KKgY9gcMM`+04lqc>NRx87igxb`t=czrk#q;YVDdn(!Y$ip+5nZf&95r`Z&hB)_|YVb(3MaN^=zQT(wt4!tXACdW8T zEK(e&nqPU9w(rvJs*>~|p1fhX=(F6fbepsZYM3yM53rFcMCgGysrt3@?f1&+T}{=- zx_1z1j)hA%^^tBpXgsoa@@;K!B9ks41|h78UF&Z}%|i!%5xVlJxg2QDki_w*J3t+q^j z1uBS)1-QYJGahinQbZDp000tLrH3^p1qr3zKAxclLNu=%iZc2KEfr6Ci03?FTd z?(jW-KJPO$P0)SslW`>)%g*l4+p1A7q}FHfzleke{3raH-R4ih|BW)E6*Ay|ReOXQ zhy^Ihe?E&L9KIXy001BP007;8009GA863)^gHTIa)<5qmVhHZRT)#h7eNO?}D%~f=XDlS5n=@5@*{UK{}_()&BNuogy9Ii1ca~u?`Cs z=;Jw6p&@Nu&PGkt1d)DY&YjBl2!Ferc-J-d1#Y`Of%@OPe~dpbM$16w~|C3{?T2I+V2+@R;}x@_|HE zrJ84SE|Ge()IH(qs_7nP3j-p-XXm?gVDJtLu}LhKTJ=MSG#IBCvQs{(Tv_S@Enl+l zKs=jPd4*Zw%`h(KB9)fM#WNac<;)xsIm(_g!5v{Yy4MUTg799uAjH2~<=B;-<3^>F zWdXPy&ka^&4w6*U8ipqO5`@UHj0|}g^M{?soIGrY>}qD3XCXftr|9MAGX*L-y6iDf zc8fX&U;=+>!B0)llxNY((TWHRDHO?w0C`-+>{<2eeP$C&P!&?z1v5(?JiF#H#tXAJw`@(5)|5 zNN}ugGZ;1JXG&yvEpYQMy1LHmX-*3z(b1r0<9b5KeS1; z0{i`|DYy8%wV_`^1G%_Q5;M3P(z$*Mgj02)=|%V^f@EDd5FkRdNB>grT=Cq1oUi(8rzqQBu`U&bvfFT6 zU8YXCK!YQKx#(pQxHJ`yf&gP<5gW#so}Q6P_h&cz(dDw+RWa8k9Blwl`R&ik5v@N*~c*!Cha zEUFFbD(^kcWx1u*uBa`05e^&rY`{R}#5aco_hQXPY3aAGxlkU4>6c8|5<^|rtlPl5DHQ?rVP0*YLBnD-?D z#`e*#^Mq*EU6uY5>E#>5wAt6vC;+uj+vxyGIbMs|Dv&|%tfILwIEvGd{>ppM?h&f~ z9btW7vPdSprLBnjQ?J~15Pqdje!Vm;<)(JS?Z@}6H-p>n{oPzW^PeFNy(4}mB%3UngLtc8=nOs`k&0KhSgYwDEl*+8j zvaPK`s?&?~dlsEeB6L56ZC1?5EP_QX)K&>sj?;W%-6-eZG23v<1d3sb?WpVBQ6J@L zFJg65@m!QKv>rsk&Yej*-JwSna~*e+a)SH7I)L?LIWO0vsz!<2Fpi#g;#+>2jgMKP zFwL)gmk{;~5=j1{e?&Ju*h45Qo&6CQKCmRlh`uIpq~dSffG4iAd9Ho9gQveX8=tRI zqj-u1;B(+y&v)%N3#P$ZXrAu~ws7?Qyv04vXlgg@QZdxpYwQz7G+};>`-5O$Mw4N9 zPyzSrHDXj^SZ!}r|0;x+63)k1z|dx%Z+5(xU8+%ZbjF{8%dyXud2x#_!+VA9(=ZBE zSS4V6t*%NY;Yp!LYT;OwgKZL{8|NxFi%rPhq4o$JsVGIXT@5k0clG?hUC?eR=n1eA z8IcsyQ?PmVWxNY#(Q<5kDkCt-vORLMBL#vER`9K~usizaW9spaco@ia zjA&(dsm@>-DIK^5%;q{3vWs_X9JSd8=-fCz>}Z&gMO#+ymXa%DF!4= zu>BV&ADC=Zjryhk^3nOFrCX00#Ws+Q$Fhp~4n=E#@i&X?R>+zBp-lbVyFCZIe>o7| z#9@U`x-*OzD$^ze-Q5)E(QC4efaMP`w@fPUnibqQONQNm+zTMk_g*?y;9)t zHX7x6Yc~YDwB30+REek>7X;Af@+YPji_gFu!9efOMr+h%O!l9Yjd&dmsBwLM>&1@| z2@Q+ioA%A^!%ojq&o>Ef9{!*2Opu=j17fd-QJmtoZBMy9GX?EGHyKmr#V$#-4%_M= z9kgs~H+N|vjvjZCd2Sxk{`kzA&a39Q0MPAR3!Qk z!=B;!BgdYKINCzfLvk|$gB#{)BM0^l4KOOb28p^P87BkpH}@QPFwpg ztMq!i6?Np^VD^|{(6!+RXOrN~+NpK7PW@!MDCn*oFHbuQ+4V;j74Tn~d!y zI(g37~f z*Zba>5!pV{LS6X|_^i+2brrcL^6eomBcx@zS_}{kV%0Q0G5g)lSkbJ-2P0)b&F zWqPS`bgo>F&o64tAU*vD7-KWEsS*K%#bpboO9@P=l9lb;rd(9UHR7|{ZS!8zgdYr#X_1^aYaOnlZOc!eOjoT_N@az({B?83*@_SM1WK9Z+CCh%M;G73P2&uF zQWbz^Ta~B2STV`k@xoDw#reT|DL9*%Ig^%XJNH6h&x^U5MV-rYFnpMpb&CnSRxgnj zmb`!*qUZqZ(cH=>W`0?i`y&Lq8X2)|O}!$H zi}iq=I2+xuhg%DiZ24CNl}cRQMG*B*{;`C#^TlEQdieBT+gMaDk)(Jo-M>{Z7*NdY zpjEHX*N^GqzF_`;-fVAK0D&g_mmm9YL7M-qx3_!TgJ^>MmpH|-`IpB~002~u{}Jcs z1IRuKid$B*C^Nin7bYeEkOct(p!rYbJslPb6dkDLvcZY$eGY`U=eN(U>Y`=`&&qIcc)Ifm!omD7pxw8vXpr9J3q_-U~%z!NfyG0YO1gq--QcNoI*P z7MAKC6>Z9h0CB1~AtxNUF#CB9RgOCI&Q6GO?Tm6z=)zhi6vLp)B3#cGMntd+&?aCZ zwa^^L0baA@Lo|YOZkL=i1!mqT2-!^j-~f6&k(%$Jr+P`hhVC@~#uf+5ehJ$-R4v0% zRFMl#rt}jB}ps_o7gAL1u!ifp@l&fyvJn zyXN|5bn8U zU+825RO;_8%CckDz^KMumFmyel8m^2?8O5X>hJejECkh`G^4>|obQVl=!=bO`T8EA z6s_xp+pxkA{NB&Gt>ItQC{^px*#t!BM{}9-@i-WK}3{1Om#KY3sL4|JnJsvZbK z9xB9kmhoA5pqemS7|`OC`@kt>d?wzSVU<9PztfNy!j{rm!Q39sLB zc`c7))kU4Mdhb|4>hdl?ZEThcn*NOvltFiBk<-cw__`5Z%#C=ITwF|IDv(?)5>QR% zGJ_%ic4s+N&vSND>h;_c4?rrU+0qZQb4V~IKqVSr&madet@VPRTHua*!LZ!A4%|lj z3n6`?(GBV!mcOlmSFro>u~HeGH$aoKy{uJNzSK!5P71Rb^F>ODSsA7TXQoBOBOGuW z*yoiBlpeP_r|4le5GA^9V1U!tw7Fz-6FDM3h9tuLL{jfq z#7Gu@J|l5zoTi;85qtB6rkU1SkSNdmsYT!Q9yO-X8fTi-^9>>EihUO~&?1bCG}Ix? z0vU#b2|jqN$V|V~kkxzw zILhn0#&&Y+h_2f2+Hztf7aan1j9Zh7X3c-VSjcCYOuzN(?3wEBTKf|!aIJ?ZGbHU1 z1;#9b>^jrocycQ7tePv(#qZ}lf@*+sidaV~_}f=tuK_jv)U8g?i+t2PUX=xAfX;vt zpYUy327F>0uY6|5F3AUp+2BoIQ53+dN}_h^!#&M0(1QxTU=crJtC zKdmW$uG}2A|Ka5pz{3FhL`wiLJYYu+=Dq#S>z2v|+2!rClWaL^_E8VIAkJRAnvm~W z5rbqOKAMr53F^KMS|B2o_kz~VAqnqAS4oiBnZp`oD0$PWDJIC1^l|L}8)N!ynYp8C zFg3R$VXR-$+3i-)FeT^$uc;s6xq)K_NnyR*3s=PoRUdg#K{bIz^Jv%%xThGLa!?p{ zOR%&kLw%WqJoTmub=N#b8-C~cLyAgUaz!z9oS^7pc)pP3(a2nP%X^UHPNrKX?ma+RsE0RZ zy$Sq8>zsX7P>Q-tRWHM=ePl&%Y-Q$vP4XZxj84rDgl*|uq_6MNu@%*05md>e>bJw= z9gZ+=J)n8L%4T=z_aF*U+%A64-~xE+fZpT2M_dK01j$dFp{=qWAbv_@Hj6r%5D+;5 z-DZW9a7iI~2LIPtJNQmiT`sd> zVH_Q{6gE5>W8$2 zz_1@qFxBt1fV_cK>v9|JuZ92~4sNjRKyXIYMfr6TU#hPz^UHjMozA*2>jhT3Od~T* zH2C1CUSVi5ilEw_+_xaMSq4x3M-5*t*Nyt}s+k+CoRDQ1}yvWhU_OYH8Y6thSNtYA4uPS47#V~ll ze&CQ$3Yc8`jMF<^E{bAswSOnthr_)qyShucQJ>Ka1r4SdfQEI%4$1d-xyWimF8=!I zp{sR0RwqxtUV}p;k}yc?5n+cjAaVsC$ngh%E6ia7mx8Qy_Wm)ECM1Q?W)pM6(z%S= zp-lR!om?l0;dj_Zu4|M}>)M*bS^I;|n}_%}NQWO%YwrR1PH*kb?9Yp$aO;h9(;K%c zw`53_?hZT6BM`YG{6w3pJ>khSLbXyj!M_+7&Us5Z*WRfHx;c49<2=Z>2x-N$z;lt^ zqOSLx9C?RnN;KewQ&3NgTBqL8HM18o+#eKND2`cNc58yp)<#NLh5F9HMVqW!d@e~( zTZfS~`__M6ub;kI2Q9qImkXOWvxF6=D3CB$7YZ~Vx!N|6CD}0tW?v2eWT?w{Q;|TvpdMS`W>+F`;~Zd;324AXA`$foD9oY_xd0s6+z(W>%&O+D!)xg2c3!AegDFE-{pc^%RV=^>j^&FpxN4Ll|{Avfb8uTp9gT9n z`r7Jd5|MuvPP7l^zrOs*d#paL&+pAU)9uzj=BGG?rfMnL^D}3sr#aOH#xy=gyM)xR z;Bil1@dKxwfv@KJq|(54vS>2!zxi%bb&PCtt zizBvUPFvMA&E3t-`^vqKb$}S@YdOH+!+{BxBQB9vDB%_JXl*X799H_SP}>nf8tkFZ z5Bomh)w~2&4%g;Z=(*;~?aL|ls>F(W!-D6W@`hI6Q{4F`StoGTMx;0hz3b2t%O7So z*tHH)!iK2u301n0DYOBZLHBRREkOopwfVtTwhZn-81K&j0-4i>jKJn-lvrW7hZSYx zfdM8gOlY}15s+G(4Im!Ms$TFd0Z*1nyMK>t^3zj!y=IY`$4#ZXia(o%+qEDC5l41X z+d*mBwB4+n91UOvp(mFh#xVbWfdj@>W~@ZDdV^X-vmgt z8?VRu8GSKw`zgm+@R44m*|q3X^CESKNKN(3u%H7Rw>goh7AAmMlig<0NKHy2va9Lo z$+hk8bylU|6|!9lk9L|3RD^Krr!Mk}c5grF%3aXxPylFtKjQC(*S7`r>_CiZlMs2ImN;#UU8$HQb?? zs-I*oK&-|R7I!avx)yiYpJ}HE3sQDc$!Zfp=BS{1(8x(!)=?ZXk$WQIJr0BY$04*M z?Nh+lXB7Bh9W9mZGhxPe8oSFFc#5V=M6`hYkR_FT2#EP_LPf!hQ!&Tbkjw8zy0g~A zh!)Sf4l(u-)yrhMDpC-v4i1sH<-5bAd#S(5CavkU(v9;f&;dIT^~#kWe2G=4#W1KX zqR|k{Gq?Tji@c08#v7l)<_@c_5xy_XnkI@9*uOfbBV$K)I`UnGAqnuU{5+Z@Ve)~K zZ=BK23cfYt+ize$hL*g*YA7yQ>fZcA7**nhq{vaA_G1agsHQERg`|W>G@Qexp3wY& zIS?vEWiqmYLVyVe**|qE$riau;l$KX!rqs3V8+w80Y1Q+g9r*|RFmH$SP}QE9*|}a z-1)4I7O(+}auc>V>`3ion8?97P(N;&GE*|9bJaoba!t^w%uenqC#3(i8MVz2k%xPx z{uT34xZ7gfF4q`L(#5p!gj_sPcQ*~D`MW3|D3Ja$>SYs23>+^;quQx!m_|0HigX!O zvQGNRKcds*NxYhfBkPk-s_<3oQGBvmUa@|1qbxMns8%^o1TeT!AxEC@d9a(zUH>Mdw18 z`dRhRHwno%UgRsu%H1kmbXEGWR9yCh?F={mA%Fo;ZQK&NoEx@0qe7kOvT%e5d|%w5 z4YbmZbO}XBD6|h8hf$U9VTde!_il^56+H`izK$Qwg8P{W&FG2)g%>x~=a?TlOr#OWz0`L4 znxVo}^^;lnw!FmMkOH=NZP$Z<<1WFm)Q4xcASYQTf^k|)*a^CLXQv2vj-auFH;bn4 zsq?W*fNHeFU6nY|;qMjrQP5UnAsqK%pU!evolqH_S%DL!?uShS$_6*?)@Hw-%&Il= zukK&iGyTTH!}#^efSt=Ay2Rac+WUwuQr`{;_-7>9?}u;&h|mSDSLMgUrYfyFI%?y3oqg z6RA*+r8-zF7zi&CkwNW1uA&ufZRsr8%(fdqY2ZwHZ`n|TMUzNNjN#vAGUu^~~Mx_sfQN2ZMF*M*oz)Yutv>qBpwqRZ%~Gb`@W z?^(#X0z&(IN=wD>b>kj64akgTI~&wWcxEt{C$>*LO!~4=^e93d5!cAmQoZnALLy{@ zd7Sxj1+ABwNYw{bS-~z_+kU;V9|88ruIS#Wh5TdnS+{Q_vQ<2&pDmlqE{S`FY*{}+ z{+FQ!0H70^MgKcA_J0?G|0bCg4M8E(ZwWwQ|4mze5rC#a{3|oaKqq++%3_;EO=T86 zLO}t5zH~=DP#$2JHOPh_#n?5aY9L0Ug?6Osk%5mFI-56 zOcO-1$oFA^L^b)lnmY{sq=Id!QWVN*)4p?Q zf+w)~j2$SQwAYHKzvJBk*Y?Qlm7bzZwVLXR;G1=kMAtokV<;p3cjpl2A-K6&cKq*Kjh zRt>s^@=Il{bCpJ_cmU&AV6%_S9!t41c?9QpknS95S0kWa+)X2S=~P#rV!LYb&F)%n z-auGG#QcT?_B_`4!5yu57#?GY5gT$$dO6n+ie%F=$)zmk=Tztn{wj*FI$8jhAb0OH z2^)}+XEF~)9ijKuUfvR{H`66KVukF3(DzT8vpM@yde~#OCD@-dSHw?_d~GoGkmZuTm~a`m|%j_((xrlmLBoU$D_?ueOTPp7Ix1zrtWft&3x$1gkbF`5`eR%il18N# zk1!JqFa8{`9pDhna&P7D06ld*{p<$m=j<**x(QEhr{z90ZXuv&IclDF*NE}U#t_z# z(|SvN!t8{A0E5{)kdL9CuTz)JBgWD|zmciDgc2B-tO+AOyEfKg6DRf|sbESwX7DxG zcnEwD{(xH;0ncH43oyicbwTdd0fwW@I$fF^xQ#;Bu3aie-QJXm87{-u3my-#+)S7I zxQSH!(z2tKps#n^f;L3$RSVOd#GE(0PnRdzUz&dg*a!3(_xR}bd=Tg;)d^*QOjA!? z9lmz?x7{B-Mq1pnWcYKdGmG3XOfP%tM-l5_rY9|^R8tTGD{;T`Wes{g4ZGtz_E~=YSCH^J!F5K6B@Q}s2AZ``Ep!)Nd*pyUHN>JhSu#@Rk!9C-D9gWa}KyHBAA~#-kU6r zH>wh`dYc0ybFXus~vHiUGBx z!f_8m0?iu1DOO~Y_q+oimRXn~b}rYT;o>QLxf}B{c@GqFC;R=!ljq44Gm@#tUdI>P10 zEnC?KzvLb&MFM=zTz*w`ijL78VZe4EEk=Uv<}Hu#tBlA|dK?kvkoHy|&>8Afnow4i zj0d(1teOg5#iee`0y)eoQ|UFr4^=J67rfu^F_pz)q#x2kG2G#NDB@a^*HO(?q{f|> z)Wu8>!lZOq(qk{k9e{w$%7#pKAsOGYe}+Jg+~1LP{LF1a*PqnR*`0qJwhsmTbah`% zIn)iA#BiEUYDCuF>1@7Is=?=-`Wm-3qpuyGj z>SNbts<4V_|BS0ZP(=j;57%yj$5mdZJKpCE89Jg zo!LvJCmxu50yDgO45>zaw6qYY&Ys(<+IvVIqN)d9LPWs{SH59s9AM)W67F*5oRHrO zKx&e7vv*rF{%KBv!P`)?(ydjVZ&Z*1(*}%~6%H-?;b3KsmuVtkAR{pgm-DvIaoGy3 zKaqtKg=`3I6K}i^i@<+M5+(>nP=G#;xoA48VT`S{19dy}df`>Z*!emvI=EA>>~}G? zkom;hkc>g}8A;eJTGN6|M~Wm-VUnEn8Cl%#o=CKE{p+u-N1|KpD!6)BOgDuSxDq-l z0tIf8I;H{qZp{x#iH(JD&m3M7!S5iEsAlhSZL2eao^~6JSp8m6R%_^Oq~SynRh?1M=T+bdbVW2u+8j zJX@zNUupDQDv&5$5>*DwG;t{*pD8kB#c;>*)V+{JEy=E2KWjY?_zgrUL-%~#4ASXA znAIWXiWcQRy_Uuz@NH~%mpAj+6_Fp0C;q7#1NrBy@u63GZCuX-k99)wL!mB}Aj0LZ z`?$S7UykHD;&GltvNKQoHxk|H&M_1SDfR*gnMaDV0-*r0W<$FLmb?U*Pm9;UdlcULV@#!%^l}LJvskJ z#?~LGdKs$-*88-`95*{J9-NkLSToX4>Qc6+B52#QWunEb5YuuIuhPQS&G}tWR@oqT zn>55`s|%AKJ;j0Fot(vuJXRrzs9h)A+_z|Ow5xP%cf345ecdo8uKbbj%sZX~`)WOR z8(gg`?cIO+{Pwn=&9W?>)#kL<$3JX6F77q_Qf#K{>f|n)_WgbF0p|N8gT5+Z(T(z# zYr+ab>|L#w3SW6`Z%*~!6P^EcSK%U$?)LW<`x4%cZEbOM>t0*qDO`TCva?tcxan^G zgk^^>*&mfmpEPiG8G7N`bZ#)#N+em3YHcxfb!(e#{m_P|8STdcYb2ArKL*@szSp>C zQUC8y8f41*t06b%)snZPwPj_$if_)7iBCO_=sp!|-1f*#S3dS{-(~nnC$ZFUZdA!a z$G3W^?t09Nwvuj6eDLn@KXXcp(lNGU z_ihXCuutiXtQ*#ku+*R4Iy_rm7<0FT-{)sC6knF|-<3Z`evsLTlL~GduV zZ1OgCnf2zlOjun3LOVN~dQd+H1A2q;@46uJqMwYd>3mK z1M9dGB|B~d4B@`~jqU_H8Xv7>Bj1+9#|_Y)TTw-YV8w{>5ak7y2w|jZG#-UjYjl?o zMmS@prmByoeET6|GV*~ZO|?R66rqAf>Z-U4 z&x9X(mWsz5teWvV=cPOqqt-lQ0{~{IX2L-;IdntCWbuaszoAx^5{vQbIIT`U8gA)L z3WqxX*!+5tdA90SaxkxM%$qdglT+pp|9KN5$rST%8@k|M4t z+DEvJQt3v+-6MPxU;x*vkpf{LR!tCbE&?+A<=>63|k*dd;6Sf;m{V z;vGaN{zaxLUXPGxGK`5GBFN;k&jpYW48y7ksdlOxj6w;`K!0D+W}}l$fqPCe^l5p| zdrzV9C9rCu$wsr;00cY$fJZ~0R-zv#LVe<3HiJpya~kK8*6}TbRg<5%e`8<0H7dep zbPkcmpV&rOM|^8OzO9Z8QCO^+IGfn;xL8!zU|rO?O2ZkyR^UAOZK4IFF`NLbTBL#E z>r+s}YztZ;^c$_|4P~qgRh&EF8HFo4PFGDF!P$iBY&S}UqO+DpM9e10^dDgdl6Ei$ zt9rcFnM~TmTqZ$+A%y0NLz>348q7#q?o@{!XZRXe$Jw9Qic_%_Psc;nL{2hf)2KIB z5$08higi^yHG^>~^(?q(SNtRdl|gQ-SqeEtCG4j{!w~g{!TGR-WHOF8(Nz=uvH!lw zUeqpG)e3-v$}k5RUQbL*hMs<_dV)w$orD5mRR__w6DI;Nod$9xvXh}JpP82Tp&U&% zC_0zaPfb>_n@QXIp@F~}GKGZuPjJdCr+z7!yE$i$l8SwX2I(RP0I<<->tq1l#h^6| F{s)J^U2XsX delta 18875 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�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