From 9e3a19188988336029bf211dcfe46c658591bb41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aslak=20Helles=C3=B8y?= <aslak.hellesoy@gmail.com> Date: Mon, 2 Jul 2018 14:59:10 +0100 Subject: [PATCH 1/6] Remove the Java Gherkin parser. Rely on Go binary/protobuf --- gherkin/java/.rsync | 3 - gherkin/java/Makefile | 28 +- gherkin/java/berp/CommandLine.dll | Bin 58368 -> 0 bytes gherkin/java/berp/RazorEngine.dll | Bin 82432 -> 0 bytes gherkin/java/berp/RazorEngine.pdb | Bin 249344 -> 0 bytes gherkin/java/berp/System.Web.Razor.dll | Bin 271056 -> 0 bytes gherkin/java/berp/berp.exe | Bin 90624 -> 0 bytes gherkin/java/berp/berp.pdb | Bin 183808 -> 0 bytes gherkin/java/bin/gherkin | 2 +- gherkin/java/bin/gherkin-generate-tokens | 6 - gherkin/java/gherkin-java.razor | 314 -- gherkin/java/gherkin.berp | 38 - .../java/src/main/java/gherkin/AstNode.java | 50 - gherkin/java/src/main/java/gherkin/Func.java | 5 - .../src/main/java/gherkin/GenerateTokens.java | 22 - .../src/main/java/gherkin/GherkinDialect.java | 75 - .../java/gherkin/GherkinDialectProvider.java | 57 - .../java/gherkin/GherkinDocumentBuilder.java | 337 -- .../gherkin/GherkinLanguageConstants.java | 10 - .../src/main/java/gherkin/GherkinLine.java | 119 - .../main/java/gherkin/GherkinLineSpan.java | 30 - .../java/gherkin/IGherkinDialectProvider.java | 11 - .../src/main/java/gherkin/IGherkinLine.java | 23 - .../java/src/main/java/gherkin/Location.java | 19 - .../java/src/main/java/gherkin/Parser.java | 4288 ----------------- .../main/java/gherkin/ParserException.java | 97 - .../src/main/java/gherkin/StringUtils.java | 39 - .../src/main/java/gherkin/SymbolCounter.java | 8 - gherkin/java/src/main/java/gherkin/Token.java | 37 - .../src/main/java/gherkin/TokenFormatter.java | 28 - .../java/gherkin/TokenFormatterBuilder.java | 28 - .../src/main/java/gherkin/TokenMatcher.java | 198 - .../src/main/java/gherkin/TokenScanner.java | 39 - .../java/gherkin/messages/FileSources.java | 71 - .../messages/ParserCucumberMessages.java | 92 - .../java/gherkin/pickles/PickleCompiler.java | 236 - .../cucumber/gherkin}/CucumberMessages.java | 2 +- .../cucumber}/gherkin/GherkinException.java | 4 +- .../cli => io/cucumber/gherkin}/Main.java | 33 +- .../gherkin}/ProtobufCucumberMessages.java | 3 +- .../cli => io/cucumber/gherkin}/Stdio.java | 2 +- .../gherkin}/SubprocessCucumberMessages.java | 24 +- gherkin/java/src/main/protobuf/events.proto | 36 - .../src/main/protobuf/gherkin_document.proto | 111 - .../main/protobuf/google/protobuf/any.proto | 154 - gherkin/java/src/main/protobuf/location.proto | 7 - gherkin/java/src/main/protobuf/pickle.proto | 42 - .../resources/gherkin/gherkin-languages.json | 3509 -------------- .../gherkin/GherkinDialectProviderTest.java | 14 - .../gherkin/GherkinDocumentBuilderTest.java | 98 - .../test/java/gherkin/GherkinLineTest.java | 23 - .../src/test/java/gherkin/ParserTest.java | 28 - .../SubprocessCucumberMessagesTest.java | 3 +- 53 files changed, 33 insertions(+), 10370 deletions(-) delete mode 100755 gherkin/java/berp/CommandLine.dll delete mode 100755 gherkin/java/berp/RazorEngine.dll delete mode 100755 gherkin/java/berp/RazorEngine.pdb delete mode 100755 gherkin/java/berp/System.Web.Razor.dll delete mode 100755 gherkin/java/berp/berp.exe delete mode 100755 gherkin/java/berp/berp.pdb delete mode 100755 gherkin/java/bin/gherkin-generate-tokens delete mode 100644 gherkin/java/gherkin-java.razor delete mode 100644 gherkin/java/gherkin.berp delete mode 100644 gherkin/java/src/main/java/gherkin/AstNode.java delete mode 100644 gherkin/java/src/main/java/gherkin/Func.java delete mode 100644 gherkin/java/src/main/java/gherkin/GenerateTokens.java delete mode 100644 gherkin/java/src/main/java/gherkin/GherkinDialect.java delete mode 100644 gherkin/java/src/main/java/gherkin/GherkinDialectProvider.java delete mode 100644 gherkin/java/src/main/java/gherkin/GherkinDocumentBuilder.java delete mode 100644 gherkin/java/src/main/java/gherkin/GherkinLanguageConstants.java delete mode 100644 gherkin/java/src/main/java/gherkin/GherkinLine.java delete mode 100644 gherkin/java/src/main/java/gherkin/GherkinLineSpan.java delete mode 100644 gherkin/java/src/main/java/gherkin/IGherkinDialectProvider.java delete mode 100644 gherkin/java/src/main/java/gherkin/IGherkinLine.java delete mode 100644 gherkin/java/src/main/java/gherkin/Location.java delete mode 100644 gherkin/java/src/main/java/gherkin/Parser.java delete mode 100644 gherkin/java/src/main/java/gherkin/ParserException.java delete mode 100644 gherkin/java/src/main/java/gherkin/StringUtils.java delete mode 100644 gherkin/java/src/main/java/gherkin/SymbolCounter.java delete mode 100644 gherkin/java/src/main/java/gherkin/Token.java delete mode 100644 gherkin/java/src/main/java/gherkin/TokenFormatter.java delete mode 100644 gherkin/java/src/main/java/gherkin/TokenFormatterBuilder.java delete mode 100644 gherkin/java/src/main/java/gherkin/TokenMatcher.java delete mode 100644 gherkin/java/src/main/java/gherkin/TokenScanner.java delete mode 100644 gherkin/java/src/main/java/gherkin/messages/FileSources.java delete mode 100644 gherkin/java/src/main/java/gherkin/messages/ParserCucumberMessages.java delete mode 100644 gherkin/java/src/main/java/gherkin/pickles/PickleCompiler.java rename gherkin/java/src/main/java/{gherkin/messages => io/cucumber/gherkin}/CucumberMessages.java (82%) rename gherkin/java/src/main/java/{ => io/cucumber}/gherkin/GherkinException.java (81%) rename gherkin/java/src/main/java/{gherkin/cli => io/cucumber/gherkin}/Main.java (64%) rename gherkin/java/src/main/java/{gherkin/messages => io/cucumber/gherkin}/ProtobufCucumberMessages.java (92%) rename gherkin/java/src/main/java/{gherkin/cli => io/cucumber/gherkin}/Stdio.java (93%) rename gherkin/java/src/main/java/{gherkin/messages => io/cucumber/gherkin}/SubprocessCucumberMessages.java (74%) delete mode 100644 gherkin/java/src/main/protobuf/events.proto delete mode 100644 gherkin/java/src/main/protobuf/gherkin_document.proto delete mode 100644 gherkin/java/src/main/protobuf/google/protobuf/any.proto delete mode 100644 gherkin/java/src/main/protobuf/location.proto delete mode 100644 gherkin/java/src/main/protobuf/pickle.proto delete mode 100644 gherkin/java/src/main/resources/gherkin/gherkin-languages.json delete mode 100644 gherkin/java/src/test/java/gherkin/GherkinDialectProviderTest.java delete mode 100644 gherkin/java/src/test/java/gherkin/GherkinDocumentBuilderTest.java delete mode 100644 gherkin/java/src/test/java/gherkin/GherkinLineTest.java delete mode 100644 gherkin/java/src/test/java/gherkin/ParserTest.java rename gherkin/java/src/test/java/{gherkin/messages => io/cucumber/gherkin}/SubprocessCucumberMessagesTest.java (88%) diff --git a/gherkin/java/.rsync b/gherkin/java/.rsync index ba5a913b03..f0b2feec42 100644 --- a/gherkin/java/.rsync +++ b/gherkin/java/.rsync @@ -3,7 +3,4 @@ ../../.templates/java/ . ../../.templates/gpg/ . ../testdata/ testdata/ -../gherkin.berp gherkin.berp -../bin/ berp/ -../gherkin-languages.json src/main/resources/gherkin/gherkin-languages.json ../proto/ src/main/protobuf/ diff --git a/gherkin/java/Makefile b/gherkin/java/Makefile index 968fee8d2f..0eddefcfc9 100644 --- a/gherkin/java/Makefile +++ b/gherkin/java/Makefile @@ -2,7 +2,6 @@ SHELL := /usr/bin/env bash GOOD_FEATURE_FILES = $(shell find testdata/good -name "*.feature") BAD_FEATURE_FILES = $(shell find testdata/bad -name "*.feature") -TOKENS = $(patsubst testdata/%.feature,acceptance/testdata/%.feature.tokens,$(GOOD_FEATURE_FILES)) ASTS = $(patsubst testdata/%.feature,acceptance/testdata/%.feature.ast.ndjson,$(GOOD_FEATURE_FILES)) PICKLES = $(patsubst testdata/%.feature,acceptance/testdata/%.feature.pickles.ndjson,$(GOOD_FEATURE_FILES)) SOURCES = $(patsubst testdata/%.feature,acceptance/testdata/%.feature.source.ndjson,$(GOOD_FEATURE_FILES)) @@ -17,26 +16,13 @@ JAVA_FILES = $(shell find . -name "*.java") default: .compared .PHONY: default -protobins: $(PROTOBUFBINS) -protos: $(PROTOBUFS) - -.compared: $(PROTOBUFS) $(TOKENS) $(ASTS) $(PICKLES) $(ERRORS) $(SOURCES) +.compared: $(PROTOBUFS) $(ASTS) $(PICKLES) $(ERRORS) $(SOURCES) touch $@ -.built: src/main/java/gherkin/Parser.java src/main/resources/gherkin/gherkin-languages.json $(JAVA_FILES) LICENSE pom.xml +.built: $(JAVA_FILES) LICENSE pom.xml mvn install touch $@ -# # Generate -# acceptance/testdata/%.feature.tokens: testdata/%.feature .built -# mkdir -p `dirname $@` -# bin/gherkin-generate-tokens $< > $<.tokens - -acceptance/testdata/%.feature.tokens: testdata/%.feature testdata/%.feature.tokens .built - mkdir -p `dirname $@` - bin/gherkin-generate-tokens $< > $@ - diff --unified $<.tokens $@ - # # Generate # acceptance/testdata/%.feature.ast.ndjson: testdata/%.feature .built # mkdir -p `dirname $@` @@ -92,16 +78,6 @@ acceptance/testdata/%.feature.errors.ndjson: testdata/%.feature testdata/%.featu bin/gherkin --no-source $< | jq --sort-keys --compact-output "." > $@ diff --unified <(jq "." $<.errors.ndjson) <(jq "." $@) -src/main/java/gherkin/Parser.java: gherkin.berp gherkin-java.razor berp/berp.exe - -mono berp/berp.exe -g gherkin.berp -t gherkin-java.razor -o $@ - # Remove BOM - awk 'NR==1{sub(/^\xef\xbb\xbf/,"")}{print}' < $@ > $@.nobom - mv $@.nobom $@ - clean: rm -rf .compared .built acceptance target .PHONY: clean - -clobber: clean - rm -rf src/main/java/gherkin/Parser.java -.PHONY: clobber diff --git a/gherkin/java/berp/CommandLine.dll b/gherkin/java/berp/CommandLine.dll deleted file mode 100755 index d5497ef2957ad975b8f5030a14285901e6dceac4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58368 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 diff --git a/gherkin/java/berp/RazorEngine.dll b/gherkin/java/berp/RazorEngine.dll deleted file mode 100755 index ae6f70e02b1fc31001dd25260c2681c5a76fc359..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82432 zcmd4434B)7@i#vA+~>K^mV`V>c(Oyn<|R)O2!tI36c-c`a6@qkiwlBYcpg9`fQcX# z#RWlJa6!ZcORZYkx>iv{snnv<R$Hr}luEUA!&WWD|99rx=RP+Pt-p8qf8MmtJ#%Kx zoH=vm%vtWa4=0^<Bbh`Lz<=L-L-aVF{5L}2_k$LY^EyA7N1G$RsearT^PB2ZFPfgN znw4@cOijL|YU<=mFLmZrO*y|RHTTl0>6ccGI{B2UOPp!v*XQO&ySbvr9YZw6FlqGX zZ%)Y6wwqLS%!m;UHi#^p`;Rk`u0pyAPojKDE3G$YxNJo0Ku7+tZVK&cx{6u(|JkRD zau)v9LGFp1fZR{m5bgh349Y>?MH3CGXixh-yoxC7qlbYX@5AfooIigK@B@ROFKE(M z=<WZjf>!mZbZROxMK|au9W@kB-`@yySAFXInGP6PSAx!L0~+xyzN47z|J%uS#UJaY zC`c2pgnfQb6p`F47*_?cS@b(o)+tS|eZKLYe!GU%-~aIPsmqQ%&};aIkuUAg`RlHV zp8VIEyVs3b{lJFVe_eIqese^xMT0KiQ9s^z>iu~mj{eW4+7EC3$0YFmxZwCZfAdJU zEj8QA`+S+Wtocy<xthHt!`{B}iZ!oqQs+M!p<8qAfA-Z`zpg*`h|QPYGHmu+(>g3J zc-ju^>VEV!$}S{|qA{k8?zBh+?4Ue@c1YZ$h6;Nd1n(lWJg%An1JNW|HC>dsh>@BM z9VP@FFiU5|qeDLEfLS^tpqq3A<YP?5NjV*%kDUNePBAA-Bv}fWMs=3d4V_FHkS$Zj zjJixYk`7!C#U)wE1v?4enUj7Q+E;bGHr!7O=k~B)xcTT>oqqysR0R<*R$vi`0b<(( zsW*6GvpCt+Tun2RO0GjaMl6&toi509x&o{Z6$jRb>~2U(Be)H{P!?k`PUc+LLPf3G zO4QOFEVV^ik|pxW>>kKV8VQOeDa7?ELJpyiP;by6OWCkt)G;|JMI42sV*qHANg3FP z$61_G&~KKqZIrQl0(d+IH<0}~p03H{|5MpXq{T~MTK1CebyYnUgDX&1Saiq&r<JY+ zOABWuNho%ew9V^(lt=%=QrZ4z#G}K<K!-K5bVfWn3<Nq_oTW43(a~q1qjgz2BcNM! zA=;D+I+;aw9rR2bLg&=QQXOE0bUiW_m=5|PS{pVU^ryCTs4ikU4ZxzwTGQ!+M5-tF zO{XuC=vjVrZgLv&aQXq*{Q)xm8KLV?XCBw7Y<MC%2>xfK&jW~sOlLA1Clufygr_nc zIFIGPr=t`KIs@gIf~vEeL6R;|sTsgh%?y6T;2s8#GWacna)V~sgP9ks0~i^?NZ1)F z<)c<^k|O9RDu>^Jnb3CVRvT6}kR<z7VK5%73l4<Okm($WVm1bFk^@6BN>-tjC=4Y_ z<5oO$drZ?q&PWy>4;4==48=on>-y=30wU!tjO3$0D+~|37IntM&e6bfC_M^~+(;EQ z5jn?jVQ6?PGe%hYvGE9`7X~Qe9EZ$!z&Tz&M&pq_0l+yCphv_R<I6vZ^T%?2R+WgS z$|kLA#5q}Wgq?9nu$F_*|K^)--YJTQiw+s0br^b%2a(>!*fuZ^Dw;~`gGLdW0J{Y+ z_sV<-Ke93ZvKvXcSn4DgJbenX76jT+5F}knuzQ`=BYi5E^36Pqpe{Y~g4!MHa&}_$ zDEl<flF^;$C7q`HfXWNx1x>pvydz3^fglfa%Q+p4g;ug-+;Yx9GG;jw@d!C*0`@>= zriFFypm|odc~+)*R)8all@oT(LJ?;YK*BkjljlhCT)<pb5B?gh&B+Ve7zh^Hn>32G zpHxL0^kH--+(;{%o(wcS1%RD8+9NMuV^mlXj(7+eZcP|L7P_2kEkvY<2WqsPmr;*R z<l0#g1{<7{{WCocoKZ7<J{~z%*tr1D*gFN%Wr290F68xC$aQcnuLDI(set<}Gd}@| zD`$rn5IO$Ba|jb4>e)Fg(~e>X(IRRG;Ps2)o;t!Mp>}#Y@>@6y5sn``RVGavQ7Xx^ zWio2%=-jqW;;AK>i3^G_!C|e%x?Bo*GO8U1DK`Ye&w_L-cwh|pnXhZ2malVSAw5DP zki9sTQ4?NdrDw64oCP)cVMEuXjZ`uRU4@y{a?)Ud`3o_?<{+6HF)bJponoO!vfi^B z-V?}rPaxwxZl9e?-LA~`8Nw*HEl!E(;#^eQJyt;WTu6suTXK*=@8q)w<%H`(A$uMZ zc$m54%%su^z49!_+|~$Ln5(j~ay(g!S(M@tV8yh++z7lNBQWIZW>TkWEsy8QB;;W= zfw}Sxl#B9+(3(UNHuOfn<yp?FNVpj0*wfP(QkE#5hKod7xJ^(O{$vt*j!IabYCE57 z<iQSs(FMx643FAllrx{7!<2J5o;wjg3>oG!4b}EgGK-{shH_=j0_H4KJ5R|l6*~y` zG8uXEv!bK_Yu$_U#6$~Gwyxu13{coh5X5>O#yo~I{%8_<{lB(l5o^}qD*HrM*-ncQ zBs0=;7h}k}2v@;Vil?_;<H7mR2a6#sT0p61AjrM~NNNjGsXs8<0yMkELA0Q<wswa5 z#8N&xcP?^TS)Om~S+p7D%B7s$7Y#;VW4cG{2Lj2*AV7R^Gh?Z@P;GSJQj}0K_k%N{ z+<AX?#dW8lGjhTSB@2M{;bK_>tPhuHV;~<Dv{?qM50|FcMC-$4sr`5==Spy3mDC@V zrk5aX!-bRfRY<K5m#01!UV9l(u@<ja{wMl>{(nJ#LmftcEKUxme?)lw`YXbG!u!8C z6-8myAE9Zv3B;Q|k$B+t7+Kz+k=av)Fmv?=54uS*0->CDDiMgVsz8X(&g5IH?sck% z%E4$3>wO6ac&zZ@Q&+S3EN3|$;y(Y}iO8sjS_=<{ofv*D$^&922C0j(2k)Hjq3pw0 zGX@D9gpEU7+1EfQyhC+A6vC>=N?!}SSR5m2B~rQEe#>4VOf|2QT6`Un_VtV_`vyFE zC}rP>XL=>TA_S9wvTxF4%sQ6rBTRy5nHNYk7lEZVUoB)-dlfig85y)zT_@OcHF8|y z%}Az7p@Fl81#&zs#5x5NFk!ig_$2DJRYr7)s?_}`rVd%dxk<O6w0$d!(6#FkQ{+}= zrTUs)6{>g<>!)l_cZG_Gs<=Kgbu&2AaB#it7^}=6Z{aXUV%LP}0lTJ7deaG2Wp0L_ zxbxv{sJ|{(Ik&SiYXQ6n!gDzKN%k(vxdSBUP5^hjXj(P*m8RX5r3DD>6ZvMArkXMM z0*f)^^z04;TIst{sD-mIZSuoLz)#xuWJF2a=Xlfw^`whYB5J8cEXNXQ)*-8e#jHmG z8y=TzzZSqM0Qzy;GO<??_;lOt4akSl-FR7!81N5+s4Lr4HDf9a@ZgBVBX#h{`@kz< zCw)Is3$S^(02Vf#nF22sc&WgP0C_uUMbi&}l^5y7&Vxu{p`36wW)ctSMCt+V<sWM# zW)DKS#h5j<jgA2(jceg7*oYrC#!_-I`d9ND%RHM<zJ;^E!w(xBmt2g<uX&DRo`;!- zv%td-8xE9Qj7YC}j`!qn7I^q!W3VT4lw*U)D`{C)<%T1&{#uM^ugi|+vOi_{oQ1Od z;8TvI{Rnbx_--;M<UEFS*oH$Uou45|MTPKagc6<>#Lg#CdNT+dkYr<@{yAe<$TqVV zTX8G>3uHLI<ihcw^Egwn#BrC~+*4sJ#K$xFZ8*P_3Kd_6h+-5*<I#k*J|1<R068Au zql;u=7^`7~HFrI9y;1#Bz3<@l#x?MhZtM%DUb$e&6HEPxM_N53zys`&P#y8_X`omd zK7&VXp?*5Q0+KkS&@hf6C|aTkmh&tq+HKOWVqLr-<UEI*)Q1qPeM-&-oGr-IBpaQc zMEnic980R$8HGv_<DLhd5Hl5_Z*&YZv9A=jb;DLi*8<K9%!?4hE=@IODKkBRJ8Ubm z1NI1($3cwS47cU~;-o_@4pVj_6zZVuya;|7OY1}KkU^QC>>GOUI5Pu5>_4_~Wu&ls zIhiHr1?IwsaLNKBVwQ&<mVHvDN+}Or+;ak_353jgAc6BSozVb^_Bbh%Ok#CD1xeob zTTyUev_@s>w`5YcU&=D0Uo-m<ll5yx)XSbzFe3JYBt8p6Kc`<t;i$5=<Kg_8!7B`Q z0KnpHb1mmL$nGI^C|)<~K2Y{pD8@m>stcLvJ>0`JCn)<>mcb`}r%F3etetKc23g%0 zk@=A2qJN<q+g919pmcf+H=U0IS%#8W+f#UAp<@&Z@P9e@FIiMv#QS$JS0Oc5Qi)VD z08d+iURL&Rp_Sf2Tiy(Tnc_8M>$yG#F{lQ%!x+ly#|ZQ@2`<6wd~b|!u)`=h6IHmQ z#GZs|=OWZ-7Z8RHmKku~KqZBiUIPk~b02c}m}VEA&hG$n!bSG)@#OHpf+G|t8lS)( zd;*r0EVsz{1IW1%JwP)&k@3agsgH=j!T^>tvI4I&BgumFxhTf*CBi#z?7V^`+!PlJ zya{nNec;LVTS)1~XMCtu?9kb72S#8AeO9aKRem}n;$y=gs!r@QH-Pa}bjU=TczK*2 z0xhD+F6LaA+Mhp5^5Nn3AEAkKHx7<rYiOnHMo{ewxdBQJH|!al=6IlW35%}Peq9*x z=vvn<emWx_9T5(Fj<J>Pb4EP6mXGL|r8DBuwS4$kmd;4c^~(N}ZbIrp_z17=($GBp zHZtu$3k5P1!O!`e7V~gt+kS`hmHjRr7@WKD;Kkh@JoVxZgBL^NJ>jzK_vLBt6*l`X zc*K;QV)KL~h+@pNS@&Uh$-0lFeCN7Ph&Mx43g^6S)_p#EJNv+(2PW4s$sj(b=Jg=A z)&47}XvPP4EZz^`{7o`sW$Ao~baDD4&i=b(+yB6$hi+z6726*Jh0kCn!2(f)IG=Eq z^C`0<y4#;|0?*Io+05<o3P>eZDnIBckLiFplzjl~bsgOr>T*;`rYc?t>gwFm3w)(Z z>@TDmt^Gfd1}myBvHyj1kBo|60$GgUq?ZYExU0WHRtslgnZOTTsV42Ok?Z^$0G-7a z3Z*(&?wZ!MlkP)Rs@s>4zT~NF0Si5dBH5{IiaQnk2e~i}rlR@W|1!tv{?hY74XT&^ z;`b_yi0}Dg`DG{u8@7w(hqPGJUg%0~AImXHvvL`M+@Q=6Fu51Yn_2OB0NQ25FPFjZ zG2LOkS*R;XUxpdPUd|OMIUM1Q1gG<{?zLCz^f%z;?M5aV#6qbfU_A$~kD@(7seZon zjBJ{>9v11t8D-Um^<fP6y1j-edS9dM)rWOz#;DG=i;;HY9T6@|XGG{ZXcM{t<G{WS za;3GIIMr9=BHCojG2+QZoI|~c1X(&G9$oh%Mp>55h)3@y<zdk*oe_`TU+8FEmd=Pr zhcc)iT4w2tc=Q26hn877BQ?i*9cV6s4*c3m=4w1>Aj)Lcl$ZiysU_^`s0nMzW@a{d zM~%Mp{6e424&rjEz&O+qp}0J>f?;jU!;?WiW=xXg+ds`%TGtDs{eXJYc+)7`d9QMg z#V`o{kLv!}52*W=c5QapHB5egh9IIF&UGKwUO#SE)^zlk_}{VD=C(Tjz<O7sR7PFt z-~X|#e$lqxlVIz?KL3z|x2L@Jk|{?zm3*Xwx1Q`Q&MlB&xi2C7r#C42rpoSz75Aar zk5bTcobPocUhij{C~Yi)9IRU4i>|l&Sh&yNg>C5RR`x0%6X?u`xbNqaNay$b!|_an zHvZl|98W$XBTq{iwVCHzI$!%==n?_7BXarEpzBcS7vCDYBQldcv=t;C>spgN-K>PC zNHURn4V`GRsr{>NUBO){{UfNe2*C*RaiK&@Q#CWnn|6y|Fh?aE!)^u)Pdp~s{><WB z4Hnn+JvxH3N5AGUbcpllUQmYIjQmC){f5Jo=eV1xf8}B5@Jx@s>M(RD?$K{P44va{ zMm{@u`}T3%&CqXaL)Uw;u+UTA!02`W)|-P4%$)OZe<sjYm!~}RJv>^^)c6d~eOSfn zPMd&b9cQ~cDO?A@c3k|LWn;Y${Zc$~b^X{WxM9uXaqFL*k$pHFkJNJ3dOTRgXXP03 zUTZk>q@H0G3tG&r%&=f57eWTdvUY9$ohQ$;3z#FCIWsqpV7ckvd)CeP2IOJ>n$ro@ z@GedF4T{GOU)TO`*Ok>r`%x+ucI|ZErtj>h;tbE>?Bw>-=nPM`pR#qi_MVjCIh>sD z?ziu<&+d!`ys_ijr;6=^t;=EUgZSy5LAt};JBzgH@>AzS#T4tA&VfxAxLdpfki{nm zU-MIZ&A&D~7NI~!39n@t@zy9D3sm!QemWx_onwJ&KHg7f#G`X8P|c(LbVfWn_n~S& z!B1zzqxTc~iGDgG9-aG6HIMPr8S&_P4ThO9+df7-x?Y2g_0t)t;dh!B!p<WhpUm1k z)5(Q3v7E>Md6kQ`mr9Poc~Ty-bCR9HP6s5!ud&Vi99Fi(zxCXzZ!n<Do9`5d=LX@X za_oSNP$YBWn7O~ug=)w0t55bllcwQ$6zi}P(Z5_?L`JdH!R7%69CgFW<)ub$B$2ug zJ-$9ttna_9kCddIl8jPIUW~1el%@V98S>gEozJde+HpMYW5F`jbA3mnKKzF^XPgSv z1d3wGUZ!0DZXCsB?&E-<t2I;qhG@A=qXp|XdvJR8PklDX4Kg9u6t7mzn6m=qP9aN_ z!ziwM5qL&{CtZfQFDGm+VkUQw;l2RIJ~5W+8G&<43oPe#SlTYbR2n{Hm7`d?2qO9V zPSUObh=si4*Yea_lnYDEVhf+b$_m;4c1H&EMBiTqUE~j^ggd#8e=%7F92_KM5R(u0 zEc>8K`6DC$5ya&4J<G;kPs;p>k$<?z+l*k-C6qri@|hr}^BN=Ac4gi#^?(A$a9?2D zegzua{ybO|E(p)bQ#cH*<c99!@(3Ipr>nlVOc+Hz5N@{j50H;IowPsl<o}>Dow>{> z|FbesJ8A#ZE2GybA!+-<3Gf0t;du(Y744jZb|O%Ddm%Um?n)$VzE0PJlBeTN0|sX? zO5rVL0#_t>c*aPDct*8)Sj7|Z5<p*^K+$*KDUSzaT=MB2Tn2ezydxOT%c-~d)LF~r zH<@AgzCt(ZKAK-y>v4)k({ZA&YG#GYr|9QI^Ww>iIK!QIxsT9kd><9M*O`eVMso>t z!wW*U7T>yC$7qq8#`LUbg9)lC*pcXBEmkl25YH69=OP5x?EXJtm$773K!-Zou$yJ$ z8W|#X&Bd9OB5sdr7BfSV_UL-q{y6tW5pQl_#EYF$S97JG&WPy3aRh-JZJc`qYG&8% z1X^v<aysLQyLEtlD=nuA&lRkkvc05TjZBHM-rY$YgtWOk$;I{E$!sx)yViGslGhvv z4SfF@V@UXT$D82V<n@ocFl4?Q@Ns)E?Xns|VViQ?!i2*4U68Mwu7K%o85S9Hx!~d0 z#^aPVcf|@Vza5PaggD@_57&W)$w=<ZoCz1{?%kPLjIB!G@Rwy!M&Fk*skltvmpO`T zL_JFtna*8!QcWfU2jx2B0+%B@iDX#$-7}&zVba4pc`c^MxjW-)XhT5uT7J6hM9Q;F zd_GkK87KQ?n9jP4kj$D8Au6t9!>BF9<!VuG9GAm;G7Ia|WV$;nXv3A0e1$HF*MHJ9 zD<JZ`d8z>AP}bAgxhGSb9*^zlW?Q;$Ge);p-gMS`0=UgpkdI*ty%b-EOY%F}j55%L znO$AJZ9mhww~Z{`tNQGx%@@cr9nOB}x(yj2KiGZ<=-**KD-aZUuFkr@!oKzw6*&)N z>pKkH{9d}*zC7>aee!ji{Y;>9yARJ7$X51!d}x%Xw9ChS=&!fPCn{rSKiw~a@9|*Z z@%sbuNB72AEY&HB1qX6@$%JT@)XPAue`2W>9tne=X?#OF$!}p@Z?RySfU_~{FP7}P z;GdrF6=C2qLpE-Fi^mi4Jv<PjEBYQDvj`1tUsnQc_UR*U3;j&r?SI&zqU@<Yd&vUL zZ!Zjb*Iq(uV=t!p?8PAfalX9^$0P(;p^P164*ou!IId!As$&X*M0<g5OtCToWl*5Z z50;4vzEh@a-yb5g-mfQ+?~=)HZ?hhhjc>k~Qsg|8bs%2bas2bq&GvMj*Zgz|%RZ*e zyx<!v7`;FCDme_@{BQI?yYd_tee&HHk!8xvJ>TN-3F3K_=MXH2vh%2Sk5#qsM0&Ve ztnKH})6@IWHeuJ7M|nc_t&>dqc+jx{uutHpoGoYkMX!_2LID|hyoYAQTPN{6rJ5)C z>5SCWWM0Yo_T$`E)qIYhml03a=|Vr(PiI8vaoB<9Se$L0jXdWDueY>sGyM!7{kjbO zD7OUS$Bo=N?{z+x3sWn~!H#hpD=vrJ#a9E=4N7Ehy_a0~Gd_8-5}m7y?4Fpv*IUJj zOv<j|2|WqW!Ugf-jvvjn$dJ@dY~l5Nbk%$fDE4Vk!Kni|y@FFGF{lUX+B`ro2%&r8 z=?ZN4_)ZrW<L@<20V~?TLtznXYKgvj2PnJMy@=MPZ}TTH9rwU0dFR-Rs|+HQ9lMI( z!RouV-hLQcuUKkeEHfi$Tbs^GRH|zdC(!44dR+-;KrBkfSzBKF@%Su+Tp53^*1iFp z**A}cy{|<pWT~350Q>v1C<_OQ7v-iqK_)IS!Q;5c;{mw=wTMf_15!ARwQUqz0PzUR zxgJ_#DSMVYB(F&4(K`jKej%<&)rGuUP|6;!n<e=}aHCQ(oU@S|i`3=E1Ba~68Qbw~ zez9MU8Fp524Y-cMy;m4af-~C|;J7-GIq#^U?kDSe|CxrvcKucJ3T}Esw%<*<AMHjn z<LN54WSbKTe~;jEDmI4hl0_`W5@B@~ztZOGP2vmd(S_gk1>y8Orn|Km8*csn`C_z0 zE|Ruz7TlO0T0B;+86)@|h~oo~IrytLCU1fiae~ufOg&6_7@E$7fD#83VHvFV6YkwH zyg^pU0(gUrYG!vrsE=xJjI8X_xwuRbQ?&?;S(7d|h!7ZX7b}{G<pr;wuGcJb%cTtd z60|R1ZiVk!bczO!MiENn48(>I-$4b#x93Kj0Jh|Xfr8+nj`i3yVZ+=99Wr+lM!UX+ zBJvVc5Ohg$1Z(%@UgPaGbJvy@1novn<RH-x3F(CdZkyx76x_@iyaDxPxaVTx7BAF& zAoBAwM15z^LUke#a)e&M87$cD4?qFj`IAe5eCww}wyii3Na8BF8F3U^<+eKFAeejH zc_8Bs;Q4GC`S^k{=@}}HVX`Wom=k7W;+rW}{P%~x`6iUn0>=+oV^U4~{uP<}jGxyh zvR};hZ!Gm0M-&(t-y^wUgnK=VaHeA)Vl>kDOf0I^L!jsV=>?DlNA%XK5}m#!3%M#e zGB6jXYu;tL95O9uAR7$tp%8&Ncsh3g1RPwD#`U<YyJh%lYIs;_-$T7zKlVoM{ks(Q z(D?QZ0$~wWgUn)QFwlI1OmX?Uls!%?3$MKoEzN$3q(7Umhln=bT*o$2%|nqX#d%(3 z#GC8%e!Y1Z^6s<wkU?K-6aR-BQ4`xm*++t2TWQK6!`ukmt1jO~F4um{jtGS-l-%#a z@v5-uD_+(j7LQx3I#V#19(4rd97m6B6Ca1=;J(dp@JeADpHutR^QN55_~X6Gs;z6| zNlO}lC^!OQ-2P=>ncTjAv-e0%=Vp{Mom&8%Kl(&qesSO3n9@g6ScblHp9-L(EN3Jt zv7Dm-?V|x=`hrs?2K(<IpsafbLC<GX#jeeqEgG{Qc<W6i`KB`pGKK1wgp!byiHp;; z9L{u(IUG9}xZ;fbu;%An(>XR%03DC|F$U;-&{g_45Edbcx1n#s2pDP@Pw3vGkZR_9 z2P-)o*%yT!L_AyylT6Dw0SLZx!(jw$QTN_E`TWHiQrYj-cy*=MjXkN$iJ5Pebc~n% zlNRNi$YOoIH~_j~t;=%&*YDm@90M*rQaT3O5HMv%$0tqPRxH+1IG!KZUdC8(IX)Q~ z5u6`zP6osc<+hm^d{N8?q8ZD?dCj-uPzjtPbDu<O>sEqUD3O{4s+oEoP@kU50?Mrg zr>R^)4f?~RKSDNQ6Q;k+DeS=8k%c*d4`T6gsvF;N+=}JYAH7N~_abM&y~8Q!PM#F> zM_A}*wwio(5=+(OW|R%f3%Oja3O+VPB^frYb>#3`NAT$-Yt5Q**R$Zkr}I~)m6;P^ zEQz43)abh)j`68|Axe)vC80pt{RA3$q1$e(ouYCCots<`$+Y{s8iWNK46)j4kR=U@ z=>~<o1~Hp%P^f)_%#bqyHRiZQ;L6glh;A1O4!(@rRT1$Ybo2K*{-bU*%WYR4UAI>M zBn0>8Jmg>Gwu}8+K4{HJ9v_y^S$ToU&SGWs#9m)(X?;seS<&OBo-Pn_wbTO-#U9oJ z52@_H^K6|*r%%)4?lG0dgcV%`9}D0WCnsTc?*@b_N-se)Tm+RRbV&>ufi{?E!}k}> zPRe<HDM@_t?TX9n`*<&<nx~@*8B;tzF(UCT2X#Sh9`me&Fz}cg@9L0Uy<%L&QeShw zyMu|FWIEUdu?NejJ0b5dOI6h@i~$D=z|7uAQBTN+5?pT^IS6DOGFfM!Kr|UB(vg7Y zvNr2fwxfgj%NN6x-0f%EW$vDd)(=9jOswEirgNs~l6}2k+H24ayluXfpV>Rc7mMux zv$kWzoBL~pKEqFE#G5;SKo=WV(~>s!X!>j2%;eQyC9wT`Olsu4gxLm5;3oyLv_!&e zhi!Jt!7fp1hCOGpF7DMDrN0SZ03I9P3|fmWg;tBf5zt>aU}qGKYP^AG5-jqW!wMxj zcPr9AGJ$Us^}P>#n;4KwJ?q2vIVe};oD1lj2QX&{R%(kbK}o^~0A?bPUd%OS)J9ey z*gh*^w&UV{4MG2YY%AT{N5U^ys_ERxt>lkFG>&5{{i*=`Jl`IPCm7*J&U|pn7Z`9y zIrID#cY71GTwuwHBJ*i(EH%1=M{zgNyiS5&>otsOc2GCOz#C(!s(dit4<jw$H*U!4 zOhJi`Z9euK$6PWpe5z*OPw=<bH$Xm&%s%hR7d6|;M;6Wug3e^<otx|(ai$=l=OK_f zWBGI+RLN8=0(@2D=M8vvK=!tG^7)Gaq_VH>vzp<cj$eD|#_Rc^hK{@_vsTdW*N<tV zYdc#6GAc-ZR)tJI`Cer3?;Bi;wxiMC-FDthKv~2p{B(u19p5%gbK9<eEFflO>U1~9 zu~fF+Y|CH%-j-)yiMaDe4Gp~@({BBJxQ-wEoe_5v*M%rj?HW(NYt^I0#%2jqO7SA* z6DKWpe#QQp`Ep6GzY!z8->)(@3ufQ7{2+gEZ3ce{{NMK%e$De;{-W2_Vz<n=y^lwu zUR-9@#ck;K`{_ZsdzjnCKid0SX6yyp41jjt*T%!!zjNWe*8k}`5Io&qVBqz=MFtKf zX0>UD4AJZu$7dJ;c>!a}`#SHSCzkrqiy*<;{2;qJegXpf)})VTemoOp@&dJSoQW{~ zTU?=n443O6IE~GCNSzl^YV+I1lJ6Z<+rM{E@lT1!$-lf%%A8B;xN<8Ec_TBv{O5^o zJa2cF@4XkxjtTEDpVuXY=tFmZCG$hT*_3glqjqBJq)%vDc%s7`toWS|%|?Id@4c|D zf*WP#hwPPO`Md}xb#n0-A8F!Sax0|2ENJtwIQsHETz~its`RZ9cu%F8(d*eY0wbtD zz-OnFVtQ%?I>k)zDNWS52q3i$8L~UEr*jy=DxohrlfQaO;*Lcc=Xg>3HLeM(k~icT zw11~-=C~51HISWV+4z!ch8B@pQi#KinLwiHO8{d#hi0}UIf>k4J&rn4H-IIw;(6q! z?nctS6ntUF0i46k&Mc(xLrujKb0ZcGka*$!vI_b2F;n+)HM7C!YG$UM@N#@Q>iZdU z#6IYStbG{q)==D^su@<w(iv$-M@zGGM#R3nS(}UUeClMUSaVZspzNJ6m6Jw}Gl#Pi z{98-XcB@_6HLK;!W!`zr%eQWDOz%lJ6hN4HUbkA=uR}0@CcOAEuYhj8vUh!(RMSV_ z3~PZE@GBpgwGKvPX00RZm^j*jy-OT7x3G?h+V4VAcHL|8-2=Ys6)(b-ltRq#@N{z# z8XmyM?<j}81x`|<i@*|47M9S5tlf~1#`;f|$BX7Op;-zvbK1dI5D)?z>i1H}<GC3p zO}y@rnDq*JH1i#}{b$z4au%YL3~w&i0G-^J&gJSX{@%}>F3TazSKA`44HG5vxfA7| zATc{p@>uBvd0=2YxE&a();rvY#VG7t0pOcYc>l0KcoWwZv)8sT-LhNpNL;s#oxUFi zl7roqRyecfMmg3!;p%SkI|7`oT!#w%KbFI>rWbgyu8ya>@HwMpE@CDq$M(j{n67-5 zzMdCj9eCXK2hfp^<qt;Lg(!<_c~_wVcZdU91`Iz@V*iM9_lga&nOAe>KF*|?=d;6F znW;TIym(w^%A`K_a@+#qTQSs&wKT>PtdkutjCkWo)6udlospVf`3DhKsO<Nliyl9w zRH*E~csVuyRO#i=Xwf1RR_SXvxtNog4>-+5umI4jVI$Sdr1V=Tz32+0sOCuhL4f^% zG?zD_Z1Wz_AM&vG{SnT)`3mV8JaO1-f58>67NkuXy(dIxv)^!q&Jr%kOAowv&^cEj z2b(_V(WA{fLmi)>8SHgEifRYr*ow6;LC<&^zh7zL2wLvG;X~Dc^C|R*g{@HfSZ)iK zQq63EU|2-perI=fjB8;IX9YkHZkqTU<_T)ida?=3^lC`(d|Kb3ZDo4EySpmUw<`r} z!+Ohs-|)f$L!U9hs5lvCb@CP8`1}Ve<~A5j!UTqhhWn|C5Bl)aSV4OLT$IA{YgU=z zz-=7~y)aL~1~;)<s(B?IwR!p(aPT4rm)!6{X7i11K0gEeK2GwTk0IV|2HM$Po@&0q zEyhoI+bhLT&;OFV|JU?0sTM)-O4zR`2X8uip!2!c)FL(}u1-eW_aqz`<@IDN^%Y0f zQ{asY;sN}gfhnsdHt`}hQ9QuiEw{=fkF69B1Zu+p{*@v8o*wwPhw!SB+3WI<V4Qze zBbm%`vt?z-zX74mU*RVB#W`nk0e%-8)e+lOY*|rOG3^C$Kd;q>xw@l|S-O&$IpN#{ z!EKpe^)rh@u%fI57GxRI3~qpPQzAAH*FRxTt-4;YiGss9kIRI_DYK)5-v(EtE=ka= z0>fT~%2QjA_8tAwz!$Vcw?<4<B5_crmJr`Uz;7w>;!r3Rsh7S-T=KHE1?x%<uUV#L zb;s%(@ccS1A(GeQ2UA>Skt|6ii*YYL9xBb|l}RIzr?0|`zaY35PmG0lU4}LfeiJYD z@Z%F1ou_7$LOY}pJ(YurC}}!~G|{kr4}Jtkr<;NE{UrV=$0Xi!U!wTe9FzFa4g~jw zIew$jO5->T#}E|Z-{fJ&QQ2OR8j4MRx85@&(>_wO;ZRySiitHDIreZ(<d^DvR$G8x zMy$s7H|HZ<@t|=7U!56f6X+bA6!P!KnGV+coN%KYq9|5ku^!pqIOHju8Tg=A<^qoV zhxt*%i;>;#M-BNctoNgajQ9@GU16;#<tCT9ayh>0nh*gjrwD*DIW0is_hd$(-43EZ zNS1?@hlTTho(?0<?J%#i768W=ci@q^a^Rj#Tu42x)4zk4jn@G=JH?p-;x(p2j@PU3 z;CRi?Y`m7KAsd(fSIgnon=y3I-gr8Rp5%KhTrH;LHW7*I4#E+!bgc4w9TrNp>;O2& zi`pY$h*+|tiOf1L^C-!rkpAVD13Xvx&rkGk>><SR{Ei-IyUygFf8oj0d0WaAFJcbN zxV#2~Zxi|-<$T{WV$qA&>+&UIG}$T5pD#w;FBj#`um8(M{P;-b41F2PN#BJ=WY!1) z{+(0zZVXO2?V}-AXqm3^%Ift6&H}x%LHaeyVuizZV{j11Kk(!3Ol4HXQl}ss=p*aQ z(nBvY;(>+tfS*sXqO}}v1;e{UOX4klYL#OlUh13NJ#tinq0|+J6Y^e)^ztQ+gI>LU z;o|Q4#TDj`{(C`?MGTLAcOj$jqm8;kyphEFcb@oj!miJH&6YI))?@CP;#PDBd=$$# z@lk$e*AA-r7Qs3AI{$*WtiJ~NJotZ8hRJ8cg!N}U4Sx{dWp!NNg;n%y$~sv=nS~dz zJ`zz6<H!x{vm81lY`Tuz$IIl{mpS|3{Y(SuUe11#=Pm&t5-;d+%~r3NV(26s#7eUj z>Ng<CU!M06?aOymX0|um3bIGB2euL9?-PsfqRH8bYQ6)FM4#M-2geP5`upT|H=mz! zzuR5^t#$MHnO(>^U$^PE|G(-nsoEg^{VME<(|y@=A+?AbmKjNMj~74n?Jl)&@TL#S z^zoZsbqLS<9uE%QG><-h^YP3q$;jb@H_hZ8zxlYn^0-109X$_Y3x{M`hmD1HIyP<y z!XglZ-K@@J%jR(yg<^GhrvVpmXK!rkLx-$Jb~YTXN+hw51=T(dASYR7g4!=bwU1{? zN1^a98fNz&Ci|lv@N!c=yQel~qQN=6M=v1fK~&}L_XF}R(+Z{+VVl8Q9upiKh<N>h z*&D|WMHXLHa6<zQP4eBz5#f_xPRnwLIcqZWGZReSyd#jvmwX~9s=}D;d0@my|N1VE zr*qH_Y{B_`+6FA1wUuJ2Yf3X+(^e~(Fp=5?qW|_>6VzSMPE8fkV^1z@ySB3N%$2(I zno!P}3(CBp9LQe!l#s>q%~>de{UG#{Tgtj1#=J@%tN6Yce_bRKWIo!gFEVe0I+Q#@ z%{?7t`3MmFXtT-3qM+pBK92-%6J4wK$N~8t2TN%5lf?I^mFfn?<RSt@*f=j`+dxnh z?}Cf?fE4dtkIHTwTUyX}ZGOE2YZpwKd_Sc>+JGfI?%-6z#Oa@)EU%@Q!EzpENtWDh z<BxuHW3sm}@$>QSx+RB-yXrGvev!w8O<h>do2pO;`(frJOLr&Uu^>3wKSdpjmWV!V zQ}}S^yq7b*bGPg~q3`;H#U6GPW^((Z&7D^KlxQYj@oyXu_5t2IVpu9y4)fB?7E4x} zb1_Qw1vJnC$ijEEkFz~A1BJX(1ploetdV%>A!`qx-kkm4^e)Ki*G6yOU0j3EBkW_) zyEfO=hv~_vR-V(?k>lJW8}{j_Q%*R_AOuSM<>0@0jrG0j`}XeJFo<)4{LYw0OvLX& zVv({5&vjU%cRgiJYWk%YrkP_5=F8q?$UE&6TKJg$H#@o>ciQMtpsfJD6yDkOsG0n8 zb@Hd+0%vqyAB%JX`gQlde9*?VZ^wV|aYBG5gejVi|H_d@cZ<(`jx_p2?w?J?^G^I{ z;y*6K<t_Y&@hHBJ;08bBzo^?Xi%txU3PovgXllr!TO|E^dI;&~B|X%b3hHUb1mwJm zoILtGv==#sngCd-9s;~TF;6pc3Mdga!UgzNm*EINi_Qy=LfH!hJ}&S%z$lH4aE<pz zu8rV#H6zSZ7&S0tPL6V2lcUUYQIs{=iTnh89Ni6A5@Tq`u8l<Ls2Fpeo6DS6<WA3x z(!t!Rp#%-jJ0dSZ7XwD=!@QRP?GBuOeg`g_2F#;dJM2Z-g@s)Er$t<QMS|fCr3*_f zT2{WW+@gESIp>&4hI1;fjpWf?m3xuiTFE?b0w$<)C(eJP(@UKaw6*gQc@}-u`R&dY z#i|$%sj8?-(6}njpI?1ewMBPUk77-_aQcyME4x|rWjD6!2|a3hz)DAqIl`hVj=-f5 zS|jjhM=;Mz0)KY|^L#4#`8M<P6nK=ta|F&4c)z_0Hx-{mD7I+3&87AW4E5ynX+1~u zv}kotZr56Yj{)NQ)Ec&Sc@5{!tl_?Rxn?SKizm5tRY|tq7=hCOEn1MgHj<$Al72qP z`uqkkLHmVgKrQp1CGc8-_W+{RwQRjNYPr>asb%|rjC6tq*D?PjflCBFCGa<ZQQB9> zef@PE_e-dr;okZ;>Mc5<7nhya>x^C&E$wBXXW#9$7j5}>uZKb(8jqE-rzd-}m!8}E zXx#Q#+51w!y99oT{5%@o@KPs>&S?;9^kK;l^x?MT^kvE2`f}f`MH-gu%k4eb_s@ON zvyHtPEgIdpuslJhH!{y%jm+~@<ByU5yGCxK*^edE^(*d|pyT@u=vPJy`b|Rmo_=hH z*FZ(T2>iO=D%+ys{%rGO`?H2;^k;3SN_wWiCk5{B&;ER<KaV(j0H==?IA_4w1EREA z(!T~w(13x}11&msAY1rX1zgujNEgtIfjl;^75EUKMXwATg^~M)r27tH&Ow7#;rDX? zHi*6D3*_X{L8Qy*xWSXqin9RoC^eXKT9HoB=qT$yYDnD>i_RLt60RM>_1-G*=^+bC z^XRo9Z0Bx6bB4lm`mu!v4rR_W1uhe~1`rWu=%0q>(IJ8P!#Ldy(4q~)*q+OWFGi%* zv5g`BFCSk4_e4zA@j4&-pOf+Lr34VS?*Zq<a>pl#@ZSo~Rlst=TSBdP&H4baAo%J8 z`;}mM*nhCh-_u`FrU1KPE@v6dSm$-55kjjn{)$_-75D<0Ifnu(1vW;o(|}dte-otk zOHht~wfc0ST?H%%><ql`&Zm2URRcRyIG;9NLBQ@LtD$`S)^IcKWObrRQqEA#XklmE zg5~;ffPpqt<3227m8wS7;rxG=U}J%G!(=*FunT}S0GlURGq8R*$zCA!-JpJgxuljB z3+*Lf{I%|ngtk{`{Rqoy)bO>?`q9I}+0kUq{`9<H1Az^q0klJ~iRL_W815GRPO#O$ zM&cJp{~*}YLK}{oqpbCAp&d(m1j`G|GlTfvf3MsFs1NkSdxVoEolgS-#|MJ2rhz|v z7bCP&C<G**rU47WwjqOibFN?$sR(@e)Eu}T<<6pG4fcZjfbrKQCmOAw{S;U(uyI0r zT4+r)Lu9@T>_KXxO9cA^uqaKTIl}oj;haKvK>#UV01JXPPiR(<YnVdwrCbRxrs3@( zID5MoULFEFO0cQ4SjtV3a?|jSUU7>q5!y8PBV)^ebw@uh5$tB6T|n0gwn4CqX|+h% z9NZq{n{2lUZ9gzxquegEfW?~4q&tMx5g5~c0(<6D9k6Qn&MSsdl~2b58;$q=ufm?V zZ!Mg2=nqnEp<r|AE#dr;a4w)dLR$wc7w_#p5bP1*ypn?I9$5Za>s2g5mf&=cTl6ll zAh3wgJ{8(h$`M*9#I&W9Cs>t>#RaPo>?$f!CbX`_5kZiyqGG{58OYd=s7x&Z?YCH= z1#xy!A+&t#1cNvY(AXxyuBA>w`%JJEROREmj&RKrQm(<dZ4kSXZi4+%up6j{V5i~0 zB8W(m6zn0vZl-#{-W6;O^%krrVpWiCqrPavJK=Tk^?!yR1k8;*Le(@RvK{G#G49Vh zVygh3j6H&!*J8IAaeBWe!+!NMI>hPj`e;5r^~w2((Lhx>j{?rjc?od7z@-9L0gi7u zHkV~ypBqAr_vUgfC+Afl-IVtTqS;jqo8xhMvSBOW#|?i1?AC|VXZHChj_BEeYuE7S z9Ug@~$K}5SI7{H9I7^-v=bV-C7a;Q|lJhEZzFjZtKL-QRFZ1=nb4`Q(UdR#_#-<|O zp$J~+wt7I(OyrzXG#gOMzpQAUSxuqDCx9IQ$G3D(Y^U)p0|ibLI9uQnfj0=;DDd%O z=2RsND+KltI8xww0%vOoeuLWT#y#@ib+fD!N_PcMZ<$c~2f#A`4VqNCFPO=HtaP?{ zddm}l27Lui?)`CAoGQxBv>K>;8C&@CGR|ik8Z^GVHEhs=3fAYQiZj94t<TM62JNh1 z&R`|?=6RL<Bh~PPO93ygyb|!r$~Ay_on8ezqSIS|jh&c3-RaYaK@WDyiE8-`RNVO` zqneVP&$OzkPv`fMKddwN_{#Y4G4w)JE8y!@T>C!&8>nmbnwaLSrm@uzA$>#jV}OrV zKMzh_wp$n0e<&dL)YqV%+vO18*y>15HO=jk6K$YHUAT43UrqbEoQ3>g*X>B#fY^aF ztbqqU-RIwNi~4onj*U-n@E@^$>N@yiz}mqF0G}N^tIVQFJ#GeM9;~E?)nh&J>tR;{ zzCG+3z<tAR0<0ap7Vx4YvuVw#c|Jdq`8AKu88$q>%A#!k&MJf~T2?YE+z2}y&{%k0 z_!z7w&@BA5hFim9ffWh1EW9E-5o0{*($<7018a0?>%ud*g)VJV*a3E`U~A~*@EqJY zxZ1<6!G3**#=@_I7NNZ!b`93C2L)rzc2JD+yRa@>X=>zktOdphwvC*~TR2_6+QsHY z-a*8D+QqJnya!DGZOh#p+2_MvihS(D{ur5oSdrn}8*#E&@bk!5`eROzw*@Pr-^k4} z=G_*wqd9oT`cJ8EDfFxa)`)#B(Y^@Rm!K0}jO$C#se&yFr=vabj(3J&t>LB7dSG*0 zPS&M_u5~firG!?y<!+8P8m07Ox7<&n!+>oTY@5M)V*4$BTF-LgSG(vxdNF#OQ9)Y; zTS;bYywRBsc4yi$>J>W&V`SP9jIE?oVwV^_Xorhk5SwS%#6M_&)*9T}8k#29R%1@= zDqy>%?JMaIJvZa{f3sVzbA3~XB#jWxm2^YBnO{pKIJzX<MC+cj*{GvwE;c;pNu!=N zyV!)B=Z#+Up<pXZ8me!P_2R2gQf__DE1<Qw*kizY6MwMHGM@w1Km(H+`)$r^Mjx8# zVtaCa2W*3jeVVh|=u6Y^QjE)ma(5ez)U8fqrMdfzezd~H`sDuI=uZy`rgiC09|*=C z8CU(OOFfs{N{{C<Hc_xv`n6yiG|l+CU`4%{vz7AlI)bx7F!q;fHGnSat!WGLdaJ=S zrw?P>i2ZB`eou(8ea4k}aW#}G1ltPC!O7G(k+PC5Yj`+5jOM%8riNd|kEDYxwx{9M z_;6~J8dg%G&#&SmXpD=U*yq)}ku*+Za*Kwkqv#^Rwh{OAD7wR=9j`{w+k&;yHF*=% zXd2qcnk@_8l{W)>f>Q)*4gUn1oj_-6jGoS$s7|DHf^DOJ=AEO)(DS++>T~c*L2qhI zq>QDHbvcnTmcDe$4e2mVoy?WtZ(H!>4vsp7D*7?D&tU9Sx==9PE2k0vJBT`-#now? z#NW2yoY-Z+=4)DbX@{%SnRJ7TUEg6juv-P&Mh|wlUY$kL`FK;JVqBd~vpuZRIGb8D z7Jj|MT6Hen;$r{kunyQd7mMbvRp-$!U95BdI$+NUwv8I|?^jI}!5tf{62+G$Q>|dj z!cXPDN0aGj!CJ%H^CzmwG{&X<0Wzo1R2TaTWKN-(F7|o;V`?fbam%UrlfYKEw0QhI z{OaDlF4jFhQB9*wE;cB>R-I2TxY!Btb-;FLOf<WIJ`rpy*#$H3{o6RKJlT`k%P*kK zf^9Vh3+)cUR?_qRFDbf!%CXke796H7q&^;YyqZp9G$#FiDNPkjd(WjbQ!wo>4qfk+ zbFgOL;43$qp7NEOO<Ub^>@O*<8h_hzPb&Dknx_$9lM2@QFpkh!+N^@leKd~3S=zM) zU;1bp3J&=&wtSZJ(Sm?Ek3R6Uj)S&v2rIBJqIFp%*s^e5;Su1x!=<rim(kB$T1DYH zU{4FSC(=;3kLJ@Zm$o@lZ_cL=1#1nz6d4HYfMEL~+=k03#>dten@bCiHZP|l!S+SC zMGGkD(s*83K#eYq+t*Ady0p6sN1M%bs!QY6E~FVQ?eW5K=0f7@zuY2j`y#s5rLos7 zqSY>qEwPw>?9yH=JOh~i+ZKGY=qeNM;^mLA>&zA(w#tWn30kX1`?Ba>AC}+oA@fR) zmf!I@bBTxb>-cCJ>^gI)M>_+Ye(Z@h*cS6DkMq)wzcKONN&dD4TRQGCf8=4S+h9L$ zgYD}0mXC9P$KB@DUb(M3eqb)A&Dt&)V+YJ@=w)p)gYAO%YS?>mbYr`$pb;Ln3fMvy zW4l~OPkY$Cz`k@bw#)U@8~ZYr!gjfVX1N&K<pz4t!>%)Lqz_z-TYDpolGCPr23u(* zt?;lXfNk=yE#^(M%f;9(tLRG?W4o-PiV?bYw#zCS;bLr;Rn+8SY?sy4;$m!<n`w_= z9Lv8p*HF$#!k->Fw@|H%@mRTq#<&=d;#+8@i}47!g;uy2`}{4m$;H^qZ=oG7#(sSZ zedJ>7$+u9>QMx|%UDPMovhbF~dyq2D#oiEXj*ESUf7R#~TH|6?@i>&*<YJ%a|1EGU z?R2rS;`i`xY94U0zQrGdR&q4gw}y@{{sPz_!Sp<KD~-}v_!TL4K^xjE!M4)-#U;U8 z>1r1{P+SS@J|E|8^oYj7lM3F$u6&n^v0ZMXFJ0`45~fv*VqKPn*)F%y2p79UXwzJb zTXY*O)0oT;x6zG)X<crk2VIPHxs6`*ao$clJ#3=7ol5ZLEYr7Zsh41_5*63dK$pfn zeFvTF(l{#KK@(jX_xqjl5BTy9h1b`2(tMZ3UT_!P;FjY!co*I3(zxw+(@$L*$HBYl zahJv(vW|Z1(l`#Tqc>d|+vOhm*rjnCyobJYY3x1gsl&0{qSi3S!Sz%k*uDt+(!JEn zrEwg*mj-H#UMTrxa05N<Vy~4v6TFXVj}s~M=aLtL_tS$e_Lq{0>H%szUeo?k@=EYQ zdfdhS1KLCMk&8u3C#oM)$!N{lJ!hiYL}Og66KFr778mOe>|xq0*s}19(s$^mv`b^O zwse2+r!?&Zma+`kXTeA4Mi2Wc_$WOs*c!UKl&r_-4NViDc#J*}tkuO5CyEqcQE)bD zEc_zs+e{}4)*5~t|ETk3I@P7E2q&zc(+rokCR`3|j$nGn_Y2zUV!Y$~B^`7z-tqmC zx{cxb)?iOrZT*sldRU$HI5oN0yQN23PtZaa`w-YubgN)1!^yI9t!HSjrqP1DX~4el zu#2r{$vR1D04-%bPgO29yzFvoD~<557VAZt=3-;ZuCZRCJ3Q=mYdh_7v2)8FwRX?} z5BsI{8!8&BYnWa3to2)J^sra0*Qm+Gt}1)i+C?oM_E+oow86zzmVIWuMQ?jpDD*ZJ z$ufEk-Bs2#w3`||%nt3LQ$4Ic^ghk;u*T3|=nfAX8u}}3^{`_?f1{5)Y<%b+lrv6i zeOKAU(5F=EVjIe)gub8~J#2R9OWN#VSA@Q%H$Cj8(0}Nlhus$<qiVdCxuNWtP{26b z!`==>j88o5?;-41CS*8OxPx)4hgF0Nja@GGF#4#(IN)K!!lg#hDZ1RlWi3{@G0??+ z0V`D+6Fsax)XA9dVaJ54j9WddG1S#~+QY_%yBoV*?8&k-!?v+h`gSEv7*t!@)7UD# zvXT}8t1(7N8?Z|TmNedUvAcoQ8nvS5O8P0VI-|wKo&{EK@IRe~9lPEo8%GMpbH@eY zUdGuP3;(9<9cnQ6n>CJ0yUXHMgR#)1@yfrCvC5_K%D<1ne7tJzQhrIeZw3qYFORE6 z5Bo*goNyL9vV6Jf=g~%$PgMPlJ47b$Z{uo!@t|AZS>^B10OMH~J0F|_jF(+3S+*=Z z(0Es{eG#sGpz(oAn^k_58f1iJE4M7XvV28&u+d#(^icUt!1%{BptbRM`R(DM#?aF> z_FVb;@R7!R7vnYzHx>%EjLs;1AUxbyE!bA$wep9<BaEGb?J?dhpA#NwynKe15~%oj z_$XuHM8=j;LB%uSQO0e8Z8Ny-ql`y9?1k_##-ClRvf|g_V~qnYR$K8-_yptfv$RaM z(#gh+E;g*<i|{yOyI`#}rs6;03C7zl?ZS#^<WytqBwg;pih{`L#@R0BR8&MJ8k<GW zl~g+9_Sl)3e#l+gAz@{)>pPSKTOs9iubgFU)>!z@6*K58;}yYL!=F|-z;+3?FTzqL z83$a9rA#s=o-Mi%+xl!{sbE`)EqJc+m|%MSa$ZK4VE@V^BIg-T3vHjlSd;OEk8`re zd2(g%2(WXw2JGzx>n)g;IoTNKVMl{=j9^Q`ClySHOfjap<+z3^#+4rDWs#}IYL~_` zr+M`~Tvh?>QIGT5$oa-rmy>B17<)b1-H{88rgL@Mudd87E;3qNjL!=$GPb(d!<F|( zE;dTeW6ovtROQ2wnZ_I!`*r2!$fd^2CQaL0`E+EKF>12LzN~y9GTV4lV={75MtF+Q zfZZKQ8K(-iL`Fc`nBii>I=vrB8*?;gn8(T-V}-_Kbj&qAa<P*;{Vj5t(QPWrTtZVi zJrka9jB>GyJG}sGuEtQ`KO>hLHwv~ad{d`yBF)AFg0+V4>=cYP8;`g&jv)(;ms}dh z5PbG0f7^oZcPfr9GIk1WpTXE-<L|nhv=5)@Y0g|;b$M9u<4zNO*n+$xqAeND;PA3u z(Ip->wro&znTMTQc53t*51U<fb`;-Kxw>3cHam)o!!EY6Y(W&?ow(S+PV2+?Ne>qb zcU~XHmklm<SJ~<)zH9KXyP~*y?_wLuHb&QZ*u!NnNAL5nUzF{PKH$UNiaum~;cNRQ z!<@!q*ssT#n~b=JeGvVL(b>a3jy`PEdDvx<pBh6w?4Qv`j2Ar2jQz~`y@$nPKR5P! zSeMx2#zDdMM2_wJrFzona6Z?*&tO|WX>@imw)Im+qhKouV<q-0qs67M<)1ZnyBJ&k zd1J)|S_)f!oAI`bvE^SjmR`s-eOCF3u~jgAj=95l)5W+~b{P2=X(`+*zcrqAG47Q& zjJI8kdu5k#(8ah{erGgI*X8aiyDR#ZvDL-6SN?45y;#$@SKc!MGc?A%ve)S5VQ)qM zY8)+?o<;W?rwYcsGAOp+*sQVe=lMCt-;7rT<JJA}*x!s@g7N9y8L<zI-ZQxdj;&3x ze;B(2TNXaI>f+cZ#)pEnhNoA}1$Mxt&8d2iJ~d*OaJkm-lB$X7Q=>>Qj5yFfGm<Xt zZqPn68U@=%o2r^(pBsM^Ol$px@qu7#XkhhSu`i5@OIaqj;icHWjQJX){*}98Um1@G zrhDaU<L`p$Uir7dKe_>3Xj}E$v40!2f~}<AReumWXx!-1KB_(t`;T!@YlbubNtK6; z9YSMEoP&=G3udttZ3#n-5^P!cVD&rr+3`t&wT44o;+CnVxwL{V@9>9_F0CB2fLbb; zZf#I))|{xJASa|g^RT!ItH5lok83Z%_ca3r+ZW-85>=;ZOuRg*R=5~@c}(pVY^$-n zOP8EH#UI}D3WB}7gL*uzG4}ET^~pSqv6m;*t@Aa;US6UCmoug<SguM0)7C9l;{;np zcXz4DsZh7Nv|o1Vn^UPC5p0{mBcM`!Bv>n5Rd!@fl{&Rq*TCbUtJ>*e?DI#c{Dqpv zKA%**7io-rzL#oR%-BAIM^2+^aWNh_{nR=a<MGg6Rb8Puc{~hMD?IG2=n(asU@K`y zm*aDWDZ7O^;RRhL<P2AnH6|<0kt!t^``NUdk!q=6+lY5yN2xb8jV`QsKXQ~J`P&x! zqRV@9wE95PP;R0+S{1c2ai77oQEH%ITFNM|Tv68t!hUR4&M|77TaIbRs*5~qR?czi z5y4oqxH?`v?qL&w?Ql7{zR~Iv!E}A2RrpG+3(Fj>syu8~&I#%y!L-a1)iJ%8GlM;% zF*><nUHn9~TCkOLe#8CoG4c-$WjIe#OJz5|jLbpPN={P!^(t2M9IHmSYuf&U-;az{ zKa<s{uHj_$l*Z^K&`wsHWX-2(<J2!TM!_NPN5-kiG8#2)yqc*o8aQlSe7w3?d|uNg zs5u(L`=h>{Ca7650yOPZHD6=&uVL#tovL1TvD_mc>~y*+k<qb?x*oX>v&Tg)HVCw{ zRF#YlE#+**|I8@bPV<huvh&%h$;EC2cCLCwd|q=lsa+bQ=Z@^#sYyM*AZy(zYKO+i z7{0F46qPUIVHtG<Hcg!_<3UTgKs9NMMh`Emx<I|`VrK!n2)<-cudcYOP5l8)8VYDg z`iH?$Qg*DAYLfItlAbM)WoG2el{E7hbS0po8+=qhr%wC%IjxB6GU;9^^%Kc?Qqr8G z=mkKNb^r#5`Gdl5(4Rf3A^D2lLyke83G7?X={p7fOLD#u81BaTKLq9qr*2Up(x%%k z-BJy^3XiT!!xI}=ekLbB-=Ml~`S}@}=oSqWX(s>%q!mH%aH%r|YAa2a^rZqdRp%dG zf<d}<8nOit;!)O=mcnj6$xFIn+M;VDhxs$Q`FrXaAHP4}pZ-(-|5@vF*&p5_e_cO3 zy;C&T@Q;$#y|3Y3$<grdlFsSQme+Qxlynb)-!Dg(^-KFMIa>2Nk*Q%nN&oN``8jpH z+It6!94(D?R&=!Fj2Ec&IZx6H1g;YJpumR&ZW74y6+P^wGvoT(BmL*#QS_v6`qR%z z{;QI&(|SbvbFyiJG*7PB|IO|^I{qqU-xN8YAjfobm@~uAG7b7R|ER8Q`4wgBQpB~G zZjP4!FQ5EOjm*ROfy30>URp*Ut$(&HnOgigst1qp_7Z*=r{50WZgpEK_sb7ym%qLE z`3>mCrGmazEBdzN!{xNM*!N4;7GS7*1oze2rN5n%={vUJf1?%(kB;`=56i)+WWLDw zxqp1=sIGI`&zL+%vnD*^6mF_%t=N0DC+LwlMe=o8OX~*<E1D_!TJmKckCHjsq{YYy z&{dMZ0#HdU_?;d2d_btU3oBHumFDrMwPc;|PwTo?Nm-rmhp&ome*OKkn~s4xN5@ay zE*<x{T?XAMlKpea5{x*#>M&@Xv_;qW6G{J4_+Rot-M`GE|Jqtu*Z2qFe@`Un^@G0^ z`-Q3@&w7~=`t2yhWlgugT#rRrQ+(b(_Vt>CqYby^P>=Qz=G#%_6L7YTAz7c#=%Y(< zdk+^A{P~9)O}z5aakBl`X**JQy@VNFY~r8SB1f=gG}QAx&v#~<obRGCr*b*J%fi}2 zboBe*x3gYZ`D3ZJr{6OEi2eV9wf`=@r#-U_*2cdB0cgq!)}UI+@kbcH5BsUv-Z7{_ zN(}+btXj2Y{3}>JM*h^FYt-}mvBK|{`CWDC)sDZ$@9JMY?*7mAuU>I|yO+P6^IiS! z=k$-D@5=Yf$;^OlN0y#z{@aY>A7whNqo_a4(bymj{r1=CDMI~rzRpR@K4PxG>Om}L z)Zq3|?=sd8<9^pGx|5I0rYHE)-<8jjGiCj0zf6Dre@h2($2dYADUTYdl$!7z>qYo# zstMn&HsKqk4frx?1HM4Q{cJpY(c`#*{v7@-^T(+#p8aSiej6?iw?I4Mw&zFqkH5w0 zh<`ixBmCD9-wWj%$5DxKJf5TRG!&nAL<GhKmI6*x)dG78Yyfm<kfcWn94&CXz%vC- z7C2qtY=M^pHs>q{j9V)iD*k6@<LWj^ccU&n6ILy~9<H;xQEkstavR-r|DNaN4i)N9 z$sZ-@Q7#YP1{g}rgI_9zp7*H9J+I8&Nb`DLojabc==mOPR6p){9jJWAd!uq9cOuR2 z`{VS2P<QsULt8`#e7X;P#sI#U`vkpP`d;pK<WE#jP(#fOdV)?8cwWtWNb`M~*A(At z*{Ck7`CINrbw$m`fIEABfqIwMOjP6PE`dJ-d<$}nytmXllJl>coV-1%BH1}_KMhLu zLi(6wKftq-$LH-=>Evm7r_$BQsd;D9nq<QIRCN1F{VX{*FK+%RxiD|Ek*HmgS88^z zU8_n>)}g04E4)0f+FV<DW8SAKU3*L3AmmI`4am6@GS`-F$Qx}wT{{C`!|^TPjq1hP zSM$aT&opWE6Zq#p{+KsY>YXF?j;F%9$8cwFZRr<zhGEzJJMUBaJfAvDHz(9t9Yz|L z*X4GYjdWp$C+I`i>MM1BU1^6_$XutE19t9kIco3GVI|TdJKQF9tuzbjkL&Q7I=lYL z4tvzB`hIy!#oBw+-1@tav$N;(fGzcJ11_)ss>4^Vg`LRy@Cui6TYdNZJ!(h&u>94c z?H!`+M)RZkOY%3GpViOFe}ev1&;4cgV)#POwP<gCuN(4TQ{}yG0kwOtdjb1{`lxww zuZ{VSnpZ|DB2SnLdwqd^-;?tTP*?Wak-x#M@xESv%HOCq_4*ocXU{<V33?RN<;JtU zI>(nAul4F4$CqI6oK}N9r<(rWYe4)hGuE5G)hO@HH)np@dj@TyExk{TZw6<%RZYL^ z9ao#_L*&0jR>M@}^KBI)P|z?v{<PFvO=S(u@h#NSX9jJd>-)S%rGa(0ZM}sy_xU1T z9pHYi4!qwdRIt_6^W#393gUrxONSKfaC1KIGqzx(`U<5YxCyjY^$dtt0LE2AU_f7o z8UkYkP8E1X--&9MTXt37`2}xFdauAifrt9OP{6&jy`UkG+qk=6bf8D$pxAhkb|&Dy zg2|GuHfA(_QV@|-+-l=TjRy;+2R1Z@3ug=UBN@LvjdQEU6<!|L+xQM55s&wt#y=WQ zFWe$GmRbW=zd8BK1MI6SrPLGD+VAwj257RRkbB{#LiV(Yc&BeQ++MhmuJ3nu;eL9i z-v-EhrC(g#6IfgNP~jl(v$yZ;`Ap$P$a$r3q~tsyGDpiT?ePX%@(JqJ|38IWV7)-m zmO$_Rc}1gzb39<BF<x$4pD8&90AI{KlLqx4UUVjn>p!~aAYI=7l-z@KZT}f`P<r_w z-P}K}4$_AH=YhHj`De<_=ly{{_kRy*_KJh_MgJ>`N{#q{tBO7iBnDhlWCZ#RSXmT+ z7nNH^aNK}(D9fI6kj@;i2|P;&JXRDBJ}}^M<o{~Gvw&|5coFcA1DNLn<QRbik`4`I z{``SEigLs!*#aLFZB!Kl5i5dhlgVhslEUfIq9X9bahsb*`XIb%AJ(y(v9`3_sx>AJ zEVnMF33c;2UQSa6J{%bxY#F$$<7_E49&#q)o-mg^6X|uTRp+B$cHj*V_iQUh=#Y}p z=9=VHYP#^V{4pg@pqC%DI2zxO-zXaHQC$ZO%by+O$UNKNQW1&LmrJRk2H)%&YVaMd zp$2~wHq_v6!iE}r=W3|Ix4?!PJc1&K^M5NDWAJP;#$dl13i(m%RJWFk1|3zpM>&IL z0nQ!NTzXq@L*rMaw*^)WHp|X7HZ=AGyl?P0YZ}^qOxfkQoiS0(l(OvMbIV$hk9#aK zTIV3Y+?r$XD8~D8)c!<pT>nSQYK6*WmrLYXALiNNjj|%*n-N9wMOu-3omNDAbE1g& zjs$)R5tdwToHXPwWy_7}Lp}stJmk}|g{ZMx`BK1ywL;RXQEyz`0V_?-+hFh<u}S)C zv+=-?>&rJAj|}-DZ?iF>u3PzS;@g{zDFbgs{@T)8%Qu4OVZaG>o6DaTIa>wpkWxE@ zXNQ#CYP>uoVQn>b3@Nwv2lo#7clrL{$3x;3TZm`Cd(>A$uFPGIn;3N!p9UL-UZo6+ z{b84A^|olWSJEFzdbu%S=*<-o@Wj;?$p34_9>W>>9^MLZsRPjAKNXyAifuO*4K1uZ zC|a@KR#$E}diS@H!#=s)STVFBf;+@`gL%MUAKPv`Re3_?0mvK&PQEL#5p&0ODz$iA z2W0mA6w+RVwhs)QUzwxWlFN;!kS+rC#oT~;edt4#PvD*9*2-!tXV?zFhGDxZE7XF# zgtbSF9X2e#!8m8wd$<L4eV<d~abx;0tRIYpfZarXt-wZ+)=m9**tkwZ73(uf;20OO zwnG)eQ3B%@zvntt@vVllrR@ITeZAho8wt*tDLH%8eZ5LL&r$5jwV21@Z;E|;p-`6s z;-8LI{H@+<Nw1c4H}%GmuXSFn_)W+iQu_ws-yb|XIiRYWVh`!2W(<F=^CrbNayARx z68KP}-`wH1Rk61}R5cU+R&I^9RuAurUl=%^{%PPhK<M`>5C8akFpx*PsS0o}od);; z%>n#~mIHo5>i`eXcEB$w7{o6jP**@QMgazl$$(*FW)Qny<FcGQ$}#Q?7ErG7HuCe0 zhXIR>Ie{>ZKu(xO8G8W7N%~Zz72Sza1#}N`up2Zl&%wVLE^ws4lLTHOaFM`23;c_~ zPX+!*U~YiRRtu~XI7r}Vf#(1g;A?fRB{#@5&JDf|J?{j>zx-lx*+BwN6WB4tIXwlA z7I<2ibEXTt4X~Q-r9HuV{9eMSuJ!mgD$WAL_y_EZuSV->Dw#+xq49vLXewY=dZDTw zEBstghtM&AN8`K5di>k%a{*7Gck%hyB>G#I5h8h{z$Sr{1-1xWC-5GD&k5WjaJRrc z0u6(8s}?v?;ADaC8%wO$3->6d8n|`5Cs-x0THpwQBLy}IoGh?KV5`7&0`C#{oWLyt zcMIGj@O|@?@M8%ING$@Z1$GUb5`L$6q@*VcY!!Hqz!w6qgr6;`4sxjx0!IpL5;$34 zi@;Wa_Xyk~aF0O4;<D8OM+zKm9UZ>0<77!sNBYr@t&(1j^t&B50wxpN0Y@kH1I|uF zLPv*hPV@vklo$=zrFc5vnBwJt^Na5dEwLV}*ogEq#oGasi4oyH1@{Ekg}L761a1+y zTi_mn6cIZJtP)r)aHPPa1x^+?RbZ>YB?9jec(1_c1a1-dg23GZ-xp{`xt6X1dq&HV zK3dXE0;dXW5x7L)y#lugd_mwIfsq)O9T{V3O#&wiY!SFFw#wQQyhqYo1nv<?Im}-r zuv*{<flUIR6S!L-<%%_Oxt1zPR|^~=aHPN{fs+Nc2wW%dIf1(c8hI?ITHr{5lLfX2 z+%1qgFwaPVO#&wiY!SFMzYtW4i{=7H2y7C#PT+F_cMGHf<_r{YsVYg25ZENJMc_Jt z&k5WukP1b<z!3u1RdCL80(T3fO5qVWLSU1?7J=&oJ|}RuK<Xs?0!IjJ64)YeoxtY= zR#h|S2!TxkTLgAHg6+Ti2&R%P(gcnW*d(w;;BJA`Q+Nb+>&X@vA?dA>uBwq*1U3n5 z(K&UT|D3?x0+-fvz3UqOzxKWbI<D$Gcb}uzNU}!Kkpz-8k_VawoM1&SKSadCmSkJO zwroo_I9L^DW{#wZM>Fy~Y>P*k5s*L=TDS=X@^o6$Hchw<?Meg9C4qLiO`4DkZCEu; z+8dgX+q5Ksm88AoHtqfXfA4+HnTL#N(yqJKy$0>G-}~SH{$Kmw`<&r?4o?qqoWpN& zD26B}KSJSY4#kxe4|8}ehc|JU=kPR#VwCFK#9^Mp(;Pm<;hU}^nBUa2scB17tm(m~ z-)j0))2ExBX!>%~*P32v`j@7*;3tEdn)f%~-28I$4J|7zx3|2f<)baX*YbsyhSt{B zx3*r}dQa<ptxeW~wV^H2w$k>#w#V8&+x91IueEiwzq$Rb?E~#j`>X9{M^i^zM^DG4 z9hZ0Xbqsgx?zq0g?wIemr6b?*-j3HU+TMAv^JwQSo%eR0>HPi9$2(u@e5Lb$ch+~c zb%nYv?Yh2eq3hnR4|jdC>#44<c73gD|N5KOzia)i>p!^u%=$lE|CROU*8lDLe_h|u zJ=C4*KHdF9_u206cmKHi7eZs9cZBTFYUnpYFN6X;Z|k|H=WtJ~=k}g^d;X~Br#<z( zt-Tw2uj-BUF7;-52RAHiczDBaZTRelzuxeZ4T11P_(=Gsa58*%_~YTn!cT-vc+sly zUkyA^jd<UF9l}<G(C2u^y;)oY`}SgZnmQ5d!nb%r@ImyzKh-O?iLe-f7wa1FCfF8l z7L(#K=(Wr7J)n(ZA3R%A(0kMHYR#bbVX;+Qj}}Lu1#g5G>nL7to5dG%eo1V{o31-V z6vrHIuKxpso9h1?!lC-J2(N5tHw3=3<i-D~5#PmCIaTY<Al}nVr84|V^MknK@n2f# z3qQZh;mfUmj`%;dQjV~`im=h5oNkM9{B1vPHB<@lMb4MwzF^_VRgLwE)q(hp)!hhX zKQ(QaAntE<e>*{YWy3AVf1_<Le8eLc6Z{Jtu3jwR`AIcq%{jk)@xLMd0>{6|GnLqT zq?1}n_&?8aVNokT{1*<xBVDz%_-^5P3OCiyAUs`rQvf;Llp}F_y7m_2{6UDumGM6c z(dzth=#qLNzS2ys-rPfLC*z;DZbH5+l{KI0ZEeuKN<O1FeFvrW)~;$4lOeu=x_| ze?5l>FQw6sa7gv(Mn@H>yNbgaP`Jr-PQM;khd92ehOiaBSp(Ewk9Zqs-vGTgBHji1 zH}EY53Pa!n6Moxf#Cy@g1P4&K0WAy>MreZKI}o2jXoBi5Mtp|Dqv#1IqX-R9I)3Lw zkO$brH<Egg6GceBcDw=c1%xJi!<Qf)=kS>L1?0R7p@A<G|03cE4wK+Cx~h2@a!!KV z47?e<5%F8VarnjzLKEM&!Uti+?eHj@A`hRkiQW7V!d3W`O>qbK(Zn~0MiAZwo-}bo z>nenIgPRR}H|QF~e+9g0z{=f@`1@eDn)sUP1af{AA@0ZEw_6Q-`*RoK_k;KG?G_F{ z02yGy`n?W0zmB*2P4NJS4+1wh8AWK~J;MWte-I&VG67pAzMpUi;aSKCQ~W8Ugem?E zI5Wi;Atg-lC42$Q#5b^QgkJ{EOni6CLHG=CW{Cd|Y~g+bhtI+uH^p<nmMQ)M7&7rq zuHy**8ozvGim!_t!fya)ruZBDc8n?h7C1A-{}8t!d<obx#CH(l?gg-AU{6#){JX%G zA^riODgF`IGO$ac@ca1ok}1B2(7=xA9>jmZ;j6$IZd@TW#Seiqd`|_TDSix`;afNe zA#;uU5!M^;M@|DmQ#2Y6AifTviQUtK2zMC|BWE{4Q%o8kLi`;ZUT1s+IR}i7A?F}M z(3|mb#Agti_-f^EB0Ow7g7BE}+sIEKG)2<*1mY=#rdT#UiTH7ZrnuF36yd$b?;+<` z5n^SH#}GbX`~h-)ox_KW&miYP4nJ&s7V$qco<R5&<8!F<42RDdPa@}84*$aV0`mWo z!{?2sk^eP>hWNJeCy0NG!<US+$oURJVAc3D@JFX1@GX%)GCzo~TqLTtRfV8et`Ju? z?P<CJ-?_Y{>GMrTgG<4`4E|m4?}I-G-q+mSGTE}f<u6($THo1vytU1muu|4Xt<PDz z+D6*<w?EkaSM5J(zp`VhBiV7h^RGMquG8om>grg(W&QQ*e|LRn_glM1y0>>vb|31F zbicd%x$dubf4h4o^v+NwbaUuOq0XLo&s{wq>UpK-;@(So$9f;@eWLd%eDCtBz5mi% zz2TQO+_T~LHaxxIOB=%Bjp3DWK3turGtFwuh|Z(%`yT5yB7}f-{~6-#b(A0hrvEjF zgPd1f?_60Pqzq(fX@BDt>TTUj_1*z#b{#bH9%$jc_><cBE%;TaYr%6n@Kw1T;JO`< zP&>ePJD{C+P&3qz@i>Ro^9J>Nr+TK<GpnAz!_O8mVtl8azVLRHQPV-sF{6i{yNvDp zoHSzmv{gMv)jOu@rBuBP*AuuCFX4EbDW5~?xm7*K)N_}5PO0Ys^_*5uM?DwRGp?S; z)bqG{uBhiN>Uq0*7S!_&^}I_x-=m)QsONzy3Fmv&^Ly&~s(Svjde&6O0=I~_1aB8R zf(86NCw`^*dGWdCzY^z~U%=nj@prrEX!#cYUcz6!@uQaQ#*nqkh*;ke5$i_dA*<f_ zulRci>2u9d<6LtA&z#ZOmNRZ_t2bV3uQJCvZWqTozlFcIn#Vd{G2Vl}_v7y&{C%|Z zmr-7CjCSocr@N-ibIk|LySwtpn?m{k(tGhYh4d=^?!@1_@pm`=K4Y#6eHMTFtEldW zL(hrthxVG^57ktCr>DLuVpUg9qtCn1=iOZ|SDkC#RQ2QDm#gmX+EmrDVF>XdJijiE zY}i!wex%>O;gzcCu2<04Ui7u8YB0PPZHDj+;N-I&blQN^(niRHbvOZSLS7Jg&B$v( zUMuqOZ**@emP<HSi-Y#fsq{p0A)a*lVu^&<p2Zi5Be|?|*iPgef3cW$vS{TbW>%J+ zF+_GbNhfV*Q)z##zM_(hm>f$jEyoj1dfG{!h)0WhL|rPgv+-0?l+@c{<EKhW^K$V- z%t@DKXAWiKiFkHJj7=}v>16_7zn#vYqJMI}vHE01F&<Al(QN4;JTUiEv0RP9T^G%@ zv|x{&T*%oAP8kYz+EE~FMT|T1b}msmzAoKuXU12O_EJ2`NO#wTx{EoJ$;>ifFT=fy z&px+CMxsG=HWhgn+W9fFJC(@_xu(gib1Ewi@3;UI9*$>nb^@yukD@_kOdZ})0ZYD2 z4?{D~(lY44QA9G9O3ud@av(0EjN(=Fmz=j5@Z_tzL($GoP<0YGU$f}EefmHt>S7u= zB~bU-OHO9lj)FgY156~GB@DXuMEY)6N}Rv#SSpcFW1J5_J<<i#@%4z&&(}aqB%`Sq zK2t70lZ!+fV3`O6Mj3-G0R`@&?oVangp?V3VZn*rG$5xh#_Z^#6Vu~OW}T%Xyr=>i zZBkbfI>JK1%|@600wi~5y_ry5WKC|z%A8;+rTERunB2a+Jf2#z<4MhQx=ML|!dU=) zdTqxYl~Y>P1@EAfNhMAINxG^A)+><weK_u%++i<>iBnD#f)}L2YzPL<+DRrQnTAla zK?R8eIVZicKVc^|PL=pp{R4G<x~i5jI_+=j0;(nRB;dsy-L=vA2c6?NNJ^KsGoCEc zQ}PMdiBnN$nVCTss(v(%N!08~*(Aty4S<&c*lRX*D_)<DXVGqwDbk6_ujiN04<s1T zL2;Gh78;bYdb;4CebVh)#dOh9CYnko;t?^ulF5R2l|YrLzU!Sx9}5Xp>}B+M>Jo~S zsIy#;?gbteAyronI`eDvOG}#}6pY6+%c+bVNjRR))`O0v(vFTRxi5<4zXG>NOhK>u zgq9X*MVVT@RLb-Tl!;_+2^O-qo_(yU7M$$d{<Je6KZV~RbEA|ijSb3_G0NLROKm5( zs*ca(mJ`lRLqa|W#m;nUiQ^)*JU0m)5|75SVpI-t^|86R9d`5>C~IfjNyNk`cV3>Y zdM_(buu70L2y+W$_Qa#KdOK6;B|8he`HUf;hS^ndIaL!A$Du1TVwaQE5>(8j6oI)b zp#^+KQVR4ch&Hzb9AJ&X>Vy*-$*0%}VI^5qYut(C78q|b#xSq~q!{tBCJxY<Rx8^x z8D}YyfE6VTHf}VTj3#n1N0r5$4A0dEfgHe9^RDpUnM+0ivm{m)+ZuegiU!`zpc>$S zW4UG7OmiGntdu{Nb|9|Ud;!uk*>sMmY%)2Y($gc{K)^H5G@o%Nnt%{x>7>|^#I0^B zXQ$?WC<#iMoOZI9#x4gI1FJnUWx2%VW~?)eI9}Y6JZk0%O`)(RMvGUhjOw^tBc;5Q zF<zcs0YPPzXkgv3sL(*n%`4M1vyzMo%w6F^8}E8W7$3!EJ+dm>vs&;lJx!ciwv(}x zjJw3`Phtf*Ihom>OeI&AQn`#uD*>ibFdVRus<OM52|JTv`eq1y3#+(M8vfJ;*HXEM zcepudw=<s3WVy$9bP~Lr22vbaOIBJjA1|m%)L2Ra#nSt7iG*U>Qnk=GLl*XQDwmEz z2}UI;&N<20WO5NwC7bawm#|ui=`2W`jK`g+Trvh4lC`A09Y5iSu|+3(45RCk?a3JL z7u<#!!D+9>G?suU!KGFq8HuYE7r3&C*+^~IpnRwn_-cPTbs|oBd@fp=5o7J-#I!U? zYc^37g}oQ4F9;$}7m_e%Ze9Sx6Dp&;-(*4NOZr-9K6kaQ(vE%8E6J>VY9{UI{bo9i ztrGSu@$3XgN4*Zq*u*Q6mPIj6B(f^!6|)4@arvKdwigoCN$+*Ci>VmPbH+JOP{u%I zvd)fpk`1KvikroIb|+B=u53v-Qw+$qh1yUtw`9&!=4;0tl{WA)Av{xHIS5R5e?7X! zh-EP9if(UZHP+}!8?bIesRms>r>Tv(DVmH|lghjlmAR{tVVwJtRI05}*5KH#QTx(7 ze?1pfx)NuMy5N+}k(@5leNtZJ!BSqP`&WRiU4Z~7D|O+Kf`EbaMsrPTJ!?G}*V9tP zl_p*vo<Jd-cpD>1l~EvNuAxh)sK{2=N`?wtZAA$st<%CAtZbk)2B|oJ+aE2o*C(aQ z`t@!6AqIVBa$o5-s<>26yvS&q+!N1`Q9<LZ0WK9)1epq4oKV7@!>BufG6EPaolSX- z%5ap|s{~YeEe&CLi3Yc<<ll>55=K6AR3X7RMB7O*<KjfHJvu11$DnAn=WND{s`;yC zm9Zh+AiC>Hm=J1usvA97Xl=HleN1;K16!26e;$Zl-Wub36)FyXeLTBZy3&F&2}gQK zID?xLf}ppFl*L>;i9L;^T;{G6`4(Kzy#0P<$h>kjDLtB3;LTlcA=UnJznxulWst_0 z*G@|#<wMBm*2GsXd@QOYrxj^nB}v@k66lx%OY^83J*Wo9?LZf3XynGgCk;HDahuBM z;-b=Vb=O5>>P&Y$7mXf<2w*qcb0R9EZl7~fqimOxRnhC56;VnlUWdgjrCam1!>d$@ z0=?48>+h8l%$0g@5ls_P{HB~d{<Y*%u(CUC-hF|a*<VJB!W~Uw2N$;!@eJ+peE#HV zC+m`qYk&IfB~+*c9o5w<qL)dWpktD`Id(b0Ts%oU#m><fZS}Vdt8KfNrEONvU4lar zZ=+8lN<iJF$*tgPrH(B8Zg;|>cCs=py9qc$*yTWnBIFoJ!h;7yAT_G%lu2M+Am-p+ z;***=-UZSqde({#6>aI<k|cJ~yfN3sk`v0Zc+GSjUNf}>8R<2U;a)q5w=kq9RUFJE z{cE71Aqb^c+4ZiFYAnebEl!uszqq)__|pR^2d!W)qzqlJ5F{zPeF&I6_DU)z?MD@* zT<zvno2tnvh`m!;<<aCh<kD&E^i&R!DBS6g6Y#WaXPnX`Vltz0WN}QRNDb%LrV7On z_nxWJN0>Z_T_+vO$#G<AM=G`=C+0CL!{a7rQbiNjNliV{*{`v}O;JTH;GuK^UlV5J zl%aoAlY&BaSp_vUjm5DdWJP6)?Q7;ZP=fLo$UGv5(!9}<jItq1$`xI^a>hM9Pz7Fk z&UOzS=F<8Y03KULwVhtMX;93?kRr0zVDi?GB^uFq=`PUCBKaU4l59s(lI%&&f*|q6 zpb{^o$}8keoB}LNWHChx8InKIW3T|`BA^FJj~Ov{LY-4Ea}}W<({Slg9*c<msbwan z{khB{M@EZQtPI!00P0kL`d86W`7EogiWMvEi6@VfxbRL#0J{`IeBeQ-aCHS8Vrg0f zVJ@XkIBrr$6b-WEnp;k%POXSJTOafY*SGO{Y^J*Dqq$X7C>Pp6#m3sWV26gMO|*Ui zi)Z6YP9K0EC3v%RH5H|#t27JIyae$8CCL)Zb^3S?X?YeQIq9Hd$EK2r6>mgBwmRgO z&J~_7xmn~kn=>=ameTP>76uDgUy|Br^cM+V;t@IixSh4dsO+tbB1XNw%FA@eWhDwU zudQo}VoH9Sp)blO7{!`RtuJUp`p(HeUIBaPNy#VbR7E}3Bw-NsJE4`doHzkxup91D zT%HhGj1*-8Gw3j*9N&Z}Uy@yyNt~ak?v&qhMHwWC+)|S9jCG_a;U9b?*M%eSLsLl^ z&PJ)UELU~IE$5<i#_O9bPB%%KB;={zT#D}?`0N5LQUN}bAZAjL<dI**=5z?k(vtit zZUjzdc@A`vPYcH#C6Z=RMV$(`U888IPZ8zXmQ-Q$PAtnqE17^D#phB>G$>DEq3lEm z>&X*|*z%Z9V9Fxvw=rpCZ6=GQ3a1`8sZhRbbf(uhBd8q@s(TYjedhq@U#T=sA{OaF zM=A?Xu`Bd4B1gv=^UzCl^8{#<S5vZZ7zv&TckK7+N-0OXL=3K7vFTLGJJO)uMTTA3 zJ8>++$)yufcH!!YbEcC{i)2PP@_bvlKXHM8Je*LEI6l#AqlFd|Z)#aFSVm0cvaSUp z;#f8*uv|x^r*Gr#_TE*zNsS=3EbXQ3>9oD#b;qFkmxjrLCJw~Y?ilpL*EgsiK^Wsn zWu%o1lBGH>0K7JU&wuC1zjrC3Ie&p(PsOhC6vV;J+>}Vo&qF7QgfpKN>G;ATLb|o3 zrJ7)NW1x!iGh$ikM7hKu9^y-?m=Ri;t0zfnY4vj*-n_7wR`N_Qj286n$|&>2LnmPZ zc5B)_L62wD1%jAZbP~&0^Gt4@&VZSnGD31GV1*-qpo!or1avMcW><JpT#t+#am-o4 znL|m5CrO28t_US-BzYFGUPfYr7AhlLt*(|rfL2*=F<CPP;&h<s))PKi&vi>l_ppPz z45=j1&y1ahSlyWh!cV5s$2=TqSv(WZCY<u@aVHZ^$N3V4R|w40`325`y}Vtyc+5*_ ziJwvRW>Q|69#N93x>;4JcnPONKIYKvfc6-US1YwxUSXOnFH)E&FCb}AR;UPVJZ>)} zA;99%4E8=a$6lb5G_Mbt2keqHLI<|QX>8jZbQ1O{j`=RAD7vL;D2nhsL9a7S&FU!3 z@gbA+A<h_=<heV=23bc^Y)G&9u0$&0*;Zo^WVtllk)RiDo;+d0_QGv5S-_d@0he+B zkspRV^f0>9L^PA~C=m#kXKU(?fh^^Dq~jSd7>z)US>Rw<ah51X`JTnqk-52k+(vxU z=+z^0Y8&hxrb_9nb)vj7<v$7*+tUlUbdb!_A*OeMgXfd+9eDD_lka!Qx%$gEXD8Y- z`^v2hV`UN||J2mHn9fB=sgQ2LEXpw9%k&N}e3>l4mgT7|UqN+ZTn|`atxHvv7{!)T z&X_@=0(Y&8n)n?s@Hi0T6JjOoo~g?-lbKLT^9uKLGr(2RxY@x9rlb$G)o@)s(8Dl^ zc9EgOcRY~h&ebkS$U$6Em6o(GDQ86lz&oEM2Sy3w7+sQ$#2NBJgPZhSe}Ihy{YZkU zWO8n0X|TIVcdBkq#ol<<Yj)1W?x6~#CLx?o#+R3Y3Kyu7Zv0ro3DgN^ADyC4W{5_o z(i2O|@N8+i^=K9wy~Sz1zoDc6%|RN}gm_Bvku#gvjC_}{v?)bo?-2}$f&p`@mEewK zgS+fL^psSif#tm2^<2C1ST2)IEx8qCJL&;fcO1Bja5aI5)ve&`3GPUrl^`z(Dk(#o zI4I&7pixEjELr7^0zK{|GbB%j@dD8WNtDgJ4JiZKhW4I@A%!D-^6268KMON1E9BaZ zVgo?enQ5dgcme5xM#5W>FmZ8%0CEJE;FSKDS;TghFRSi_5+<&ifKWhq3idB8=VV5T zTN$5r>;!Hpu){S&hb5pY7H!DH6%=sDLXs2^5sGTQ&%wRF*#0!#D#g7Js9*svJ3loH zKx^MYXCa5nMjlOPAOaSgQwVX@8OugT`~ZDt!Uh)r;Yzq_I>uI#@g?4oiYKYuy^A6_ zQwa)rf0fFWs-{gS2Bm8@a@&lXKFjW5Ep1TgY6J@`s3y3K)Rht(3cyH-3F;=DbsIpO z9dnZLo1HXWrNg}W`XR31skwSrFWidiBD|MgyDBbfEJaed8YkV`GF6lyQpc$Z-6`d( zEsFPP^%Mr&8#8()F6?{_l4?Q{9Ol;<B=lNOa3@M<OeNVDAkRfGrrU`ay*fHKN7q#n z_6m~@C}USTm0QN*Veh_>UZyKuZ177?QKn5%?q<9)cd94{PLm7K(A$a{4PIEIk)lRJ z7uE>A72h<rTv($>QKPLF)+nktN$njt<*p(bhs3QJ(5ALNS$TuR`FTNTo99mTO6;{y z3BK0l>Wu3b<9OR(nfOpSm(+zNPkm_P&{cR+2Wvq&nS_d_&9vXBkS7ErFgRPe>)B={ z<xIClX>&wPboWzi=R*PzN$prs0-8$gG~^c1=wyi@ISC6n?TnG`pVa3(x&e#|#crO~ z$@EP_y0RCLWgS^wUMUaZY7_tcHn>d>!c*YMR?@oC5Y?|!$dq&uvm#RHNu}L+$+v{~ z+7L-mHE+H|sp5K>shF;7${W4XAERdj|8frQ9N<Sq#*m6f?S!lOFue9yvRNd#8(vVJ zpc+a~Z$<1HgBiNaR?yBk{A3VudMv7&O2P(~9#1zZ_Qs>>R3<f_)o&0<u|+!5wbx7Q z&{+#PV%3c<^&sH%v>854R??Dntq6BryvcEOZTUlTCL9}AV)ScUhcfnpXAOAyaxbd) zR5<s^I?K?NsocV%+g9k!wQESK%{HkQDM0<Y1n>P6D-C3LLjUj%CCzn&B{?sOJUdXu zWXf?Xu|J2M5+8w)s-Yx5Cz2WLs#FPX<g&(4m*J>SS5nJ;kJ64L*0J<-*-_IfjZJCv zfshu>C00R}q+&~d_Krj<dd%Nm14#LTOL<zv&{9*mt}IV6PQ=&_p+PCCUAhF0KP{CU zwla8$4Nere5g4Ef*)j_vjLaVNdL1kYa*-|L(2;vh#-`?3j>?*cK!6D@foA~*%?!wq zNLxrAg^!p~qg3%sI=<wibpMI7dNWLKP1QvvylABv57Gz13KoMDf6^ZI`O#tgfjrYh zPwK!3l<q6n1n7}uQL#6WS7Apg1rDJ12YvmpF3)(fyiA7=2-utzuLnpf!ZNa1Ih9ts zQ_L%i(|qZEaMH>i@W2=?J{n-7c>u-}`>n=sc^9vLIm@`PF37l^QT|4*Hi%PsvZ}~3 zrqPE=(!(X`%_ZqAG#9>MbaiTOZW@Y>3>+I?`ZU}CI25BStPJ0Q8g_GF*euKHKt`#J zGXyWIx=t~A_3+$Wb}^puh5?X+B6||ro?f`r7As4Q@+@iKYB-eqlhtHGR*-Z9$l)2_ zi~P!cRu0=%5m7JmjlSLi8VO%QDNt5A!>AZ7IsvC@FoDYQMzmJYil=XX3daj8VuJiL zwEtq3(+T$w7(370vSciZ`PIK96=k`5?n@Yxkf$tX_uKI_*_IFy$byiU3z|WK-v89> zMyIThlbJ>L^waOh$dKiNs(7h4GnK}E56Yi<R5DC^rIfj#)D-qDODXKl7L;A2_REKo zC)4&aF*h`2Yzi(|wq!gGJCr1kE3~sZZ7g!yF^0&oN*hjMelXL}Ah8reB&8Jr2H`j6 z_>7Bv19mLtYDray0|Pp;Ez3qPQ)w71dbMy6b-d5N`SRklT`Nv`E)-wB7X|O^v6mt- zCJzQtt8OA1yoE$>40w`)X1f>86-YXXZ!OT-{l!^yOeRxhbU7%%txF;)*>#A{uBXz6 zmSeQpEURo6p9HY5;o}^Rp&x8ovh2y?j7mZZ(xrmv0>f0ug`}yFyH((_QWk=(l*Q&f zPkW`|Nnx@8#G6^g-MS?eraUl&<?zc;T7v<ITD~eTt&}oI2DW-<9}*PMOOX&Bz>LfC zFyGQS4Mg?PiR`CHat~nRRh(fHT=JFyctaUcisSa-Ob1qietX?}84>U2H|@o_PYhpb zN#GmiqAQEol2}H{78IYsc5)d{QH39*x@rt{sWgsq2dxgG*3HO+gQuijM)Zksv`wPM z66#0s8K4PlOdZ5>+_PxB9_`{X-sQ#jsJt{<;wKoJy^<M>BznAbaZN70&Vy(IV=thu zB*yG3fsb+*%5oii*+xTzA5!ZcN6UHD!!$#lMJk21qT?Xa8N?If1Y(EK4zRv$455wu z48AucXYL>t=X4tNj$`g|)Fs>jpKmS2+Ii~MXZ1?djN+SIqG}X>`vA#}{C%!X;++_I z6INpu-x4tl(Htwre$5qtL{y<=(-gjI^e(^<1@1-N<@nmqJWB8_6#U4grUj9I?+iY3 zMBrb>D4@7RP6jz)e8R`U04LD^9~^NfnM68^6fIo>@sp@Ur6;+sB$rT+-au>jl>^!& zq6|MU=Wn_M3}+aG2pWemGg>1*C=q~70ESUZ(zbuCXmzPXP94W~0G0YlFcOH840{T7 z65I>bmMAKQiXf2uL#>kxkEDW9#1JJ)Xo%8?t1v?AEutS^I~v7zj|T9>nhm{;d&Djs zHL~DTf+qshLoPEUZ^Jy7Q4(ivyBW1aa};?rwgbMyN?-G{a4)EJ(;@VR^L>o7jGoin zGc7LBJn>TwPlE4C<cX#TV~ivVc&TkKT1YA5N|Zc)(fmJ-!paA{AWDl@THMNg{fvw3 zpMK>5N?GhbfwnJ}lqY3ESkWIOL(?><j3!LlL2UM?=xe!>$D~A&5|ZTqF4QLeAh7}Y ze{pdulHN&3MA2rmB#J|l63-B234Ar3XpJ-vNh!{2o=3S(;b$m2w1lO4R6-JYZ7L;L zh$CV=?t-M!?((r+`rJ&lJ#Cl9*O+K7CwMlF*jWUP+X_DkO<KbSHzWZ09>n~-AvQ`J zdK$J^laMA=8uyaYn#JQ|t``&kOa1HDcA~8uGvbm6>XJa6!CyrU-$;;00QZ6r10J?W z1W#iow2Cy7HRjz~Dg{KnhC*C(8Cpt7N=&FFVHkZD>%=gxB+ZKCCe1%h@~}e-imbv7 zsSpD{Eu{PM)DG$1IH08QA}miynx{~+sBIP6Z=&|J#<Wr-$8;}JbCAxkS!R*0HjeM( zUPb{?C7fTa`bx6JK(dhPX?r2em?zqm+!2Q0qtyrlMhE|q4v=(1I9Ap{zMzLZKOwx{ z&}7=tlG8Axn~Mh`-AqQ<B1-fkh4Gm|M)4AvY?=wBCSL*?s0TQ)P>0kIiG?seDN23F zr6qPOUc@lQw^>mYBY7W8r#<*@BTy`^FCUFiNTWE6E{bcFD`z8>A0drKs011MotAhk z#bWW|%S9)G^vpVGxs+oE#1q#f>ESGerT3c-esQRYkor$D{?ZI_v9Y2BUYv<Yk-?ON zo>=#d5K!fH1>{X9u{P4|hM=wbWeD4Yz^)V{yMaSmPjS7T-!f{GX+f+=EVK`GrAhS0 zR~c(@U^{xzD?#finUffeupI;AkZ2@@L2FOO6{&>;^0hffm?K(~hL>?Mv2iJsVA!ci zU|P0~bKjcQihGo_Lm}ZL&SS-a4Vte<-+<g*ajBN~p9e3+7$eFoUS~}y+WaJpYw?Pa z9F6<y00kMV5=IXX<BT6IOtcC321l9Nj-Ea0m7H5HkmdULWrj3Yi|G+i&r*NIxt^G# z6{NmtooPmEiM=(cwj;vajdw;EQ$!h{-uyipRrsxyBEr#fHil*-dL#;qEeIkvNg7%x zMHP^e@JMshWM98$Oh5np&jt!%C(CL>DgckhX~T@`t0<T9`$7PcJ1*iPlIz4vN&F}G zW>V7W-Id%T5v>yikRj)(EllfelfGP%NHc)LZ$3=(N@$}<<R5-x4J2_B0}zPPhNE>M zjjaJL-gD53P)QPmL?WLiLTZ7gP`u|Q6iOB&YZN=$a{c0M@RI0giRqF$k{nvBQOHz~ z+bIfZP^rR+So|2F63I0Z(^59csS$th)<1vm8wKVt7RZ6J-hp8kFvQOnoIBnqI7CxK zT_lCI6!{r(GC~{7QnRht2q(-IW4jOIi~Q#r@GZ(I6cRwRfc|D4L5I1N#53*&qn0*G z$QmO*4lR5X|7nJ!r3zzzL%l}f^6;2)0zG*Bl&T+(sfdJ#btRpXHzLiWYT*sKY#c*w zj!BDrWM02FLOsu7pEJ$nX+VH0ScsD_7Oka>C}1T^YTtu8(sG4}Y@!yVKFQN7>gBEr z?LC)@XV8{*Dc6(im2$l6!KhBTCE!P{W@D1zv_Mk&6V;I6onY2{xSagtT9Qi921g|p zEhPs(Sdu-@KfTvy)KC7$fu^T;Arm8vzCN%Y`S$`_Eb6pi)9hU?8cXqhLEuf7LnkHq zCYY6SBT&gWD;>*Q;~RxhGfM;%{rB}uZ#{T2<9w8YkuICX5=cFBK8Qs3+Wm-3Ih-V& zE_92tcF%-=l6k~X{*40Zz4w$4dVZ#=L=1i#wOkrp(DJ`=1x#jzr}JnKNtr(nV1Dh5 zV#U*VdJpt-1!(dzETGn@dIZnKK@MwDB>p3WN|F~lpR4wP5X#qxl;0_~@}%`rY2T0i zVQVRIi^jd^Pwx4}m;d#$cmL(1H|{#KnESwAHU4t52z>VDqldeOzj;q!;0xOhKe}b# z=D??~nY+F9`Gza&I;{Msj5a~fPpjv*@oWiK8OVCb2yz%Q17RW4^<hJm=&X>N6{-pg zvl<ml{Dy-S=&<%ybyx??AYup1P@qz7Fksfz%AVCTWY(I2%hhN)5~{jfm}YITCTtqP zU~Sk8T8Dxd$)q6z_zN;LM-1y)2@S<+!bZ@VT^9zt2TW_$vaLOJG>s!hko%=Njp)#F zI;^;1Emenw<)9HVxHrm^y~$XWwHv+61{;NmF46k9m1_>ySSvwb={6e6nhglk$``EN z!JsgCBx{x*-0ccYkw&emwH%7`sF!0@hKEup88&M}H8>x#hU<XEme%|S@LhZShDxn9 zi)>5;pS}+^z~v@EpiB&1i@H2MPtdYkN)IUNYdc!=cNwkudw?#ZHf&h=dxO=rR{s7V z7Ta<VkpO9g<sS%Idm4ZrOhh7}2DlGe8%>_fZlK@5QUK8W!wunTEB_HLtwYZQbW^z6 zuvV=6$E}=|e*|NOs6i+YHi4l}w9twoM_^La#Vi4|gf##*W_gu>&;Uvpv$en#(r6OI zVHn3Rs_X`@L67;zso!CW7CI3E7|wpS2A!i2;V?x}csUnR_Oo&(kJmGyKZ-?a;L-CG zWe|tCMxm1)=u*~ymN58ufJm4sB30<DuBA0Y{<HN=$5cRASwzj6e*8$vVl$=C<T0S) zn^yh|`a<co@-Zyy7CKd%XB*wxMEa=N1JXw?vO2JZER3k0?*pO47~q(i!Dmpuer+%M zFe#-s>O}9A?uNB|=<VKq!*l#!<mtu<n3nqF_wrI{b`Vm~^YD4@_Hb#%;*D)a5LRyG zrM|OT2rEk~eJd~eomM$ORQoC*Dr8+1em&27h;T$xo&@092S~OaZBiPjKzil-$pfJ4 zUWik^rPL=M(17w1-dfjh7`>87AbG$%hLyGQd9yY^RQ5hh6F+BRATVniz%Ew)J}dtO z5k~&LfP6rffV}Sm?;yj3Y!470BEZk>&=~w<J#A9nLhzGZf!wEz112iBLhiabTu@cp zCV*K4An}*EcZ4LD>qHfaqF`-{!D3nfj5EP{r0Cg8zy8BQD}RP%qIpq^0R;hps4^(t zD@+J9bW#UNI!nE&MpBNNEkZVtNo&@mdgwjafX?JF!FE;0*KN@3ZZWFM2a|wQLxct~ z2M90@Lv?^T2#5pdl%Byxw5EuaKNqYO$P3}Oq>&S%jG!Ek)W8uVWHu?$FZ;GsA*W=8 zvaFzav0&i12ic8m-79L`hF(4fmBlRzgK}u#u3cxit&rKJrtbCL%UU96hFkCxA^^Iy z#2r9kHx%GGBb(5y5K${g_P<;c09IZm+6u53r#z5e(8_;<dGBSSlW#CvzRcm1b*PKt zr}4B3>w=^hOqOhg7JgtkRS{GT<n%gpXW-EWl>$gzvn1GK1uhELV8AC!vuOy*UMHWj zk;;U@!iDG&BV)-){y)jwa|ZI5VLZEzM7oyGL5%N9HnEP-g-tBvb&6C0v}OLR6uul~ z_3#)7N(p3&a^9EBV2J0IKL^-A$Ipb=!U;)8pCfFbujf@es@_0wAp-P4qg(kG2r;tS zlXxJTl{%(_ITl!Q0E2>S6o_RDg63Ng&_QVaH_Yir5Z1v8Aa<({GaFg6q4nW1hLP4x z$OL@Mob6#hHxea*BLlLBP_V1KgOH@#di-Fn<ei3oVk~B(-f#&ma%GPcF(xPj76h>$ zvayUn1D5O@QP^3UB1EFZ#Z&7r9VkU)Sox=#fD9zm%8+p@i&TazexFJONNk-&E0T^q z$_N3AkP(6h8z5vtq8BUwVh{);YI><P|J??ri|--zDs(oXm*c!n9BW`w;V86p7KWSw zV-ox#!BOU+-AoJnV_;Z9bcUw)nxy2jjANU0J!U?OVN@N&NpusvAs?Vyb`WFS#PsrG zLeyy{xu2qdCWfDhlSl!ExVLYT@d}dZL<Sax6vDS5jqCfRScSYJsgB-z>G$3!g5R-5 zC0G~vC)IR0PE=TE2^ogLRM%SAo<EJBpc2)2AwB?2Rcj(Z`r!2T0Z~oA^JIue-@c{# zA3yY)7vCBDYJ>Cgr9WBt{>+!(@wo%LU%m4aO&|U6*Z=I+`d|Cj_^sc4@#=rR>gwv7 zF8ZG}*X%jE?wOAr>}U@+J^R6rU-7*^eftkT-2aa?7k%p3j?cwrf4cp?OYi%gTmRve z{ttdE@P)tm@K=BT7W>^_`26CZ-~Wx@*nfBUsr1`}dq42QALJ(=|J`d2?%mb#=Ycv} zEo^smBve&rn5|_y7@9C@k@7TToNU-Ov$_uZos#O<+Mo(;e@I6b4xpm7u^w{NDjW&+ zglg(cgpjKc2CaozB&~HOMh)OE2(-W!MyE^Yf{bqx3!zSijy4cf<Zy}#u^u26YZlTh zP=%VoK!9~rFj$R2%!V*}l>eAV3QLW3)!57IZY?ZXyCKlY!Y9pJ-GDt!4N2VGI^@bs z*b_C#FRV~jk5nAJN}k*X=m5@fHku0sk|G@zp4M?W&|S4*(PI_v<v#Bx6#=P%qJUL+ zfb$-fiI2<2ZI{+Hp!y2^f1IE9nv}-=kvpZXpsJxOknt#35%fCST6j!~4azJSK_swM z0ExqTA(XH1K%c<~*oy=>@dU9)PR2=SVs=kU2+p?E)nW5STezIH0<>_CRAVFShk{jj zuDPzpDtw8m6rMq7HW1%IAXxby5n!w|e#AL-L{%g*!e&nhf|2l;|4~y>olpzeSHQkP zHy0`_8?_A(4nGQZfb+NxYi+#*RSib4*<B`CzOIfdN_7r~RSlr2(a|F;3rJBtB0+hi zUV-w6d2!hgm<LP;*gYT&*|}WoYt<58+g=B;BzJe#wQ_~7HESUnFeR*#0Sd1&p(^UC zO{;~TRWMy!NOhP*@Sp||EjY(CX+w!P*rc`aLT#Oiki>3}b-cCk;<~yjL<j=wIGF=I zkW&)u*<fd7<n<agKpa#VS#;DAR-F;-3D(wC1<jsd695OdShLg>tW9YDv)r-W2qw%c z5z7iR|1|bmb<hInrtoT&Rrs-0c&)YYQ&h)BI-qydL{+N>W(K`-Pf%hN^l&dJ7P3sB z@R6dK<?k_Tz`OZ-Np`N*AfKeMY1u@}tMy3HQrRq7u~Ie}!>Hq?gX>Vw)=gU^z3HT7 zYfFRerq$L)Sq{&~YCXePPlK=4H%J6hb~{j5LVLYN9neRGK%j{S{#Pis%{CB<CJ62Y zL_%`It^@80mjeXVcW{GR9EPsfr6Scxu8|#V=Cn71bq%0ki5T?Bg+X4U)gEjYO4wla z5_HQG`$g8ms~aI(8%Z(4@$jUzIso^Mm4Com?dq{sni-x0fS!QqmCW@(@Upr_)L!jk zI^iH_p`X=FoOgiQgJ>)gLNY<)<zFPxViSMDuXIrz3?*5J+8jl$S+AIpYzP>x<T@cK zzZ+W?m^}DLeH@}7$8$I!Wzf^KMg<P@AEE6?C`7m=p9;yU*3~0#rk@(dmQT!>P1_TR z)XBa0s7M^YhJuWG_2#n^GoVPwy0lhp;sh)tmedB@g+e`{mb!p74%k<12qtUXWDUkj zXbGGOSwu3FRF6rB1q~x6M|Tt}tj4X?rPfvG3+y2c;_lTYxaf#nS94m@tmYtz!5b?u zVODRW4)EZdf?}T4yV!PM*VO7=#0zbbc<+(JL3f~kHTM0kg|(VfvI`^7D&PU@1)z~- zR##1IXqq6O)rX-i8-Ttn7#J#pneXv>R`-u8MLNs~??ea`bA@MVofg3uq6RXQ6(dw0 z<-zztryobl`nsAR>R@q6886Zj!3*;~B3W{{Ko^Hdbie_DAP<LxN@v4{Xe#<d6n=8l zY?$=EjI;^Amm8HYk(d0~2E7YWTKhV>NG`u0t-m1#!Z@%_y{pDAK^$uLzZ|8jfrLs% z?!m99Ch3z<^fGj&bfnAho4)!r67>cSf0?SZ-Y*!UMc32chAOQSGI04&k5p1<>@>u7 zKfpz=^U?34;g>Vk{*AZ^^@%P)*uRQ^iQw&M-J%i-HyWZQM&B1Aj`FWW2^vlDRzq~I z_0_JDS%`5%1oX$%UZ>-=*9XK>O?WElz?d;>Cg}|@<LJ)=R{%ZOh?k2dv26P=S{*+7 zK%f03PAxpr0Bi9Sg!>~_2ec97MLjZRA@_TN#P(36#GVk8c{XtJ+N#K#WM`7Q$|_tT zEsn>Dv7q#!FoxNx?BpiTLL~>VrMpj!LL74+_$`3PdKfX6-=e=Md)vlKZ()+Y?NYoL z0bV0l6<K<9ctTi0xPjYsK1K_&P0Fq;$@SC#5(4199Fn^D3>Uz@fFl;>P6%!v);ql- z1UmvDyeyE25G7ji!So6>(=f<Wo76MfHlHPf8Xb^94U<`EEc8i}hFgm><UX2`*gvBa zDY(pbQY12|dk&gS{(+<bdzod*lkH?fJWZgTt+rObge|+;3-gZgcOdkw)n{5)p9{7M zNayEUS6@)$u0GRNp(RWU&TWIhejX6{du<3;wN<rY*8@=udkFm!j(ERU4;m;8!wbRK zEVPiQ-zY`>#!i^i(4^Rs7S`$dR$*Jvq%G~!+;Y@y36~400TZGUXsZjDSbrMjA>fz` zf*2bV0`oEqDNm#{&N=xrQf0izn&qW+m~H+n)X<C8>PwA)j&}3(e-n#+m{sg_Z{$UG z9q^bM5fnRY7`<nSyvS99=jwN%hSA`N(b2m4J;X5^Yz@2wRDw!ege8@Au+m-~>Wut1 zyj4PNa=4H;w#{g&s{>Dkuq}MV1c#Bje3i6EsIjg#1V;yFgOh@wG}?}s;4gv)2qf&h z0Apbtv7B@Y5r*<l%cT&KaN*?9gbNyM6Rk|nDwiLUGuRgt4p^(N1%t4`fxVw%+fq2t z6C%SIn^jsbMx@C*t`Nu%0EJrXsx=eHDN_O1X%=%vIRpgB3z;P=@NpIR?JRTuxn|Wt zP&HrEzJb{D**8sf0E3h|8THcJ{c3=Fe3cL*Jua{w5PuZYZlKi%TfsX6^akiuQl@CH z916iyGO-A=*xtD%v_IfxvNQJ0VcUq#p!CfEJYBGpL)INlq-t!ijNfa+ERcVVY3Vhf zf?YFB#PA#gQ<&5O<f#2T&0&+MkTZ!gcv-kId1#JfyHW@1|Bepqi&(JS(SwDx?r80? z?&zv-!0fm#ND~DrK|303o@6J)JlA52L59vfL^9GZM5IY>A(}*t81po2K7^pK(+vG- z>hcmeF7l`Ge;Y&rplrhs$Yhyd1nR2b{Iv?>T>qOvY>{UrXVEmtuLV>G)iXr96hi$h z1}g->2dD&}1wVmuz{91o77-IQ#sdziAhs?93N*u+ZZ_zNfB}jkXOuzIvT+Y^&(PGq zje)?rC_&$p$3}bpOqbf9c)K6n_|0{J0BAsu<7;abb~7DgQrH+mpkIr6u>4`}uZKmw zCup_kw6%xUl^GV41yLUW#$}hYP%EG`>};*V9>o^{S{(Ad5y*d!b(K6xE;!^A_5<Vc ziRoeIjFXx+V?!Or1fI{xj^*-jWjd%h1I>W}W;DR0tAS^ecb>!s=g3tAyi0WF&*>>+ zV#sfTlwfxcW44Vn6GIO<bpv%Ng>n8gMycVE&k(}FE;tDWnP4DVu}>Kxn$V{(jTRz( z%1~)|0;(Y8-~$6-v=d<?9~(H{OKbw51b#co`$<^DefuV6+|OrTp}yvG)rsN0&1Ai_ zyG8123}nVw)F$kfgi*Hx=3udDnRbM@#1J80Zg^9eJ{RS+6rzUC*aQs4H$?{q`nL>6 z2R982M7C`j9_){7+BPuXziBwSWq9k>Xk_!q(0~wyMMD%KzCQ6wL1_neD?Vj(MR<QM zg3kuPe7mZ@e{i^;{ta*A$B0bz_iyPR<P255d2sX4@W9Xj)#QAN;m?i@MTWNY4?B^O zh&?p0b=z>i6LtFSEt{R_;NZNyWvk<C9*#za?MP(v!0@*Dfo;R~NPld^8HvUsQ2^XO zvTfcO8Xn#nbw-?lA!mN;P;AKQAKubGu*KQhzj<hWIJ!C7AC1OF<~I)xpc4QVi}jD# z_P}7&iAA>zMdpV_qC@>oq<{0k7CX8nGCUZGY#H7hn~x0-jPwr<j`Z8x(7!$3KZJH8 z^ZnZ*^Rd_nzT_1d+#1<3ux(3ZKH_ZI7PUtPVo`f=bN{w&gZ<I|t%F06erGr~GCU8! zw)GE>M7G)X5a1Y&4R0OT9JPgLfbq^>;t=>nbG#_w{f2oMUl8FRxE9#NHTnv0XW9^N z8B3|Jm4^TL6JcMeZWbQw9~jt#U`U8{hNv6r8}1wE>lY$`1d{_I0U`@H6X3(1F)z9v z-$mG$O1fV{ppWXD#6F7uP5$uQL5h(38`~do=M9Fq^GXAL@bT$CHLg3p<%;)jfAClD zyW_V%HF+O3iC%dWzw(pL9L3V5ve~7h<EbcrjWcs}7rq>miyZX<eKeDf9wid<XEMzl z#pkAvGJ=YVmSYhD=Ku14Up%6a2RQ$h;^E2wKkL@Rx3tpZiNs!f@<i~@^E&dk?5W+q z{UX}8RPKRtAsY~O3X!Lj_m5Ur2&{bG%cB_O3b7l1H{4{1hj5&u|2<SSjObx8E#?qT z;4S=VTpgIg9m+X8_lcc|)4wOHfAFu=Pqm=N-t!tR#hD47L@)k-<473jm0l{@iOXVi zn~<(0(9LD~_a<&NgHoF>EBId*;0of?)&C2f8i2`rsinN9uW_Az%v=69j5`j%0bVcY zLEACDG@@Tw!<&x2FAex_cZBiAJKfLLcdU0ZT+~j!n0|~w+AZ4MKIy^;y*Z#S*inUp z$SZ$~GA!gPKJJ_HculPp{ph)jV-$So8Y9MW0b1YZUb{c}o-AGAqksKiZm+My$fe63 z>gxh1AHuEHVf+o?kMMFWU7p~TpnEF#$~j=hFS#S6*{(H*K3prI8=(Rh|K5W3dr%jj z5JwK-Y#DeU=ofG)8?Ss-$P0^40KXT8pRgDNqyzYGlZrvKfqn_@DK!qgg+rrj98&7S z;NK>&fmAC(FNx8saNg|Kn!f-J3D0sRb-Pk*m*RRGx7m*Mpw~6%r4aeH|Le8Gbc_G( THvqK|uZ$FD|Nqqg8yNUMZi5gM diff --git a/gherkin/java/berp/RazorEngine.pdb b/gherkin/java/berp/RazorEngine.pdb deleted file mode 100755 index ec9e2486083e7b4f90e1174dc527018180c98da5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 249344 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"@P{(*d-$s^xx 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 U4c)JUH^3jko8bTDKc@u#2Q+Ev!T<mO diff --git a/gherkin/java/berp/System.Web.Razor.dll b/gherkin/java/berp/System.Web.Razor.dll deleted file mode 100755 index 8a6fca74dc9857aa3e27356e6847a97d59d681f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 271056 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ΠhJu%k6+ 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 Ru!p|O!Q2!Zb+L8Ge*momx`O}! diff --git a/gherkin/java/berp/berp.exe b/gherkin/java/berp/berp.exe deleted file mode 100755 index 84e7bbbdeca00166c64e74b4c06339461468178c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90624 zcmeEvdtg+>_5ZndH@i2x*(93{NgzNHAh2YUKzJDxmGDMT<e`FMAwrZW<l=6EXbgr5 zSl`9ks;Cuw*7~TnSh2MhT6|TlkK&^~C@5O}*7|6*wXMb9=bV|ldv_C24E^ti-gD>7 zIdkUBnKNhR&fUyC_T=x9hlsqmzW9P@8}9sXyubs4PLOlUevwOCv!AKhX3Tu1V&1am zMET0NeMY=-MfsA(mKM9U{IsU>cw0+(b4&T8S#!%**h`ygL!rPRE&BM$L^BN!y>|BD zbDi4ukZA;sAkm2iQ9$M1+lF*G(w(@ocAPeq-bj&;0sq?$I`a9ShZe6V%9sCBca16* zS`4`}I1RbOlR`9+Z<`Iu!7bWqP+wQ}S0>AeEEkgne3}cdZEafJ3ViDc&=)jmtJd3L zL-yj@cp|<88KN6>6ruBRcl{d=gVe^GmfK)tU0G+b!Qw7_6I{h4`CYav{;_T*Wzns- z6RmrOZD&$}kus|=eGL#9ZV-BoAT?~Z!?V1B82PFOn4S(ss+i6?qN!mr+i_D28Tlyg z<eQWWeiR0OQ3n?=MI=#VxJkW|v?zMdH`pxh;Ia;j@Pxnv|K{>G+{velC(AP}j#4X4 z`>!BJ3*mJK$K$7$P)C;3VMCHH0lfkNGYZkZqWwmWRg>e3gTB%(0%5QjMLT?jLRjOA zXM+&0U<D-Keg(ueDC(_=6z=yyeP5y̟MnZ|AmRPhma@_@A<$|b26@=Y%LC!)! zzNHG<eOMJ=yfUel&-B=ETAxzVXP1H@7$bkx$*?>s^uoH*0Z|Nv09B#QPJhGr=x;xG zlKss{)#+vw-3=-n0MKiCqZp7#p|I2EY=8Iylcg~CE6av}FbYQVP#{>86D#mrn*!wX z*k$6FR`L8C%YQ}les3tdW}nD2#kbIeuvwJo4=$1SlIiiTL8h__Ea^-1gZ`bI1*`Cl z?H-H5$zoAd2~CuKY4ZA|$wQwhc_l2bjOB3_<nfI=z8iTSS_RQy2vd9*%&y!-H!)Nc z@y5nxhrOGE=z?-cEZ%Rzc_LZiEOwufsebZ%><Vb3`ia8c;`tG8*qhC^5bj_2;zy*o zr5|%*WNDkj1v#w3=26(eXaAC00QYm8p8F+}=U3hE@HpqbGut68)$feRIA=O8&;e6) zMv`<m2k3w)IwMt=n99fCH_`s6o8UMw3GP`;5C>vE0khJ<6CH?b?LR&`7Wo)BVe(W5 zJy$ftjQBrh6j9J$W5th#aRRa0_yXLc1JH5-9&^7BgTa@8q(BsdMGdg%pp<FgvsrXG zWMgbWwk`I15M_#`0tk=B&xO$VUjX2!phO`u;IT1OeV4(bOQVBD+_CYG!P4h)3@e0( zqRav}Tg6KH%~px4@Xc0l506_V>SilC#L=z4G8nozIVLe~U|VRKvMnP?+hZVt4z3iP zkt7`>0d#Ps=!|60!Ih#jlBA<)C|}^FGm_S~&|ms?sNA!nF}`E)MTUE1zLnSzUu1A> zgyDQ<GzzF~h>0aK+$*s{@nJGs8DA^R)nKcv@gvm2BtD)TVo_9*@^O<IU@MG!9tSMi zV>7hD9;ik!uE%3DR9O)-$}&AR!zg+(#_l8zCpI@}4(@1Rm<m128i2>aA-qL_*pcvJ zS59#t7W3FOU@@Z%qqS+=d8Vfo^35nlyfay`uOre>gyn06ZG@0OIeXB_qDF0EEDChO z?YR$J?NcrDy4$Ck;Y~HBI-(lul_p2`K~j4A46az!uPw#ZOU2#z9_CQ=J+w{v1|vz| z;Qlh(!Ih#jl0nBTnxZq3qys^DM5z>=ktCh_)wCx&AzS=uH1r1(_xIswo;@7;ufcSn z;`k(FCF+pX$ytcwe2Zdoh)EldaRnsAR``?D#Wn#W&tDkfUK?HJxR}%lR-v1Tg(%d4 zF7%p-QDEv|_M}WHoR|xifUn3tmgW0w=!;ldMWq-E>{}?z^{@<&eG2n}X$+WhVtp<9 zFeHL#+GG$s_Je?a8>OJAW!Hm-N%Ga*`4$!(Nck-rz7n9<dGHt*)g~-cHJ%sC96vmS zz~*k3R?U;9TGe1wcMMmd#w)y-(5j>@U}UU;L|>o10DM8EozI?`(hl{ruOdhi;u`l2 zH^4p)pvZ>x0>J_!Iu7?D`$(3@t4YyOtusqe#%xE)lpipX^aIQlpo1$#XQaw;S*{z7 zCvhOph#rM1%=Wv%vEPuYoHYvU5zZq~MCW@5IuholaAFC&na|U~<<J1u-M8Pj6uAk^ zG=V54{MZ_3q8#l6kQ0bKflkhXqwy^o0FSJ-*dA()++CgUS?(LQ6IZhaX(jc<q*Ts= zRKAH+t*@7sp)6)3r>s2@Iuywg1MAb_T4EH_b1YCmVhWGUYM_P@*rf4Z8{HG2*Z|G$ zNlXDA^y_?oVk%I38uMV)=*;1X>BxxAf{H4(tG<&MAd3^#s}Vfp91k5iKfWGO90unO zxhxm`BNL?Vfi-A_YV~|>HC!;z$ysPM-+0BTr|!WZ>Gt~w^^0tZUnf%pdtpkpHYhq& zi9U%%&tTD<1<`zqBDiLXmi~g(s2qBm_CqM=v`6(Lw+EV|I!70k&-}>8Xiw#{9Ay`` z9Q6#OVj7R^Qth2;>>#F5Ub60D9y@`=he<VLe0?=f7R^M(6_A5<4VxxX6fP=@ESL<@ zbSaj`15ke!(tkpluQM?5IO#vS(*FkEZd?}fHiEzYRWL*5Y{-nFD`Qv<ak`in_A!1O zkVSV4OME|~Q=~XtTvP3r2v!!VEz_yo+OSUL)q09zMlr>V5?sA0$Jd71%$ks|6|=AE zfLPGi%9-*oMwUDagt8;O>YH7<fIAk&tQ3<ziy)}F)MDbAfsQkr3Vjpv*cmtr&cHW* zP>e+}6UDIT_J*^rXfCeBErzRT6D2Ut1DAnXifaD`WgHWrD`L@NF69gR)(mp0_!d`z zQ5@*xEL6d_HHeGK9TzbfJ{jobERgvY#as}B`0u&Ii#~oc{vi8!W%~fIRYppR=XY=_ zTyhyAh#@PXus<q|#28UkEaoZ@rvsgwg(~>Q&zP|&Vrndb=K7*11E9tVSB(g$>RBgZ zneivTvRW%K29ePb^a{Mhu?zyC7L@IBmsGDtx_ZtUEFhKkjjTPi3v_Z8wC5W?;KU+9 zEe#_$7Da@JMRLscaxNGQ2g2E+Pb^!KW1$*FLgApep%o6<KFA#$4ux}UxDM8;MIBr+ z9D))0x^x$30wos74d;T!J0MQGD!5*lKNiUg=kaq&Y)zDF=coJASZ%mhpp&zpHsAP> zBgPL7u}FS64}LY=D!LqfZN_TCc}1JnU?HnYFG-f>ER^P3sx(Ey;rwto@dnr;y<)bb z5IQ!-j}Ea&fi?|lmGyBf5(!5VLt%wTVYo0{V8bl~6fQK|(Fm`D*_fex$c4<(_-p8K z6)_~3M&YS}#A1N+!o4sLn*{$LScc<@ABqfCvOIPpi}pCNQmvn1rEv6g5X|<Upu&-P zX8XOkm+jXNaK(h#D2PtrT<r2hiW1AAOTcHg--nzI21x&u)Aw`QHK%fHh4I5?w26zz zN`m#f1NksG)(I>$=%38K?Zw6Sm^Zd2mQ}x&(Oyz3mS8Md0#uGwykK&^X5}JIF?X89 zWL^&4;g6ZIa#IQJxCdge)56N&Ng-EP8^hw&(OJ!(<)SllOMaik8Eo|QeVGg%Y{y`b z1+W<-_7h8Yu%XqO%9Lj=_+7YczhhTrQcnk)R9SNal!II>WS2o!2RjBjWB}jPgb!iP z8U~)m>%r4N6eY2fba@uc(ZM-pv>5_movLr8WqYEFb^dAT`QGT6n!sz+YLtXsvDf1g z>G9go#HS^AF`)!}HGb186{<Bm`+<~e$M8w53mHkS8!<TG4@=#2Myif76N6a14Zw=? z^Cx1t@^90Vcpmw@B=SX90!WkHPY%nanApclkD(mKU6>MEksU(JyNk)$UK@RidzOu! z!98&n8g0YpI1LE_`)864n7*<|G|uTFto(h^HY9UQzvYXrLMn)b|IcxEwvgWN+2})` zy#f-{vQPGkO0bec1wKt}0hRmJcb>nj%GrFP_`fj76KHhcJgGDR2ClIcckEhW3##fU z3~xA<&udR*q6?pvfln7)`AFEYohoe408Olhd>)%MxChxr9veg3XTz$2qTwNr{bR;< z0mKm9g>*JZuIF(NUF{)4JVe<XYw}14g5&W6EH83s7_K96p+dr(M;JQ<`_YBCHsZPo z7rKFdiR(#RFXMU}*WYm&22ma^><D57LWD_!rsCqgd^`)#*|;vi#gFFK<GK?Urek^( z*B@~0#q}Ys|KbY56MN$tf@?Ic@wjfmH3Qd)xEgUS$8`>_Z{xZg*R{Cne+XcDv!ds) z#p-X@*lNL;fobOoc8SK$6YPAAwF}mwvGWC6tg#Nk=4fn<V3Ra<fnZ}a)+rcopK^U` z1?!`+Zwr>AF&Gwl?njfEbDdxxX>7e<Z)$9VV7oMSkzkK$>^p*O)7Zs={a9m{2zG<U zE*0zwja?>Kr^YT9jQ9Lmmn#Ir<C<Vs3dXOVnD$-4rfCe0fi@hjv8x2D*4Xz1!=|&8 zyIQb(jeTD*Q)536>=QT=*Kmzs?`Z5=!CukWb%Om)W19qfSYy`<h7l)HZV+s<#%>f0 z`U&lag2Cc~!Lc#I&gH7Xj${ibw@7jcCvTSId`{jX$zwTrt0X6I@-|5x#>v|yS<T5i zBw4}9A4#$(zR1MNKrJ|BQ6TX{%^@5&e*ujU3d5L7??wra{d+(}E6nhvP_?XF#WvIH ziDGQ~s5n@U4o`CbHp$(axeGJ6%kb*rR8Ps}QH<A6c2WESD06dmaU5%9+~YUl#+%+g z?7=lBC6%gJSS%9?@2MC0ZVr1@JoHNV^w|iw0R&urFTyd(OBiM8?Ldd=cH}}ct$j%_ zc7mrksm>0i##230qgbmUdccV3dZa9bAnz@!$goiFU~G+J`e(aSxqrF^mF0@#qdj85 z>A3a4g0KfH*scAZ?oOFL>Gr!*De+*>lz<7O8^wNb{4cYgs~<~UR{KqNih{xIcaGJ{ zykfN)+<IU&SRv_mUG#mXJ9YZH^zGI$`=#r9jp$h%*A9AH&-8^czFgmwe;zvfPRQz! zePOMnzEJPW{Gn2frvwb%{m81vM3szGsllbkp)RK*!-0p{BRy*ndY2o-;|%kEdV5mt zke7;6W!dQiP5Z$hUytmHHYV+g88%&ylphRaYnDeHyLK1TPjm%Q9m}uinQq)-$3}n3 z)a|L{m@07DC>X4N(AB}IiK{O+pnpc7Ez1d}`NPhnOt;+&g0a&*y^|Bf2WS+}S8CoW ziTnH#Kl<a=gZRO-qSID94W#$O*JwtktJPoHjBj-_?P~SU@1goZmmhV}KNXIp8_F`f zAr!24>z|rt+})5DjJfq!VY@i4=bLwWsDI9Z^xu*63%9T32J0_zSv{q-EPKkF!J>mn zS%&^gE#*d9fBf2^NA44H>5nIfbpJ`&-)&G7agSL&4_0LNOp)A_ALHra%k<DD!jg^S zv}2<DZZ&$dhZ@1~65=G*cJa-x)wijMqWiuLr~9VUw|YT#a-e4>g;|m@x{FOygI!eX zpXqjpUhZDj!~MTKR0$1E*_0o#tK82Ek0!^<VbZ&ICh@@>hI={VzpTVbIUW!R*8c}y zlboSbk}^t`W|k}o)}t$v1ye3BAtza-Q&C;8{wf!HYNit_cEg@F2jGV@G6$$JQ{p_k zT#D?T%mL^tXAZ!lTDnbB8oFapVS40Dwc0(<3)8(bW8wR050#FH(!7r8qI36St5>?t z*lp7fWp17E9OsVq&WQSVj!d?JP|pkvi@?y`>ij>m^SQY_)45kt=T0-jHy%%#P@KIa zGX~%R{Wz3yo++RBYW6Z0`;%YI&ih4<^wf}@kumrW=fR&;4q?DqP9}$2w*ldM5Z;aS zuOY3wAc3ErB!#7h3*NGSg=((A!TUu{Yg6uWP$GWqYEo*oFEOqg137h%2-af{jy(O6 zi_s_YR3Lgs?j`a3e8zjnRe<UfR{^S22dKWz!{gy#>q($eyDU6@Zig+tB=$FCbiWwr z>vsC_-FNzz%IL1Eb6owD>S{fabn!jM$e0=a;Od=J2Y-!%*a=K}Mygx&l%i{N>KPG? zwRrj@d$Ri}rMJ^#M~8dXW6p*Y_t_zwuX}&v`MUqX&DX;YZoVFt{>;|BapUy`Ju|A> zDwB0(m$@(HH}3hmPx{=K@=EvIhrJ~C+?O$5kB;<AX|=W1?cBE`8R^|Rm!|97{d|r6 z8Mn?E^YyO6p6RT1*SgjDe`e=5ih8EA+F@gz4|=}tcX0DH*bipD2K)bRzD7Veg!46m zL{H~y1dg80*AU^JuTulytLE$BJ)W=idiSxCp82BMJ!N0~pUl_j^d8UG=<07aU!!-v z*?f(H?)f^^t=-Sp!@u5qt$VDgPtSTxZx74datP<^vTr<J4?4K{y5`{K>zc1MUw>BG zGo$Lw?t_>|%G2k*?&s_B^tmr%zP_?w&y+4pKKFH5V{|`XSETEl@@w}RV?esj8T0iM zWj)gw7CE@*>qB7Yvj+4`=Zd7x2R&a8Jh=H9><2SngZ+OuUn3wK!uc9OqNnpU0!L5h zYl!$}^L6c^ny)_?)H7ei=+xuqe==XA(|bH$qpQE!e2w1uX7e=)9?X1Qdr<TBkRd(m zv4PTK>USrHaK5hm#`AU6!OhpPgPX7MCo%4KqF?fSJ#T2wj5<ge^&sZ!!Rd2f_w)7O z^tmr%zFr^enbMWXvHLaW>mlhncRyc8({;|6ujkkHOlMf+;O6T?VCV1G^-Sj>Nu3XR zz8-pT^EKEHX1)gd|8BlUKsbc+HG)J>=W7Ixp3c`0@y+Jz>O(bO|8!K(d=aDbe>q>H z(|bH$qpQE!e2w1uX7e=)9?X1QeNglD`ontGV?(9K)O?Mfv!}nqNWD*U?}K7oTi|rw z{G{HZWiY+vdhL*Ucb38Qh>I!p#_XHFGJ%Vn1(8YZQZm2(D-*cL5SLo1$@8n;e4wX4 zaMhjKlKmP5A8-{+O?~>Mea0)3LpI)L9^NzWQGXHqb@p~kotK=>Yo7x@D|W|zfVrnT z_Jf#vlEuH?yV$RIRy?q@E-&Z~{H%CDVU8^i{H*wOMI2!6=|+T8_aS>$>~&<%d=YU| z&plr=j==-JI*x(qtK%4$4s{%ZkM%f?!Lz<u9D_f7vp9x=2NTB*neR+Fx@W$FZCC9( zU$ur#js(a55B!d*JNAQ#V+Z$+Dp}jti(_B$j_SbDy2P;qzoR;!Fvpe$en<6nMSQb3 zcF5jQwKeq27qMS+aB&Pi^3`z+OkW+xz;vkN7<{b9aSWdI&EgpR>6^td6g-$XcF24u zXJXHM2S4}trg7}Rzl}?dJ!hzb{b1r4*#CFyG5lEeKzjj6-Mfv7UE&yiKzo3_fCCD1 zjDw#}9bhlu>xyv4vDA;K<WZs<5l-EQ?6+}SCiTo0@t*kL;uw77tK%4$zB-P9=}^Zp z_*jqQ7(DBn#WDEPH;ZE^=#FD4FY5le@{sw?4=4A`cj}V9gGb@?J&EU%zs-_16lOkG z;^7^C+njv<Pd$UnpKc}DyZv)q_b<1uo1%VEs&>WWw*c+QFGcYyM~ns>wu6V0d!b)U z{ha{DxR2!g1e`9!XGyjpBjB?o-|w^W;Ey9n<j;?N_72r_ITay`igRL>NfPf-)Z{vh z+-N?5NI35#zugKk5nrrVft<k*!0`lpB0;tik4zlL5D@0wyYmWs`-^Z8O{sGLo2AcB zaL!>{NrQjD$2swykviw28f`J#n_zS~8G+BzWh8l4MUBu;cheb3(rbl&hMUevl0Ho6 z%iMHElJwz1#~(?j>SrW*hT0{`bG|&$ZD==sj~m5bspFm%eT47uFh0wH8-<N6K7R~< zJjX|7s*@g^cGgKfXS(ZQB&mm2=x4d<j3nt1p)YsS8OflpaMKy7;uBN&JdqjDFQoK) z2>S8K3i=GklK2<!Po?%{U@`SklKtb^Q`7RzsFWOxl1|%9IaE*Dt&Zg@%SoOs=dy{S z^-kHO3$5e;w7v(R^*aEqznhlt^pDmvq>0>jnY7#k(DGcgWS=XUecbhB(2|Fmbyr`| zB{Nf(`~%Rk4?qhfX|6M=J#uD>be?lY;Hs2=ceKD^Of!m|YF~$qG$ls?k5><&=V=6d z$YZwuj9J^a0wyp?$Pq=jd+lEU!Rah2UU6IDw=ynF8>e>!_|Oh^JLNy6_$?hDggjDw z8^earC*lGp;aZ>yGF=YB4dY&fs}xr`u1Z{piE`G-DBQ>5IttfBT+?tJi)#+9*h%$& zg@e`?dH{}Ka2kV482pq0pWs&SfhP4a2J;wnFu0w;|1rS1xKz(aT-U$CU@S&Gj!ilo zH=JL@dYg$AICZH50Rd+u#>+5n68HncKnDg4%*5G69m-@X&4yF?g&k}+oQ}kV{k|56 zNu19`e+j()Y*dF6hL~0<HpfwCN)8O|b*zaqC9>+LfYog0Y#S$>1mZu1680KpZegfo z2D4qMBzzZuYIid8HfCPS=(hp*RM}Vuq8u7yw)1_>N&q?1>qT^M;zBTWauyEd;v1iA z8?)CTw*!+8pYOy*sb2=$K>%mj>zVi~q;zx4c1FZ0L|<hFX{jb{KnXNAWvX_zR499F zA9UFM$eQiI4&MU%l;tEY0&k@pj$0J{j-+>@Ma4Qj42Kby==2dt_txnOKBQQue+T|j zo&G)2eRcW;r2FYK47jqtPQQfwvTTjK&PYHbdl(4{vOm(vT54sp3%t>bq1@O795B6; zbD%p!@{po$;kpDD&NQO8aOE2~!3P(w8?VL1N5p)BtG*w~!lvvUW%)LW1UgX0YnF(~ zivw@m2kST;@J@=kuZy?0!@JJK`->EBKNoKwhj+e<_lgv6e;045!&~j*JuSssmg8dX z>o9-84BBJ(kRYdZAs2H$hxr8;GcWiZ=3EzZe~0-t7c&lWOETxVn9H&qZa##_(c_*J zcd45>;4mNKVwQt<be9C(+(C!CuZw$5N_1Jan>)wh{(w2OK?b?F18(k+!@b?b{SSDK ziWV|f;vl(WK#jImZ?~XaN6<MgL3gDKDzYzyqeU+RP)FFr9J`0zqVgP3)hSW2B`$@u zoXeAPs<fOEx0rlK%-gJmGDNH|#rI)gxrE853=)eW>pX-X9cJo*=2(Ys_|F$#m{FXV zjdhyDlw_FYfz!ubTUgh&`#c@X*-fz0^S1MJXkP(=m65Ct4w&IAoVX?iIQ)!%qXLm! z?21rnwG_K+DR62jbZRLI?6%A(y2yuvihWfLeNh40%l|&b#KM=Q(BxV<DDxx_cbPx+ znRx2C0I^)ouQuB`^agzT=)Q7f!}&xsB#OuY?i_n^apmJGz*UH=2v-TNKDeL_AOB0S za{Sjn);HECRuU_U6~+o;`LWzs4$h6XVm_Q7XvTuv4ly+!xU9}wPLSEA)OXgu<>|T~ zo;<6M)x~_nYlR9_2xY_0q$)FqI^+&#TFNwnS>8DVP@QdzsXttlzz0lt4bs8==A6M~ z@N*K41|2@Y%NaQ-8i$q#<KAhQppk_G-xTFMq}7_l(HF}QJeS~Trqpu*Bgysl7@^1A zbVf4h2{)Y)(7m#Bk@C(F!rtf~dEI0d%Q=`hCEIheFZvp1QPr8L1)9pj1Bh^|^ZvLa z(TUu~R;MzyCEBfQsq5gw0(s%(L-WhI`BzHwJsn&MCkVFjEvsV{ZnCUmJFsj-a+b|x zF_4qb_CY@L>wGWG1wSS<ocZ@%wx`kv^<w!^;EPwGR+VLM1Q{Ra7$rF@T8^?+(&R`j z{rQg6M>@nmj?!(?ZS_ctqgO##^+2VfM-)|A`AVKgbX4C*P+cstj!TzSV<~AYh%HiG zt8pCY$+)g-ANr&^(xoofVe)MIIgnkzb~prQ<rkqFqi>;Fm+rG5|1g%X4N-$LgM-?% z!(a^x_|(byN>NP~I}5onMd$tlsut`{-{z^lJqI+Yb&BgdC!EO+!tI1^99ZzZ51weu zcBaV*sYzW^XGH7ciiP6TBW2Yw#*(j|RbA(2w_{wU#vdb9?gJ-3P$LAocv9aFFr$A( zwnx5p(<k~pc0@i5HN8&Z(fOvFamjH9mQIz8UhNc>wjRnpMUXY4e{=V#>-z&r2l@Pg zD7Yp*iHGZlVDDTF3&dw8(R0}#r={XUM<+5cme=B@`p83A4O2b0%@h4THz+GH5t2gL zW;-+UvGX{1(`@G=_R)fP?FP9AeSZF~Lo6rP%jft7stb@{8J2x5AcBc(6X6`Wnp}#{ zhgQ++kWaDFT(1?~gk<!3#^aZOgrYYvQdN~Y7qu2!R*N|kQEm!8V<X@DNal>-oF8g3 z`<wEMv1p6gz5(irb$Gvsk!0NEcxATZc_2k+MCcW$N%>rKKblw_GUYD8Czcg|8hX0U z*mUhtC_bKv*p=K7`M+!`MC32{u59k52~IunS0U1jeh%Vgm{CoMXGO*KO=y;q*{u$# zFMz0VHWc!-f3hf#&2S{X*}<*w*bF7)xx&yP_t}2zvtFKN)kg|={PX-O^8iS!k`6ke zmI^w`zB=gWGl|{f8{V1fCq|O}$o*ut<8diPXC#AuiJQ(yk}m6r_DkJ#MnE?Seolw; zm@uPw&cecB%@%ZseKR|oFaCe%Gbi0XJ()J`TZGPsMJCUgGN}o&j$m1d+c@9Pr$z?& zyvTt4BLMP8@8pahbH-hgQN%m4AQbaSxVUFj|8c6yxP45rdilhWvuT4m`MVh~2#u4v z!`zJMPax0q@%Ai_PCntW=5+Rr2&g!={)8Y!@8>Gx&p@sktp1!>FC3-&Q)H_Qi_hN; z<Pd*L!x6IEXNMrdL9@}Qtt^L%L%Xx7C=~OSgy0L=RnUjmfBY4PV3bZk9~x|LUT8{x zv=t*!xL+TOjW%S_&kZ@M7JXrJUx;;;CR*3OLs!$zX4(U&)U^FhGWv5?B7VjUr!ksM z;#^_{S|0TK5)XnY@d6OL1)vo%z|67MTn1l|{fuHrOKbyACud<lgKzxdnph})IV5Mx zdc@+d*u=6IsPjIhUNdPEf7oBshpb||hBcEI82?vNDT?===_qJLaf&X^6pqhDR@loQ zrwS;MH*izZMJ_<kdgVJV_QRk?tk{qOD~eqc?6y-lD_RIqxZB6zj@u-zycg#Y*dAdv zR_tkP%3J%3hPXE6DSlH*qxg$R$KM0sDJN#d|I2vzSdAzC0i*F*{>tuF*lXHBRAT=V z`5f=mdVio%e~OXEJ<on=<9-zTWxNb>Oi@jmY1&g*OR*nXi<4*NZ3Tu?rQhBTmC>Db zDB`n^0Lf=#2gK(xIbKF!D#P<#&GWnS`Ev?L`Tfqj2ItwMibkF)&o#+81B&6>6@#I% z3SO+^xzG`DAgqT3nQJb0T%rWECU&5rPR@c$@GUwV*0Fz!++b|5-`=T|oyE$knJvCZ z6d!?FR7OhM=epI_vE4`-b%xT{8Q$q@mG&!8y(sSF^Bjkz9~Rjve=vW5jxqFy!!us- zT<P$fY|0|dBkMD7v_IMi3#6?cxE`z?xClR6csQ=<dB<al7IrO)NlmJD6(jIWQB3i( zxvPcC^<b{vjf5bF<2k-B5Uqd&J%vD54}An$1JmNSKmeW@xOyCE4SsnLMcj}FR74w! zmB)EIE)Xk;^LAYzmLKP>Iy{Q1!ZGqxmnhAuvHE9=*mxe{z{N`yd>Uvq%*GYe3{d2@ z0cc@$FNL%+V&|a%f9wLQd=}6KML1-Mj3SoNCw`kWm8r$@NkR3=u3&6v{AXW6!AbvY zUG@1zS!_G~G)DCk)~QY(yW{0RRe5sG^~jv7`hN`;s49kyV270$##wM!zD4U`FjX); z2BWkq26G=EcJrDA{j&zKQ^_2el*w6;$+sxHyIYy*aXmxk4;-1Jk}^39GWnJ!Q#~(C zR5rN^RPFcb-NPi6kEchkr-1CoFb2^r2m+Y4Z$p5_X%Sv;^4)`nI?%4kC}Sob2Wtn* z!*Tj0XnzOW+l($lHn26TfhFGMk=rOap0X1A38eVLj05DujHa*9eiAvYT-wc=_MygI z<{HG6G*MOizp8dmWsPre;&%|<!7VeRF_;NUlPbP(h?TWm5$<qJ#IaIvcKr^H2m1=J zoBC&(@kil_MVA{0GW?~r*qUn~S|+^F+zC%XMki;X6ZjS#1s?e(N3@QsRqqU!L)sLv zc^3<r@xAF4u&IV<Q)R07rS^KZi@juh=8hLUr-~Ce!4W#KKli~Mu_5e{5nheQUqo!L z9_h*P;^LFFNB4X@A0WolRLD!LLWMb&r-Q}mjSMoa{XT4uszD|Wi;UH28TQjKDc*MX z!<_vLl0kf;%o3gCv#fmlcVIA2==IFUU%h;3cVU=!Wdy;*>da&6)1+8XCD&8DVy#^v zdvxTOfo;G(p=^MD#)m<E!#(*d<R{zjk-esA+^%!kkob-lGvVt7`+esn_2)<-!)5~^ z(DN{{pMw<pWk^N9<P4AfJaXU{{2PQ5Q15j13wY@Z$PUJ;@g1{2aK%u=4stP{4bAjd zU_)4xG8P?%DiO|&=q~VL+&+oLiLt*34x0SM0Q<XIQ)JT-lhkhoWPaljTXmdS*l{fq z{A`HoA&dtI#~T~TY}QHbJwa{eQy)p>klytJq^{3I-~*%|!kzV}VZZtVq~hS}qoZ8+ zgQ)u$t{V@u5!Nd4qS!)x-8JGZie$y&{1GL5{M2vb!#X~^?uM)Kx~gUxf6J~n^3+FN z@zqzm4=}rwZDrXnL6XDKJHgX-DBI1EtvC>tnM=5#Nfthu3Lgu5<*TV&O($OLvK^H9 zeB8GI^|jh6dD7<37O^$iulV_BhHg(i=c}TLSGZLY3W^f_kRODl%9!rdjDB{>MZc(L zJ=BY5IV_A-IOk_}Mo^cc!)Bmk#~?*#BuPh4gMPi6&Pb9D?*|=A=u~+|s_sp0jbuf~ zOFOU)F+mcZ=s3B1qet;QwU^4ez<F+Tgt0veVGsB(=i|xU8y$`Dg6`9Ellysgvr~-Q z$cWgpmo9J0vQ`WzpWW2MRN@(?FR4TG@H8SkHN7%RNsLQ=oRjs-ke@7@lJ6xfKWJvE z4gAEb=7VF={=}>3*-p;Fe89Kp7&K9}cFoNW=W$6+&H^Xjgfn_riv1RceO8j4v%t=` z6uT&Qls2iyex3bX#<E%i9IJHwA<78n6()b^DbT?kknC1Z2lo@!tjwm?tWaF_mB-!< zezToPk{nrz;KtY*%rD+(Jyed4RXyq2IAMFj-}vVP=<mcH$cWBHOWd|>0sT0ptEroL z@(r_qJcZFYU=8{(&2W_*{*rrShm)t+w8863;P;(AdoN01xyfvv=t;=Q;YV(HXwUUq z9;wuRlbOh`Cj)+WaDqwvtv|%Mw?M<=FiVu^T3KTb&O*fy?CYiC3%=G>lY@Ha_#&Zt zc?l`(&SN--AZDp0PthE2Nf+&Wrq>^x$I9+wJy^)g2Fxo$T0NZNkdmV^WG$^$$}IJ8 z=)oMUPDp-9NLKbHZlA<AGddT7d#jH?YdwoZPrS>~c2RP(6MupT70#q+k;?FS6K_MU zNH82M(n4L9#YfJpu&=-$w*1m5k!)W$TiFv&#aw{naPQh2ox%^cq^knqfY`*06;gKb z{7|+fA(R_5?u#$J@Ca^*qF6*}TR0C1(RbKR+8n6|2QkMrDRaQ?iW6qX?uo4oqkQ4( zwK*r8(_Nc$zO>Dr$|+(0;yD>js#%Xdjrr8KwZb6`KZ!*c&HSxO{w~oTnBLUiB*X{m zv{R!2n7#Q;Ti8^Y(wn~dYVpl;;&8~AEn`S|OEKH(&n(T801b18mp2@Iy#E!QkFJ0p z@mIXv>ziE2fV=B&-J()G2-9QUU`UZ=cbAx2q|2*M`kL*(<xqe|I_slSe3SE9c-tJ- zv(U5$LJj3y(CK&}Skxw<b0B0@;(P4=#0=y`vcuW&zw>HgDr+6ij(G7|bJ^p-?Ok>N z;00zBU)jOLlC8ePi_Jk5ZWkg~eTkQ|5Ec2xpX`m<@1ZPyD*PI>4hQZ3V~jU?WP@kT z?T&y`S-@XF?Bpy6;9K+v2#CNd4#&jDt+oe%ErLZ)Zmhj9;!m_QYK8I5zi{rR4mN}% z8KWT_#&Y(2M{dNAPhR<x5^F|b9bt*>^e&SGMP9p<6uJkTuP`wYGVJL9XhANPAQ&~_ zkc=Nztrg=(nugFD5M_HI2dm&92R?ArSZFswGJm=^JA%#*2ddOs@M8K~yTQ}2YyIn5 zTe$Xi*f&ysQw!gKaF^eFQyR|+?2DK~cEWo0OtjLO6H15sX%>icLC2Wk4Y@UUfJvUW zz6DI}CUF+}i*Nk7SzfX6TdF`LyZ*26LWHLefMJQa=0{H9MO;`qo3l`uZ_y)BxL8F_ zgsYl46#oMLSRzk*5)S2y?>C2o#gg!^xzmxiI4O^_Adhd+qaZJOGysYu{tc6z2OWOw zlxa+s;VhKlTXa0wWjidAQ;!{4!Y3qQmq1RU1MCqCE7vFlNx;y_J-~ZO=njRgY#Co2 zY)XH$f!kASSvGf94E-FzE+c|Ofc<g}S6>GtYJrWX0rnPdH-5ovNzZG)wB&=|_@a@^ z4Pz_t5O7RoBvd?q9(>=D&Qs$UyQ5mOQb^aM*&p$lVV@e!J~f)1N>pw)m7suEk9IbL zcsKMr{Js6+-8qiF7KqxrxwDge9>tfP;>&jUs;FU<_?>*34Xb|yL-k_~xFh?cyyy2K zG1isO>x8YK&0~LbP0j%x3)sOr10BN?x0;+c1=TYNex8dE3$oYDiJhm{5w%#e>;-G_ zd{u-8Gr072T0cnVDM8iYa7rKN#BglAYrbH)h1gB`szngb0cm46dNLd!75jOgV>&mU z|CuI-bKjb~9A7<+o#jJxXD4UDSNRs50LQ`CNEa~iBle_;$cRn?;P2GSHnz-rLm=`5 zWwZUrcP*3nS0kjuT_DEa=EQrzv~@cgn=DhEZOSXUl9Bl;*Y-l3Hk%Z6W;yJ;%{>NB zB<NWD%fYp3RPFHEk;6yU!BhCx6ubws4bgqz8hpnSQR7-@JaBGnyt(C!1amyxOtkJe z<ee~=#&1(U=ovWmgz0D<9S?jI9u5XhSZ<%j%=ia4F-|JGIhf6X@ZXgqc@u$aKOPt6 zW5S3e3^_uiKpZCe7#GWeQRTTG^SJz$d=>7jFT#eD&%!;Z)6CDMRjYjTnenmVqdw*r zfVC#4M+!Vr;0(#X!Nd9I`@S#&^kYABnij(tV1Vw(<8-7TyTC_73po9D<cWxn{t1{% z6MEJ4^3l3NmT*yThCeR7v=r3RHvk9p&F|}@u>wyN*e37_fp-Y}jleeq{-ZCK4fJDJ z(vQp532f|lT)#`Htsi^Lt^L;Z^U+R$e-;?&&-I=oaAW`V{R`-k{y**SqqSup8w07h zoJ*}PZz}iE<>ky79LVY6135jY@;FF4sglzx07ud_m2AJP!S7TC=thC358?E3ffot9 z9MDJAQ7$z@V57kEqS*ySbWQZqDD;$^pGVh2lNXWBrN2Zgd*xE?&^o|50&g42Ij>SB zY-m=og(HAJ6CDbup^95^Zx!2N8(^u{?dI5V{R(Jo%}@JtU#p&GKVFMh84>&%BMWJT z^#f+1^?AVa@y*H-_>F~UYQ_%3o@EwV+FP)Bf`w=RB<9nZA|*tF@f)OkIvaUekbIbM zULv#z-r};9>!e%>_ImlZ{I?2cAAZ^ecDK;V@pEzmN<IiIgvZRKg6$COD8|6~J78ft zO=GW0xh2#rweJ;~P4r{o{7`6T(gT8hDp(8c5X>~VMJ@D#V0rkAcNTPiNp$HaSS#%o zj6d;h(K+;I;e1e9w3_}ZnvDi6MD6qs;hZ4lI)NGG`7{$)n7&P)31^dVew#iQDXWEZ zgT^ir>^sEsb3R=u*k#y$<JMjy*cH@Uuv>uT;?tl51iK4Z4qZ!Q1ltDeJFxLs!G0s< zuA?IadqJ=p2`?WZ^A*8vrQ;0`mTg<hxySCtM?)E#G?1}-s7bK<;NMyFGg=|o*ujkb zocM<r_z5(^a29Q+RYLm+0X_@1RakY5vER_SLi>qezomA;!qrUMNgdE^j#&nKoFdTj z90Pmx>3_d3OveLO&@rA<Kt0>D3i%)RkNLw?UA7EHI>O8O3%rj2uJ-<h#^8^j-bQ+N z)=0?wSJq*GB|dKXXn`!*Aj^Lda?1T&_6UIs{Tq!ieN?u@GUz7%Jw^rn)PFyC8m)Xh z`k!MJnqm4|`Kj4qnp(l|x{CThn4YgVJ^+5Jj4J3(YaBR#W=#TTb=l>hPOaDiIA*{@ zfM*YQ2Jr3yZvb9b@d4oTfIi<o@SoWEzI7_##{wh7=??{dDmniW=*{N*Jb^_5`w1K@ zaG1c+0viO*61YU*IRZNbt^-Wfn-7_nWHY={;P(aIAaIModjvitaEHJr1^z+c8v^$U z{8%71Rv@jHz$$@t0>=s*FL0W`lLW31_#J_F3jBq@X9eyP__4ri43@lK(pHeur2+>D ztOYda$Y8$5ppSFemm+x=A^l3;%YgsLdkwHK|4)E5`ELPE&;JYH?yOT$>cM>WglF<6 zA^jd;1@$jD!dpRy6&&ql4=f8AbXx&aA1YXdU(`GcSb;V3VepesWG&JK5iYePGSV1B zA6pF9WwQr%Moz(7an;K|h}`2nv2&BaTLs<=2u}k~1wG*6v<hDaXRg2kK!fHBY$;re z^a;IKTU+3F1m4=K4CCUXvS;#G+q3d3sJ4h@9#(V@_$L*yh8v3}WmV9oqM2C+-C48> z?Q;0J)W`i9R+mNavy}6SS3$lSK|d+xR;v-jW2b^%K~4p|R(w08?JK?)(k7Igg4&Po z|4f+22t!B<&+fdigvY|viX|40f;$SrbV~JE`C+=In$x=khHE&ztmYQ13`+WN5B_f8 zY#i9NXb{(XCLmS@gYLn68S3*0W~8ly7~b25^B)rU+e)^^?*?)N;8M*0vd2fa46YCP z=>Ea5KRrD7NTi<~JPq)*!LtG18GIt(KL(!?iqL<C+=KMVz01JKcJtA1Vk1#wW%cd6 zM8dzvLMzPykbitRV;ih<&B4IV(AcGB4A@GI-DuWfPWz6=elFN%h0$-#(V#u7v0Z|Z z{Cg~Gw}~&i&>o>ZMjxX-4^66I;$z0gpm~H3Sk}MIqp=q-n5SG?S7LgmAclTk&e%pW z``_iuqH-y>ks5&cXuNQ4ux5F_g+I+YNtLq}dzyePPD)vUneBYR9<#W$0lHdY#PtPe zpI{qM--TE;j>6mkO8~nBv)*#S9wTl;9z89b8|lsdgZ%l_S7;llylgR|_D8Cmb%*CF zDxktaBE|Z-VD%b%+%o{QS%R&#Uh!-KHeb`;^W20Lg{^7-@!Se*wWfu<KgJs6N=+N& z{RyyZ6%BemfIatJ3Zpl@uVC&Tju{PYp#OURgw@QG3KM(wp@)?e`c~PW@ZNHlqFIBp z{)#_l`-@;}tx;Kj1NMogP00ETKfw=TUL;y;&CB{PutLE$Sf^)sjD8f;v{hL-z(#4> z2GIJ`42|6cT7R0SG4``EI!j~hXJyo?Fz8uil+(3>DSsJA+ZBzrWeuQ#^qFAm=&7th z#z30Jk4pH)`%_s}#vuBU#$L!8W>nJCf^96>RW{YCq*nxc$9O91M9`wx6d-!Xcp>Xs z#t@n;829@Wiqi24vo7{6HKKHeU~8?beKxR_ns$?K09KF}Y3v@~CSc#y*e^k=qB}J9 zENE49pT^$uwHq;dTw@>lj>c~u-qqNDd~1zr8ak9UV_j@u&k1cKy;io+s-ba;W^MC7 zWYp5aB<B>WrCSw7Pxx;IR*2OKd%-s25n~t~sj=VtA2Ej0G>yIFpF(xCPGhh7cN%qA zSxY(VBmXnNp4HgDP_B+%(OB4e!5BdwYOKGt4_G}`KwRHg>z~F*x?5vYEyEl|?`rHs zD;wBCtd3OsreIz3u3)OC$56R&ZlvAi$7GM8t2H*F;+X8i=rZBlNS9O$4b)Ss#<o|? z2#h5Q`!!tqFRiH<tBXf4ww9i>jx~><9PC>#?L}*@IgUmtOnUlAnuKRqjxV28TogEx z7HTYKz%_xRs8wSF2K*#&G+m~#QwKaA7*Drq?Aie@2O4O*#{Mwi&w&ZFPh)=uHj(D5 z`m9O8ULG7p;i`QSU6jN&;mP)<Bv$H~Oxu#!0MAtVNMY8A!8+_Y_(w~Nth0i3p6QgY zvCiNa%w$6ZTWf6!9sz8)qDgCK(0GN>)?kBY1}#a_j_}N+)k)e^&#`pO7_MP0d}+4l zcsf~Q+l&RCIdrDRe(zu4nMdbq>{WlG=R~?eW4{QV;W>$3(b&#li)TKq#?~^+d^UIv zR=wk~lfc++V5ia(8v84-MbwGi1*UxttdT5iGBOs-ImfevwrQ*nuqIk|l%fp<b_SL3 z763Twfi=^+8k-92ELu5U(M|-mf^r%Z)&$I^&otHs>}=XLLDAL&OVH|x3j02=HmaYb zu-ky0L)$g>0I+ju-eg646j(bIPEpv4z&hwh8habq1@!q;Mf()kTDotV!m>i=U=CV3 zU17a|t*4S>6jllBBD!^^!bStTnC4@zg<Crr*rjy$EQOr_>~dPnn<$_)0lSh4XDh4? z*hYFnW9xx^kLJx&wC@A^K3OL!>^5N6(87}x_5iT!D1W}f9tCzi?bO(dz;2|~3l!~b zU^kI>p~5}|wuQExs<5owb3C_D&LV~N0(Kj1*H|U6JE(QBqKyW2C-E<!q<z5dqOD65 zb^@?_XjzlOnt=U;ZaqU`ZNToQ;b$srJ+PnA^5qKqKClPqvlfNj2JAr^b+*DD0QL}V zmtCy2^eC`j(&uf8_9C!f(Q~U5_IB<Co?p`q=P<UxnvwTi&kp*T#uny%AK1ehTakCY z=Qs2RjjhSs4D5A{U72^g=eP8Cja{F27qHJY_LIE(Jv%9~TGjAK-Y<al)!3xqPS2w> zQe)5LJp*i<!eoR$Mw60Qq4zObra4>l>*z^Zr?J6VeZ5c8^@8ziUjgh^O<R*c0J{&r z)YwJ&n}F@q*d3l>##8i~#=e_B#QPNO)7Z~Jdz${Ev7119n!M*q8|c3LDfA3kf~h$F z3@z5Qg79eXGjzVj1_Ap$U8}L-z@DY88ao2mbM&0XW&(Sj-q+XyU@wq$o~rM3V1J-N z8aofzE*h_~tAV{p3pI8xu$O4H#<l@_nXcB@lfYh~`!x0<us_n%8ruu(ReD!r9|3y} zf265u{{q<S)K_8BD{s)CBsSIi2EBeEbFQVS1;=`K)8~S1ppy%3!fs5baBif~;F8d8 z8nsSjT8j#X8GoV~8ausU2v&CUG`6DPMDHFtOR%-ps)B{US~cwg(Du@$nsyavd+BOL zgJw&-Z_=YlY`J$I?a}2*BcIVb^jVU&-un)XTd#B(92rgT(L9X}iwrZ~qve9BzI~6L z7L3<tS9sr}k_}w$2Q)5nwfFz1RWP+$d!Ke`j8|)arQsLp8n7DuD@{`v^!yvJg@UOS z{0G#jFj<#>K-X%FpC&$}`!vR@`;Ta=U>juR|1mu!*jj5vWD|CicPScb*hGJ$cLjUL zSQXjg{X6A+hjmdc`h*4v#x1(T`w30cG+uFjN<Y#Vx8Wc3s9<Wv`44(qFkZ>s@BIhK zA4y;x^6SWh-p}aji>0-oO~D@7O-XDMu)C7j6W;&QuLR>KqG!Ed(9?=$^(lPKYZz|{ zw$>V0xChw#f?a5FADIRoVeoIQRbBXw*EDhj+hC0@#1oh?PGb`a>wujk*oCO!eXqx8 z6->1~%h)LxxBU}umhri!aoc^y!b`b^$B5hRH?9_JgLNxv@Edn&?Eb<{z_x1a5zs8- zDUJOOG|Skfv6n#0HvXcqw?WG`KGE1G&@*5JFXQ?)SXQq(PrxWt81?NnfP%(ijm_v~ zWd)7r6(-gV8m|ksk>2YS0&Vl<EM+5o&?|zclGZB~mQ~a{D`b>>S7D_^<ypDLeS)c{ zf_!70F89{Z$Mf(9BARn>)zbX1u}yJ`bqkE=G&Z|vH1;^(73@Omw4!&s1;!_umMDs4 zMU0${Tp!mk9N54lR-e_&7^g6KPAxXp38s3b#MrE9?DHkY4OfX2>%pQEy}ga+H1;HF z?`;hFo}#^6G%u^Sv07vA3U;5y{#kS?Xiq2%Kj}Rk*yjp^W_DJovHogD&$g_-#`}V; zrQ+f#)Xy0AeWtCYp@MA{OzGLri2gvz;ko~CaMCpj`?q;PR)3>Tu(fC(p8t$_N!k=D zH=fYg$l`_Ga$~EsXd`{A>hZh^!xGIl(zk&PFcxa;I$#5hCq%Q2cv1<42N^FYDQLqA zsx;meOg+sHF_vD-x;!S<jT%F)6U~Hks4+?~MT;4oiY8CV)y6e~si)*>W3#4RSv<_B zF&@;kn~H~cYmDuh#!tz$#><+<Psz2$9!=vX;bF!<HO5cE_+jcMN0)1|h8xuilR03N zF-c<|71z-yW2wfzC>{Wef40b@BUrKtn039vic22M8g1OHFd9;_1K3u<F0@9MJdriV zcv@j-`}4p)QW(bj>sj^2I+3}N7Q`M4k2QXzF&o(7#y*X$2X=%p>ISZFBVALnKWm&Z zPh+=~Wc!XZp3~TaC4GEH8>4PgoX?aD^G!5XYwXRE!+evC^36>90ex69#W&4ZcC+IA zqGX<Ly7Aeq3Jdja^361M-KMZ!z2m;)jOyDJHnjI@-z;OX#>Vx&z<0c{Nia2vXB!Xe z`reK$v}PNxXzV|+Ed_Io*S9DsQ>&Ne&ow^L*oD<w3g#L4T9;n~JHe>d*yq4bG`4A7 zj;*=Ccarg06-!a|;pap#!RYbwBeLfk-x<N!USq+)i8%|5cQtn7z!|{!@FAwHE3cyk z##V)8zdUfKvA}pr(|Qk@0@@22n<UsPn)8A|%=w{UT>B930%Jlu%T&6YY|K;`JyRJD zoos9tOx1Ua@x-^K_Ut)>Z=zF-KPk-M`c5(4)fm@zim^^sEPJ!LzEh0r)%r#1JH@zL zu(f0inL-PVXCxM=+7}wHD2zO@v0?o7NJoYOV5b_p6b30%=v&6?nszj3-!isJA1Nt| zjL#KD&&CEBi;P{;M~b%Cm?pilfkss4L>3$TE^uCNh9|pVT+(5@E5u(q3sgMEc=(O< zc|uh@D(8C1ai^8E52UPuN`f2y7^O_w2I!%uM8c6luJIK~Ur?6P&0Wf!UJ_vmyG6qL zQtC5-`vsbPnCb;INaeW8y3;=4`9Nw6Njl<!Zq5?PuK+ZuO46^DvwSyvwt{m;2o+n* zNGqAjlH~(9M?trR-RZ-nEJKqfNP3#2m3`d$%oi%Yya<_`HmMyDe@8Ak-;*3wyGkql zGt&lfjzQNa`8_&^%bNc`Ej{@E?VvpQP}o6v;1=;Zw?B7Ht1*5rI6Zjl!(Q5zN98C# z|KCCUNF+IOyXx?mjFerX;U8UTpTww8BtPGSH-#)g#i*{)iCfxT99DI4bal$Qqufs+ z*~A+}roJona%A=p$22c}D*C8+!e{Z}*Oq{IKPqW8>fLQAk$e@k+_kuQ+-W7PpUC9s zfk;@)wWu_<^pSJ4KvimqXnR-@=hqgo<|?gb6E$lb<Kg^Dk*RF5QTP?LR?;JcI$ofv z#SN7YxMwR>);(vPCv$|#akt2wR=zhIwRni<7cZ%L70;<s`zz93ZnZ(nBuC97Zn#SF z8JZ%;pjD+N(jCZQ$@%$?WVXDT(U`~K_vm_+w%oJI!uVSzk^Gw^r$LWP&hK4NX`*`J z%b=Q%UX!_O(I9S%vb;*WZR_sS56bwLLM3=Z7{#%8QTi3GF}NPU^$-}>;CcYpLv$Vf z*lG%G5qKxyCc0nXLjrdQd{W@^0{<v*ufX>NehgUW`In>(gC%4O3<F-}s{kD09SVrI zH3A!qHT{2y6)|&8H*V^`!#4<JpZCo+p6vg!ufce(|35%|u|N5<<&A4Ls8gs~^OTew z>mMcQ>Bii$Va7P5Z}cxPE-!n)KS}ag{u6$dvkUOLveyK@DLEdCa|*3&JRwvWvyIJV zeUQGlEC%>US)H|!9xEGzH17$_q#@<!So3tfBg!wg7E(j`RzTKgAx$a2(Z7^tl<%~b z(*oo-%i8yB<GOODzU1F(wbGXI&#d$5$K`?SbvoU<VyktTmRV78MfTM?J*47y*{#%4 zF$`L*t}p`YXhX$~{&iB<`GBE7tK_sw&J9xPR)KdD%e-4^X)yjXz#E)xWDPU|vyHzM zgpe*C*dK62Ip_38daEwQG9Q-oPJy$HfdfwqJ}v28ItRanK-n>n_PXTsr6UG@7-S3o zD_DV?O?aQmdY)^{D4&tjY#fC(cC)dde5Y}-^z{N`T;=?njgsyQ{wesaf&)uE`y~Co zhTQh|sif?>oa@9l_K7w2(M6S8t@ovteRO5zjsAVG`LA+55u1NP{Jha%++3Lxy3_bE z21|o6cyLbWbD`cZa=d`g!>>*p!qiiSw1n<AP9Ks8J!G6e<h;-hV@r8w=t<+IAs2;m zgtHKB*=hAfE4Es98g~yFW(-395bq#kLq#Ys$jFO69P%2a(MLlK#(?P4p+6dR(dPlj z0yfhG{8W6e)XN?|1s?ul|9^(q-(v8+c+{KQfOoi|+>eb5qLJKx8C!!DNZ%OEfwZTx zT0(|-ceFM)+x&HOB=Vn#j?Lwq3Atg@vD>p=?&XtmdrMA(@kR6$Y|dp3-2_-X^wivo zX~59a0EOQ?d}vE<g*jkoD{`iQXDD*obB7{lEpir1sg|L2cq4NqU>#&`%pD7!+w#Vm z4-CC4k87W5RnX3%1JHNR4gIO)Jeb#D`l}+M+sk>=QEC%ai}hw3<yC*qWBBj9nbL!! zV9&h#aj<6~dz_4sNn+udV&QqZ)QMG{`3og~spQW#;#HSh%f;H~izPSGqg8*)Z#18+ z`aFNR<gAmjmr1FsrPOqzBDMp4eQYe0d%nRQbv}CSMt@)U%(Cze!gGV@aH~kTRj9Wb z>~);;A-w(G$OGZKMe=O;`J3Ub!n0NQ9~POjjq7853U*4)PN6<*@VIzb^Kgw!{V;g0 z`J>ng1v8~DX2OR<fu}{=U82eB;NiG8xh4|XC;9J7{wI?Exu$-%=5hQTz}?hnT67<s z4!D)h0^EjkA}o5C+5orHd4N0V0>CF|9pKY+G2nA_1>i3F9^fl<E#T{PBj6so8E_xn z0r)Q64fsCY5BL%N9PktRCE({$BN<$y*Wem0gKNw&xW;^gYb-Rl#u9^T>}zn1<p$R{ z$lw~I2G>|^aE-$au5pyXHP#zk<2ZwB9B*)qlMJqLnz0>lrtv7?@y71}=NZoe&Np@e zE;RlKxY*bYxYT$HaGCKg;Bw=yfGdr^0k#_d1YB)=4tTy{cr5BPe1PkWAmB#^+wc=< z(Pz@4&sB>|&d)cwrG+N9^t<N2vMk!-X*6@`4bOU?MYFxkvjDJwngwQOHJY__7Clv1 zOBdn*<663uf`CitOysoFr+_h<0QfyBM1Co~5vj#5K!zaa2wDj^QaC5#7uU7;E%+6H zbCENiu17B~7T73ot-vh;_X;!&=BW@k$Ot0cAn8VdYXzds$lomK?E-fQ+$s5cB)wN4 znJmo^SRt@MV57jb0=Ed<A#jhty#fhuQ&GFX#R3}zb_!f8aI?TI0=Em?A#jhty#mS0 zavBA$6}Va87J=IZ?hv>~;9h}m38XC1U!X@|xxfm60|ky3I8oqYflCB-3cOI@W`VZ| z+%E990`~}fOJK7vk#$Y(#ei?;-U&E7?@7RT-grOjuvlQHz|8`;3)~}+u&sHzSuU_s zpf{WQs56`MHw)Y@aF5CfaQ=3IdjwKYI0bGOxJMx6h-87|1uhoYC~&R7EdqB4+$+!s zNhyI90>=w%5V%-iqrgsqYXxo*XykI)3V{s*8&x`w^LOMk+$+!s3#Y&afsF#!3f!X7 z1<bQW;0}R%1y)2jzd>N5z_kL6LXj!3L13f6EdqB4+$+%NC7c4s3v3X$SYV^TPJx>R zZWp*mAQf@ha)ILoE*7{)AQcN$;CO+H1$GMDEO5I@_hHWM0`~}{QYkBNyuif*H}?}x zft_WX-Yjstz@266Eqf%rr<|!&A#wzc7r0npr@+kuw+q};;mJbT0a9upL+>D#wo~Aw zN=}a-%=wE2b_(3Aa)xkzr@+kuw+q}OkfKa27dT$vc7b~YZXU|i?E?1*?2K{FW`WxU z?h#1UB1hnOft#yi9+VYGHJmONxL9DPK&q8|fr|xp3cSwuL*LE5JAB#r^RyEG82?57 zTl{zV@AE(Ff6xDs|5N|J{YP07tr^yd)*aSE)*q}ltzOxKvWI53X8$9*SKwcPFM<nm zmgThMwB>Z>Y{<DO=dPUlbDqt4C+9CYALV?Svp>flstUan`cvpHp^rmfgr?=r$z7KF zo!p1>D)Udw|4IHY^S9?ek^g-DzI-EG7d|$;IDB6C%J7fEpM?Vj6ADf)xT@gVg5MRK z5V<Dua>T?lorkjUpCA9_;Pj0!p4*D>d(L9~ZnHQ39-t3$`r`MN75KH}U{HpFQjMp( zTAU9z495$Pq;mW{M+N?hV-Wt1s1koi5v6H(x;qA&;zK<ALz_Hf4q!EY)r3=`1YYSm zKS{j-zqTN{L*P~~^Y6ef8Hk?6FA?N#J+K?y&zJ^yiVw#e&=~@i%r^fIkaNDDOKlK% zi?IbcKk(lHxX=Ft;6|&`M2=MjI4c;#e#zl^tjRpOl=rQTzXN_sp8+=J{}-@1-}EwP z5YQiH&IhR)=}?$!xxrh9^c?~}Ea3Ft3fckxDR6Ft^^Aav=;R1f@wY0-QFc&pUE#lx zuXrvlWSLhLaxIVc;`I0c!{1B#kG(iw@vJLinWK%Pvv3+xG1s`w;GDU|>yfiq;9132 zAgyYAx|nNM7E`uT+MZIvGEXnzT3Slp0sna=9|8V)(7YU?{|d|-@_SG@t-M2d2=7c} z;qt;yIE5!;ct{ZblMiUZLqdSPk;mutgaJ#@N&~*bus^)VgvT%}g9jN@4rs!o_^*bB z0GjZdQly6hViz5}`~nDnoCt5@-|p7{n((>`q=x~T@VJ3U9|36M1jS0Ej}&+`<e7Ao z!10i0Py-<L%puRj-xt*Y&V&pD=R+`@g<o=-I17T|QuwopzZV*f{4)Vftg-m7m6i*< z3m>R3@%KXv??%lA{uYMePf#;|)raAI7zGCQF^)$1r>Gf!0Rm{^FJmSGK8X4ate*L= zoF2kiMF#ys;KTTBqDj9L_$#c(40=T1%h1upUmh`h1)3W4M?jNarP)Zo28ewjtlaQB zar|YUNqh0x4HJKjv;gouItB2rbSgMM05q|xUWD|20ZrOZjYxk1h=E}&0W^#zK)-PY z@-09UdnwIG2L$FAXCWsDXi%=P0_l*z-iD2IALDG~mjaqti{s>Q{1s9g;6URXz(K~j zfR#o&;9#Qz@Cf4q@Q(vD@ri`BNFN1=Q)`S1ksc3d;(2*J(h~qptkEw5oNVC9lBO7! zB7Z8NiB<dMfX5hD0xmN)0-j}j4{)XNeZYiq4ZP}i<_f^4%|`)$Z=MbKoM{8TU_K7G z%S-^iWIhR>+YM?J?J++Ed=u0v+6QVCy#s0hK3zgj_{RBL{nz*(^0!zQTK8CwSkGAR zTKlcM?DMm?W-kbw9{6uycyL<qgy6>Dt-+^)m*!lR^LS2OXldwsp&LWDg&qj)&dbU# z&7YEgT>h&3E%`sne>Hz^{$KJ3gpUqS3CF`1g<lDq1(AXy3hpm>s9;CI$Vfxvp2*K5 z-cH_qQx|Ud_hvudc})GoJ})z5<b5o821e^t*n|Il;jQe&_w=&2<DDGuI(nrRPM73f z8s)o%@g9`c=VL_S^ij+bL-9NMDqPhVhc&orF^-4f;(xQuUU<X)k*|)X_>ZKM{dIH! zuHX1)Q=WAat|r=It)<(u*VCV~FUGx&8UuB-I&c$Z2e;t51;<$3hU*SoH{q(IvB4ve ze+M0n`_aMsX#?^$A-x%SC;M-~^&t3eq3tNQ9r;}LQQRL5K7^}|UPStJ(D&lL7x#C- z_YUrtht}e%F^1+QjJ?4&T*sN4gX@h=`IjQS7QDxq{law=3;)d69$rh^!w=&AYhz5o z&v30pJ07Gl1%Cv8LhvyKvw^QSW<}Zr&$H@id*m%6&l1CoJJw#>w!G;mI;|<bvbJe; z6U_li6M)gArg-zJrlpe6u)MV?-qP6GB-rtd@kCR6ay)Lwg|(LXr^XvstZ0mrA|Bh6 zNHm_&bbQ=i)x5L`Z1KjHCCl^;xl7xYv^Lu<6YUi%8{?o)ZE9(XH@4bwDAcr^8WOD& z+M1VhNhFU$9!;`WI9c=Tvzl7wox4(LD+#UA>LpDpS+3SX-zM5Etxc<2Ny;gBY-8(^ zWsojebC)!>pn95V+h;W_Yie9Nt+}O@CN?f#KDV`T$yw7|n^q`BY5lQn%Uhe5H!o>~ zwkf@JRmpZtPN|Y?Ef-hXre)DA(K$h|%Neku^ugriO)Hw91(%uI)Jk)k&TeaJS)w`s zYQ<Yc8Khd9=E1m$W@)$JBoO*9X<IH@u1GAg<I9^*qq*lMxG}R%JF{sCWC~V0(O$kB zD9o0q75$r+(Dcb?w>2(rZavrOp~ZDHxutCdrP?)Jks421-UQ;z=0q!QkiJqBgYoQh zQXS2C2|A;xb<uH+E1D#cZtVm}={d~Y@MTiwIrU6Gqs5N1pJ|UGrr7bu__^pCvC*Wa z#FBWka*KJk`U`iO)0D86uWF*&CESbS(rP~HtVN3^px^PA@Kc(bmM<kyxm#6|YP2}5 z;)d$JOAt3IEn}P;>r#)KNXNA;U#@M-mYCVx(sW$g3XD@_JfO$hy3?7iy4+qNPQ&%4 zWiZE_rX@{0pw%c4)zWg9XY%Tm@C41nuBzJ5P4+mq{4OmSmsVL<a#w*}cw7zUWU{gD zdeM#UHg%QCJ}{~2^hONXq~q$)#3WZBb8=Ij<aoZ=I~8)+a4C$9mL4dWo}R-zDY43; zZk*{H0#-Di*R<44U{T!?SoNgGC+2Z%lkuA1Monu>ESty?b6ir*F2)^~reRmIOL|vg zcPe$^a!HW*)}?WinkD35pyKa)*aXtC$~rp9xjgm~D;t+I$zV!hOjF%Aad~4RAw!hy zm6^wUJg(*<hBDnrbN=L(rBV|qXHIl!#JFUAT}c@gb!E^sbs^}+B}F@vRI(XKwU(x) zJQP}T7UFAy?_#crZSgoJ2$>sYVnlpallAfTN{M|<3AjDE`NW{?8f*zEIiu;^6C0Pe zH67pB9C!Mm?KCFoo^X)q9Q`pxt7t#9sdcWV%sQPbLv(a9sA1_+ou+Xtsfz{1IjmhM zqLV|V)0^W7HO)EGN`jWyZJ5llpy1`fl(@Y@ilEA5C{9vTpj*YwTeOIdvs;>I@~kPi zX7Wty%ohj`%`Iy3oQXbdYN0vmHWO=>C1=5H<~WH4ta#3$<XULfN@{31SC#`Smp4PF zSuIVouz-m-W#*mS6t`V@h%74_5#S}7&uZm$$RgHEoRd^^;hdS|iW{`ZrRgHA>LRV{ zqNK8mlG-j(>S7MnYd7e-C|%)2-D#{cGgMxrbY7&DUZk{k)_m;hF747$_ev(kq;nxR zu9k6KNiK^e+u#Vx%$Q&=JvY@enoAaLQ{#5qN~f5(go7j}{nWxw=)9D{daJcnj>3U6 zAOx|?B~vnDsEOCVYE2_c;RNX$kFvR~_R5CVDeS;%oy;SyOD1zdDi+h3>t$x|o+7!J z_!{*@E-P8(>ZxQy>!RV5hSsH{Bht~4>FB6*baXm8CLKL29j#AC$EKronQCR|RhOYy zU4~|L8LHJ~=vJ4ZTwR8Cbs6g6G^8{$jmXe%M23DNGV~jfq2GuM{YGTyHzGs75gGc8 z$k1;@hJGV6^c$I>-^dL8MrP<YGDE+S8TyUP&~Idhej_vV8=0Zss0{r^W#~65Lm&M8 zZkqi^W#}_1L!VI@`i#oZXH<qhqlc#kH--cz`t)(xWd<78?WpU*mMJH-NOT@1c?8R_ zbTW9bONKNU@g&LNWH5*GjLSqPJ-e-`ji0fS5+oy4K85NCq*i{q;x4)?s;;yvRoB{; zAj(T!U1_S~F8NLiQbnZ^(-S=1NppDZDu!?pu5~}>r>*@bHDUR)3=3N@cd2V!s$};x z=Mka{RjDJ(Xt7G#l&Ny00m@a?EUmIrla{9Gd0A2Q<g8_;EfrK=chj$nk}(G>3NH&( z%C(458EV2;X*FM~baHW^(Buk1q1+XECt&(4JU*{(<;ey9*_ui^t3Ny}^Fu!Gzv%U# z+5~A8`?#`LgzD<0(!J9aHutRNm4Zux9U$$Qt(&LK1dW@%v`deT<MLf|(}i`RLkX!j zosCxVs;`yeSj6D)Ro62$LID$4O<vMS!f_&U5)IgZNVGOD(GOs{j6+qnl1(4>W_e7} z50>+6ERV6Y=%OaPLM<h^|5J-fUTjheR=~*z1-;qS<aFO0ERCC2G}X?<&K)*y&TCX# zLT+q&%jq_@hvH3*E3mq8HpcLD5yvBB%Tit#FTvKG8k@YsCS%h{B(1;+X$#wCdO~{N z<&NXH!Cl%Vn;%_r#WqQKU1g~#v0^25va~kX;1Pr=&I**(bkdwZtF3iq8`fXwH72=G zrcP>Z)V-GA{YGKQ%$wTOdIE1@l8mI5r5s({=~{^w)0&pAlmytPsbPcYq!jGZ)NxwF zu7s3+U1=GLbzyL-qm&TJD1(5}+=9n6*<;1C9<Mm3^J7#?<8pL4c01*vG_{Y&dy!7A z+PcN_VBG2S7499-xY|imkDhE?y|tz?*!XD~%pnVVX9qQn3U;;XUhdwCO;EG!@~IWC za!$4H=gtu)PI{<o_gZ^12Q4NmG`aZay<XWjnXBr?OISQjYVk5a5CZu5lFKLfxgdj< zu1Q+GQbyI8QJ)=eKBF1dXQF-{(P}ovVIt`cHTGQixOpk0s~e<f)V!2VlMQz?wl%pq ztPPh)?k{j(uy=Ei<BoFDobUDpZhcaUgodO~jMHVhsDnAx*<EqOreq}aivXzCFlFB4 zIg93;Fmv*v<7dsCK5zQ0<9I(IS%E8^^w_jK>=q~sGn~k~1JhfQyIV97k*>8#N#h-T z*%5CN^Gc^5hdEAT4NF(y9R)(K-ik}bvqU#}G(Dj^KE=lxknA^56Q1ptV#^_&sKyXn zNXAmK-!UK?S77pPJh!102e6*jhDg`wJhiLF#nU!Ao4VPi<re{trJLl{%o6Ouqiy;H z#>(WDM}lnGbFfc4lUCz<WeF|{M_~u27LJE;G(_SuV-n{RYPW|P_1hS1%1Ll+mKP@) zLu1w39ueiNdslY*fGaGr0KrNFQk|9J68)}5l%geSlS{@CEl+KMb22%_rdfj$yu?V$ zLeq3aKEAPa8QC&5NK)%P#g4CNY$XgJL>itTTY18>^;?;xYX4Y0^ryuoYH2zree`1< z#o!T#at%CX@1#p}zx==Ut}QmM<2=tfyzG*aR@y_#mf}O{n38KM5h;>dN~B8Brb)?U zLR}y+ve3vOSKK8<nB3j$E_I2UV5Jy^3$zV`GRQ-mAVm|PF98y?K?^iNo{Bu@!9a_m zMGN$T_9ah6P_$_JegDktp1shfC?#eTQrbD^%;led{@eUBbIuGJO(IVuGZ!)YRJc>y zg^R3bbLh$ME~7)HZLi3N&_+aEEu(2h*KxX@ozxORG(Mem3T~wH1uXHP*H_w%T!hf2 z?`89ERRG%}=|!_3gw?kKM0w@G>~e7>UCC&pLu)Jbi7=jv%S&rm)<eCGlCk!e35mP~ zYILSiiQEI&%{w7d*fOv!sWg@!LyfUX6X>nh@*(7*B{!A}%b3ZmRPp-Sa;oxViyE5M zC(yB|OElCA^}Sd_y}h=y#7WZ%3>^nP(Dguvq8H&Tn}A#n!1HC!>j<IYwe(8zzT6cm z;7mbgL(*-mOcp~l<+?7t7J+FUfKW>@7St<ZW4GrpJ}#<@YncU11W#N)J~}oshm{O0 zlcvTq+0290>{{Vcx_Bp>noO^xmtZpnxx`Q@KCrb?r|ExE3?Uy_M70DEFG{CaTQHu> zrQwqr3du~Nxra0MIa!a?Gt%glDX{93S-3g6l+o!?S>R*i5-OkB8iGSu>=kRQDy7eC zt>{_l9cR*+B^a7f^ivohHd=hr)W&>t=I(Mnn~@$EhGXt>`kwfi279~cD`N}H`7Nd~ zAX!LP)_TN9XLEDYnY3B2#fqk0(j++B1?%bxTWiCB5>r=M6_z$hTtUf<=9Ro@mb#iw zzoo9O!G58wq2V7ZHwzCH_LWzevAV1m6F7Lhl)al~FRZ2~mkYUUfyx5^mA87tC9}8$ zs4ej5*uoqf_yWcN4`k_QNC<5g4X!M*v4g6RX%KySYZORGi?KAK-oV^EhF2n8mtd>} zW@xR0b)DTB&|v|pt@aE$yb2NFUR5hna%&J5s!QEgcehp!wTXt=)e|ip^>G6@wYolb zi?(5;LD4OeKiQyYVrxyi-JmGsqprDU6y&9#&5($6StKcaR~ALDCcq__g33arLa&So zR&tLcf@{ePhKCj4;-!qG=H|)+@`?_X->m4fvX6>JjWyG+V~pYDi?9xr&0bk=!ewhR zkB$w_%^7d0fyUYQI?52Bd9}5Fu+D}{_F>G%bukGInj!7&v)Vg4HZV7*9l6o5mAN@t zXG^Zk-hoq|;$%$y`zMw<z^^Zi(CAoVZmxJ|8Ph>yr*S8~YJ>9T{gp7bwe8&8E`>|= z*=)MIPUokVQ>k>wjR|1~%Ycc3RJmQ3vsfL?;Vl%rNl||70K#(@lQO9*IlkxwkEoI| z3FD0!Ui1d`Dod@jj?)Fc2XZBUVKrBT^{KUe2{XS$`^oM`M6hC9so4XT%<N#nxh1?4 zl*bHM9v(bj`N60tNB?NE@`Gg@-navA^LmbJ@r~+&;6ttIS=xvtd|@p7)>xm`ohp_C z)%1NeDy+Vi9vh;i9i`*X+hLP%G0EQU0i$4XFw`g(cn=f8d*0sGmScEsZY2xPy8v@A zc6M&=UOt(F0UcYNn}Y`qkNiPHd3+q?t;EdcmsjEA5SKTW;RnblN69*5#UMy;AaNLn za*5LNp(cyrjv2dWQX~oHX70lMn#MGfyd);##JTb1mBQHDLl;Jd`X@)u_Kr-Pz0jLD zGdSEkoESLUJD%vjIB|A-^0m{a&wN20KaNFB_;UUC&-C~A4-BPy2h?o-0c1#bvyfKk znC`RgU<9Wo5JD6tF>issx-f&;5)5KE&nq6wczy{&i}w*At`*7F{+#%x`Q-xM%hR`M z_z|$PER4=nJilwn&u8-&GME%WJn!+Q8P;J@FJv@}%x~l&eNxqh%tAIr2a+oI>Di0J zI?X~V&wf^U-JGc7$UZz0(MknNel?%gX$9Su6tt9CF;a$a1u`!$pwXP)L$xx6%Brms z#HkaL25ij`MRMs$6%!*<ET~N0HAt=)S8sd~WYo3U43l_)CyhB(6RR&3haa;Ag|sEN zmJ73bECiY6h`ho9XlkQbKi%hZO&bCVrjs8s(AOLzXTV+Utx(>~451yvviP97t){Q! zkq=fb{BnrIy#{MVB8eVwJgRHF4g#*=EeT6I$rGM4(~u=vYyyiG7@2^~;AK3a>ubvy za^m7j5+ioO9w~BXd_<7BdX|n5&eYpa*op862395fIAX>UA{2GD7jBf9yCm=hii$Yq z7=P)ehvvJO1FMfDNKNcO!`MOdo~0f@$|xKY^mQoQu9_HCe5)%w!Npo(GaJOh2sVgq zKp?E2XV7n0zKh|n%$czQtk|<RsE));`BnyySlzELyST-&i3VlydcoEz)`Ny>qzAS* zfW<oo(_*qAf*2~xEybOR%Gcb?`~~fY5NKqJI3?k1%DX3c>HQdfFDmtXfbS*VR{c0} zycb`OysZXshi@nNtx{WnuT9RY06Fned?Zl6EB7aqI(!vhP+)yoVI~i84D&e0IIq;v z%~A@01xTN}P|h0wMiFr<`0^wJ7=fvs`PL-nKE?-WeBE0_m_lqCvAky0BEm(KTS44O zNvY0D7`j!eh3RVbgX<kcs{_=QMVppU-!kqp0^>AN2rZ47%rG{U8VG+0`PmjtKXp*o z9SBWrth2{b8XFupoy6x*_W4|y?y76l;B9#^if;@wv@x9THHWWQl4y0&#OatN&@^Xb zx=6dX@XO+a9=3sZDd10xRr(5^No!5RqPinbgpgFL_(#45_^k<T3%IXsd4O+^F5r8d zi{&(Okmn5*QRV@@i%>^DjatGuV1`t<ZLsJ#hHsHxlR6iWFO5_jE2XZPTGfl!tMd1w zre6GXEY^*c)24Bl!KZ80c?V41*Q;7|4iY|w@~ny6&46Q+NXC+;nu0?nrXD-ybb$4> zTCC@)Yae{V+6RD-ZJE@$?-;(L(%N+op8;0a#;*`bm#wvxu(fuQ)1(CTR@0zDdt2)) zB!ryF)KNI`RBF{Nt+dV7JArz&9IDdStD8IYR4N{9NQN7tR%>XmCP+omh8vUU?P}a` z6v0zq#px<>JX@~0LKGoWy1MSOPo?fet?1P#*6?H1LMm4j>rA;NwF)HdsZpYlC#<PX ziJm_O!Dk1Rf`MUoqRqQP{3JNejwB=I%f!D~P2T}1e`D^lCTp}BLDI5Rqg*v~9YB}6 zUFf={joK!3{X%U!HZxBj-VX9}1{9=G7?(~X32NH*)f#iD{V+`zyDFNQj4}UL&{3(< zpVT6@nI+pkVk}vYaK)<4fZ+uoXPZz-5#&ohu0?S(v-hh&k#$tGDN#ncF@2>0_iFLq z%zADgf67F-d(wof<Lzdqar+h1Og;f`>(pX11G;?-wJ~jI?Do^U(EV_u-gQ82W@tYg z8`7n*NfXvQY^s%s%`EMQSH%W?kmb7|?jzldOj*gco_`LXjdM6r-y8QE*{_%UMm1KG zT8IGhUkj7};c7Ke2A{y#?|h<=u^&dd*QBF-uth>oi-BJ?xhrnd>9UcsY}Yb)sg~T^ z@BN-Na+5g~D?eB!U_HawiwZfrXn!*pbX}666Fr+8G;dk@Ty^3YhG`t`U4brLG8*;a zIe$k=XB)$;H6nv*`%cBqXQ1xl!UjXgUix{h6mQ>wd0ZlVm~F1MgL4hJ$VO;cONxg! z5R$dcq)9jYe`*`PeYa@nBkV%hQ*zXth1%pWo56Xc>dvY`*YWThwT<7tPqlL!|9JAH zCCQrjMq{9A;{FnQ_D7Lg_H5tt++|O#iP*a1_0jtn|6VHy+jsDH1>sjE2;1;}>J9St z$4<M9-aex@@sb{XrB)BOKi+(H*z<V(>r?jM9)7i&C8wWYw7YXzLV4V}OY(GGm~DBM zkIvSzW&5MzUA8nbWFO3y$J5EDD=-|1)sOJ2y=GlwgCWVIn%UOVPcRza6`W^La6WQx z{L#Z&+qV6=l3fwq713>s6Y9IyXK~hQ=XyOmzkA(e1oP+<wYKY7obh{h1n2Pt?J19~ z9-XQcmS=JPapwxl&c%!_ek14or?mp}EY4HzT(<07%pT8<?V$1Kmwvleq@TqZ*_|sm zI~TK^FVe*D!zN;Wsqe;o>4jS5c^2o(cdm%;T+E&|<zags^G&BmHO^9Ecjdyow6pb< zjt_qM;)AEica@{j)Z5l3?@7Dr*G>t`dGt5c_CE0hUjppTj5cD=Z;D7iUjOj4=RJN> zE5^GM{7-jC_UkIfA7!6Gm8g8v(|9?xlCJG>%>-UT?Jg7S3Nk+tqXIVSz<X;g-|q6j zZ;HTd!@ktMe3ekU3k1JPaoI$RAO3Nz7Vl2OKV7zLLsv>QADSed;Iqh`J2u)xB1`{W zE0MpR6M@^{yV=*{B93vcroqq?%=es;?wfm-%;?YNP>b0e=AgYhhjU)_?kz7Xr}UN2 z;>g!maKLgAp9tw~Fvip^6h4nlaBg9zhg$&2yOR=rM#48G?2+(<gddmi6B526;fn~5 zq1-(j%gplku>B6hTi7<`O&l-FxRgmN;HeMC&VC$+j5{r-un~;fQ^7~I5F6F>ar{1k z-z!SBa0?%&=`(o37Bfeu@$KJT+1FwjFoRHAWGk2#uHmC6e#Ou4^8@UQu!6R7OP>_B z{>j^|SlY^)&+ONCcC#84(VM`iJy!sk+sI)1pMmP_e+V-Pm<7P+hgQ9ULoaIJ);~BL zQ#s?Cmsmm$e!a-8Y3vq2Y=0oE;+91(69TqKnFVV<h0nNfz_-DYo91vUBUSqHr%`<p zJG|(<XKo9?913z@8}5YDi!|=w6W#%*4_lA1;+&)x5fXt_JhMR>b>{y(&>``91+5%n z?5;@svaE>w`pR9F*lg^qv=$(L<==#mj=SIl!V2z_!+niNGQB_29l#+Z?pH%0SVB4p zz6Kooz&7re!dMboW5CT8mhe&Nsd6jS7r5WS0@{#4F1?!)_X)DhxBCE%3xoy1DS)<w z%W$8g8$uQCk)-!W8UzO19HU1tA~m~fN_9hk)tk1xwk^6P_aON903jKwwGWVS0x59k zXRH;B3y7J)N#PU1=IaQ1@vbXtcV2p3+GPdB;<gC5dWWbK@~J{?F75%uJ)bH(<DOEQ zpViV37B~tr+pkO4N`=lz!4uJZiMtd~#ccj+xP8D2n7uV?=v|!}fHveQcgWIEG~ez4 z8u?{+xC$$_mKwcFmR5l9UQVd%XfNot`9Ei50(Gu{?%e;0@@Fxxrc(haS`P}+20;Fl zHV*+XuB6edRKwG4uynR^7lsa4LtEih#kd$cc3ehX{EAcS0cA&ZTt%GKNexwXOi0^k zmTU>NFPu-st*Ntncd0Hb!M2q&wKmn+U!AJr_PNdWGXvZaD+zt%m!_Iy<P34mBJQrl zTB9rG*-`s+UB-~bdkm}-*0jAa4GHG%UWAhh&2|)&+E<y|z*7@;{@SDaQ|_LnN)N|D zC~WQr0BZn1k**e$!0ecF7kOwT0_4{fX>nw)*oy|y?o+@6+)-3;&Ibe{FxzBhz<%b? zo4<vd<0$pDeP8|T7vJl-_|Eg+-v5*D{`nad{makax^X!1Pru)K&}(x%AD4rUH;>C< z$BVkHE}9W*4wN_B5;%@Gi$|A_(dNL3xvh*Vy@N=nsTGMm$lHUwxN+UqSZkoVyizHG zT)ajD*NO3_rIlf8kEFIrY%HP^=dtD8!FZQL_>NROB^6Jh(ykb9yJFFx$?>MTVlmV? z)zsP*i}aW>sCx<sbfIR})QS8tuQOuWM!e?*+B|P>%I(c4Dr94eZ2+$C_OXI_@1}l2 zHrMlkkL#nMQB*pQ-%UbgF*bOf!ObYpkSMeTB|IM`qn_W+3SM-hUTI^GRH5%%fI{gV z2{+mROUE|1BC?%;OfCRME`}SZwV$=V<aj69fRk)Md>Baite<i5VW<I-I2b?S#)o<5 zd!}8XC^Yq;*X#K4VUnA7<U)MdZ)%MXACQKHasxQv>c)kl4FMn|Q6S<AI=&aRu*sTu zqFLdu8Iq@(T?S1I7}?yypp`*{0gtY4Ze!5SU=M@64E8aIG1$-G0E0LKk3k26P6h`V zJjdX928S3NX7DivFEH>KbTK%>;3$KD!HW#K89*{2H4w~BkxMU5q4f?img3q;u@nV3 zMB;l4eeY^p(1g&N@p>r6-lR9Bukm3?pM*GiQ{E&5HyY&)Qtj1cZgBPxS$K$Sy(*Be z@^(gUXL#Eqw>=`Q1AwNbm3LNvJIeyx33ylWo58P#Y+^RUu1?l-mB9>y9uZmrW2Cn; z0_l$@qR>DUPq0>S5n&YB;|XXsx$O$hLxed3*n-=TAfg{Zs(Bg*T!eu0xM>4vaKV34 zd0yyAO^S*>-^5h_-;BU^csIS9M2}HXQCgQ;7f-bSNGx_BXog~!-mzK&eWz*hh3e<y z<H(sK`Z*$|Lodq2cuqjNqPFo|^dGa%j|Q`UFh~ktXi-iSHb#N3_gfj3Hrkb|ZGtc4 zNJ$0r@s!jTPmv@k65&NR<{JXf3K@D~J?+hGwBK=$sMrxDbeh(DVi7!h(U`D63Xlc3 znT?@+pq#cQ-mHP_M@2Ke(mHktm5ilzZGqRV48Yj9jxOh;8do6rZ3b>>-I^%B`4{+W zSEg~^%>&BhwN|ea8bxE~BTXk2frx_KM!lOc)x-pg-#)_8_6kfnpqfID8wa9$mGD#N z7V`QauUGVncmON*hW!9GC|>%*<_J5R2y_iMQQVL(F$fVzQ2GXh0nctMMnmtFz7s=} zO)T2)A3Aiv1<t+B5g>vP#6s#3b;N0DXVEqmWeU3z7We%~L~h*Hh;&tZBF*Tbq|<VV zYpE1#*EK`zN-e;tRB98bd~R)bdD(ja0?*1=WlKBrM5L@YzsI7DxORgplZg(l`y(*> z-@%P^k5RWpx<E=xhl)gC%-JEL(kTR8G1ySs;LaFZ)ER44O&~_BIpU&IX6w)eGRg;~ z`Q*1onqqF3PayLQZbkuCI;%Yg97ByGu)Sc55Y|6{XiY=gAgHB}ZcusCqM_5?G^%r5 z@Foh3oOS{<ofhfy4(R4mg-p{+8!ot{Gwh-KmcH+Hs18Sy5gFYMRB6d)IOYl&H-z9D z0A#wp4s;sm1Y1aI-<X{ag~t)ck3}H3i1y{lZHc(vNq;}v8tS`1+71=n6N*8@IvhYi zhZ&2wemEt9o-wY;6^f2gy+XY#bpX|dqMp+&55-6hGL$*v(#BA#`#cE1q*@~EYY*do zu(q5)^Bar2fOBH)VO0Hg(4_R96a)9m)zP?-BOQ^Z5LQAGHwNtsMS68ji!~#MSSY9( zNGM49vF3I>)U`BLjSzL)N0(+KWy)_ewZ;5>m5O3M6ju|tCf*m@P$^G%=%LE+M1|+Q zDJzOo=u0B-dDx&BJ-b-6sofEg50gJih1L;X=||L!DPw1*e5&1)AJvSB`FqPe0hZwh z|JZ@1CW`$L=SZ2i#u!N%SS7c;T?me%zO6v?dMXCAtg27BURWgshD)Sop(9;rt$>4f zF%NUZ3)3Ws5>22GW0xQeg08?U`2IxXFz6mniRJOTG(Ea}+CBbat~cwI-UaY3{-p2j z@<fYcJ~SNuql<18x(vM&Pxc3Hs}C2!he3$$p-KIg)k0W=AHWE?(Rf0{4++o#C^nrc zDDxpOnr;X#=yk*g>ri`O7bnG2@}bCZo&dDP>x{Zx^zPXU#!Ek?jg+f5^;{(4O=&nF z0qhr(#cIOkK_xQ`dc^dJ%VTUH5umFIL&*MQDxT1`>wPOQrT5V>kf=nD9uD2~zcZ=v z1mpto=(tPoGeLrHGYVNt?`y^|7bH#BQ2GZ9W#H2PvvgnosvrJCY@NxDaxQd8VB#u( zjH5xoU?$uP7Y6h|hXWu`TDY=KQ<RNpibh)9D00O1P|^QPqfA3M1uD`9gQiQj2Lle8 zs-|cx7BBr5WCA?_^*9#&=D&UI?93O7pNv4}V(?rjOvjPLepq=ATTlquaDzh7`?g3+ z%sY<%?62u?5kDXV4g(xqD^z|#7mb6qC>R$w2ld0jC}iaV|Ixo|id}LrsEyhK{#-Td zMz7&Gm1P`C;LOIN_I%dgvZtg5J$-o|FL5GR#E}QVVm2Qv=@SyLUwhvt9Spf6OE?)1 zXUS~}?6^6{6|i`|T4PY-4o2jy`mn)GA^G-nhE$-BNetw4U%{<!(80+47mf-w<ER|P z5Tx{3A3<u32dM?=`{{)>o>$Q)l<I=Z39*+BI8H{uinn<8y*P#_E{N=6<ORWiS>Ujp z-0`h3iHhZb+J;;qw;i_4L{UJ$Z^oz4sD~#^zsx(1T7yVi%zG93j{Mfk+wkr{yG#Zn zsOv^h*Y{EL*R|BH8{_L+UGm|?X*_XvSbD98bzR;Oheiw;v|e#q0xICsq)5N+`66hk zNTeB}n}QV*y9S@z+{|hv@!?Rw>i9>Li-^N8mN0=`-ot_T!y$;L4~WfpVvJDHoA(VB zQ8#41%g_){u=og3p^r$n1*+^Btv8w;^|TiUl6?=}CGd^95h~zca8OLbj%ZVbs~6pi zrbH!<*#x&z=}^Sp!TRd|+6UbmLFWPVC6=r+eTkTib#1NIErm<#uAwmQ4%Yb;BzBu2 zQ;9qy+;!^@lGKRsUpU~P-wHEE-?yPOje*Hm^dc=9H9H;vXCR&K*@*aD;Nh$^fv96p zr}Gwd9pMKXC1xJ{<N$+HD3ol=6L1~q(k5=;3M!U1Ad(b$-yM(aHv<x~tRkkR4XF#@ zbw023S14w47$`1mViaZ+%-T3=9I1oe!*TZ7=-qV7rN=$u?BlZ}!gcrYG*Wq@S3p!` za8b@vzCnX-vPa#p|9@Cj8veQ9<D-|u@Z((}nQOJWNcWj-C|d4f07WgqWxqHohs(&) z+!ozwM}4gC@`c&*nV=`l>6Yj3Ci;eGf;!7d=IlM57UQu@P)-Su_hXJa$kUwyIi@Bb z7z2m%eALU1>b_Gf<_hOdox&kPch+wAEo4_uEhP)EeK<ku!6`YdQnhdn2+pO7Rg#z! z>t2p(CUB)j9d)*R)=tnfaUvM(A4r@GUKe1&Wk3shSQ+aoS3oEylse(4<7Y<F3#pOR z?cSj?{e!)U)a^69$>EXPy@~Wf^7Qc8<ZwDYpwwPRMF#r%`|yLCf(JnjH=Kh~7$qvu z#(nM$943Xse#@us;3Tl@y@KRbfB(62*O`}dT0WvCi;kMS;izlZC$D#QynOu2U;fii z{qXm`d*kar|D%6liG_2wK%86VjHg>9$*n?u;TGF{3rF_ek^{*kzAu-$P0-KW-@9v? zc5K);c^@=x;(9qB&aTFxM`=0de6_HU&8O3Ssg)He_KTNP@M>cKPbJn>oM{X&Z_k;; zVO((u{ZU91ChQx>-)Ruf!X*Y(e}tmcI)2|OIqE&mkD9+%-*MD`>ST#|uPK4+4V<Vk zhwuV+Te^<5xhq&tnZxz6x`=!J{iyk8|A+B7?y7%Std_rKlVTp_GAVI9kRcB^dIfJ9 zOAA~x;@@$_QnN@+BDPRor{apF{`+3@|3VoY;DmFqWm#gW0i?f`JpEWf)c+D#5P=e^ zc`VR7vH>;Eq0k#xV+{oh8Bbvy7I0ow`^)gT?!^sP%j-}`Z?uwY*LjhQmOqE`mNMLO zvw&q5wlfC|%@GF3_Zm|43U+u-i>HNzm({tbqtNbX2xj#vFY6q@qE0`4`l|3^EQY_} zG#7kW3)i+*Lanf?=XRByFg75$4%TpS=9}c^7T-CvotQ5Pb(K)PI*x106IeqIu-e;? z`V(^A&+C9-SGxnLm+RfkYq@0C$}9PZBXe0=!cOA_54Piq!GQ}{Y=@;SpC|#UypA4j z&q)ki9kWbk50<!GE>WRB+nx~mRv*+*OXXS`4@;SGw393LT(0BkI<;%?^}JzyKl|$+ zkG^t$btSl~59L1JjSi+ez}dcXu-*A?oNCuQ+#TTT%uFh|lFg*gcRxrMx?dUF*FKsw zM{)-MkSUz+Udw0B6>v)PYO>I~y1bCj7P5=QUi5V5l7-d2y93?9YBICDm@X7;pDwil zR1lPbP2+6KB2F%=!U!E7u*#sLKi_@n0nSy%Ie2o`U|%wq>prC+6!U9^B2Q)8B0huN zQVw+&Flxb}eh<tuV)8r)vw%}G+52I5wv;Yx5$b6RHNam54!Q(AGMY)>O|Jwi49|Bb z3;J}!e0Q+6JidVQ)j`HZoDG>ajS?WI8en5lKUIbM=&3RhkYV(c<q#go?cKj;jsiJH SamDd_L(g2xb{n(>3j9CxG6cK; diff --git a/gherkin/java/berp/berp.pdb b/gherkin/java/berp/berp.pdb deleted file mode 100755 index fa33298b6a712cee3af6c1aa715eab45c71cefb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 183808 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 AbpQYW diff --git a/gherkin/java/bin/gherkin b/gherkin/java/bin/gherkin index 5c2efd96d9..e0a9970665 100755 --- a/gherkin/java/bin/gherkin +++ b/gherkin/java/bin/gherkin @@ -3,4 +3,4 @@ DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) java \ -classpath $DIR/../target/gherkin-6.0.0-SNAPSHOT.jar:$HOME/.m2/repository/io/cucumber/messages/1.0.0-SNAPSHOT/messages-1.0.0-SNAPSHOT.jar \ - gherkin.cli.Main $* + io.cucumber.gherkin.Main $* diff --git a/gherkin/java/bin/gherkin-generate-tokens b/gherkin/java/bin/gherkin-generate-tokens deleted file mode 100755 index f5394bc739..0000000000 --- a/gherkin/java/bin/gherkin-generate-tokens +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash -DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) - -java \ - -classpath $DIR/../target/gherkin-6.0.0-SNAPSHOT.jar:$HOME/.m2/repository/io/cucumber/messages/1.0.0-SNAPSHOT/messages-1.0.0-SNAPSHOT.jar \ - gherkin.GenerateTokens $* diff --git a/gherkin/java/gherkin-java.razor b/gherkin/java/gherkin-java.razor deleted file mode 100644 index 5b1d47d74b..0000000000 --- a/gherkin/java/gherkin-java.razor +++ /dev/null @@ -1,314 +0,0 @@ -// This code was generated by Berp (http://https://github.com/gasparnagy/berp/). -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. - -@using Berp; -@helper CallProduction(ProductionRule production) -{ - switch(production.Type) { - case ProductionRuleType.Start: - @:startRule(context, RuleType.@production.RuleName); - break; - case ProductionRuleType.End: - @:endRule(context, RuleType.@production.RuleName); - break; - case ProductionRuleType.Process: - @:build(context, token); - break; - } -} -@helper HandleParserError(IEnumerable<string> expectedTokens, State state) -{<text> - final String stateComment = "State: @state.Id - @Raw(state.Comment)"; - token.detach(); - List<String> expectedTokens = asList("@Raw(string.Join("\", \"", expectedTokens))"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return @state.Id; -</text>} -@helper matchToken(TokenType tokenType) -{<text>match_@(tokenType)(context, token)</text>} - -package gherkin; - -import java.io.Reader; -import java.io.StringReader; -import java.util.ArrayDeque; -import java.util.ArrayList; -import java.util.LinkedList; -import java.util.List; -import java.util.Queue; - -import static java.util.Arrays.asList; - -public class @Model.ParserClassName<T> { - public enum TokenType { - None, - @foreach(var rule in Model.RuleSet.TokenRules) - {<text> @rule.Name.Replace("#", ""), -</text>} ; - } - - public enum RuleType { - None, - @foreach(var rule in Model.RuleSet.Where(r => !r.TempRule)) - {<text> @rule.Name.Replace("#", "_"), // @rule.ToString(true) -</text>} ; - - public static RuleType cast(TokenType tokenType) { - return RuleType.values()[tokenType.ordinal()]; - } - } - - private final Builder<T> builder; - - public boolean stopAtFirstError; - - class ParserContext { - public final ITokenScanner tokenScanner; - public final ITokenMatcher tokenMatcher; - public final Queue<Token> tokenQueue; - public final List<ParserException> errors; - - ParserContext(ITokenScanner tokenScanner, ITokenMatcher tokenMatcher, Queue<Token> tokenQueue, List<ParserException> errors) { - this.tokenScanner = tokenScanner; - this.tokenMatcher = tokenMatcher; - this.tokenQueue = tokenQueue; - this.errors = errors; - } - } - - public Parser(Builder<T> builder) { - this.builder = builder; - } - - public T parse(String source) { - return parse(new StringReader(source)); - } - - public T parse(Reader source) { - return parse(new TokenScanner(source)); - } - - public T parse(ITokenScanner tokenScanner) { - return parse(tokenScanner, new TokenMatcher()); - } - - public T parse(String source, ITokenMatcher tokenMatcher) { - return parse(new StringReader(source), tokenMatcher); - } - - public T parse(Reader source, ITokenMatcher tokenMatcher) { - return parse(new TokenScanner(source), tokenMatcher); - } - - public T parse(ITokenScanner tokenScanner, ITokenMatcher tokenMatcher) { - builder.reset(); - tokenMatcher.reset(); - - ParserContext context = new ParserContext( - tokenScanner, - tokenMatcher, - new LinkedList<Token>(), - new ArrayList<ParserException>() - ); - - startRule(context, RuleType.@Model.RuleSet.StartRule.Name); - int state = 0; - Token token; - do { - token = readToken(context); - state = matchToken(state, token, context); - } while (!token.isEOF()); - - endRule(context, RuleType.@Model.RuleSet.StartRule.Name); - - if (context.errors.size() > 0) { - throw new ParserException.CompositeParserException(context.errors); - } - - return builder.getResult(); - } - - private void addError(ParserContext context, ParserException error) { - context.errors.add(error); - if (context.errors.size() > 10) - throw new ParserException.CompositeParserException(context.errors); - } - - private <V> V handleAstError(ParserContext context, final Func<V> action) { - return handleExternalError(context, action, null); - } - - private <V> V handleExternalError(ParserContext context, Func<V> action, V defaultValue) { - if (stopAtFirstError) { - return action.call(); - } - - try { - return action.call(); - } catch (ParserException.CompositeParserException compositeParserException) { - for (ParserException error : compositeParserException.errors) { - addError(context, error); - } - } catch (ParserException error) { - addError(context, error); - } - return defaultValue; - } - - private void build(final ParserContext context, final Token token) { - handleAstError(context, new Func<Void>() { - public Void call() { - builder.build(token); - return null; - } - }); - } - - private void startRule(final ParserContext context, final RuleType ruleType) { - handleAstError(context, new Func<Void>() { - public Void call() { - builder.startRule(ruleType); - return null; - } - }); - } - - private void endRule(final ParserContext context, final RuleType ruleType) { - handleAstError(context, new Func<Void>() { - public Void call() { - builder.endRule(ruleType); - return null; - } - }); - } - - private Token readToken(ParserContext context) { - return context.tokenQueue.size() > 0 ? context.tokenQueue.remove() : context.tokenScanner.read(); - } - -@foreach(var rule in Model.RuleSet.TokenRules) -{<text> - private boolean match_@(rule.Name.Replace("#", ""))(final ParserContext context, final Token token) { - @if (rule.Name != "#EOF") - { - @:if (token.isEOF()) return false; - } - return handleExternalError(context, new Func<Boolean>() { - public Boolean call() { - return context.tokenMatcher.match_@(rule.Name.Replace("#", ""))(token); - } - }, false); - }</text> -} - - private int matchToken(int state, Token token, ParserContext context) { - int newState; - switch(state) { - @foreach(var state in Model.States.Values.Where(s => !s.IsEndState)) - { - @:case @state.Id: - @:newState = matchTokenAt_@(state.Id)(token, context); - @:break; - } - default: - throw new IllegalStateException("Unknown state: " + state); - } - return newState; - } - -@foreach(var state in Model.States.Values.Where(s => !s.IsEndState)) -{ -<text> - // @Raw(state.Comment) - private int matchTokenAt_@(state.Id)(Token token, ParserContext context) { - @foreach(var transition in state.Transitions) - { - @:if (@matchToken(transition.TokenType)) - @:{ - if (transition.LookAheadHint != null) - { - @:if (lookahead_@(transition.LookAheadHint.Id)(context, token)) - @:{ - } - foreach(var production in transition.Productions) - { - @CallProduction(production) - } - @:return @transition.TargetState; - if (transition.LookAheadHint != null) - { - @:} - } - @:} - } - @HandleParserError(state.Transitions.Select(t => "#" + t.TokenType.ToString()).Distinct(), state) - } -</text> -} - -@foreach(var lookAheadHint in Model.RuleSet.LookAheadHints) -{ -<text> - private boolean lookahead_@(lookAheadHint.Id)(ParserContext context, Token currentToken) { - currentToken.detach(); - Token token; - Queue<Token> queue = new ArrayDeque<Token>(); - boolean match = false; - do - { - token = readToken(context); - token.detach(); - queue.add(token); - - if (false - @foreach(var tokenType in lookAheadHint.ExpectedTokens) - { - @:|| @matchToken(tokenType) - } - ) - { - match = true; - break; - } - } while (false - @foreach(var tokenType in lookAheadHint.Skip) - { - @:|| @matchToken(tokenType) - } - ); - - context.tokenQueue.addAll(queue); - - return match; - } -</text> -} - - public interface Builder<T> { - void build(Token token); - void startRule(RuleType ruleType); - void endRule(RuleType ruleType); - T getResult(); - void reset(); - } - - public interface ITokenScanner { - Token read(); - } - - public interface ITokenMatcher { - @foreach(var rule in Model.RuleSet.TokenRules) - { - @:boolean match_@(rule.Name.Replace("#", ""))(Token token); - } - void reset(); - } -} diff --git a/gherkin/java/gherkin.berp b/gherkin/java/gherkin.berp deleted file mode 100644 index b596cb0f8c..0000000000 --- a/gherkin/java/gherkin.berp +++ /dev/null @@ -1,38 +0,0 @@ -[ - Tokens -> #Empty,#Comment,#TagLine,#FeatureLine,#RuleLine,#BackgroundLine,#ScenarioLine,#ExamplesLine,#StepLine,#DocStringSeparator,#TableRow,#Language - IgnoredTokens -> #Comment,#Empty - ClassName -> Parser - Namespace -> Gherkin -] - -GherkinDocument! := Feature? -Feature! := FeatureHeader Background? ScenarioDefinition* Rule* -FeatureHeader! := #Language? Tags? #FeatureLine DescriptionHelper - -Rule! := RuleHeader Background? ScenarioDefinition* -RuleHeader! := #RuleLine DescriptionHelper - -Background! := #BackgroundLine DescriptionHelper Step* - -// we could avoid defining ScenarioDefinition, but that would require regular look-aheads, so worse performance -ScenarioDefinition! := Tags? Scenario - -Scenario! := #ScenarioLine DescriptionHelper Step* ExamplesDefinition* -// after the first "Data" block, interpreting a tag line is ambiguous (tagline of next examples or of next scenario) -// because of this, we need a lookahead hint, that connects the tag line to the next examples, if there is an examples block ahead -ExamplesDefinition! [#Empty|#Comment|#TagLine->#ExamplesLine]:= Tags? Examples -Examples! := #ExamplesLine DescriptionHelper ExamplesTable? -ExamplesTable! := #TableRow #TableRow* - -Step! := #StepLine StepArg? -StepArg := (DataTable | DocString) - -DataTable! := #TableRow+ -DocString! := #DocStringSeparator #Other* #DocStringSeparator - -Tags! := #TagLine+ - -// we need to explicitly mention comment, to avoid merging it into the description line's #Other token -// we also eat the leading empty lines, the tailing lines are not removed by the parser to avoid lookahead, this has to be done by the AST builder -DescriptionHelper := #Empty* Description? #Comment* -Description! := #Other+ diff --git a/gherkin/java/src/main/java/gherkin/AstNode.java b/gherkin/java/src/main/java/gherkin/AstNode.java deleted file mode 100644 index e52ba7f1a9..0000000000 --- a/gherkin/java/src/main/java/gherkin/AstNode.java +++ /dev/null @@ -1,50 +0,0 @@ -package gherkin; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import static gherkin.Parser.RuleType; -import static gherkin.Parser.TokenType; - -public class AstNode { - private final Map<RuleType, List<Object>> subItems = new HashMap<RuleType, List<Object>>(); - public final RuleType ruleType; - - public AstNode(RuleType ruleType) { - this.ruleType = ruleType; - } - - public void add(RuleType ruleType, Object obj) { - List<Object> items = subItems.get(ruleType); - if (items == null) { - items = new ArrayList<Object>(); - subItems.put(ruleType, items); - } - items.add(obj); - } - - public <T> T getSingle(RuleType ruleType, T defaultResult) { - List<Object> items = getItems(ruleType); - return (T) (items.isEmpty() ? defaultResult : items.get(0)); - } - - public <T> List<T> getItems(RuleType ruleType) { - List<T> items = (List<T>) subItems.get(ruleType); - if (items == null) { - return Collections.emptyList(); - } - return items; - } - - public Token getToken(TokenType tokenType) { - RuleType ruleType = RuleType.cast(tokenType); - return getSingle(ruleType, new Token(null, null)); - } - - public List<Token> getTokens(TokenType tokenType) { - return getItems(RuleType.cast(tokenType)); - } -} diff --git a/gherkin/java/src/main/java/gherkin/Func.java b/gherkin/java/src/main/java/gherkin/Func.java deleted file mode 100644 index fd6d635a7a..0000000000 --- a/gherkin/java/src/main/java/gherkin/Func.java +++ /dev/null @@ -1,5 +0,0 @@ -package gherkin; - -public interface Func<V> { - V call(); -} diff --git a/gherkin/java/src/main/java/gherkin/GenerateTokens.java b/gherkin/java/src/main/java/gherkin/GenerateTokens.java deleted file mode 100644 index f2839cafcc..0000000000 --- a/gherkin/java/src/main/java/gherkin/GenerateTokens.java +++ /dev/null @@ -1,22 +0,0 @@ -package gherkin; - -import gherkin.cli.Stdio; - -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.InputStreamReader; -import java.io.UnsupportedEncodingException; - -public class GenerateTokens { - public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException { - TokenFormatterBuilder builder = new TokenFormatterBuilder(); - Parser<String> parser = new Parser<>(builder); - TokenMatcher matcher = new TokenMatcher(); - for (String fileName : args) { - InputStreamReader in = new InputStreamReader(new FileInputStream(fileName), "UTF-8"); - String result = parser.parse(in, matcher); - Stdio.out.print(result); - Stdio.out.flush(); // print doesn't autoflush - } - } -} diff --git a/gherkin/java/src/main/java/gherkin/GherkinDialect.java b/gherkin/java/src/main/java/gherkin/GherkinDialect.java deleted file mode 100644 index f30c97ce84..0000000000 --- a/gherkin/java/src/main/java/gherkin/GherkinDialect.java +++ /dev/null @@ -1,75 +0,0 @@ -package gherkin; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import static java.util.Collections.singletonList; - -public class GherkinDialect { - private final Map<String, List<String>> keywords; - private String language; - - public GherkinDialect(String language, Map<String, List<String>> keywords) { - this.language = language; - this.keywords = keywords; - } - - public List<String> getFeatureKeywords() { - return keywords.get("feature"); - } - - public List<String> getScenarioKeywords() { - return keywords.get("scenario"); - } - - public List<String> getStepKeywords() { - List<String> result = new ArrayList<>(); - result.addAll(getGivenKeywords()); - result.addAll(getWhenKeywords()); - result.addAll(getThenKeywords()); - result.addAll(getAndKeywords()); - result.addAll(getButKeywords()); - return result; - } - - public List<String> getBackgroundKeywords() { - return keywords.get("background"); - } - - public List<String> getScenarioOutlineKeywords() { - return keywords.get("scenarioOutline"); - } - - public List<String> getExamplesKeywords() { - return keywords.get("examples"); - } - - public List<String> getGivenKeywords() { - return keywords.get("given"); - } - - public List<String> getWhenKeywords() { - return keywords.get("when"); - } - - public List<String> getThenKeywords() { - return keywords.get("then"); - } - - public List<String> getAndKeywords() { - return keywords.get("and"); - } - - public List<String> getButKeywords() { - return keywords.get("but"); - } - - public List<String> getRuleKeywords() { - return keywords.get("rule"); - } - - public String getLanguage() { - return language; - } -} diff --git a/gherkin/java/src/main/java/gherkin/GherkinDialectProvider.java b/gherkin/java/src/main/java/gherkin/GherkinDialectProvider.java deleted file mode 100644 index 4e52e731bd..0000000000 --- a/gherkin/java/src/main/java/gherkin/GherkinDialectProvider.java +++ /dev/null @@ -1,57 +0,0 @@ -package gherkin; - -import io.cucumber.messages.com.google.gson.Gson; - -import java.io.InputStreamReader; -import java.io.Reader; -import java.io.UnsupportedEncodingException; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import static java.util.Collections.sort; -import static java.util.Collections.unmodifiableList; - -public class GherkinDialectProvider implements IGherkinDialectProvider { - private static Map<String, Map<String, List<String>>> DIALECTS; - private final String default_dialect_name; - - static { - Gson gson = new Gson(); - try { - Reader dialects = new InputStreamReader(GherkinDialectProvider.class.getResourceAsStream("/gherkin/gherkin-languages.json"), "UTF-8"); - DIALECTS = gson.fromJson(dialects, Map.class); - } catch (UnsupportedEncodingException e) { - throw new RuntimeException(e); - } - } - - public GherkinDialectProvider(String default_dialect_name) { - this.default_dialect_name = default_dialect_name; - } - - public GherkinDialectProvider() { - this("en"); - } - - public GherkinDialect getDefaultDialect() { - return getDialect(default_dialect_name, null); - } - - @Override - public GherkinDialect getDialect(String language, Location location) { - Map<String, List<String>> map = DIALECTS.get(language); - if (map == null) { - throw new ParserException.NoSuchLanguageException(language, location); - } - - return new GherkinDialect(language, map); - } - - @Override - public List<String> getLanguages() { - List<String> languages = new ArrayList<String>(DIALECTS.keySet()); - sort(languages); - return unmodifiableList(languages); - } -} diff --git a/gherkin/java/src/main/java/gherkin/GherkinDocumentBuilder.java b/gherkin/java/src/main/java/gherkin/GherkinDocumentBuilder.java deleted file mode 100644 index 207fa7bfb8..0000000000 --- a/gherkin/java/src/main/java/gherkin/GherkinDocumentBuilder.java +++ /dev/null @@ -1,337 +0,0 @@ -package gherkin; - -import io.cucumber.messages.Messages.Background; -import io.cucumber.messages.Messages.Comment; -import io.cucumber.messages.Messages.DataTable; -import io.cucumber.messages.Messages.DocString; -import io.cucumber.messages.Messages.Examples; -import io.cucumber.messages.Messages.Feature; -import io.cucumber.messages.Messages.FeatureChild; -import io.cucumber.messages.Messages.GherkinDocument; -import io.cucumber.messages.Messages.Location; -import io.cucumber.messages.Messages.Rule; -import io.cucumber.messages.Messages.RuleChild; -import io.cucumber.messages.Messages.Scenario; -import io.cucumber.messages.Messages.Step; -import io.cucumber.messages.Messages.TableCell; -import io.cucumber.messages.Messages.TableRow; -import io.cucumber.messages.Messages.Tag; - -import java.util.ArrayDeque; -import java.util.ArrayList; -import java.util.Deque; -import java.util.List; - -import static gherkin.Parser.Builder; -import static gherkin.Parser.RuleType; -import static gherkin.Parser.TokenType; -import static gherkin.StringUtils.join; - -public class GherkinDocumentBuilder implements Builder<GherkinDocument.Builder> { - private Deque<AstNode> stack; - private GherkinDocument.Builder gherkinDocumentBuilder; - - public GherkinDocumentBuilder() { - reset(); - } - - @Override - public void reset() { - stack = new ArrayDeque<>(); - stack.push(new AstNode(RuleType.None)); - gherkinDocumentBuilder = GherkinDocument.newBuilder(); - } - - private AstNode currentNode() { - return stack.peek(); - } - - @Override - public void build(Token token) { - RuleType ruleType = RuleType.cast(token.matchedType); - if (token.matchedType == TokenType.Comment) { - gherkinDocumentBuilder.addComments(Comment.newBuilder() - .setLocation(getLocation(token, 0)) - .setText(token.matchedText) - ); - } else { - currentNode().add(ruleType, token); - } - } - - @Override - public void startRule(RuleType ruleType) { - stack.push(new AstNode(ruleType)); - } - - @Override - public void endRule(RuleType ruleType) { - AstNode node = stack.pop(); - Object transformedNode = getTransformedNode(node); - currentNode().add(node.ruleType, transformedNode); - } - - private Object getTransformedNode(AstNode node) { - switch (node.ruleType) { - case Step: { - Step.Builder builder = Step.newBuilder(); - Token stepLine = node.getToken(TokenType.StepLine); - builder - .setLocation(getLocation(stepLine, 0)) - .setKeyword(stepLine.matchedKeyword) - .setText(stepLine.matchedText); - - DataTable dataTable = node.getSingle(RuleType.DataTable, null); - if (dataTable != null) - builder.setDataTable(dataTable); - DocString docString = node.getSingle(RuleType.DocString, null); - if (docString != null) - builder.setDocString(docString); - return builder.build(); - } - case DocString: { - Token separatorToken = node.getTokens(TokenType.DocStringSeparator).get(0); - String contentType = separatorToken.matchedText.length() > 0 ? separatorToken.matchedText : null; - List<Token> lineTokens = node.getTokens(TokenType.Other); - StringBuilder content = new StringBuilder(); - boolean newLine = false; - for (Token lineToken : lineTokens) { - if (newLine) content.append("\n"); - newLine = true; - content.append(lineToken.matchedText); - } - DocString.Builder builder = DocString.newBuilder(); - if (contentType != null) - builder.setContentType(contentType); - - return builder - .setLocation(getLocation(separatorToken, 0)) - .setContent(content.toString()) - .setDelimiter(separatorToken.matchedKeyword) - .build(); - } - case DataTable: { - List<TableRow> rows = getTableRows(node); - return DataTable.newBuilder() - .setLocation(rows.get(0).getLocation()) - .addAllRows(rows) - .build(); - } - case Background: { - Token backgroundLine = node.getToken(TokenType.BackgroundLine); - String description = getDescription(node); - List<Step> steps = getSteps(node); - Background.Builder builder = Background.newBuilder(); - if (description != null) - builder.setDescription(description); - - return builder - .setLocation(getLocation(backgroundLine, 0)) - .setKeyword(backgroundLine.matchedKeyword) - .setName(backgroundLine.matchedText) - .addAllSteps(steps) - .build(); - } - case ScenarioDefinition: { - List<Tag> tags = getTags(node); - AstNode scenarioNode = node.getSingle(RuleType.Scenario, null); - - Token scenarioLine = scenarioNode.getToken(TokenType.ScenarioLine); - String description = getDescription(scenarioNode); - List<Step> steps = getSteps(scenarioNode); - List<Examples> examplesList = scenarioNode.getItems(RuleType.ExamplesDefinition); - - Scenario.Builder builder = Scenario.newBuilder(); - if (description != null) builder.setDescription(description); - - return builder - .setLocation(getLocation(scenarioLine, 0)) - .setKeyword(scenarioLine.matchedKeyword) - .setName(scenarioLine.matchedText) - .addAllTags(tags) - .addAllSteps(steps) - .addAllExamples(examplesList) - .build(); - } - case ExamplesDefinition: { - Examples.Builder builder = Examples.newBuilder(); - - List<Tag> tags = getTags(node); - AstNode examplesNode = node.getSingle(RuleType.Examples, null); - Token examplesLine = examplesNode.getToken(TokenType.ExamplesLine); - String description = getDescription(examplesNode); - List<TableRow> rows = examplesNode.getSingle(RuleType.ExamplesTable, null); - TableRow tableHeader = rows != null && !rows.isEmpty() ? rows.get(0) : null; - List<TableRow> tableBody = rows != null && !rows.isEmpty() ? rows.subList(1, rows.size()) : null; - - if (tableHeader != null) - builder.setTableHeader(tableHeader); - if (tableBody != null) - builder.addAllTableBody(tableBody); - - builder - .setLocation(getLocation(examplesLine, 0)) - .setKeyword(examplesLine.matchedKeyword) - .setName(examplesLine.matchedText) - .addAllTags(tags); - - if (description != null) - builder.setDescription(description); - - return builder.build(); - } - case ExamplesTable: { - return getTableRows(node); - } - case Description: { - List<Token> lineTokens = node.getTokens(TokenType.Other); - // Trim trailing empty lines - int end = lineTokens.size(); - while (end > 0 && lineTokens.get(end - 1).matchedText.matches("\\s*")) { - end--; - } - lineTokens = lineTokens.subList(0, end); - - return join(new StringUtils.ToString<Token>() { - @Override - public String toString(Token t) { - return t.matchedText; - } - }, "\n", lineTokens); - } - case Feature: { - Feature.Builder builder = Feature.newBuilder(); - AstNode header = node.getSingle(RuleType.FeatureHeader, new AstNode(RuleType.FeatureHeader)); - if (header == null) return null; - List<Tag> tags = getTags(header); - Token featureLine = header.getToken(TokenType.FeatureLine); - if (featureLine == null) return null; - - Background background = node.getSingle(RuleType.Background, null); - if (background != null) { - builder.addChildren(FeatureChild.newBuilder().setBackground(background).build()); - } - for (Scenario scenario : node.<Scenario>getItems(RuleType.ScenarioDefinition)) { - builder.addChildren(FeatureChild.newBuilder().setScenario(scenario).build()); - } - for (Rule rule : node.<Rule>getItems(RuleType.Rule)) { - builder.addChildren(FeatureChild.newBuilder().setRule(rule).build()); - } - String description = getDescription(header); - if (description != null) builder.setDescription(description); - if (featureLine.matchedGherkinDialect == null) return null; - String language = featureLine.matchedGherkinDialect.getLanguage(); - - return builder - .addAllTags(tags) - .setLocation(getLocation(featureLine, 0)) - .setLanguage(language) - .setKeyword(featureLine.matchedKeyword) - .setName(featureLine.matchedText) - .build(); - } - case Rule: { - Rule.Builder builder = Rule.newBuilder(); - AstNode header = node.getSingle(RuleType.RuleHeader, new AstNode(RuleType.RuleHeader)); - if (header == null) return null; - Token ruleLine = header.getToken(TokenType.RuleLine); - if (ruleLine == null) return null; - - String description = getDescription(header); - if (description != null) - builder.setDescription(description); - Background background = node.getSingle(RuleType.Background, null); - if (background != null) { - builder.addChildren(RuleChild.newBuilder().setBackground(background).build()); - } - List<Scenario> scenarios = node.getItems(RuleType.ScenarioDefinition); - for (Scenario scenario : scenarios) { - builder.addChildren(RuleChild.newBuilder().setScenario(scenario).build()); - } - - return builder - .setLocation(getLocation(ruleLine, 0)) - .setKeyword(ruleLine.matchedKeyword) - .setName(ruleLine.matchedText) - .build(); - - } - case GherkinDocument: { - Feature feature = node.getSingle(RuleType.Feature, null); - - if (feature != null) - gherkinDocumentBuilder.setFeature(feature); - - return gherkinDocumentBuilder; - } - - } - return node; - } - - private List<TableRow> getTableRows(AstNode node) { - List<TableRow> rows = new ArrayList<>(); - - for (Token token : node.getTokens(TokenType.TableRow)) { - rows.add(TableRow.newBuilder().setLocation(getLocation(token, 0)).addAllCells(getCells(token)).build()); - } - ensureCellCount(rows); - return rows; - } - - private void ensureCellCount(List<TableRow> rows) { - if (rows.isEmpty()) return; - - int cellCount = rows.get(0).getCellsCount(); - for (TableRow row : rows) { - if (row.getCellsCount() != cellCount) { - gherkin.Location location = new gherkin.Location(row.getLocation().getLine(), row.getLocation().getColumn()); - throw new ParserException.AstBuilderException("inconsistent cell count within the table", location); - } - } - } - - private List<TableCell> getCells(Token token) { - List<TableCell> cells = new ArrayList<>(); - for (GherkinLineSpan cellItem : token.mathcedItems) { - cells.add(TableCell.newBuilder().setLocation(getLocation(token, cellItem.column)).setValue(cellItem.text).build()); - } - return cells; - } - - private List<Step> getSteps(AstNode node) { - return node.getItems(RuleType.Step); - } - - private Location getLocation(Token token, int column) { - column = column == 0 ? token.location.getColumn() : column; - return Location.newBuilder() - .setLine(token.location.getLine()) - .setColumn(column) - .build(); - } - - private String getDescription(AstNode node) { - return node.getSingle(RuleType.Description, null); - } - - private List<Tag> getTags(AstNode node) { - AstNode tagsNode = node.getSingle(RuleType.Tags, new AstNode(RuleType.None)); - if (tagsNode == null) - return new ArrayList<>(); - - List<Token> tokens = tagsNode.getTokens(TokenType.TagLine); - List<Tag> tags = new ArrayList<>(); - for (Token token : tokens) { - for (GherkinLineSpan tagItem : token.mathcedItems) { - tags.add(Tag.newBuilder().setLocation(getLocation(token, tagItem.column)).setName(tagItem.text).build()); - } - } - return tags; - } - - @Override - public GherkinDocument.Builder getResult() { - return currentNode().getSingle(RuleType.GherkinDocument, null); - } -} diff --git a/gherkin/java/src/main/java/gherkin/GherkinLanguageConstants.java b/gherkin/java/src/main/java/gherkin/GherkinLanguageConstants.java deleted file mode 100644 index 7b6c649d61..0000000000 --- a/gherkin/java/src/main/java/gherkin/GherkinLanguageConstants.java +++ /dev/null @@ -1,10 +0,0 @@ -package gherkin; - -public interface GherkinLanguageConstants { - String TAG_PREFIX = "@"; - String COMMENT_PREFIX = "#"; - String TITLE_KEYWORD_SEPARATOR = ":"; - String TABLE_CELL_SEPARATOR = "|"; - String DOCSTRING_SEPARATOR = "\"\"\""; - String DOCSTRING_ALTERNATIVE_SEPARATOR = "```"; -} diff --git a/gherkin/java/src/main/java/gherkin/GherkinLine.java b/gherkin/java/src/main/java/gherkin/GherkinLine.java deleted file mode 100644 index 2c7ba6763a..0000000000 --- a/gherkin/java/src/main/java/gherkin/GherkinLine.java +++ /dev/null @@ -1,119 +0,0 @@ -package gherkin; - -import java.util.ArrayList; -import java.util.List; -import java.util.Scanner; - -import static gherkin.StringUtils.ltrim; -import static gherkin.SymbolCounter.countSymbols; - -public class GherkinLine implements IGherkinLine { - private final String lineText; - private final String trimmedLineText; - - public GherkinLine(String lineText) { - this.lineText = lineText; - this.trimmedLineText = ltrim(lineText); - } - - @Override - public Integer indent() { - return countSymbols(lineText) - countSymbols(trimmedLineText); - } - - @Override - public void detach() { - - } - - @Override - public String getLineText(int indentToRemove) { - if (indentToRemove < 0 || indentToRemove > indent()) - return trimmedLineText; - return lineText.substring(indentToRemove); - } - - @Override - public boolean isEmpty() { - return trimmedLineText.length() == 0; - } - - @Override - public boolean startsWith(String prefix) { - return trimmedLineText.startsWith(prefix); - } - - @Override - public String getRestTrimmed(int length) { - return trimmedLineText.substring(length).trim(); - } - - @Override - public List<GherkinLineSpan> getTags() { - return getSpans("\\s+"); - } - - @Override - public boolean startsWithTitleKeyword(String text) { - int textLength = text.length(); - return trimmedLineText.length() > textLength && - trimmedLineText.startsWith(text) && - trimmedLineText.substring(textLength, textLength + GherkinLanguageConstants.TITLE_KEYWORD_SEPARATOR.length()) - .equals(GherkinLanguageConstants.TITLE_KEYWORD_SEPARATOR); - // TODO aslak: extract startsWithFrom method for clarity - } - - @Override - public List<GherkinLineSpan> getTableCells() { - List<GherkinLineSpan> lineSpans = new ArrayList<GherkinLineSpan>(); - StringBuilder cell = new StringBuilder(); - boolean beforeFirst = true; - int startCol = 0; - for (int col = 0; col < trimmedLineText.length(); col++) { - char c = trimmedLineText.charAt(col); - if (c == '|') { - if (beforeFirst) { - // Skip the first empty span - beforeFirst = false; - } else { - int contentStart = 0; - while (contentStart < cell.length() && Character.isWhitespace(cell.charAt(contentStart))) { - contentStart++; - } - if (contentStart == cell.length()) { - contentStart = 0; - } - lineSpans.add(new GherkinLineSpan(indent() + startCol + contentStart + 2, cell.toString().trim())); - startCol = col; - } - cell = new StringBuilder(); - } else if (c == '\\') { - col++; - c = trimmedLineText.charAt(col); - if (c == 'n') { - cell.append('\n'); - } else { - if (c != '|' && c != '\\') { - cell.append('\\'); - } - cell.append(c); - } - } else { - cell.append(c); - } - } - - return lineSpans; - } - - private List<GherkinLineSpan> getSpans(String delimiter) { - List<GherkinLineSpan> lineSpans = new ArrayList<GherkinLineSpan>(); - Scanner scanner = new Scanner(trimmedLineText).useDelimiter(delimiter); - while (scanner.hasNext()) { - String cell = scanner.next(); - int column = scanner.match().start() + indent() + 1; - lineSpans.add(new GherkinLineSpan(column, cell)); - } - return lineSpans; - } -} diff --git a/gherkin/java/src/main/java/gherkin/GherkinLineSpan.java b/gherkin/java/src/main/java/gherkin/GherkinLineSpan.java deleted file mode 100644 index bc1297eeef..0000000000 --- a/gherkin/java/src/main/java/gherkin/GherkinLineSpan.java +++ /dev/null @@ -1,30 +0,0 @@ -package gherkin; - -public class GherkinLineSpan { - // One-based line position - public final int column; - - // text part of the line - public final String text; - - public GherkinLineSpan(int column, String text) { - this.column = column; - this.text = text; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - GherkinLineSpan that = (GherkinLineSpan) o; - return column == that.column && text.equals(that.text); - - } - - @Override - public int hashCode() { - int result = column; - result = 31 * result + text.hashCode(); - return result; - } -} diff --git a/gherkin/java/src/main/java/gherkin/IGherkinDialectProvider.java b/gherkin/java/src/main/java/gherkin/IGherkinDialectProvider.java deleted file mode 100644 index 1c222ab9a8..0000000000 --- a/gherkin/java/src/main/java/gherkin/IGherkinDialectProvider.java +++ /dev/null @@ -1,11 +0,0 @@ -package gherkin; - -import java.util.List; - -public interface IGherkinDialectProvider { - GherkinDialect getDefaultDialect(); - - GherkinDialect getDialect(String language, Location location); - - List<String> getLanguages(); -} diff --git a/gherkin/java/src/main/java/gherkin/IGherkinLine.java b/gherkin/java/src/main/java/gherkin/IGherkinLine.java deleted file mode 100644 index 3327dd4597..0000000000 --- a/gherkin/java/src/main/java/gherkin/IGherkinLine.java +++ /dev/null @@ -1,23 +0,0 @@ -package gherkin; - -import java.util.List; - -public interface IGherkinLine { - Integer indent(); - - void detach(); - - String getLineText(int indentToRemove); - - boolean isEmpty(); - - boolean startsWith(String prefix); - - String getRestTrimmed(int length); - - List<GherkinLineSpan> getTags(); - - boolean startsWithTitleKeyword(String keyword); - - List<GherkinLineSpan> getTableCells(); -} diff --git a/gherkin/java/src/main/java/gherkin/Location.java b/gherkin/java/src/main/java/gherkin/Location.java deleted file mode 100644 index 9dbe50ea2d..0000000000 --- a/gherkin/java/src/main/java/gherkin/Location.java +++ /dev/null @@ -1,19 +0,0 @@ -package gherkin; - -public class Location { - private final int line; - private final int column; - - public Location(int line, int column) { - this.line = line; - this.column = column; - } - - public int getLine() { - return line; - } - - public int getColumn() { - return column; - } -} diff --git a/gherkin/java/src/main/java/gherkin/Parser.java b/gherkin/java/src/main/java/gherkin/Parser.java deleted file mode 100644 index 4fbe902be2..0000000000 --- a/gherkin/java/src/main/java/gherkin/Parser.java +++ /dev/null @@ -1,4288 +0,0 @@ -// This code was generated by Berp (http://https://github.com/gasparnagy/berp/). -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. - - -package gherkin; - -import java.io.Reader; -import java.io.StringReader; -import java.util.ArrayDeque; -import java.util.ArrayList; -import java.util.LinkedList; -import java.util.List; -import java.util.Queue; - -import static java.util.Arrays.asList; - -public class Parser<T> { - public enum TokenType { - None, - EOF, - Empty, - Comment, - TagLine, - FeatureLine, - RuleLine, - BackgroundLine, - ScenarioLine, - ExamplesLine, - StepLine, - DocStringSeparator, - TableRow, - Language, - Other, - ; - } - - public enum RuleType { - None, - _EOF, // #EOF - _Empty, // #Empty - _Comment, // #Comment - _TagLine, // #TagLine - _FeatureLine, // #FeatureLine - _RuleLine, // #RuleLine - _BackgroundLine, // #BackgroundLine - _ScenarioLine, // #ScenarioLine - _ExamplesLine, // #ExamplesLine - _StepLine, // #StepLine - _DocStringSeparator, // #DocStringSeparator - _TableRow, // #TableRow - _Language, // #Language - _Other, // #Other - GherkinDocument, // GherkinDocument! := Feature? - Feature, // Feature! := FeatureHeader Background? ScenarioDefinition* Rule* - FeatureHeader, // FeatureHeader! := #Language? Tags? #FeatureLine DescriptionHelper - Rule, // Rule! := RuleHeader Background? ScenarioDefinition* - RuleHeader, // RuleHeader! := #RuleLine DescriptionHelper - Background, // Background! := #BackgroundLine DescriptionHelper Step* - ScenarioDefinition, // ScenarioDefinition! := Tags? Scenario - Scenario, // Scenario! := #ScenarioLine DescriptionHelper Step* ExamplesDefinition* - ExamplesDefinition, // ExamplesDefinition! [#Empty|#Comment|#TagLine->#ExamplesLine] := Tags? Examples - Examples, // Examples! := #ExamplesLine DescriptionHelper ExamplesTable? - ExamplesTable, // ExamplesTable! := #TableRow #TableRow* - Step, // Step! := #StepLine StepArg? - StepArg, // StepArg := (DataTable | DocString) - DataTable, // DataTable! := #TableRow+ - DocString, // DocString! := #DocStringSeparator #Other* #DocStringSeparator - Tags, // Tags! := #TagLine+ - DescriptionHelper, // DescriptionHelper := #Empty* Description? #Comment* - Description, // Description! := #Other+ - ; - - public static RuleType cast(TokenType tokenType) { - return RuleType.values()[tokenType.ordinal()]; - } - } - - private final Builder<T> builder; - - public boolean stopAtFirstError; - - class ParserContext { - public final ITokenScanner tokenScanner; - public final ITokenMatcher tokenMatcher; - public final Queue<Token> tokenQueue; - public final List<ParserException> errors; - - ParserContext(ITokenScanner tokenScanner, ITokenMatcher tokenMatcher, Queue<Token> tokenQueue, List<ParserException> errors) { - this.tokenScanner = tokenScanner; - this.tokenMatcher = tokenMatcher; - this.tokenQueue = tokenQueue; - this.errors = errors; - } - } - - public Parser(Builder<T> builder) { - this.builder = builder; - } - - public T parse(String source) { - return parse(new StringReader(source)); - } - - public T parse(Reader source) { - return parse(new TokenScanner(source)); - } - - public T parse(ITokenScanner tokenScanner) { - return parse(tokenScanner, new TokenMatcher()); - } - - public T parse(String source, ITokenMatcher tokenMatcher) { - return parse(new StringReader(source), tokenMatcher); - } - - public T parse(Reader source, ITokenMatcher tokenMatcher) { - return parse(new TokenScanner(source), tokenMatcher); - } - - public T parse(ITokenScanner tokenScanner, ITokenMatcher tokenMatcher) { - builder.reset(); - tokenMatcher.reset(); - - ParserContext context = new ParserContext( - tokenScanner, - tokenMatcher, - new LinkedList<Token>(), - new ArrayList<ParserException>() - ); - - startRule(context, RuleType.GherkinDocument); - int state = 0; - Token token; - do { - token = readToken(context); - state = matchToken(state, token, context); - } while (!token.isEOF()); - - endRule(context, RuleType.GherkinDocument); - - if (context.errors.size() > 0) { - throw new ParserException.CompositeParserException(context.errors); - } - - return builder.getResult(); - } - - private void addError(ParserContext context, ParserException error) { - context.errors.add(error); - if (context.errors.size() > 10) - throw new ParserException.CompositeParserException(context.errors); - } - - private <V> V handleAstError(ParserContext context, final Func<V> action) { - return handleExternalError(context, action, null); - } - - private <V> V handleExternalError(ParserContext context, Func<V> action, V defaultValue) { - if (stopAtFirstError) { - return action.call(); - } - - try { - return action.call(); - } catch (ParserException.CompositeParserException compositeParserException) { - for (ParserException error : compositeParserException.errors) { - addError(context, error); - } - } catch (ParserException error) { - addError(context, error); - } - return defaultValue; - } - - private void build(final ParserContext context, final Token token) { - handleAstError(context, new Func<Void>() { - public Void call() { - builder.build(token); - return null; - } - }); - } - - private void startRule(final ParserContext context, final RuleType ruleType) { - handleAstError(context, new Func<Void>() { - public Void call() { - builder.startRule(ruleType); - return null; - } - }); - } - - private void endRule(final ParserContext context, final RuleType ruleType) { - handleAstError(context, new Func<Void>() { - public Void call() { - builder.endRule(ruleType); - return null; - } - }); - } - - private Token readToken(ParserContext context) { - return context.tokenQueue.size() > 0 ? context.tokenQueue.remove() : context.tokenScanner.read(); - } - - - private boolean match_EOF(final ParserContext context, final Token token) { - return handleExternalError(context, new Func<Boolean>() { - public Boolean call() { - return context.tokenMatcher.match_EOF(token); - } - }, false); - } - - private boolean match_Empty(final ParserContext context, final Token token) { - if (token.isEOF()) return false; - return handleExternalError(context, new Func<Boolean>() { - public Boolean call() { - return context.tokenMatcher.match_Empty(token); - } - }, false); - } - - private boolean match_Comment(final ParserContext context, final Token token) { - if (token.isEOF()) return false; - return handleExternalError(context, new Func<Boolean>() { - public Boolean call() { - return context.tokenMatcher.match_Comment(token); - } - }, false); - } - - private boolean match_TagLine(final ParserContext context, final Token token) { - if (token.isEOF()) return false; - return handleExternalError(context, new Func<Boolean>() { - public Boolean call() { - return context.tokenMatcher.match_TagLine(token); - } - }, false); - } - - private boolean match_FeatureLine(final ParserContext context, final Token token) { - if (token.isEOF()) return false; - return handleExternalError(context, new Func<Boolean>() { - public Boolean call() { - return context.tokenMatcher.match_FeatureLine(token); - } - }, false); - } - - private boolean match_RuleLine(final ParserContext context, final Token token) { - if (token.isEOF()) return false; - return handleExternalError(context, new Func<Boolean>() { - public Boolean call() { - return context.tokenMatcher.match_RuleLine(token); - } - }, false); - } - - private boolean match_BackgroundLine(final ParserContext context, final Token token) { - if (token.isEOF()) return false; - return handleExternalError(context, new Func<Boolean>() { - public Boolean call() { - return context.tokenMatcher.match_BackgroundLine(token); - } - }, false); - } - - private boolean match_ScenarioLine(final ParserContext context, final Token token) { - if (token.isEOF()) return false; - return handleExternalError(context, new Func<Boolean>() { - public Boolean call() { - return context.tokenMatcher.match_ScenarioLine(token); - } - }, false); - } - - private boolean match_ExamplesLine(final ParserContext context, final Token token) { - if (token.isEOF()) return false; - return handleExternalError(context, new Func<Boolean>() { - public Boolean call() { - return context.tokenMatcher.match_ExamplesLine(token); - } - }, false); - } - - private boolean match_StepLine(final ParserContext context, final Token token) { - if (token.isEOF()) return false; - return handleExternalError(context, new Func<Boolean>() { - public Boolean call() { - return context.tokenMatcher.match_StepLine(token); - } - }, false); - } - - private boolean match_DocStringSeparator(final ParserContext context, final Token token) { - if (token.isEOF()) return false; - return handleExternalError(context, new Func<Boolean>() { - public Boolean call() { - return context.tokenMatcher.match_DocStringSeparator(token); - } - }, false); - } - - private boolean match_TableRow(final ParserContext context, final Token token) { - if (token.isEOF()) return false; - return handleExternalError(context, new Func<Boolean>() { - public Boolean call() { - return context.tokenMatcher.match_TableRow(token); - } - }, false); - } - - private boolean match_Language(final ParserContext context, final Token token) { - if (token.isEOF()) return false; - return handleExternalError(context, new Func<Boolean>() { - public Boolean call() { - return context.tokenMatcher.match_Language(token); - } - }, false); - } - - private boolean match_Other(final ParserContext context, final Token token) { - if (token.isEOF()) return false; - return handleExternalError(context, new Func<Boolean>() { - public Boolean call() { - return context.tokenMatcher.match_Other(token); - } - }, false); - } - - private int matchToken(int state, Token token, ParserContext context) { - int newState; - switch(state) { - case 0: - newState = matchTokenAt_0(token, context); - break; - case 1: - newState = matchTokenAt_1(token, context); - break; - case 2: - newState = matchTokenAt_2(token, context); - break; - case 3: - newState = matchTokenAt_3(token, context); - break; - case 4: - newState = matchTokenAt_4(token, context); - break; - case 5: - newState = matchTokenAt_5(token, context); - break; - case 6: - newState = matchTokenAt_6(token, context); - break; - case 7: - newState = matchTokenAt_7(token, context); - break; - case 8: - newState = matchTokenAt_8(token, context); - break; - case 9: - newState = matchTokenAt_9(token, context); - break; - case 10: - newState = matchTokenAt_10(token, context); - break; - case 11: - newState = matchTokenAt_11(token, context); - break; - case 12: - newState = matchTokenAt_12(token, context); - break; - case 13: - newState = matchTokenAt_13(token, context); - break; - case 14: - newState = matchTokenAt_14(token, context); - break; - case 15: - newState = matchTokenAt_15(token, context); - break; - case 16: - newState = matchTokenAt_16(token, context); - break; - case 17: - newState = matchTokenAt_17(token, context); - break; - case 18: - newState = matchTokenAt_18(token, context); - break; - case 19: - newState = matchTokenAt_19(token, context); - break; - case 20: - newState = matchTokenAt_20(token, context); - break; - case 21: - newState = matchTokenAt_21(token, context); - break; - case 22: - newState = matchTokenAt_22(token, context); - break; - case 23: - newState = matchTokenAt_23(token, context); - break; - case 24: - newState = matchTokenAt_24(token, context); - break; - case 25: - newState = matchTokenAt_25(token, context); - break; - case 26: - newState = matchTokenAt_26(token, context); - break; - case 27: - newState = matchTokenAt_27(token, context); - break; - case 28: - newState = matchTokenAt_28(token, context); - break; - case 29: - newState = matchTokenAt_29(token, context); - break; - case 30: - newState = matchTokenAt_30(token, context); - break; - case 31: - newState = matchTokenAt_31(token, context); - break; - case 32: - newState = matchTokenAt_32(token, context); - break; - case 33: - newState = matchTokenAt_33(token, context); - break; - case 34: - newState = matchTokenAt_34(token, context); - break; - case 35: - newState = matchTokenAt_35(token, context); - break; - case 36: - newState = matchTokenAt_36(token, context); - break; - case 37: - newState = matchTokenAt_37(token, context); - break; - case 38: - newState = matchTokenAt_38(token, context); - break; - case 39: - newState = matchTokenAt_39(token, context); - break; - case 40: - newState = matchTokenAt_40(token, context); - break; - case 42: - newState = matchTokenAt_42(token, context); - break; - case 43: - newState = matchTokenAt_43(token, context); - break; - case 44: - newState = matchTokenAt_44(token, context); - break; - case 45: - newState = matchTokenAt_45(token, context); - break; - case 46: - newState = matchTokenAt_46(token, context); - break; - case 47: - newState = matchTokenAt_47(token, context); - break; - case 48: - newState = matchTokenAt_48(token, context); - break; - case 49: - newState = matchTokenAt_49(token, context); - break; - default: - throw new IllegalStateException("Unknown state: " + state); - } - return newState; - } - - - // Start - private int matchTokenAt_0(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - build(context, token); - return 41; - } - if (match_Language(context, token)) - { - startRule(context, RuleType.Feature); - startRule(context, RuleType.FeatureHeader); - build(context, token); - return 1; - } - if (match_TagLine(context, token)) - { - startRule(context, RuleType.Feature); - startRule(context, RuleType.FeatureHeader); - startRule(context, RuleType.Tags); - build(context, token); - return 2; - } - if (match_FeatureLine(context, token)) - { - startRule(context, RuleType.Feature); - startRule(context, RuleType.FeatureHeader); - build(context, token); - return 3; - } - if (match_Comment(context, token)) - { - build(context, token); - return 0; - } - if (match_Empty(context, token)) - { - build(context, token); - return 0; - } - - final String stateComment = "State: 0 - Start"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#Language", "#TagLine", "#FeatureLine", "#Comment", "#Empty"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 0; - - } - - - // GherkinDocument:0>Feature:0>FeatureHeader:0>#Language:0 - private int matchTokenAt_1(Token token, ParserContext context) { - if (match_TagLine(context, token)) - { - startRule(context, RuleType.Tags); - build(context, token); - return 2; - } - if (match_FeatureLine(context, token)) - { - build(context, token); - return 3; - } - if (match_Comment(context, token)) - { - build(context, token); - return 1; - } - if (match_Empty(context, token)) - { - build(context, token); - return 1; - } - - final String stateComment = "State: 1 - GherkinDocument:0>Feature:0>FeatureHeader:0>#Language:0"; - token.detach(); - List<String> expectedTokens = asList("#TagLine", "#FeatureLine", "#Comment", "#Empty"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 1; - - } - - - // GherkinDocument:0>Feature:0>FeatureHeader:1>Tags:0>#TagLine:0 - private int matchTokenAt_2(Token token, ParserContext context) { - if (match_TagLine(context, token)) - { - build(context, token); - return 2; - } - if (match_FeatureLine(context, token)) - { - endRule(context, RuleType.Tags); - build(context, token); - return 3; - } - if (match_Comment(context, token)) - { - build(context, token); - return 2; - } - if (match_Empty(context, token)) - { - build(context, token); - return 2; - } - - final String stateComment = "State: 2 - GherkinDocument:0>Feature:0>FeatureHeader:1>Tags:0>#TagLine:0"; - token.detach(); - List<String> expectedTokens = asList("#TagLine", "#FeatureLine", "#Comment", "#Empty"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 2; - - } - - - // GherkinDocument:0>Feature:0>FeatureHeader:2>#FeatureLine:0 - private int matchTokenAt_3(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.FeatureHeader); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_Empty(context, token)) - { - build(context, token); - return 3; - } - if (match_Comment(context, token)) - { - build(context, token); - return 5; - } - if (match_BackgroundLine(context, token)) - { - endRule(context, RuleType.FeatureHeader); - startRule(context, RuleType.Background); - build(context, token); - return 6; - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.FeatureHeader); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 11; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.FeatureHeader); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 12; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.FeatureHeader); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Other(context, token)) - { - startRule(context, RuleType.Description); - build(context, token); - return 4; - } - - final String stateComment = "State: 3 - GherkinDocument:0>Feature:0>FeatureHeader:2>#FeatureLine:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#Empty", "#Comment", "#BackgroundLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Other"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 3; - - } - - - // GherkinDocument:0>Feature:0>FeatureHeader:3>DescriptionHelper:1>Description:0>#Other:0 - private int matchTokenAt_4(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.FeatureHeader); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_Comment(context, token)) - { - endRule(context, RuleType.Description); - build(context, token); - return 5; - } - if (match_BackgroundLine(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.FeatureHeader); - startRule(context, RuleType.Background); - build(context, token); - return 6; - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.FeatureHeader); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 11; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.FeatureHeader); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 12; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.FeatureHeader); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Other(context, token)) - { - build(context, token); - return 4; - } - - final String stateComment = "State: 4 - GherkinDocument:0>Feature:0>FeatureHeader:3>DescriptionHelper:1>Description:0>#Other:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#Comment", "#BackgroundLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Other"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 4; - - } - - - // GherkinDocument:0>Feature:0>FeatureHeader:3>DescriptionHelper:2>#Comment:0 - private int matchTokenAt_5(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.FeatureHeader); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_Comment(context, token)) - { - build(context, token); - return 5; - } - if (match_BackgroundLine(context, token)) - { - endRule(context, RuleType.FeatureHeader); - startRule(context, RuleType.Background); - build(context, token); - return 6; - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.FeatureHeader); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 11; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.FeatureHeader); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 12; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.FeatureHeader); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Empty(context, token)) - { - build(context, token); - return 5; - } - - final String stateComment = "State: 5 - GherkinDocument:0>Feature:0>FeatureHeader:3>DescriptionHelper:2>#Comment:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#Comment", "#BackgroundLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Empty"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 5; - - } - - - // GherkinDocument:0>Feature:1>Background:0>#BackgroundLine:0 - private int matchTokenAt_6(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.Background); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_Empty(context, token)) - { - build(context, token); - return 6; - } - if (match_Comment(context, token)) - { - build(context, token); - return 8; - } - if (match_StepLine(context, token)) - { - startRule(context, RuleType.Step); - build(context, token); - return 9; - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.Background); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 11; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.Background); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 12; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.Background); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Other(context, token)) - { - startRule(context, RuleType.Description); - build(context, token); - return 7; - } - - final String stateComment = "State: 6 - GherkinDocument:0>Feature:1>Background:0>#BackgroundLine:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#Empty", "#Comment", "#StepLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Other"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 6; - - } - - - // GherkinDocument:0>Feature:1>Background:1>DescriptionHelper:1>Description:0>#Other:0 - private int matchTokenAt_7(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.Background); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_Comment(context, token)) - { - endRule(context, RuleType.Description); - build(context, token); - return 8; - } - if (match_StepLine(context, token)) - { - endRule(context, RuleType.Description); - startRule(context, RuleType.Step); - build(context, token); - return 9; - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.Background); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 11; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.Background); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 12; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.Background); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Other(context, token)) - { - build(context, token); - return 7; - } - - final String stateComment = "State: 7 - GherkinDocument:0>Feature:1>Background:1>DescriptionHelper:1>Description:0>#Other:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#Comment", "#StepLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Other"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 7; - - } - - - // GherkinDocument:0>Feature:1>Background:1>DescriptionHelper:2>#Comment:0 - private int matchTokenAt_8(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.Background); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_Comment(context, token)) - { - build(context, token); - return 8; - } - if (match_StepLine(context, token)) - { - startRule(context, RuleType.Step); - build(context, token); - return 9; - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.Background); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 11; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.Background); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 12; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.Background); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Empty(context, token)) - { - build(context, token); - return 8; - } - - final String stateComment = "State: 8 - GherkinDocument:0>Feature:1>Background:1>DescriptionHelper:2>#Comment:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#Comment", "#StepLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Empty"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 8; - - } - - - // GherkinDocument:0>Feature:1>Background:2>Step:0>#StepLine:0 - private int matchTokenAt_9(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.Step); - endRule(context, RuleType.Background); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_TableRow(context, token)) - { - startRule(context, RuleType.DataTable); - build(context, token); - return 10; - } - if (match_DocStringSeparator(context, token)) - { - startRule(context, RuleType.DocString); - build(context, token); - return 48; - } - if (match_StepLine(context, token)) - { - endRule(context, RuleType.Step); - startRule(context, RuleType.Step); - build(context, token); - return 9; - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.Step); - endRule(context, RuleType.Background); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 11; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.Step); - endRule(context, RuleType.Background); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 12; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.Step); - endRule(context, RuleType.Background); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Comment(context, token)) - { - build(context, token); - return 9; - } - if (match_Empty(context, token)) - { - build(context, token); - return 9; - } - - final String stateComment = "State: 9 - GherkinDocument:0>Feature:1>Background:2>Step:0>#StepLine:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#TableRow", "#DocStringSeparator", "#StepLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 9; - - } - - - // GherkinDocument:0>Feature:1>Background:2>Step:1>StepArg:0>__alt0:0>DataTable:0>#TableRow:0 - private int matchTokenAt_10(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.DataTable); - endRule(context, RuleType.Step); - endRule(context, RuleType.Background); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_TableRow(context, token)) - { - build(context, token); - return 10; - } - if (match_StepLine(context, token)) - { - endRule(context, RuleType.DataTable); - endRule(context, RuleType.Step); - startRule(context, RuleType.Step); - build(context, token); - return 9; - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.DataTable); - endRule(context, RuleType.Step); - endRule(context, RuleType.Background); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 11; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.DataTable); - endRule(context, RuleType.Step); - endRule(context, RuleType.Background); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 12; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.DataTable); - endRule(context, RuleType.Step); - endRule(context, RuleType.Background); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Comment(context, token)) - { - build(context, token); - return 10; - } - if (match_Empty(context, token)) - { - build(context, token); - return 10; - } - - final String stateComment = "State: 10 - GherkinDocument:0>Feature:1>Background:2>Step:1>StepArg:0>__alt0:0>DataTable:0>#TableRow:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#TableRow", "#StepLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 10; - - } - - - // GherkinDocument:0>Feature:2>ScenarioDefinition:0>Tags:0>#TagLine:0 - private int matchTokenAt_11(Token token, ParserContext context) { - if (match_TagLine(context, token)) - { - build(context, token); - return 11; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.Tags); - startRule(context, RuleType.Scenario); - build(context, token); - return 12; - } - if (match_Comment(context, token)) - { - build(context, token); - return 11; - } - if (match_Empty(context, token)) - { - build(context, token); - return 11; - } - - final String stateComment = "State: 11 - GherkinDocument:0>Feature:2>ScenarioDefinition:0>Tags:0>#TagLine:0"; - token.detach(); - List<String> expectedTokens = asList("#TagLine", "#ScenarioLine", "#Comment", "#Empty"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 11; - - } - - - // GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:0>#ScenarioLine:0 - private int matchTokenAt_12(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_Empty(context, token)) - { - build(context, token); - return 12; - } - if (match_Comment(context, token)) - { - build(context, token); - return 14; - } - if (match_StepLine(context, token)) - { - startRule(context, RuleType.Step); - build(context, token); - return 15; - } - if (match_TagLine(context, token)) - { - if (lookahead_0(context, token)) - { - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 17; - } - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 11; - } - if (match_ExamplesLine(context, token)) - { - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Examples); - build(context, token); - return 18; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 12; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Other(context, token)) - { - startRule(context, RuleType.Description); - build(context, token); - return 13; - } - - final String stateComment = "State: 12 - GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:0>#ScenarioLine:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#Empty", "#Comment", "#StepLine", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Other"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 12; - - } - - - // GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:1>DescriptionHelper:1>Description:0>#Other:0 - private int matchTokenAt_13(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_Comment(context, token)) - { - endRule(context, RuleType.Description); - build(context, token); - return 14; - } - if (match_StepLine(context, token)) - { - endRule(context, RuleType.Description); - startRule(context, RuleType.Step); - build(context, token); - return 15; - } - if (match_TagLine(context, token)) - { - if (lookahead_0(context, token)) - { - endRule(context, RuleType.Description); - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 17; - } - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 11; - } - if (match_ExamplesLine(context, token)) - { - endRule(context, RuleType.Description); - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Examples); - build(context, token); - return 18; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 12; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Other(context, token)) - { - build(context, token); - return 13; - } - - final String stateComment = "State: 13 - GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:1>DescriptionHelper:1>Description:0>#Other:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#Comment", "#StepLine", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Other"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 13; - - } - - - // GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:1>DescriptionHelper:2>#Comment:0 - private int matchTokenAt_14(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_Comment(context, token)) - { - build(context, token); - return 14; - } - if (match_StepLine(context, token)) - { - startRule(context, RuleType.Step); - build(context, token); - return 15; - } - if (match_TagLine(context, token)) - { - if (lookahead_0(context, token)) - { - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 17; - } - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 11; - } - if (match_ExamplesLine(context, token)) - { - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Examples); - build(context, token); - return 18; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 12; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Empty(context, token)) - { - build(context, token); - return 14; - } - - final String stateComment = "State: 14 - GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:1>DescriptionHelper:2>#Comment:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#Comment", "#StepLine", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Empty"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 14; - - } - - - // GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:2>Step:0>#StepLine:0 - private int matchTokenAt_15(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.Step); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_TableRow(context, token)) - { - startRule(context, RuleType.DataTable); - build(context, token); - return 16; - } - if (match_DocStringSeparator(context, token)) - { - startRule(context, RuleType.DocString); - build(context, token); - return 46; - } - if (match_StepLine(context, token)) - { - endRule(context, RuleType.Step); - startRule(context, RuleType.Step); - build(context, token); - return 15; - } - if (match_TagLine(context, token)) - { - if (lookahead_0(context, token)) - { - endRule(context, RuleType.Step); - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 17; - } - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.Step); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 11; - } - if (match_ExamplesLine(context, token)) - { - endRule(context, RuleType.Step); - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Examples); - build(context, token); - return 18; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.Step); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 12; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.Step); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Comment(context, token)) - { - build(context, token); - return 15; - } - if (match_Empty(context, token)) - { - build(context, token); - return 15; - } - - final String stateComment = "State: 15 - GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:2>Step:0>#StepLine:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#TableRow", "#DocStringSeparator", "#StepLine", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 15; - - } - - - // GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:2>Step:1>StepArg:0>__alt0:0>DataTable:0>#TableRow:0 - private int matchTokenAt_16(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.DataTable); - endRule(context, RuleType.Step); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_TableRow(context, token)) - { - build(context, token); - return 16; - } - if (match_StepLine(context, token)) - { - endRule(context, RuleType.DataTable); - endRule(context, RuleType.Step); - startRule(context, RuleType.Step); - build(context, token); - return 15; - } - if (match_TagLine(context, token)) - { - if (lookahead_0(context, token)) - { - endRule(context, RuleType.DataTable); - endRule(context, RuleType.Step); - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 17; - } - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.DataTable); - endRule(context, RuleType.Step); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 11; - } - if (match_ExamplesLine(context, token)) - { - endRule(context, RuleType.DataTable); - endRule(context, RuleType.Step); - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Examples); - build(context, token); - return 18; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.DataTable); - endRule(context, RuleType.Step); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 12; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.DataTable); - endRule(context, RuleType.Step); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Comment(context, token)) - { - build(context, token); - return 16; - } - if (match_Empty(context, token)) - { - build(context, token); - return 16; - } - - final String stateComment = "State: 16 - GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:2>Step:1>StepArg:0>__alt0:0>DataTable:0>#TableRow:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#TableRow", "#StepLine", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 16; - - } - - - // GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:0>Tags:0>#TagLine:0 - private int matchTokenAt_17(Token token, ParserContext context) { - if (match_TagLine(context, token)) - { - build(context, token); - return 17; - } - if (match_ExamplesLine(context, token)) - { - endRule(context, RuleType.Tags); - startRule(context, RuleType.Examples); - build(context, token); - return 18; - } - if (match_Comment(context, token)) - { - build(context, token); - return 17; - } - if (match_Empty(context, token)) - { - build(context, token); - return 17; - } - - final String stateComment = "State: 17 - GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:0>Tags:0>#TagLine:0"; - token.detach(); - List<String> expectedTokens = asList("#TagLine", "#ExamplesLine", "#Comment", "#Empty"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 17; - - } - - - // GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:0>#ExamplesLine:0 - private int matchTokenAt_18(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_Empty(context, token)) - { - build(context, token); - return 18; - } - if (match_Comment(context, token)) - { - build(context, token); - return 20; - } - if (match_TableRow(context, token)) - { - startRule(context, RuleType.ExamplesTable); - build(context, token); - return 21; - } - if (match_TagLine(context, token)) - { - if (lookahead_0(context, token)) - { - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 17; - } - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 11; - } - if (match_ExamplesLine(context, token)) - { - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Examples); - build(context, token); - return 18; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 12; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Other(context, token)) - { - startRule(context, RuleType.Description); - build(context, token); - return 19; - } - - final String stateComment = "State: 18 - GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:0>#ExamplesLine:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#Empty", "#Comment", "#TableRow", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Other"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 18; - - } - - - // GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:1>DescriptionHelper:1>Description:0>#Other:0 - private int matchTokenAt_19(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_Comment(context, token)) - { - endRule(context, RuleType.Description); - build(context, token); - return 20; - } - if (match_TableRow(context, token)) - { - endRule(context, RuleType.Description); - startRule(context, RuleType.ExamplesTable); - build(context, token); - return 21; - } - if (match_TagLine(context, token)) - { - if (lookahead_0(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 17; - } - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 11; - } - if (match_ExamplesLine(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Examples); - build(context, token); - return 18; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 12; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Other(context, token)) - { - build(context, token); - return 19; - } - - final String stateComment = "State: 19 - GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:1>DescriptionHelper:1>Description:0>#Other:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#Comment", "#TableRow", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Other"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 19; - - } - - - // GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:1>DescriptionHelper:2>#Comment:0 - private int matchTokenAt_20(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_Comment(context, token)) - { - build(context, token); - return 20; - } - if (match_TableRow(context, token)) - { - startRule(context, RuleType.ExamplesTable); - build(context, token); - return 21; - } - if (match_TagLine(context, token)) - { - if (lookahead_0(context, token)) - { - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 17; - } - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 11; - } - if (match_ExamplesLine(context, token)) - { - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Examples); - build(context, token); - return 18; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 12; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Empty(context, token)) - { - build(context, token); - return 20; - } - - final String stateComment = "State: 20 - GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:1>DescriptionHelper:2>#Comment:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#Comment", "#TableRow", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Empty"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 20; - - } - - - // GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:2>ExamplesTable:0>#TableRow:0 - private int matchTokenAt_21(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.ExamplesTable); - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_TableRow(context, token)) - { - build(context, token); - return 21; - } - if (match_TagLine(context, token)) - { - if (lookahead_0(context, token)) - { - endRule(context, RuleType.ExamplesTable); - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 17; - } - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.ExamplesTable); - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 11; - } - if (match_ExamplesLine(context, token)) - { - endRule(context, RuleType.ExamplesTable); - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Examples); - build(context, token); - return 18; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.ExamplesTable); - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 12; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.ExamplesTable); - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Comment(context, token)) - { - build(context, token); - return 21; - } - if (match_Empty(context, token)) - { - build(context, token); - return 21; - } - - final String stateComment = "State: 21 - GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:2>ExamplesTable:0>#TableRow:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#TableRow", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 21; - - } - - - // GherkinDocument:0>Feature:3>Rule:0>RuleHeader:0>#RuleLine:0 - private int matchTokenAt_22(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.RuleHeader); - endRule(context, RuleType.Rule); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_Empty(context, token)) - { - build(context, token); - return 22; - } - if (match_Comment(context, token)) - { - build(context, token); - return 24; - } - if (match_BackgroundLine(context, token)) - { - endRule(context, RuleType.RuleHeader); - startRule(context, RuleType.Background); - build(context, token); - return 25; - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.RuleHeader); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 30; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.RuleHeader); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 31; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.RuleHeader); - endRule(context, RuleType.Rule); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Other(context, token)) - { - startRule(context, RuleType.Description); - build(context, token); - return 23; - } - - final String stateComment = "State: 22 - GherkinDocument:0>Feature:3>Rule:0>RuleHeader:0>#RuleLine:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#Empty", "#Comment", "#BackgroundLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Other"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 22; - - } - - - // GherkinDocument:0>Feature:3>Rule:0>RuleHeader:1>DescriptionHelper:1>Description:0>#Other:0 - private int matchTokenAt_23(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.RuleHeader); - endRule(context, RuleType.Rule); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_Comment(context, token)) - { - endRule(context, RuleType.Description); - build(context, token); - return 24; - } - if (match_BackgroundLine(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.RuleHeader); - startRule(context, RuleType.Background); - build(context, token); - return 25; - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.RuleHeader); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 30; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.RuleHeader); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 31; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.RuleHeader); - endRule(context, RuleType.Rule); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Other(context, token)) - { - build(context, token); - return 23; - } - - final String stateComment = "State: 23 - GherkinDocument:0>Feature:3>Rule:0>RuleHeader:1>DescriptionHelper:1>Description:0>#Other:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#Comment", "#BackgroundLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Other"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 23; - - } - - - // GherkinDocument:0>Feature:3>Rule:0>RuleHeader:1>DescriptionHelper:2>#Comment:0 - private int matchTokenAt_24(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.RuleHeader); - endRule(context, RuleType.Rule); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_Comment(context, token)) - { - build(context, token); - return 24; - } - if (match_BackgroundLine(context, token)) - { - endRule(context, RuleType.RuleHeader); - startRule(context, RuleType.Background); - build(context, token); - return 25; - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.RuleHeader); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 30; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.RuleHeader); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 31; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.RuleHeader); - endRule(context, RuleType.Rule); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Empty(context, token)) - { - build(context, token); - return 24; - } - - final String stateComment = "State: 24 - GherkinDocument:0>Feature:3>Rule:0>RuleHeader:1>DescriptionHelper:2>#Comment:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#Comment", "#BackgroundLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Empty"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 24; - - } - - - // GherkinDocument:0>Feature:3>Rule:1>Background:0>#BackgroundLine:0 - private int matchTokenAt_25(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.Background); - endRule(context, RuleType.Rule); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_Empty(context, token)) - { - build(context, token); - return 25; - } - if (match_Comment(context, token)) - { - build(context, token); - return 27; - } - if (match_StepLine(context, token)) - { - startRule(context, RuleType.Step); - build(context, token); - return 28; - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.Background); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 30; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.Background); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 31; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.Background); - endRule(context, RuleType.Rule); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Other(context, token)) - { - startRule(context, RuleType.Description); - build(context, token); - return 26; - } - - final String stateComment = "State: 25 - GherkinDocument:0>Feature:3>Rule:1>Background:0>#BackgroundLine:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#Empty", "#Comment", "#StepLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Other"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 25; - - } - - - // GherkinDocument:0>Feature:3>Rule:1>Background:1>DescriptionHelper:1>Description:0>#Other:0 - private int matchTokenAt_26(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.Background); - endRule(context, RuleType.Rule); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_Comment(context, token)) - { - endRule(context, RuleType.Description); - build(context, token); - return 27; - } - if (match_StepLine(context, token)) - { - endRule(context, RuleType.Description); - startRule(context, RuleType.Step); - build(context, token); - return 28; - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.Background); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 30; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.Background); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 31; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.Background); - endRule(context, RuleType.Rule); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Other(context, token)) - { - build(context, token); - return 26; - } - - final String stateComment = "State: 26 - GherkinDocument:0>Feature:3>Rule:1>Background:1>DescriptionHelper:1>Description:0>#Other:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#Comment", "#StepLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Other"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 26; - - } - - - // GherkinDocument:0>Feature:3>Rule:1>Background:1>DescriptionHelper:2>#Comment:0 - private int matchTokenAt_27(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.Background); - endRule(context, RuleType.Rule); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_Comment(context, token)) - { - build(context, token); - return 27; - } - if (match_StepLine(context, token)) - { - startRule(context, RuleType.Step); - build(context, token); - return 28; - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.Background); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 30; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.Background); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 31; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.Background); - endRule(context, RuleType.Rule); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Empty(context, token)) - { - build(context, token); - return 27; - } - - final String stateComment = "State: 27 - GherkinDocument:0>Feature:3>Rule:1>Background:1>DescriptionHelper:2>#Comment:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#Comment", "#StepLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Empty"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 27; - - } - - - // GherkinDocument:0>Feature:3>Rule:1>Background:2>Step:0>#StepLine:0 - private int matchTokenAt_28(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.Step); - endRule(context, RuleType.Background); - endRule(context, RuleType.Rule); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_TableRow(context, token)) - { - startRule(context, RuleType.DataTable); - build(context, token); - return 29; - } - if (match_DocStringSeparator(context, token)) - { - startRule(context, RuleType.DocString); - build(context, token); - return 44; - } - if (match_StepLine(context, token)) - { - endRule(context, RuleType.Step); - startRule(context, RuleType.Step); - build(context, token); - return 28; - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.Step); - endRule(context, RuleType.Background); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 30; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.Step); - endRule(context, RuleType.Background); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 31; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.Step); - endRule(context, RuleType.Background); - endRule(context, RuleType.Rule); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Comment(context, token)) - { - build(context, token); - return 28; - } - if (match_Empty(context, token)) - { - build(context, token); - return 28; - } - - final String stateComment = "State: 28 - GherkinDocument:0>Feature:3>Rule:1>Background:2>Step:0>#StepLine:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#TableRow", "#DocStringSeparator", "#StepLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 28; - - } - - - // GherkinDocument:0>Feature:3>Rule:1>Background:2>Step:1>StepArg:0>__alt0:0>DataTable:0>#TableRow:0 - private int matchTokenAt_29(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.DataTable); - endRule(context, RuleType.Step); - endRule(context, RuleType.Background); - endRule(context, RuleType.Rule); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_TableRow(context, token)) - { - build(context, token); - return 29; - } - if (match_StepLine(context, token)) - { - endRule(context, RuleType.DataTable); - endRule(context, RuleType.Step); - startRule(context, RuleType.Step); - build(context, token); - return 28; - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.DataTable); - endRule(context, RuleType.Step); - endRule(context, RuleType.Background); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 30; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.DataTable); - endRule(context, RuleType.Step); - endRule(context, RuleType.Background); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 31; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.DataTable); - endRule(context, RuleType.Step); - endRule(context, RuleType.Background); - endRule(context, RuleType.Rule); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Comment(context, token)) - { - build(context, token); - return 29; - } - if (match_Empty(context, token)) - { - build(context, token); - return 29; - } - - final String stateComment = "State: 29 - GherkinDocument:0>Feature:3>Rule:1>Background:2>Step:1>StepArg:0>__alt0:0>DataTable:0>#TableRow:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#TableRow", "#StepLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 29; - - } - - - // GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:0>Tags:0>#TagLine:0 - private int matchTokenAt_30(Token token, ParserContext context) { - if (match_TagLine(context, token)) - { - build(context, token); - return 30; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.Tags); - startRule(context, RuleType.Scenario); - build(context, token); - return 31; - } - if (match_Comment(context, token)) - { - build(context, token); - return 30; - } - if (match_Empty(context, token)) - { - build(context, token); - return 30; - } - - final String stateComment = "State: 30 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:0>Tags:0>#TagLine:0"; - token.detach(); - List<String> expectedTokens = asList("#TagLine", "#ScenarioLine", "#Comment", "#Empty"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 30; - - } - - - // GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:0>#ScenarioLine:0 - private int matchTokenAt_31(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - endRule(context, RuleType.Rule); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_Empty(context, token)) - { - build(context, token); - return 31; - } - if (match_Comment(context, token)) - { - build(context, token); - return 33; - } - if (match_StepLine(context, token)) - { - startRule(context, RuleType.Step); - build(context, token); - return 34; - } - if (match_TagLine(context, token)) - { - if (lookahead_0(context, token)) - { - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 36; - } - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 30; - } - if (match_ExamplesLine(context, token)) - { - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Examples); - build(context, token); - return 37; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 31; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - endRule(context, RuleType.Rule); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Other(context, token)) - { - startRule(context, RuleType.Description); - build(context, token); - return 32; - } - - final String stateComment = "State: 31 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:0>#ScenarioLine:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#Empty", "#Comment", "#StepLine", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Other"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 31; - - } - - - // GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:1>DescriptionHelper:1>Description:0>#Other:0 - private int matchTokenAt_32(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - endRule(context, RuleType.Rule); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_Comment(context, token)) - { - endRule(context, RuleType.Description); - build(context, token); - return 33; - } - if (match_StepLine(context, token)) - { - endRule(context, RuleType.Description); - startRule(context, RuleType.Step); - build(context, token); - return 34; - } - if (match_TagLine(context, token)) - { - if (lookahead_0(context, token)) - { - endRule(context, RuleType.Description); - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 36; - } - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 30; - } - if (match_ExamplesLine(context, token)) - { - endRule(context, RuleType.Description); - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Examples); - build(context, token); - return 37; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 31; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - endRule(context, RuleType.Rule); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Other(context, token)) - { - build(context, token); - return 32; - } - - final String stateComment = "State: 32 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:1>DescriptionHelper:1>Description:0>#Other:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#Comment", "#StepLine", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Other"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 32; - - } - - - // GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:1>DescriptionHelper:2>#Comment:0 - private int matchTokenAt_33(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - endRule(context, RuleType.Rule); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_Comment(context, token)) - { - build(context, token); - return 33; - } - if (match_StepLine(context, token)) - { - startRule(context, RuleType.Step); - build(context, token); - return 34; - } - if (match_TagLine(context, token)) - { - if (lookahead_0(context, token)) - { - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 36; - } - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 30; - } - if (match_ExamplesLine(context, token)) - { - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Examples); - build(context, token); - return 37; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 31; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - endRule(context, RuleType.Rule); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Empty(context, token)) - { - build(context, token); - return 33; - } - - final String stateComment = "State: 33 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:1>DescriptionHelper:2>#Comment:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#Comment", "#StepLine", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Empty"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 33; - - } - - - // GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:2>Step:0>#StepLine:0 - private int matchTokenAt_34(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.Step); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - endRule(context, RuleType.Rule); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_TableRow(context, token)) - { - startRule(context, RuleType.DataTable); - build(context, token); - return 35; - } - if (match_DocStringSeparator(context, token)) - { - startRule(context, RuleType.DocString); - build(context, token); - return 42; - } - if (match_StepLine(context, token)) - { - endRule(context, RuleType.Step); - startRule(context, RuleType.Step); - build(context, token); - return 34; - } - if (match_TagLine(context, token)) - { - if (lookahead_0(context, token)) - { - endRule(context, RuleType.Step); - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 36; - } - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.Step); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 30; - } - if (match_ExamplesLine(context, token)) - { - endRule(context, RuleType.Step); - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Examples); - build(context, token); - return 37; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.Step); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 31; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.Step); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - endRule(context, RuleType.Rule); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Comment(context, token)) - { - build(context, token); - return 34; - } - if (match_Empty(context, token)) - { - build(context, token); - return 34; - } - - final String stateComment = "State: 34 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:2>Step:0>#StepLine:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#TableRow", "#DocStringSeparator", "#StepLine", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 34; - - } - - - // GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:2>Step:1>StepArg:0>__alt0:0>DataTable:0>#TableRow:0 - private int matchTokenAt_35(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.DataTable); - endRule(context, RuleType.Step); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - endRule(context, RuleType.Rule); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_TableRow(context, token)) - { - build(context, token); - return 35; - } - if (match_StepLine(context, token)) - { - endRule(context, RuleType.DataTable); - endRule(context, RuleType.Step); - startRule(context, RuleType.Step); - build(context, token); - return 34; - } - if (match_TagLine(context, token)) - { - if (lookahead_0(context, token)) - { - endRule(context, RuleType.DataTable); - endRule(context, RuleType.Step); - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 36; - } - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.DataTable); - endRule(context, RuleType.Step); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 30; - } - if (match_ExamplesLine(context, token)) - { - endRule(context, RuleType.DataTable); - endRule(context, RuleType.Step); - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Examples); - build(context, token); - return 37; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.DataTable); - endRule(context, RuleType.Step); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 31; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.DataTable); - endRule(context, RuleType.Step); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - endRule(context, RuleType.Rule); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Comment(context, token)) - { - build(context, token); - return 35; - } - if (match_Empty(context, token)) - { - build(context, token); - return 35; - } - - final String stateComment = "State: 35 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:2>Step:1>StepArg:0>__alt0:0>DataTable:0>#TableRow:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#TableRow", "#StepLine", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 35; - - } - - - // GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:0>Tags:0>#TagLine:0 - private int matchTokenAt_36(Token token, ParserContext context) { - if (match_TagLine(context, token)) - { - build(context, token); - return 36; - } - if (match_ExamplesLine(context, token)) - { - endRule(context, RuleType.Tags); - startRule(context, RuleType.Examples); - build(context, token); - return 37; - } - if (match_Comment(context, token)) - { - build(context, token); - return 36; - } - if (match_Empty(context, token)) - { - build(context, token); - return 36; - } - - final String stateComment = "State: 36 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:0>Tags:0>#TagLine:0"; - token.detach(); - List<String> expectedTokens = asList("#TagLine", "#ExamplesLine", "#Comment", "#Empty"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 36; - - } - - - // GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:0>#ExamplesLine:0 - private int matchTokenAt_37(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - endRule(context, RuleType.Rule); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_Empty(context, token)) - { - build(context, token); - return 37; - } - if (match_Comment(context, token)) - { - build(context, token); - return 39; - } - if (match_TableRow(context, token)) - { - startRule(context, RuleType.ExamplesTable); - build(context, token); - return 40; - } - if (match_TagLine(context, token)) - { - if (lookahead_0(context, token)) - { - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 36; - } - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 30; - } - if (match_ExamplesLine(context, token)) - { - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Examples); - build(context, token); - return 37; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 31; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - endRule(context, RuleType.Rule); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Other(context, token)) - { - startRule(context, RuleType.Description); - build(context, token); - return 38; - } - - final String stateComment = "State: 37 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:0>#ExamplesLine:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#Empty", "#Comment", "#TableRow", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Other"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 37; - - } - - - // GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:1>DescriptionHelper:1>Description:0>#Other:0 - private int matchTokenAt_38(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - endRule(context, RuleType.Rule); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_Comment(context, token)) - { - endRule(context, RuleType.Description); - build(context, token); - return 39; - } - if (match_TableRow(context, token)) - { - endRule(context, RuleType.Description); - startRule(context, RuleType.ExamplesTable); - build(context, token); - return 40; - } - if (match_TagLine(context, token)) - { - if (lookahead_0(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 36; - } - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 30; - } - if (match_ExamplesLine(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Examples); - build(context, token); - return 37; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 31; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.Description); - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - endRule(context, RuleType.Rule); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Other(context, token)) - { - build(context, token); - return 38; - } - - final String stateComment = "State: 38 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:1>DescriptionHelper:1>Description:0>#Other:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#Comment", "#TableRow", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Other"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 38; - - } - - - // GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:1>DescriptionHelper:2>#Comment:0 - private int matchTokenAt_39(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - endRule(context, RuleType.Rule); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_Comment(context, token)) - { - build(context, token); - return 39; - } - if (match_TableRow(context, token)) - { - startRule(context, RuleType.ExamplesTable); - build(context, token); - return 40; - } - if (match_TagLine(context, token)) - { - if (lookahead_0(context, token)) - { - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 36; - } - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 30; - } - if (match_ExamplesLine(context, token)) - { - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Examples); - build(context, token); - return 37; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 31; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - endRule(context, RuleType.Rule); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Empty(context, token)) - { - build(context, token); - return 39; - } - - final String stateComment = "State: 39 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:1>DescriptionHelper:2>#Comment:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#Comment", "#TableRow", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Empty"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 39; - - } - - - // GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:2>ExamplesTable:0>#TableRow:0 - private int matchTokenAt_40(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.ExamplesTable); - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - endRule(context, RuleType.Rule); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_TableRow(context, token)) - { - build(context, token); - return 40; - } - if (match_TagLine(context, token)) - { - if (lookahead_0(context, token)) - { - endRule(context, RuleType.ExamplesTable); - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 36; - } - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.ExamplesTable); - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 30; - } - if (match_ExamplesLine(context, token)) - { - endRule(context, RuleType.ExamplesTable); - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Examples); - build(context, token); - return 37; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.ExamplesTable); - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 31; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.ExamplesTable); - endRule(context, RuleType.Examples); - endRule(context, RuleType.ExamplesDefinition); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - endRule(context, RuleType.Rule); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Comment(context, token)) - { - build(context, token); - return 40; - } - if (match_Empty(context, token)) - { - build(context, token); - return 40; - } - - final String stateComment = "State: 40 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:2>ExamplesTable:0>#TableRow:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#TableRow", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 40; - - } - - - // GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:2>Step:1>StepArg:0>__alt0:1>DocString:0>#DocStringSeparator:0 - private int matchTokenAt_42(Token token, ParserContext context) { - if (match_DocStringSeparator(context, token)) - { - build(context, token); - return 43; - } - if (match_Other(context, token)) - { - build(context, token); - return 42; - } - - final String stateComment = "State: 42 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:2>Step:1>StepArg:0>__alt0:1>DocString:0>#DocStringSeparator:0"; - token.detach(); - List<String> expectedTokens = asList("#DocStringSeparator", "#Other"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 42; - - } - - - // GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:2>Step:1>StepArg:0>__alt0:1>DocString:2>#DocStringSeparator:0 - private int matchTokenAt_43(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.DocString); - endRule(context, RuleType.Step); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - endRule(context, RuleType.Rule); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_StepLine(context, token)) - { - endRule(context, RuleType.DocString); - endRule(context, RuleType.Step); - startRule(context, RuleType.Step); - build(context, token); - return 34; - } - if (match_TagLine(context, token)) - { - if (lookahead_0(context, token)) - { - endRule(context, RuleType.DocString); - endRule(context, RuleType.Step); - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 36; - } - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.DocString); - endRule(context, RuleType.Step); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 30; - } - if (match_ExamplesLine(context, token)) - { - endRule(context, RuleType.DocString); - endRule(context, RuleType.Step); - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Examples); - build(context, token); - return 37; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.DocString); - endRule(context, RuleType.Step); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 31; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.DocString); - endRule(context, RuleType.Step); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - endRule(context, RuleType.Rule); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Comment(context, token)) - { - build(context, token); - return 43; - } - if (match_Empty(context, token)) - { - build(context, token); - return 43; - } - - final String stateComment = "State: 43 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:2>Step:1>StepArg:0>__alt0:1>DocString:2>#DocStringSeparator:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#StepLine", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 43; - - } - - - // GherkinDocument:0>Feature:3>Rule:1>Background:2>Step:1>StepArg:0>__alt0:1>DocString:0>#DocStringSeparator:0 - private int matchTokenAt_44(Token token, ParserContext context) { - if (match_DocStringSeparator(context, token)) - { - build(context, token); - return 45; - } - if (match_Other(context, token)) - { - build(context, token); - return 44; - } - - final String stateComment = "State: 44 - GherkinDocument:0>Feature:3>Rule:1>Background:2>Step:1>StepArg:0>__alt0:1>DocString:0>#DocStringSeparator:0"; - token.detach(); - List<String> expectedTokens = asList("#DocStringSeparator", "#Other"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 44; - - } - - - // GherkinDocument:0>Feature:3>Rule:1>Background:2>Step:1>StepArg:0>__alt0:1>DocString:2>#DocStringSeparator:0 - private int matchTokenAt_45(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.DocString); - endRule(context, RuleType.Step); - endRule(context, RuleType.Background); - endRule(context, RuleType.Rule); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_StepLine(context, token)) - { - endRule(context, RuleType.DocString); - endRule(context, RuleType.Step); - startRule(context, RuleType.Step); - build(context, token); - return 28; - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.DocString); - endRule(context, RuleType.Step); - endRule(context, RuleType.Background); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 30; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.DocString); - endRule(context, RuleType.Step); - endRule(context, RuleType.Background); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 31; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.DocString); - endRule(context, RuleType.Step); - endRule(context, RuleType.Background); - endRule(context, RuleType.Rule); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Comment(context, token)) - { - build(context, token); - return 45; - } - if (match_Empty(context, token)) - { - build(context, token); - return 45; - } - - final String stateComment = "State: 45 - GherkinDocument:0>Feature:3>Rule:1>Background:2>Step:1>StepArg:0>__alt0:1>DocString:2>#DocStringSeparator:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#StepLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 45; - - } - - - // GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:2>Step:1>StepArg:0>__alt0:1>DocString:0>#DocStringSeparator:0 - private int matchTokenAt_46(Token token, ParserContext context) { - if (match_DocStringSeparator(context, token)) - { - build(context, token); - return 47; - } - if (match_Other(context, token)) - { - build(context, token); - return 46; - } - - final String stateComment = "State: 46 - GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:2>Step:1>StepArg:0>__alt0:1>DocString:0>#DocStringSeparator:0"; - token.detach(); - List<String> expectedTokens = asList("#DocStringSeparator", "#Other"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 46; - - } - - - // GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:2>Step:1>StepArg:0>__alt0:1>DocString:2>#DocStringSeparator:0 - private int matchTokenAt_47(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.DocString); - endRule(context, RuleType.Step); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_StepLine(context, token)) - { - endRule(context, RuleType.DocString); - endRule(context, RuleType.Step); - startRule(context, RuleType.Step); - build(context, token); - return 15; - } - if (match_TagLine(context, token)) - { - if (lookahead_0(context, token)) - { - endRule(context, RuleType.DocString); - endRule(context, RuleType.Step); - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 17; - } - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.DocString); - endRule(context, RuleType.Step); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 11; - } - if (match_ExamplesLine(context, token)) - { - endRule(context, RuleType.DocString); - endRule(context, RuleType.Step); - startRule(context, RuleType.ExamplesDefinition); - startRule(context, RuleType.Examples); - build(context, token); - return 18; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.DocString); - endRule(context, RuleType.Step); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 12; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.DocString); - endRule(context, RuleType.Step); - endRule(context, RuleType.Scenario); - endRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Comment(context, token)) - { - build(context, token); - return 47; - } - if (match_Empty(context, token)) - { - build(context, token); - return 47; - } - - final String stateComment = "State: 47 - GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:2>Step:1>StepArg:0>__alt0:1>DocString:2>#DocStringSeparator:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#StepLine", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 47; - - } - - - // GherkinDocument:0>Feature:1>Background:2>Step:1>StepArg:0>__alt0:1>DocString:0>#DocStringSeparator:0 - private int matchTokenAt_48(Token token, ParserContext context) { - if (match_DocStringSeparator(context, token)) - { - build(context, token); - return 49; - } - if (match_Other(context, token)) - { - build(context, token); - return 48; - } - - final String stateComment = "State: 48 - GherkinDocument:0>Feature:1>Background:2>Step:1>StepArg:0>__alt0:1>DocString:0>#DocStringSeparator:0"; - token.detach(); - List<String> expectedTokens = asList("#DocStringSeparator", "#Other"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 48; - - } - - - // GherkinDocument:0>Feature:1>Background:2>Step:1>StepArg:0>__alt0:1>DocString:2>#DocStringSeparator:0 - private int matchTokenAt_49(Token token, ParserContext context) { - if (match_EOF(context, token)) - { - endRule(context, RuleType.DocString); - endRule(context, RuleType.Step); - endRule(context, RuleType.Background); - endRule(context, RuleType.Feature); - build(context, token); - return 41; - } - if (match_StepLine(context, token)) - { - endRule(context, RuleType.DocString); - endRule(context, RuleType.Step); - startRule(context, RuleType.Step); - build(context, token); - return 9; - } - if (match_TagLine(context, token)) - { - endRule(context, RuleType.DocString); - endRule(context, RuleType.Step); - endRule(context, RuleType.Background); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Tags); - build(context, token); - return 11; - } - if (match_ScenarioLine(context, token)) - { - endRule(context, RuleType.DocString); - endRule(context, RuleType.Step); - endRule(context, RuleType.Background); - startRule(context, RuleType.ScenarioDefinition); - startRule(context, RuleType.Scenario); - build(context, token); - return 12; - } - if (match_RuleLine(context, token)) - { - endRule(context, RuleType.DocString); - endRule(context, RuleType.Step); - endRule(context, RuleType.Background); - startRule(context, RuleType.Rule); - startRule(context, RuleType.RuleHeader); - build(context, token); - return 22; - } - if (match_Comment(context, token)) - { - build(context, token); - return 49; - } - if (match_Empty(context, token)) - { - build(context, token); - return 49; - } - - final String stateComment = "State: 49 - GherkinDocument:0>Feature:1>Background:2>Step:1>StepArg:0>__alt0:1>DocString:2>#DocStringSeparator:0"; - token.detach(); - List<String> expectedTokens = asList("#EOF", "#StepLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"); - ParserException error = token.isEOF() - ? new ParserException.UnexpectedEOFException(token, expectedTokens, stateComment) - : new ParserException.UnexpectedTokenException(token, expectedTokens, stateComment); - if (stopAtFirstError) - throw error; - - addError(context, error); - return 49; - - } - - - - private boolean lookahead_0(ParserContext context, Token currentToken) { - currentToken.detach(); - Token token; - Queue<Token> queue = new ArrayDeque<Token>(); - boolean match = false; - do - { - token = readToken(context); - token.detach(); - queue.add(token); - - if (false - || match_ExamplesLine(context, token) - ) - { - match = true; - break; - } - } while (false - || match_Empty(context, token) - || match_Comment(context, token) - || match_TagLine(context, token) - ); - - context.tokenQueue.addAll(queue); - - return match; - } - - - public interface Builder<T> { - void build(Token token); - void startRule(RuleType ruleType); - void endRule(RuleType ruleType); - T getResult(); - void reset(); - } - - public interface ITokenScanner { - Token read(); - } - - public interface ITokenMatcher { - boolean match_EOF(Token token); - boolean match_Empty(Token token); - boolean match_Comment(Token token); - boolean match_TagLine(Token token); - boolean match_FeatureLine(Token token); - boolean match_RuleLine(Token token); - boolean match_BackgroundLine(Token token); - boolean match_ScenarioLine(Token token); - boolean match_ExamplesLine(Token token); - boolean match_StepLine(Token token); - boolean match_DocStringSeparator(Token token); - boolean match_TableRow(Token token); - boolean match_Language(Token token); - boolean match_Other(Token token); - void reset(); - } -} diff --git a/gherkin/java/src/main/java/gherkin/ParserException.java b/gherkin/java/src/main/java/gherkin/ParserException.java deleted file mode 100644 index 941c766363..0000000000 --- a/gherkin/java/src/main/java/gherkin/ParserException.java +++ /dev/null @@ -1,97 +0,0 @@ -package gherkin; - -import java.util.Collections; -import java.util.List; - -public class ParserException extends GherkinException { - public final Location location; - - protected ParserException(String message) { - super(message); - location = new Location(-1, -1); - } - - protected ParserException(String message, Location location) { - super(getMessage(message, location)); - this.location = location; - } - - private static String getMessage(String message, Location location) { - return String.format("(%s:%s): %s", location.getLine(), location.getColumn(), message); - } - - public static class AstBuilderException extends ParserException { - public AstBuilderException(String message, Location location) { - super(message, location); - } - } - - public static class NoSuchLanguageException extends ParserException { - public NoSuchLanguageException(String language, Location location) { - super("Language not supported: " + language, location); - } - } - - public static class UnexpectedTokenException extends ParserException { - public String stateComment; - - public final Token receivedToken; - public final List<String> expectedTokenTypes; - - public UnexpectedTokenException(Token receivedToken, List<String> expectedTokenTypes, String stateComment) { - super(getMessage(receivedToken, expectedTokenTypes), getLocation(receivedToken)); - this.receivedToken = receivedToken; - this.expectedTokenTypes = expectedTokenTypes; - this.stateComment = stateComment; - } - - private static String getMessage(Token receivedToken, List<String> expectedTokenTypes) { - return String.format("expected: %s, got '%s'", - StringUtils.join(", ", expectedTokenTypes), - receivedToken.getTokenValue().trim()); - } - - private static Location getLocation(Token receivedToken) { - return receivedToken.location.getColumn() > 1 - ? receivedToken.location - : new Location(receivedToken.location.getLine(), receivedToken.line.indent() + 1); - } - } - - public static class UnexpectedEOFException extends ParserException { - public final String stateComment; - public final List<String> expectedTokenTypes; - - public UnexpectedEOFException(Token receivedToken, List<String> expectedTokenTypes, String stateComment) { - super(getMessage(expectedTokenTypes), receivedToken.location); - this.expectedTokenTypes = expectedTokenTypes; - this.stateComment = stateComment; - } - - private static String getMessage(List<String> expectedTokenTypes) { - return String.format("unexpected end of file, expected: %s", - StringUtils.join(", ", expectedTokenTypes)); - } - } - - public static class CompositeParserException extends ParserException { - public final List<ParserException> errors; - - public CompositeParserException(List<ParserException> errors) { - super(getMessage(errors)); - this.errors = Collections.unmodifiableList(errors); - } - - private static String getMessage(List<ParserException> errors) { - if (errors == null) throw new NullPointerException("errors"); - - StringUtils.ToString<ParserException> exceptionToString = new StringUtils.ToString<ParserException>() { - @Override - public String toString(ParserException e) { - return e.getMessage(); - } - }; - return "Parser errors:\n" + StringUtils.join(exceptionToString, "\n", errors); - } - } -} diff --git a/gherkin/java/src/main/java/gherkin/StringUtils.java b/gherkin/java/src/main/java/gherkin/StringUtils.java deleted file mode 100644 index 9cf3b701e2..0000000000 --- a/gherkin/java/src/main/java/gherkin/StringUtils.java +++ /dev/null @@ -1,39 +0,0 @@ -package gherkin; - -import java.util.List; - -public class StringUtils { - public static String join(String separator, List<String> items) { - return join(ToString.DEFAULT, separator, items); - } - - public static <T> String join(ToString<T> toString, String separator, Iterable<T> items) { - StringBuilder sb = new StringBuilder(); - boolean useSeparator = false; - for (T item : items) { - if (useSeparator) sb.append(separator); - useSeparator = true; - sb.append(toString.toString(item)); - } - return sb.toString(); - } - - public static String ltrim(String s) { - int i = 0; - while (i < s.length() && Character.isWhitespace(s.charAt(i))) { - i++; - } - return s.substring(i); - } - - public interface ToString<T> { - ToString<String> DEFAULT = new ToString<String>() { - @Override - public String toString(String o) { - return o; - } - }; - - String toString(T o); - } -} diff --git a/gherkin/java/src/main/java/gherkin/SymbolCounter.java b/gherkin/java/src/main/java/gherkin/SymbolCounter.java deleted file mode 100644 index 8d3f7f88f2..0000000000 --- a/gherkin/java/src/main/java/gherkin/SymbolCounter.java +++ /dev/null @@ -1,8 +0,0 @@ -package gherkin; - -// http://rosettacode.org/wiki/String_length#Java -public class SymbolCounter { - public static int countSymbols(String string) { - return string.codePointCount(0, string.length()); - } -} diff --git a/gherkin/java/src/main/java/gherkin/Token.java b/gherkin/java/src/main/java/gherkin/Token.java deleted file mode 100644 index 1ab7848a62..0000000000 --- a/gherkin/java/src/main/java/gherkin/Token.java +++ /dev/null @@ -1,37 +0,0 @@ -package gherkin; - -import java.util.List; - -public class Token { - public final IGherkinLine line; - public Parser.TokenType matchedType; - public String matchedKeyword; - public String matchedText; - public List<GherkinLineSpan> mathcedItems; - public int matchedIndent; - public GherkinDialect matchedGherkinDialect; - public Location location; - - public Token(IGherkinLine line, Location location) { - this.line = line; - this.location = location; - } - - public boolean isEOF() { - return line == null; - } - - public void detach() { - if (line != null) - line.detach(); - } - - public String getTokenValue() { - return isEOF() ? "EOF" : line.getLineText(-1); - } - - @Override - public String toString() { - return String.format("%s: %s/%s", matchedType, matchedKeyword, matchedText); - } -} diff --git a/gherkin/java/src/main/java/gherkin/TokenFormatter.java b/gherkin/java/src/main/java/gherkin/TokenFormatter.java deleted file mode 100644 index 1375ec9437..0000000000 --- a/gherkin/java/src/main/java/gherkin/TokenFormatter.java +++ /dev/null @@ -1,28 +0,0 @@ -package gherkin; - -public class TokenFormatter { - private static final StringUtils.ToString<GherkinLineSpan> SPAN_TO_STRING = new StringUtils.ToString<GherkinLineSpan>() { - @Override - public String toString(GherkinLineSpan o) { - return o.column + ":" + o.text; - } - }; - - public String formatToken(Token token) { - if (token.isEOF()) - return "EOF"; - - return String.format("(%s:%s)%s:%s/%s/%s", - toString(token.location.getLine()), - toString(token.location.getColumn()), - toString(token.matchedType), - toString(token.matchedKeyword), - toString(token.matchedText), - toString(token.mathcedItems == null ? "" : StringUtils.join(SPAN_TO_STRING, ",", token.mathcedItems)) - ); - } - - private String toString(Object o) { - return o == null ? "" : o.toString(); - } -} diff --git a/gherkin/java/src/main/java/gherkin/TokenFormatterBuilder.java b/gherkin/java/src/main/java/gherkin/TokenFormatterBuilder.java deleted file mode 100644 index 07db47b125..0000000000 --- a/gherkin/java/src/main/java/gherkin/TokenFormatterBuilder.java +++ /dev/null @@ -1,28 +0,0 @@ -package gherkin; - -public class TokenFormatterBuilder implements Parser.Builder<String> { - private final TokenFormatter formatter = new TokenFormatter(); - private final StringBuilder tokensTextBuilder = new StringBuilder(); - - @Override - public void build(Token token) { - tokensTextBuilder.append(formatter.formatToken(token)).append("\n"); - } - - @Override - public void startRule(Parser.RuleType ruleType) { - } - - @Override - public void endRule(Parser.RuleType ruleType) { - } - - @Override - public String getResult() { - return tokensTextBuilder.toString(); - } - - @Override - public void reset() { - } -} diff --git a/gherkin/java/src/main/java/gherkin/TokenMatcher.java b/gherkin/java/src/main/java/gherkin/TokenMatcher.java deleted file mode 100644 index 6ecd96ff5f..0000000000 --- a/gherkin/java/src/main/java/gherkin/TokenMatcher.java +++ /dev/null @@ -1,198 +0,0 @@ -package gherkin; - -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import static gherkin.Parser.ITokenMatcher; -import static gherkin.Parser.TokenType; - -public class TokenMatcher implements ITokenMatcher { - private static final Pattern LANGUAGE_PATTERN = Pattern.compile("^\\s*#\\s*language\\s*:\\s*([a-zA-Z\\-_]+)\\s*$"); - private final IGherkinDialectProvider dialectProvider; - private GherkinDialect currentDialect; - private String activeDocStringSeparator = null; - private int indentToRemove = 0; - - public TokenMatcher(IGherkinDialectProvider dialectProvider) { - this.dialectProvider = dialectProvider; - reset(); - } - - public TokenMatcher() { - this(new GherkinDialectProvider()); - } - - public TokenMatcher(String defaultDialectName) { - this(new GherkinDialectProvider(defaultDialectName)); - } - - @Override - public void reset() { - activeDocStringSeparator = null; - indentToRemove = 0; - currentDialect = dialectProvider.getDefaultDialect(); - } - - private GherkinDialect getCurrentDialect() { - return currentDialect; - } - - private void setTokenMatched(Token token, TokenType matchedType, String text, String keyword, Integer indent, List<GherkinLineSpan> items) { - token.matchedType = matchedType; - token.matchedKeyword = keyword; - token.matchedText = text; - token.mathcedItems = items; - token.matchedGherkinDialect = getCurrentDialect(); - token.matchedIndent = indent != null ? indent : (token.line == null ? 0 : token.line.indent()); - token.location = new Location(token.location.getLine(), token.matchedIndent + 1); - } - - @Override - public boolean match_EOF(Token token) { - if (token.isEOF()) { - setTokenMatched(token, TokenType.EOF, null, null, null, null); - return true; - } - return false; - } - - @Override - public boolean match_Other(Token token) { - String text = token.line.getLineText(indentToRemove); //take the entire line, except removing DocString indents - setTokenMatched(token, TokenType.Other, unescapeDocString(text), null, 0, null); - return true; - } - - @Override - public boolean match_Empty(Token token) { - if (token.line.isEmpty()) { - setTokenMatched(token, TokenType.Empty, null, null, null, null); - return true; - } - return false; - } - - @Override - public boolean match_Comment(Token token) { - if (token.line.startsWith(GherkinLanguageConstants.COMMENT_PREFIX)) { - String text = token.line.getLineText(0); //take the entire line - setTokenMatched(token, TokenType.Comment, text, null, 0, null); - return true; - } - return false; - } - - @Override - public boolean match_Language(Token token) { - Matcher matcher = LANGUAGE_PATTERN.matcher(token.line.getLineText(0)); - if (matcher.matches()) { - String language = matcher.group(1); - setTokenMatched(token, TokenType.Language, language, null, null, null); - - currentDialect = dialectProvider.getDialect(language, token.location); - return true; - } - return false; - } - - @Override - public boolean match_TagLine(Token token) { - if (token.line.startsWith(GherkinLanguageConstants.TAG_PREFIX)) { - setTokenMatched(token, TokenType.TagLine, null, null, null, token.line.getTags()); - return true; - } - return false; - } - - @Override - public boolean match_FeatureLine(Token token) { - return matchTitleLine(token, TokenType.FeatureLine, currentDialect.getFeatureKeywords()); - } - - @Override - public boolean match_RuleLine(Token token) { - return matchTitleLine(token, TokenType.RuleLine, currentDialect.getRuleKeywords()); - } - - @Override - public boolean match_BackgroundLine(Token token) { - return matchTitleLine(token, TokenType.BackgroundLine, currentDialect.getBackgroundKeywords()); - } - - @Override - public boolean match_ScenarioLine(Token token) { - return matchTitleLine(token, TokenType.ScenarioLine, currentDialect.getScenarioKeywords()) || - matchTitleLine(token, TokenType.ScenarioLine, currentDialect.getScenarioOutlineKeywords()); - } - - @Override - public boolean match_ExamplesLine(Token token) { - return matchTitleLine(token, TokenType.ExamplesLine, currentDialect.getExamplesKeywords()); - } - - private boolean matchTitleLine(Token token, TokenType tokenType, List<String> keywords) { - for (String keyword : keywords) { - if (token.line.startsWithTitleKeyword(keyword)) { - String title = token.line.getRestTrimmed(keyword.length() + GherkinLanguageConstants.TITLE_KEYWORD_SEPARATOR.length()); - setTokenMatched(token, tokenType, title, keyword, null, null); - return true; - } - } - return false; - } - - @Override - public boolean match_DocStringSeparator(Token token) { - return activeDocStringSeparator == null - // open - ? match_DocStringSeparator(token, GherkinLanguageConstants.DOCSTRING_SEPARATOR, true) || - match_DocStringSeparator(token, GherkinLanguageConstants.DOCSTRING_ALTERNATIVE_SEPARATOR, true) - // close - : match_DocStringSeparator(token, activeDocStringSeparator, false); - } - - private boolean match_DocStringSeparator(Token token, String separator, boolean isOpen) { - if (token.line.startsWith(separator)) { - String contentType = null; - if (isOpen) { - contentType = token.line.getRestTrimmed(separator.length()); - activeDocStringSeparator = separator; - indentToRemove = token.line.indent(); - } else { - activeDocStringSeparator = null; - indentToRemove = 0; - } - - setTokenMatched(token, TokenType.DocStringSeparator, contentType, separator, null, null); - return true; - } - return false; - } - - @Override - public boolean match_StepLine(Token token) { - List<String> keywords = currentDialect.getStepKeywords(); - for (String keyword : keywords) { - if (token.line.startsWith(keyword)) { - String stepText = token.line.getRestTrimmed(keyword.length()); - setTokenMatched(token, TokenType.StepLine, stepText, keyword, null, null); - return true; - } - } - return false; - } - - @Override - public boolean match_TableRow(Token token) { - if (token.line.startsWith(GherkinLanguageConstants.TABLE_CELL_SEPARATOR)) { - setTokenMatched(token, TokenType.TableRow, null, null, null, token.line.getTableCells()); - return true; - } - return false; - } - - private String unescapeDocString(String text) { - return activeDocStringSeparator != null ? text.replace("\\\"\\\"\\\"", "\"\"\"") : text; - } -} diff --git a/gherkin/java/src/main/java/gherkin/TokenScanner.java b/gherkin/java/src/main/java/gherkin/TokenScanner.java deleted file mode 100644 index 054f9306c3..0000000000 --- a/gherkin/java/src/main/java/gherkin/TokenScanner.java +++ /dev/null @@ -1,39 +0,0 @@ -package gherkin; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.Reader; -import java.io.StringReader; - -/** - * <p> - * The scanner reads a gherkin doc (typically read from a .feature file) and creates a token - * for each line. The tokens are passed to the parser, which outputs an AST (Abstract Syntax Tree).</p> - * <p> - * If the scanner sees a # language header, it will reconfigure itself dynamically to look for - * Gherkin keywords for the associated language. The keywords are defined in gherkin-languages.json.</p> - */ -public class TokenScanner implements Parser.ITokenScanner { - - private final BufferedReader reader; - private int lineNumber; - - public TokenScanner(String source) { - this(new StringReader(source)); - } - - public TokenScanner(Reader source) { - this.reader = new BufferedReader(source); - } - - @Override - public Token read() { - try { - String line = reader.readLine(); - Location location = new Location(++lineNumber, 0); - return line == null ? new Token(null, location) : new Token(new GherkinLine(line), location); - } catch (IOException e) { - throw new RuntimeException(e); - } - } -} diff --git a/gherkin/java/src/main/java/gherkin/messages/FileSources.java b/gherkin/java/src/main/java/gherkin/messages/FileSources.java deleted file mode 100644 index 2e264c0a80..0000000000 --- a/gherkin/java/src/main/java/gherkin/messages/FileSources.java +++ /dev/null @@ -1,71 +0,0 @@ -package gherkin.messages; - -import io.cucumber.messages.Messages.Media; -import io.cucumber.messages.Messages.Source; - -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.Reader; -import java.util.Iterator; -import java.util.List; - -/** - * Iterates over {@link Source} messages from the file system. - */ -public class FileSources implements Iterable<Source> { - private final List<String> paths; - - public FileSources(List<String> paths) { - this.paths = paths; - } - - @Override - public Iterator<Source> iterator() { - final Iterator<String> pathIterator = paths.iterator(); - - return new Iterator<Source>() { - @Override - public boolean hasNext() { - return pathIterator.hasNext(); - } - - @Override - public Source next() { - try { - String path = pathIterator.next(); - String data = read(new InputStreamReader(new FileInputStream(path), "UTF-8")); - return Source.newBuilder() - .setUri(path) - .setData(data) - .setMedia( - Media.newBuilder() - .setContentType("text/x.cucumber.gherkin+plain") - .setEncoding("UTF-8") - ) - .build(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - @Override - public void remove() { - throw new UnsupportedOperationException(); - } - }; - } - - private static String read(Reader reader) throws IOException { - final char[] buffer = new char[0x10000]; - StringBuilder sb = new StringBuilder(); - int read; - do { - read = reader.read(buffer, 0, buffer.length); - if (read > 0) { - sb.append(buffer, 0, read); - } - } while (read >= 0); - return sb.toString(); - } -} diff --git a/gherkin/java/src/main/java/gherkin/messages/ParserCucumberMessages.java b/gherkin/java/src/main/java/gherkin/messages/ParserCucumberMessages.java deleted file mode 100644 index 77a21cf7e6..0000000000 --- a/gherkin/java/src/main/java/gherkin/messages/ParserCucumberMessages.java +++ /dev/null @@ -1,92 +0,0 @@ -package gherkin.messages; - -import gherkin.GherkinDocumentBuilder; -import gherkin.Parser; -import gherkin.ParserException; -import gherkin.TokenMatcher; -import gherkin.pickles.PickleCompiler; -import io.cucumber.messages.Messages.Attachment; -import io.cucumber.messages.Messages.GherkinDocument; -import io.cucumber.messages.Messages.Location; -import io.cucumber.messages.Messages.Pickle; -import io.cucumber.messages.Messages.Source; -import io.cucumber.messages.Messages.SourceReference; -import io.cucumber.messages.Messages.Wrapper; - -import java.util.ArrayList; -import java.util.List; - -public class ParserCucumberMessages implements CucumberMessages { - private final Parser<GherkinDocument.Builder> parser = new Parser<>(new GherkinDocumentBuilder()); - private final TokenMatcher matcher = new TokenMatcher(); - private final PickleCompiler pickleCompiler = new PickleCompiler(); - - private final List<String> paths; - private final boolean includeSource; - private final boolean includeGherkinDocument; - private final boolean includePickles; - - public ParserCucumberMessages(List<String> paths, boolean includeSource, boolean includeGherkinDocument, boolean includePickles) { - this.paths = paths; - this.includeSource = includeSource; - this.includeGherkinDocument = includeGherkinDocument; - this.includePickles = includePickles; - } - - @Override - public List<Wrapper> messages() { - List<Wrapper> messages = new ArrayList<>(); - - FileSources fileSources = new FileSources(paths); - for (Source source : fileSources) { - if (includeSource) { - messages.add(Wrapper.newBuilder().setSource(source).build()); - } - try { - GherkinDocument gherkinDocument = null; - - if (includeGherkinDocument) { - gherkinDocument = buildGherkinDocument(source); - messages.add(Wrapper.newBuilder().setGherkinDocument(gherkinDocument).build()); - } - if (includePickles) { - if (gherkinDocument == null) { - gherkinDocument = buildGherkinDocument(source); - } - List<Pickle> pickles = pickleCompiler.compile(gherkinDocument, source.getUri()); - for (Pickle pickle : pickles) { - messages.add(Wrapper.newBuilder().setPickle(pickle).build()); - } - } - } catch (ParserException.CompositeParserException e) { - for (ParserException error : e.errors) { - addErrorAttachment(messages, error, source.getUri()); - } - } catch (ParserException e) { - addErrorAttachment(messages, e, source.getUri()); - } - } - return messages; - } - - private GherkinDocument buildGherkinDocument(Source source) { - return parser.parse(source.getData(), matcher).setUri(source.getUri()).build(); - } - - private void addErrorAttachment(List<Wrapper> messages, ParserException e, String uri) { - Attachment attachment = Attachment.newBuilder() - // TODO: Set media here? - .setSource(SourceReference.newBuilder() - .setUri(uri) - .setLocation( - Location.newBuilder() - .setLine(e.location.getLine()) - .setColumn(e.location.getColumn()) - .build() - ) - .build()) - .setData(e.getMessage()) - .build(); - messages.add(Wrapper.newBuilder().setAttachment(attachment).build()); - } -} diff --git a/gherkin/java/src/main/java/gherkin/pickles/PickleCompiler.java b/gherkin/java/src/main/java/gherkin/pickles/PickleCompiler.java deleted file mode 100644 index 6f732c6f48..0000000000 --- a/gherkin/java/src/main/java/gherkin/pickles/PickleCompiler.java +++ /dev/null @@ -1,236 +0,0 @@ -package gherkin.pickles; - -import gherkin.SymbolCounter; -import io.cucumber.messages.Messages.DataTable; -import io.cucumber.messages.Messages.DocString; -import io.cucumber.messages.Messages.Examples; -import io.cucumber.messages.Messages.Feature; -import io.cucumber.messages.Messages.FeatureChild; -import io.cucumber.messages.Messages.GherkinDocument; -import io.cucumber.messages.Messages.Location; -import io.cucumber.messages.Messages.Pickle; -import io.cucumber.messages.Messages.PickleDocString; -import io.cucumber.messages.Messages.PickleStep; -import io.cucumber.messages.Messages.PickleTable; -import io.cucumber.messages.Messages.PickleTableCell; -import io.cucumber.messages.Messages.PickleTableRow; -import io.cucumber.messages.Messages.PickleTag; -import io.cucumber.messages.Messages.Rule; -import io.cucumber.messages.Messages.RuleChild; -import io.cucumber.messages.Messages.Scenario; -import io.cucumber.messages.Messages.Step; -import io.cucumber.messages.Messages.TableCell; -import io.cucumber.messages.Messages.TableRow; -import io.cucumber.messages.Messages.Tag; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Objects; - -import static java.util.Collections.unmodifiableList; - -public class PickleCompiler { - - public List<Pickle> compile(GherkinDocument gherkinDocument, String uri) { - List<Pickle> pickles = new ArrayList<>(); - Feature feature = gherkinDocument.getFeature(); - if (feature == null) { - return pickles; - } - - String language = feature.getLanguage(); - - compileFeature(pickles, feature, language, uri); - return pickles; - } - - private void compileFeature(List<Pickle> pickles, Feature feature, String language, String uri) { - List<Tag> tags = feature.getTagsList(); - List<PickleStep> backgroundSteps = new ArrayList<>(); - for (FeatureChild child : feature.getChildrenList()) { - if (child.hasBackground()) { - backgroundSteps.addAll(pickleSteps(child.getBackground().getStepsList())); - } else if (child.hasRule()) { - compileRule(pickles, child.getRule(), tags, backgroundSteps, language, uri); - } else { - Scenario scenario = child.getScenario(); - if (scenario.getExamplesList().isEmpty()) { - compileScenario(pickles, scenario, tags, backgroundSteps, language, uri); - } else { - compileScenarioOutline(pickles, scenario, tags, backgroundSteps, language, uri); - } - } - } - } - - private void compileRule(List<Pickle> pickles, Rule rule, List<Tag> tags, List<PickleStep> featureBackgroundSteps, String language, String uri) { - List<PickleStep> backgroundSteps = new ArrayList<>(featureBackgroundSteps); - for (RuleChild child : rule.getChildrenList()) { - if (child.hasBackground()) { - backgroundSteps.addAll(pickleSteps(child.getBackground().getStepsList())); - } else { - Scenario scenario = child.getScenario(); - if (scenario.getExamplesList().isEmpty()) { - compileScenario(pickles, scenario, tags, backgroundSteps, language, uri); - } else { - compileScenarioOutline(pickles, scenario, tags, backgroundSteps, language, uri); - } - } - } - } - - private void compileScenario(List<Pickle> pickles, Scenario scenario, List<Tag> parentTags, List<PickleStep> backgroundSteps, String language, String uri) { - List<PickleStep> steps = new ArrayList<>(); - if (!scenario.getStepsList().isEmpty()) - steps.addAll(backgroundSteps); - - steps.addAll(pickleSteps(scenario.getStepsList())); - - List<Tag> scenarioTags = new ArrayList<>(); - scenarioTags.addAll(parentTags); - scenarioTags.addAll(scenario.getTagsList()); - - List<PickleTag> pickleTags = pickleTags(scenarioTags); - - Pickle pickle = Pickle.newBuilder() - .setUri(uri) - .setName(scenario.getName()) - .setLanguage(language) - .addAllSteps(steps) - .addAllTags(pickleTags) - .addLocations(scenario.getLocation()) - .build(); - pickles.add(pickle); - } - - private void compileScenarioOutline(List<Pickle> pickles, Scenario scenario, List<Tag> featureTags, List<PickleStep> backgroundSteps, String language, String uri) { - for (final Examples examples : scenario.getExamplesList()) { - if (examples.getTableHeader() == null) continue; - List<TableCell> variableCells = examples.getTableHeader().getCellsList(); - for (final TableRow values : examples.getTableBodyList()) { - List<TableCell> valueCells = values.getCellsList(); - - List<PickleStep> steps = new ArrayList<>(); - - if (!scenario.getStepsList().isEmpty()) - steps.addAll(backgroundSteps); - - List<Tag> tags = new ArrayList<>(); - tags.addAll(featureTags); - tags.addAll(scenario.getTagsList()); - tags.addAll(examples.getTagsList()); - - for (Step scenarioOutlineStep : scenario.getStepsList()) { - PickleStep.Builder pickleStepBuilder = pickleStepBuilder(scenarioOutlineStep, variableCells, valueCells); - - pickleStepBuilder.addLocations(values.getLocation()); - - steps.add(pickleStepBuilder.build()); - } - - Pickle pickle = Pickle.newBuilder() - .setUri(uri) - .setName(interpolate(scenario.getName(), variableCells, valueCells)) - .setLanguage(language) - .addAllSteps(steps) - .addAllTags(pickleTags(tags)) - .addLocations(scenario.getLocation()) - .addLocations(values.getLocation()) - .build(); - - pickles.add(pickle); - } - } - } - - private PickleTable pickleDataTable(DataTable dataTable, List<TableCell> variableCells, List<TableCell> valueCells) { - List<TableRow> rows = dataTable.getRowsList(); - List<PickleTableRow> newRows = new ArrayList<>(rows.size()); - for (TableRow row : rows) { - List<TableCell> cells = row.getCellsList(); - List<PickleTableCell> newCells = new ArrayList<>(); - for (TableCell cell : cells) { - newCells.add( - PickleTableCell.newBuilder() - .setLocation(cell.getLocation()) - .setValue(interpolate(cell.getValue(), variableCells, valueCells)) - .build() - ); - } - newRows.add(PickleTableRow.newBuilder().addAllCells(newCells).build()); - } - return PickleTable.newBuilder().addAllRows(newRows).build(); - } - - private PickleDocString pickleDocString(DocString docString, List<TableCell> variableCells, List<TableCell> valueCells) { - return PickleDocString.newBuilder() - .setLocation(docString.getLocation()) - .setContent(interpolate(docString.getContent(), variableCells, valueCells)) - .setContentType(Objects.requireNonNull(docString.getContentType() == null ? null : interpolate(docString.getContentType(), variableCells, valueCells))) - .build(); - } - - private PickleStep.Builder pickleStepBuilder(Step step, List<TableCell> variableCells, List<TableCell> valueCells) { - String stepText = interpolate(step.getText(), variableCells, valueCells); - - PickleStep.Builder pickleStepBuilder = PickleStep.newBuilder() - .setText(stepText) - .addLocations(pickleStepLocation(step)); - - if (step.hasDataTable()) { - pickleStepBuilder.setDataTable(pickleDataTable(step.getDataTable(), variableCells, valueCells)); - } - - if (step.hasDocString()) { - pickleStepBuilder.setDocString(pickleDocString(step.getDocString(), variableCells, valueCells)); - } - return pickleStepBuilder; - } - - private List<PickleStep> pickleSteps(List<Step> steps) { - List<PickleStep> result = new ArrayList<>(); - for (Step step : steps) { - result.add(pickleStep(step)); - } - return unmodifiableList(result); - } - - private PickleStep pickleStep(Step step) { - PickleStep.Builder pickleStepBuilder = pickleStepBuilder(step, Collections.<TableCell>emptyList(), Collections.<TableCell>emptyList()); - return pickleStepBuilder.build(); - } - - private String interpolate(String name, List<TableCell> variableCells, List<TableCell> valueCells) { - int col = 0; - for (TableCell variableCell : variableCells) { - TableCell valueCell = valueCells.get(col++); - String header = variableCell.getValue(); - String value = valueCell.getValue(); - name = name.replace("<" + header + ">", value); - } - return name; - } - - private Location pickleStepLocation(Step step) { - return Location.newBuilder() - .setLine(step.getLocation().getLine()) - .setColumn(step.getLocation().getColumn() + (step.getKeyword() != null ? SymbolCounter.countSymbols(step.getKeyword()) : 0)) - .build(); - } - - private List<PickleTag> pickleTags(List<Tag> tags) { - List<PickleTag> result = new ArrayList<>(); - for (Tag tag : tags) { - result.add(pickleTag(tag)); - } - return result; - } - - private PickleTag pickleTag(Tag tag) { - return PickleTag.newBuilder() - .setLocation(tag.getLocation()) - .setName(tag.getName()) - .build(); - } -} diff --git a/gherkin/java/src/main/java/gherkin/messages/CucumberMessages.java b/gherkin/java/src/main/java/io/cucumber/gherkin/CucumberMessages.java similarity index 82% rename from gherkin/java/src/main/java/gherkin/messages/CucumberMessages.java rename to gherkin/java/src/main/java/io/cucumber/gherkin/CucumberMessages.java index bc42432eb8..0ab8d96f86 100644 --- a/gherkin/java/src/main/java/gherkin/messages/CucumberMessages.java +++ b/gherkin/java/src/main/java/io/cucumber/gherkin/CucumberMessages.java @@ -1,4 +1,4 @@ -package gherkin.messages; +package io.cucumber.gherkin; import io.cucumber.messages.Messages; diff --git a/gherkin/java/src/main/java/gherkin/GherkinException.java b/gherkin/java/src/main/java/io/cucumber/gherkin/GherkinException.java similarity index 81% rename from gherkin/java/src/main/java/gherkin/GherkinException.java rename to gherkin/java/src/main/java/io/cucumber/gherkin/GherkinException.java index 2b66cb6aad..06f8d7aee3 100644 --- a/gherkin/java/src/main/java/gherkin/GherkinException.java +++ b/gherkin/java/src/main/java/io/cucumber/gherkin/GherkinException.java @@ -1,6 +1,4 @@ -package gherkin; - -import java.io.IOException; +package io.cucumber.gherkin; public class GherkinException extends RuntimeException { public GherkinException(String message) { diff --git a/gherkin/java/src/main/java/gherkin/cli/Main.java b/gherkin/java/src/main/java/io/cucumber/gherkin/Main.java similarity index 64% rename from gherkin/java/src/main/java/gherkin/cli/Main.java rename to gherkin/java/src/main/java/io/cucumber/gherkin/Main.java index f864f1193c..a5ed230540 100644 --- a/gherkin/java/src/main/java/gherkin/cli/Main.java +++ b/gherkin/java/src/main/java/io/cucumber/gherkin/Main.java @@ -1,9 +1,5 @@ -package gherkin.cli; +package io.cucumber.gherkin; -import gherkin.messages.CucumberMessages; -import gherkin.messages.ParserCucumberMessages; -import gherkin.messages.ProtobufCucumberMessages; -import gherkin.messages.SubprocessCucumberMessages; import io.cucumber.messages.Messages.Wrapper; import io.cucumber.messages.com.google.protobuf.util.JsonFormat; import io.cucumber.messages.com.google.protobuf.util.JsonFormat.Printer; @@ -22,26 +18,26 @@ public static void main(String[] argv) throws IOException { List<String> args = new ArrayList<>(asList(argv)); List<String> paths = new ArrayList<>(); - boolean printSource = true; - boolean printAst = true; - boolean printPickles = true; - boolean protobuf = false; + boolean includeSource = true; + boolean includeAst = true; + boolean includePickles = true; + boolean json = false; while (!args.isEmpty()) { String arg = args.remove(0).trim(); switch (arg) { case "--no-source": - printSource = false; + includeSource = false; break; case "--no-ast": - printAst = false; + includeAst = false; break; case "--no-pickles": - printPickles = false; + includePickles = false; break; - case "--protobuf": - protobuf = true; + case "--json": + json = true; break; default: paths.add(arg); @@ -51,13 +47,10 @@ public static void main(String[] argv) throws IOException { String gherkinExecutable = System.getenv("GHERKIN_EXECUTABLE"); if (paths.isEmpty()) { CucumberMessages cucumberMessages = new ProtobufCucumberMessages(System.in); - printMessages(printer, protobuf, cucumberMessages); + printMessages(printer, json, cucumberMessages); } else if (gherkinExecutable != null) { - CucumberMessages cucumberMessages = new SubprocessCucumberMessages(gherkinExecutable, paths, printSource, printAst, printPickles); - printMessages(printer, protobuf, cucumberMessages); - } else { - CucumberMessages cucumberMessages = new ParserCucumberMessages(paths, printSource, printAst, printPickles); - printMessages(printer, protobuf, cucumberMessages); + CucumberMessages cucumberMessages = new SubprocessCucumberMessages(gherkinExecutable, paths, includeSource, includeAst, includePickles); + printMessages(printer, json, cucumberMessages); } } diff --git a/gherkin/java/src/main/java/gherkin/messages/ProtobufCucumberMessages.java b/gherkin/java/src/main/java/io/cucumber/gherkin/ProtobufCucumberMessages.java similarity index 92% rename from gherkin/java/src/main/java/gherkin/messages/ProtobufCucumberMessages.java rename to gherkin/java/src/main/java/io/cucumber/gherkin/ProtobufCucumberMessages.java index 72e17ff773..a5d76b612a 100644 --- a/gherkin/java/src/main/java/gherkin/messages/ProtobufCucumberMessages.java +++ b/gherkin/java/src/main/java/io/cucumber/gherkin/ProtobufCucumberMessages.java @@ -1,6 +1,5 @@ -package gherkin.messages; +package io.cucumber.gherkin; -import gherkin.GherkinException; import io.cucumber.messages.Messages.Wrapper; import java.io.IOException; diff --git a/gherkin/java/src/main/java/gherkin/cli/Stdio.java b/gherkin/java/src/main/java/io/cucumber/gherkin/Stdio.java similarity index 93% rename from gherkin/java/src/main/java/gherkin/cli/Stdio.java rename to gherkin/java/src/main/java/io/cucumber/gherkin/Stdio.java index 5780720ac2..002ec2a463 100644 --- a/gherkin/java/src/main/java/gherkin/cli/Stdio.java +++ b/gherkin/java/src/main/java/io/cucumber/gherkin/Stdio.java @@ -1,4 +1,4 @@ -package gherkin.cli; +package io.cucumber.gherkin; import java.io.OutputStreamWriter; import java.io.PrintWriter; diff --git a/gherkin/java/src/main/java/gherkin/messages/SubprocessCucumberMessages.java b/gherkin/java/src/main/java/io/cucumber/gherkin/SubprocessCucumberMessages.java similarity index 74% rename from gherkin/java/src/main/java/gherkin/messages/SubprocessCucumberMessages.java rename to gherkin/java/src/main/java/io/cucumber/gherkin/SubprocessCucumberMessages.java index d6ed70faf5..b6d418d6d0 100644 --- a/gherkin/java/src/main/java/gherkin/messages/SubprocessCucumberMessages.java +++ b/gherkin/java/src/main/java/io/cucumber/gherkin/SubprocessCucumberMessages.java @@ -1,6 +1,5 @@ -package gherkin.messages; +package io.cucumber.gherkin; -import gherkin.GherkinException; import io.cucumber.messages.Messages.Wrapper; import java.io.File; @@ -16,16 +15,16 @@ public class SubprocessCucumberMessages implements CucumberMessages { private final String cucumberExecutable; private final List<String> paths; - private final boolean printSource; - private final boolean printAst; - private final boolean printPickles; + private final boolean includeSource; + private final boolean includeAst; + private final boolean includePickles; - public SubprocessCucumberMessages(String gherkinExecutable, List<String> paths, boolean printSource, boolean printAst, boolean printPickles) { + public SubprocessCucumberMessages(String gherkinExecutable, List<String> paths, boolean includeSource, boolean includeAst, boolean includePickles) { this.cucumberExecutable = gherkinExecutable; this.paths = paths; - this.printSource = printSource; - this.printAst = printAst; - this.printPickles = printPickles; + this.includeSource = includeSource; + this.includeAst = includeAst; + this.includePickles = includePickles; } @Override @@ -33,10 +32,9 @@ public List<Wrapper> messages() { try { List<String> args = new ArrayList<>(); args.add(cucumberExecutable); - args.add("--protobuf"); - if(!printSource) args.add("--no-source"); - if(!printAst) args.add("--no-ast"); - if(!printPickles) args.add("--no-pickles"); + if (!includeSource) args.add("--no-source"); + if (!includeAst) args.add("--no-ast"); + if (!includePickles) args.add("--no-pickles"); args.addAll(paths); ProcessBuilder processBuilder = new ProcessBuilder().command(args); File stderrFile = File.createTempFile("gherkin-stderr-", ".log"); diff --git a/gherkin/java/src/main/protobuf/events.proto b/gherkin/java/src/main/protobuf/events.proto deleted file mode 100644 index 964e2cef91..0000000000 --- a/gherkin/java/src/main/protobuf/events.proto +++ /dev/null @@ -1,36 +0,0 @@ -syntax = "proto3"; -import "gherkin_document.proto"; -import "pickle.proto"; -import "location.proto"; -package gherkin.protobuf; - -message AttachmentEvent { - SourceReference source = 1; - string data = 2; - Media media = 3; -} - -message GherkinDocumentEvent { - GherkinDocument document = 1; - string uri = 2; -} - -message Media { - string encoding = 1; - string type = 2; -} - -message PickleEvent { - string uri = 1; - Pickle pickle = 2; -} - -message SourceEvent { - string uri = 1; - string data = 2; -} - -message SourceReference { - string uri = 1; - Location start = 2; -} diff --git a/gherkin/java/src/main/protobuf/gherkin_document.proto b/gherkin/java/src/main/protobuf/gherkin_document.proto deleted file mode 100644 index c16b2a21db..0000000000 --- a/gherkin/java/src/main/protobuf/gherkin_document.proto +++ /dev/null @@ -1,111 +0,0 @@ -syntax = "proto3"; -import "google/protobuf/any.proto"; -import "location.proto"; -package gherkin.protobuf; - -message Background { - Location location = 1; - string type = 2; - string keyword = 3; - string name = 4; - string description = 5; - repeated Step steps = 6; -} - -message Comment { - Location location = 1; - string type = 2; - string text = 3; -} - -message DataTable { - Location location = 1; - string type = 2; - repeated TableRow rows = 3; -} - -message DocString { - Location location = 1; - string type = 2; - string content_type = 3; - string content = 4; - string delimiter = 5; -} - -message Example { - Location location = 1; - string type = 2; - repeated Tag tags = 3; - string keyword = 4; - string name = 5; - string description = 6; - TableRow table_header = 7; - repeated TableRow table_body = 8; -} - -message Feature { - Location location = 1; - string type = 2; - repeated Tag tags = 3; - string language = 4; - string keyword = 5; - string name = 6; - string description = 7; - repeated google.protobuf.Any children = 8; -} - -message GherkinDocument { - string type = 1; - Feature feature = 2; - repeated Comment comments = 3; -} - -message Scenario { - Location location = 1; - string type = 2; - repeated Tag tags = 3; - string keyword = 4; - string name = 5; - string description = 6; - repeated Step steps = 7; -} - -message ScenarioOutline { - Location location = 1; - string type = 2; - repeated Tag tags = 3; - string keyword = 4; - string name = 5; - string description = 6; - repeated Step steps = 7; - repeated Example examples = 8; -} - -message Step { - Location location = 1; - string type = 2; - string keyword = 3; - string text = 4; - oneof argument { - DocString doc_string = 5; - DataTable data_table = 6; - } -} - -message TableCell { - Location location = 1; - string type = 2; - string value = 3; -} - -message TableRow { - Location location = 1; - string type = 2; - repeated TableCell cells = 3; -} - -message Tag { - Location location = 1; - string type = 2; - string name = 3; -} diff --git a/gherkin/java/src/main/protobuf/google/protobuf/any.proto b/gherkin/java/src/main/protobuf/google/protobuf/any.proto deleted file mode 100644 index 4932942558..0000000000 --- a/gherkin/java/src/main/protobuf/google/protobuf/any.proto +++ /dev/null @@ -1,154 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option go_package = "github.com/golang/protobuf/ptypes/any"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "AnyProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; - -// `Any` contains an arbitrary serialized protocol buffer message along with a -// URL that describes the type of the serialized message. -// -// Protobuf library provides support to pack/unpack Any values in the form -// of utility functions or additional generated methods of the Any type. -// -// Example 1: Pack and unpack a message in C++. -// -// Foo foo = ...; -// Any any; -// any.PackFrom(foo); -// ... -// if (any.UnpackTo(&foo)) { -// ... -// } -// -// Example 2: Pack and unpack a message in Java. -// -// Foo foo = ...; -// Any any = Any.pack(foo); -// ... -// if (any.is(Foo.class)) { -// foo = any.unpack(Foo.class); -// } -// -// Example 3: Pack and unpack a message in Python. -// -// foo = Foo(...) -// any = Any() -// any.Pack(foo) -// ... -// if any.Is(Foo.DESCRIPTOR): -// any.Unpack(foo) -// ... -// -// Example 4: Pack and unpack a message in Go -// -// foo := &pb.Foo{...} -// any, err := ptypes.MarshalAny(foo) -// ... -// foo := &pb.Foo{} -// if err := ptypes.UnmarshalAny(any, foo); err != nil { -// ... -// } -// -// The pack methods provided by protobuf library will by default use -// 'type.googleapis.com/full.type.name' as the type URL and the unpack -// methods only use the fully qualified type name after the last '/' -// in the type URL, for example "foo.bar.com/x/y.z" will yield type -// name "y.z". -// -// -// JSON -// ==== -// The JSON representation of an `Any` value uses the regular -// representation of the deserialized, embedded message, with an -// additional field `@type` which contains the type URL. Example: -// -// package google.profile; -// message Person { -// string first_name = 1; -// string last_name = 2; -// } -// -// { -// "@type": "type.googleapis.com/google.profile.Person", -// "firstName": <string>, -// "lastName": <string> -// } -// -// If the embedded message type is well-known and has a custom JSON -// representation, that representation will be embedded adding a field -// `value` which holds the custom JSON in addition to the `@type` -// field. Example (for message [google.protobuf.Duration][]): -// -// { -// "@type": "type.googleapis.com/google.protobuf.Duration", -// "value": "1.212s" -// } -// -message Any { - // A URL/resource name that uniquely identifies the type of the serialized - // protocol buffer message. The last segment of the URL's path must represent - // the fully qualified name of the type (as in - // `path/google.protobuf.Duration`). The name should be in a canonical form - // (e.g., leading "." is not accepted). - // - // In practice, teams usually precompile into the binary all types that they - // expect it to use in the context of Any. However, for URLs which use the - // scheme `http`, `https`, or no scheme, one can optionally set up a type - // server that maps type URLs to message definitions as follows: - // - // * If no scheme is provided, `https` is assumed. - // * An HTTP GET on the URL must yield a [google.protobuf.Type][] - // value in binary format, or produce an error. - // * Applications are allowed to cache lookup results based on the - // URL, or have them precompiled into a binary to avoid any - // lookup. Therefore, binary compatibility needs to be preserved - // on changes to types. (Use versioned type names to manage - // breaking changes.) - // - // Note: this functionality is not currently available in the official - // protobuf release, and it is not used for type URLs beginning with - // type.googleapis.com. - // - // Schemes other than `http`, `https` (or the empty scheme) might be - // used with implementation specific semantics. - // - string type_url = 1; - - // Must be a valid serialized protocol buffer of the above specified type. - bytes value = 2; -} diff --git a/gherkin/java/src/main/protobuf/location.proto b/gherkin/java/src/main/protobuf/location.proto deleted file mode 100644 index 8cc7bed148..0000000000 --- a/gherkin/java/src/main/protobuf/location.proto +++ /dev/null @@ -1,7 +0,0 @@ -syntax = "proto3"; -package gherkin.protobuf; - -message Location { - uint64 line = 1; - uint64 column = 2; -} diff --git a/gherkin/java/src/main/protobuf/pickle.proto b/gherkin/java/src/main/protobuf/pickle.proto deleted file mode 100644 index dc0093dd00..0000000000 --- a/gherkin/java/src/main/protobuf/pickle.proto +++ /dev/null @@ -1,42 +0,0 @@ -syntax = "proto3"; -import "google/protobuf/any.proto"; -import "location.proto"; -package gherkin.protobuf; - -message Pickle { - string name = 1; - string language = 2; - repeated PickleStep steps = 3; - repeated PickleTag tags = 4; - repeated Location locations = 5; -} - -message PickleDocString { - Location location = 1; - string contentType = 2; - string content = 3; -} - -message PickleStep { - string text = 1; - repeated google.protobuf.Any arguments = 2; - repeated Location locations = 3; -} - -message PickleTable { - repeated PickleTableRow rows = 1; -} - -message PickleTableCell { - Location location = 1; - string value = 2; -} - -message PickleTableRow { - repeated PickleTableCell cells = 1; -} - -message PickleTag { - Location location = 1; - string name = 2; -} diff --git a/gherkin/java/src/main/resources/gherkin/gherkin-languages.json b/gherkin/java/src/main/resources/gherkin/gherkin-languages.json deleted file mode 100644 index 477c700501..0000000000 --- a/gherkin/java/src/main/resources/gherkin/gherkin-languages.json +++ /dev/null @@ -1,3509 +0,0 @@ -{ - "af": { - "and": [ - "* ", - "En " - ], - "background": [ - "Agtergrond" - ], - "but": [ - "* ", - "Maar " - ], - "examples": [ - "Voorbeelde" - ], - "feature": [ - "Funksie", - "Besigheid Behoefte", - "Vermoë" - ], - "given": [ - "* ", - "Gegewe " - ], - "name": "Afrikaans", - "native": "Afrikaans", - "rule": [ - "Rule" - ], - "scenario": [ - "Voorbeeld", - "Situasie" - ], - "scenarioOutline": [ - "Situasie Uiteensetting" - ], - "then": [ - "* ", - "Dan " - ], - "when": [ - "* ", - "Wanneer " - ] - }, - "am": { - "and": [ - "* ", - "Եվ " - ], - "background": [ - "Կոնտեքստ" - ], - "but": [ - "* ", - "Բայց " - ], - "examples": [ - "Օրինակներ" - ], - "feature": [ - "Ֆունկցիոնալություն", - "Հատկություն" - ], - "given": [ - "* ", - "Դիցուք " - ], - "name": "Armenian", - "native": "հայերեն", - "rule": [ - "Rule" - ], - "scenario": [ - "Օրինակ", - "Սցենար" - ], - "scenarioOutline": [ - "Սցենարի կառուցվացքը" - ], - "then": [ - "* ", - "Ապա " - ], - "when": [ - "* ", - "Եթե ", - "Երբ " - ] - }, - "an": { - "and": [ - "* ", - "Y ", - "E " - ], - "background": [ - "Antecedents" - ], - "but": [ - "* ", - "Pero " - ], - "examples": [ - "Eixemplos" - ], - "feature": [ - "Caracteristica" - ], - "given": [ - "* ", - "Dau ", - "Dada ", - "Daus ", - "Dadas " - ], - "name": "Aragonese", - "native": "Aragonés", - "rule": [ - "Rule" - ], - "scenario": [ - "Eixemplo", - "Caso" - ], - "scenarioOutline": [ - "Esquema del caso" - ], - "then": [ - "* ", - "Alavez ", - "Allora ", - "Antonces " - ], - "when": [ - "* ", - "Cuan " - ] - }, - "ar": { - "and": [ - "* ", - "و " - ], - "background": [ - "الخلفية" - ], - "but": [ - "* ", - "لكن " - ], - "examples": [ - "امثلة" - ], - "feature": [ - "خاصية" - ], - "given": [ - "* ", - "بفرض " - ], - "name": "Arabic", - "native": "العربية", - "rule": [ - "Rule" - ], - "scenario": [ - "مثال", - "سيناريو" - ], - "scenarioOutline": [ - "سيناريو مخطط" - ], - "then": [ - "* ", - "اذاً ", - "ثم " - ], - "when": [ - "* ", - "متى ", - "عندما " - ] - }, - "ast": { - "and": [ - "* ", - "Y ", - "Ya " - ], - "background": [ - "Antecedentes" - ], - "but": [ - "* ", - "Peru " - ], - "examples": [ - "Exemplos" - ], - "feature": [ - "Carauterística" - ], - "given": [ - "* ", - "Dáu ", - "Dada ", - "Daos ", - "Daes " - ], - "name": "Asturian", - "native": "asturianu", - "rule": [ - "Rule" - ], - "scenario": [ - "Exemplo", - "Casu" - ], - "scenarioOutline": [ - "Esbozu del casu" - ], - "then": [ - "* ", - "Entós " - ], - "when": [ - "* ", - "Cuando " - ] - }, - "az": { - "and": [ - "* ", - "Və ", - "Həm " - ], - "background": [ - "Keçmiş", - "Kontekst" - ], - "but": [ - "* ", - "Amma ", - "Ancaq " - ], - "examples": [ - "Nümunələr" - ], - "feature": [ - "Özəllik" - ], - "given": [ - "* ", - "Tutaq ki ", - "Verilir " - ], - "name": "Azerbaijani", - "native": "Azərbaycanca", - "rule": [ - "Rule" - ], - "scenario": [ - "Nümunələr", - "Ssenari" - ], - "scenarioOutline": [ - "Ssenarinin strukturu" - ], - "then": [ - "* ", - "O halda " - ], - "when": [ - "* ", - "Əgər ", - "Nə vaxt ki " - ] - }, - "bg": { - "and": [ - "* ", - "И " - ], - "background": [ - "Предистория" - ], - "but": [ - "* ", - "Но " - ], - "examples": [ - "Примери" - ], - "feature": [ - "Функционалност" - ], - "given": [ - "* ", - "Дадено " - ], - "name": "Bulgarian", - "native": "български", - "rule": [ - "Rule" - ], - "scenario": [ - "Пример", - "Сценарий" - ], - "scenarioOutline": [ - "Рамка на сценарий" - ], - "then": [ - "* ", - "То " - ], - "when": [ - "* ", - "Когато " - ] - }, - "bm": { - "and": [ - "* ", - "Dan " - ], - "background": [ - "Latar Belakang" - ], - "but": [ - "* ", - "Tetapi ", - "Tapi " - ], - "examples": [ - "Contoh" - ], - "feature": [ - "Fungsi" - ], - "given": [ - "* ", - "Diberi ", - "Bagi " - ], - "name": "Malay", - "native": "Bahasa Melayu", - "rule": [ - "Rule" - ], - "scenario": [ - "Senario", - "Situasi", - "Keadaan" - ], - "scenarioOutline": [ - "Kerangka Senario", - "Kerangka Situasi", - "Kerangka Keadaan", - "Garis Panduan Senario" - ], - "then": [ - "* ", - "Maka ", - "Kemudian " - ], - "when": [ - "* ", - "Apabila " - ] - }, - "bs": { - "and": [ - "* ", - "I ", - "A " - ], - "background": [ - "Pozadina" - ], - "but": [ - "* ", - "Ali " - ], - "examples": [ - "Primjeri" - ], - "feature": [ - "Karakteristika" - ], - "given": [ - "* ", - "Dato " - ], - "name": "Bosnian", - "native": "Bosanski", - "rule": [ - "Rule" - ], - "scenario": [ - "Primjer", - "Scenariju", - "Scenario" - ], - "scenarioOutline": [ - "Scenariju-obris", - "Scenario-outline" - ], - "then": [ - "* ", - "Zatim " - ], - "when": [ - "* ", - "Kada " - ] - }, - "ca": { - "and": [ - "* ", - "I " - ], - "background": [ - "Rerefons", - "Antecedents" - ], - "but": [ - "* ", - "Però " - ], - "examples": [ - "Exemples" - ], - "feature": [ - "Característica", - "Funcionalitat" - ], - "given": [ - "* ", - "Donat ", - "Donada ", - "Atès ", - "Atesa " - ], - "name": "Catalan", - "native": "català", - "rule": [ - "Rule" - ], - "scenario": [ - "Exemple", - "Escenari" - ], - "scenarioOutline": [ - "Esquema de l'escenari" - ], - "then": [ - "* ", - "Aleshores ", - "Cal " - ], - "when": [ - "* ", - "Quan " - ] - }, - "cs": { - "and": [ - "* ", - "A také ", - "A " - ], - "background": [ - "Pozadí", - "Kontext" - ], - "but": [ - "* ", - "Ale " - ], - "examples": [ - "Příklady" - ], - "feature": [ - "Požadavek" - ], - "given": [ - "* ", - "Pokud ", - "Za předpokladu " - ], - "name": "Czech", - "native": "Česky", - "rule": [ - "Rule" - ], - "scenario": [ - "Příklad", - "Scénář" - ], - "scenarioOutline": [ - "Náčrt Scénáře", - "Osnova scénáře" - ], - "then": [ - "* ", - "Pak " - ], - "when": [ - "* ", - "Když " - ] - }, - "cy-GB": { - "and": [ - "* ", - "A " - ], - "background": [ - "Cefndir" - ], - "but": [ - "* ", - "Ond " - ], - "examples": [ - "Enghreifftiau" - ], - "feature": [ - "Arwedd" - ], - "given": [ - "* ", - "Anrhegedig a " - ], - "name": "Welsh", - "native": "Cymraeg", - "rule": [ - "Rule" - ], - "scenario": [ - "Enghraifft", - "Scenario" - ], - "scenarioOutline": [ - "Scenario Amlinellol" - ], - "then": [ - "* ", - "Yna " - ], - "when": [ - "* ", - "Pryd " - ] - }, - "da": { - "and": [ - "* ", - "Og " - ], - "background": [ - "Baggrund" - ], - "but": [ - "* ", - "Men " - ], - "examples": [ - "Eksempler" - ], - "feature": [ - "Egenskab" - ], - "given": [ - "* ", - "Givet " - ], - "name": "Danish", - "native": "dansk", - "rule": [ - "Rule" - ], - "scenario": [ - "Eksempel", - "Scenarie" - ], - "scenarioOutline": [ - "Abstrakt Scenario" - ], - "then": [ - "* ", - "Så " - ], - "when": [ - "* ", - "Når " - ] - }, - "de": { - "and": [ - "* ", - "Und " - ], - "background": [ - "Grundlage" - ], - "but": [ - "* ", - "Aber " - ], - "examples": [ - "Beispiele" - ], - "feature": [ - "Funktionalität" - ], - "given": [ - "* ", - "Angenommen ", - "Gegeben sei ", - "Gegeben seien " - ], - "name": "German", - "native": "Deutsch", - "rule": [ - "Rule" - ], - "scenario": [ - "Beispiel", - "Szenario" - ], - "scenarioOutline": [ - "Szenariogrundriss" - ], - "then": [ - "* ", - "Dann " - ], - "when": [ - "* ", - "Wenn " - ] - }, - "el": { - "and": [ - "* ", - "Και " - ], - "background": [ - "Υπόβαθρο" - ], - "but": [ - "* ", - "Αλλά " - ], - "examples": [ - "Παραδείγματα", - "Σενάρια" - ], - "feature": [ - "Δυνατότητα", - "Λειτουργία" - ], - "given": [ - "* ", - "Δεδομένου " - ], - "name": "Greek", - "native": "Ελληνικά", - "rule": [ - "Rule" - ], - "scenario": [ - "Παράδειγμα", - "Σενάριο" - ], - "scenarioOutline": [ - "Περιγραφή Σεναρίου", - "Περίγραμμα Σεναρίου" - ], - "then": [ - "* ", - "Τότε " - ], - "when": [ - "* ", - "Όταν " - ] - }, - "em": { - "and": [ - "* ", - "😂" - ], - "background": [ - "💤" - ], - "but": [ - "* ", - "😔" - ], - "examples": [ - "📓" - ], - "feature": [ - "📚" - ], - "given": [ - "* ", - "😐" - ], - "name": "Emoji", - "native": "😀", - "rule": [ - "Rule" - ], - "scenario": [ - "🥒", - "📕" - ], - "scenarioOutline": [ - "📖" - ], - "then": [ - "* ", - "🙏" - ], - "when": [ - "* ", - "🎬" - ] - }, - "en": { - "and": [ - "* ", - "And " - ], - "background": [ - "Background" - ], - "but": [ - "* ", - "But " - ], - "examples": [ - "Examples", - "Scenarios" - ], - "feature": [ - "Feature", - "Business Need", - "Ability" - ], - "given": [ - "* ", - "Given " - ], - "name": "English", - "native": "English", - "rule": [ - "Rule" - ], - "scenario": [ - "Example", - "Scenario" - ], - "scenarioOutline": [ - "Scenario Outline", - "Scenario Template" - ], - "then": [ - "* ", - "Then " - ], - "when": [ - "* ", - "When " - ] - }, - "en-Scouse": { - "and": [ - "* ", - "An " - ], - "background": [ - "Dis is what went down" - ], - "but": [ - "* ", - "Buh " - ], - "examples": [ - "Examples" - ], - "feature": [ - "Feature" - ], - "given": [ - "* ", - "Givun ", - "Youse know when youse got " - ], - "name": "Scouse", - "native": "Scouse", - "rule": [ - "Rule" - ], - "scenario": [ - "The thing of it is" - ], - "scenarioOutline": [ - "Wharrimean is" - ], - "then": [ - "* ", - "Dun ", - "Den youse gotta " - ], - "when": [ - "* ", - "Wun ", - "Youse know like when " - ] - }, - "en-au": { - "and": [ - "* ", - "Too right " - ], - "background": [ - "First off" - ], - "but": [ - "* ", - "Yeah nah " - ], - "examples": [ - "You'll wanna" - ], - "feature": [ - "Pretty much" - ], - "given": [ - "* ", - "Y'know " - ], - "name": "Australian", - "native": "Australian", - "rule": [ - "Rule" - ], - "scenario": [ - "Awww, look mate" - ], - "scenarioOutline": [ - "Reckon it's like" - ], - "then": [ - "* ", - "But at the end of the day I reckon " - ], - "when": [ - "* ", - "It's just unbelievable " - ] - }, - "en-lol": { - "and": [ - "* ", - "AN " - ], - "background": [ - "B4" - ], - "but": [ - "* ", - "BUT " - ], - "examples": [ - "EXAMPLZ" - ], - "feature": [ - "OH HAI" - ], - "given": [ - "* ", - "I CAN HAZ " - ], - "name": "LOLCAT", - "native": "LOLCAT", - "rule": [ - "Rule" - ], - "scenario": [ - "MISHUN" - ], - "scenarioOutline": [ - "MISHUN SRSLY" - ], - "then": [ - "* ", - "DEN " - ], - "when": [ - "* ", - "WEN " - ] - }, - "en-old": { - "and": [ - "* ", - "Ond ", - "7 " - ], - "background": [ - "Aer", - "Ær" - ], - "but": [ - "* ", - "Ac " - ], - "examples": [ - "Se the", - "Se þe", - "Se ðe" - ], - "feature": [ - "Hwaet", - "Hwæt" - ], - "given": [ - "* ", - "Thurh ", - "Þurh ", - "Ðurh " - ], - "name": "Old English", - "native": "Englisc", - "rule": [ - "Rule" - ], - "scenario": [ - "Swa" - ], - "scenarioOutline": [ - "Swa hwaer swa", - "Swa hwær swa" - ], - "then": [ - "* ", - "Tha ", - "Þa ", - "Ða ", - "Tha the ", - "Þa þe ", - "Ða ðe " - ], - "when": [ - "* ", - "Tha ", - "Þa ", - "Ða " - ] - }, - "en-pirate": { - "and": [ - "* ", - "Aye " - ], - "background": [ - "Yo-ho-ho" - ], - "but": [ - "* ", - "Avast! " - ], - "examples": [ - "Dead men tell no tales" - ], - "feature": [ - "Ahoy matey!" - ], - "given": [ - "* ", - "Gangway! " - ], - "name": "Pirate", - "native": "Pirate", - "rule": [ - "Rule" - ], - "scenario": [ - "Heave to" - ], - "scenarioOutline": [ - "Shiver me timbers" - ], - "then": [ - "* ", - "Let go and haul " - ], - "when": [ - "* ", - "Blimey! " - ] - }, - "eo": { - "and": [ - "* ", - "Kaj " - ], - "background": [ - "Fono" - ], - "but": [ - "* ", - "Sed " - ], - "examples": [ - "Ekzemploj" - ], - "feature": [ - "Trajto" - ], - "given": [ - "* ", - "Donitaĵo ", - "Komence " - ], - "name": "Esperanto", - "native": "Esperanto", - "rule": [ - "Rule" - ], - "scenario": [ - "Ekzemplo", - "Scenaro", - "Kazo" - ], - "scenarioOutline": [ - "Konturo de la scenaro", - "Skizo", - "Kazo-skizo" - ], - "then": [ - "* ", - "Do " - ], - "when": [ - "* ", - "Se " - ] - }, - "es": { - "and": [ - "* ", - "Y ", - "E " - ], - "background": [ - "Antecedentes" - ], - "but": [ - "* ", - "Pero " - ], - "examples": [ - "Ejemplos" - ], - "feature": [ - "Característica" - ], - "given": [ - "* ", - "Dado ", - "Dada ", - "Dados ", - "Dadas " - ], - "name": "Spanish", - "native": "español", - "rule": [ - "Rule" - ], - "scenario": [ - "Ejemplo", - "Escenario" - ], - "scenarioOutline": [ - "Esquema del escenario" - ], - "then": [ - "* ", - "Entonces " - ], - "when": [ - "* ", - "Cuando " - ] - }, - "et": { - "and": [ - "* ", - "Ja " - ], - "background": [ - "Taust" - ], - "but": [ - "* ", - "Kuid " - ], - "examples": [ - "Juhtumid" - ], - "feature": [ - "Omadus" - ], - "given": [ - "* ", - "Eeldades " - ], - "name": "Estonian", - "native": "eesti keel", - "rule": [ - "Rule" - ], - "scenario": [ - "Juhtum", - "Stsenaarium" - ], - "scenarioOutline": [ - "Raamstjuhtum", - "Raamstsenaarium" - ], - "then": [ - "* ", - "Siis " - ], - "when": [ - "* ", - "Kui " - ] - }, - "fa": { - "and": [ - "* ", - "و " - ], - "background": [ - "زمینه" - ], - "but": [ - "* ", - "اما " - ], - "examples": [ - "نمونه ها" - ], - "feature": [ - "وِیژگی" - ], - "given": [ - "* ", - "با فرض " - ], - "name": "Persian", - "native": "فارسی", - "rule": [ - "Rule" - ], - "scenario": [ - "مثال", - "سناریو" - ], - "scenarioOutline": [ - "الگوی سناریو" - ], - "then": [ - "* ", - "آنگاه " - ], - "when": [ - "* ", - "هنگامی " - ] - }, - "fi": { - "and": [ - "* ", - "Ja " - ], - "background": [ - "Tausta" - ], - "but": [ - "* ", - "Mutta " - ], - "examples": [ - "Tapaukset" - ], - "feature": [ - "Ominaisuus" - ], - "given": [ - "* ", - "Oletetaan " - ], - "name": "Finnish", - "native": "suomi", - "rule": [ - "Rule" - ], - "scenario": [ - "Tapaus" - ], - "scenarioOutline": [ - "Tapausaihio" - ], - "then": [ - "* ", - "Niin " - ], - "when": [ - "* ", - "Kun " - ] - }, - "fr": { - "and": [ - "* ", - "Et que ", - "Et qu'", - "Et " - ], - "background": [ - "Contexte" - ], - "but": [ - "* ", - "Mais que ", - "Mais qu'", - "Mais " - ], - "examples": [ - "Exemples" - ], - "feature": [ - "Fonctionnalité" - ], - "given": [ - "* ", - "Soit ", - "Etant donné que ", - "Etant donné qu'", - "Etant donné ", - "Etant donnée ", - "Etant donnés ", - "Etant données ", - "Étant donné que ", - "Étant donné qu'", - "Étant donné ", - "Étant donnée ", - "Étant donnés ", - "Étant données " - ], - "name": "French", - "native": "français", - "rule": [ - "Règle" - ], - "scenario": [ - "Exemple", - "Scénario" - ], - "scenarioOutline": [ - "Plan du scénario", - "Plan du Scénario" - ], - "then": [ - "* ", - "Alors " - ], - "when": [ - "* ", - "Quand ", - "Lorsque ", - "Lorsqu'" - ] - }, - "ga": { - "and": [ - "* ", - "Agus" - ], - "background": [ - "Cúlra" - ], - "but": [ - "* ", - "Ach" - ], - "examples": [ - "Samplaí" - ], - "feature": [ - "Gné" - ], - "given": [ - "* ", - "Cuir i gcás go", - "Cuir i gcás nach", - "Cuir i gcás gur", - "Cuir i gcás nár" - ], - "name": "Irish", - "native": "Gaeilge", - "rule": [ - "Rule" - ], - "scenario": [ - "Sampla", - "Cás" - ], - "scenarioOutline": [ - "Cás Achomair" - ], - "then": [ - "* ", - "Ansin" - ], - "when": [ - "* ", - "Nuair a", - "Nuair nach", - "Nuair ba", - "Nuair nár" - ] - }, - "gj": { - "and": [ - "* ", - "અને " - ], - "background": [ - "બેકગ્રાઉન્ડ" - ], - "but": [ - "* ", - "પણ " - ], - "examples": [ - "ઉદાહરણો" - ], - "feature": [ - "લક્ષણ", - "વ્યાપાર જરૂર", - "ક્ષમતા" - ], - "given": [ - "* ", - "આપેલ છે " - ], - "name": "Gujarati", - "native": "ગુજરાતી", - "rule": [ - "Rule" - ], - "scenario": [ - "ઉદાહરણ", - "સ્થિતિ" - ], - "scenarioOutline": [ - "પરિદ્દશ્ય રૂપરેખા", - "પરિદ્દશ્ય ઢાંચો" - ], - "then": [ - "* ", - "પછી " - ], - "when": [ - "* ", - "ક્યારે " - ] - }, - "gl": { - "and": [ - "* ", - "E " - ], - "background": [ - "Contexto" - ], - "but": [ - "* ", - "Mais ", - "Pero " - ], - "examples": [ - "Exemplos" - ], - "feature": [ - "Característica" - ], - "given": [ - "* ", - "Dado ", - "Dada ", - "Dados ", - "Dadas " - ], - "name": "Galician", - "native": "galego", - "rule": [ - "Rule" - ], - "scenario": [ - "Exemplo", - "Escenario" - ], - "scenarioOutline": [ - "Esbozo do escenario" - ], - "then": [ - "* ", - "Entón ", - "Logo " - ], - "when": [ - "* ", - "Cando " - ] - }, - "he": { - "and": [ - "* ", - "וגם " - ], - "background": [ - "רקע" - ], - "but": [ - "* ", - "אבל " - ], - "examples": [ - "דוגמאות" - ], - "feature": [ - "תכונה" - ], - "given": [ - "* ", - "בהינתן " - ], - "name": "Hebrew", - "native": "עברית", - "rule": [ - "Rule" - ], - "scenario": [ - "דוגמא", - "תרחיש" - ], - "scenarioOutline": [ - "תבנית תרחיש" - ], - "then": [ - "* ", - "אז ", - "אזי " - ], - "when": [ - "* ", - "כאשר " - ] - }, - "hi": { - "and": [ - "* ", - "और ", - "तथा " - ], - "background": [ - "पृष्ठभूमि" - ], - "but": [ - "* ", - "पर ", - "परन्तु ", - "किन्तु " - ], - "examples": [ - "उदाहरण" - ], - "feature": [ - "रूप लेख" - ], - "given": [ - "* ", - "अगर ", - "यदि ", - "चूंकि " - ], - "name": "Hindi", - "native": "हिंदी", - "rule": [ - "Rule" - ], - "scenario": [ - "परिदृश्य" - ], - "scenarioOutline": [ - "परिदृश्य रूपरेखा" - ], - "then": [ - "* ", - "तब ", - "तदा " - ], - "when": [ - "* ", - "जब ", - "कदा " - ] - }, - "hr": { - "and": [ - "* ", - "I " - ], - "background": [ - "Pozadina" - ], - "but": [ - "* ", - "Ali " - ], - "examples": [ - "Primjeri", - "Scenariji" - ], - "feature": [ - "Osobina", - "Mogućnost", - "Mogucnost" - ], - "given": [ - "* ", - "Zadan ", - "Zadani ", - "Zadano " - ], - "name": "Croatian", - "native": "hrvatski", - "rule": [ - "Rule" - ], - "scenario": [ - "Primjer", - "Scenarij" - ], - "scenarioOutline": [ - "Skica", - "Koncept" - ], - "then": [ - "* ", - "Onda " - ], - "when": [ - "* ", - "Kada ", - "Kad " - ] - }, - "ht": { - "and": [ - "* ", - "Ak ", - "Epi ", - "E " - ], - "background": [ - "Kontèks", - "Istorik" - ], - "but": [ - "* ", - "Men " - ], - "examples": [ - "Egzanp" - ], - "feature": [ - "Karakteristik", - "Mak", - "Fonksyonalite" - ], - "given": [ - "* ", - "Sipoze ", - "Sipoze ke ", - "Sipoze Ke " - ], - "name": "Creole", - "native": "kreyòl", - "rule": [ - "Rule" - ], - "scenario": [ - "Senaryo" - ], - "scenarioOutline": [ - "Plan senaryo", - "Plan Senaryo", - "Senaryo deskripsyon", - "Senaryo Deskripsyon", - "Dyagram senaryo", - "Dyagram Senaryo" - ], - "then": [ - "* ", - "Lè sa a ", - "Le sa a " - ], - "when": [ - "* ", - "Lè ", - "Le " - ] - }, - "hu": { - "and": [ - "* ", - "És " - ], - "background": [ - "Háttér" - ], - "but": [ - "* ", - "De " - ], - "examples": [ - "Példák" - ], - "feature": [ - "Jellemző" - ], - "given": [ - "* ", - "Amennyiben ", - "Adott " - ], - "name": "Hungarian", - "native": "magyar", - "rule": [ - "Rule" - ], - "scenario": [ - "Példa", - "Forgatókönyv" - ], - "scenarioOutline": [ - "Forgatókönyv vázlat" - ], - "then": [ - "* ", - "Akkor " - ], - "when": [ - "* ", - "Majd ", - "Ha ", - "Amikor " - ] - }, - "id": { - "and": [ - "* ", - "Dan " - ], - "background": [ - "Dasar" - ], - "but": [ - "* ", - "Tapi " - ], - "examples": [ - "Contoh" - ], - "feature": [ - "Fitur" - ], - "given": [ - "* ", - "Dengan " - ], - "name": "Indonesian", - "native": "Bahasa Indonesia", - "rule": [ - "Rule" - ], - "scenario": [ - "Skenario" - ], - "scenarioOutline": [ - "Skenario konsep" - ], - "then": [ - "* ", - "Maka " - ], - "when": [ - "* ", - "Ketika " - ] - }, - "is": { - "and": [ - "* ", - "Og " - ], - "background": [ - "Bakgrunnur" - ], - "but": [ - "* ", - "En " - ], - "examples": [ - "Dæmi", - "Atburðarásir" - ], - "feature": [ - "Eiginleiki" - ], - "given": [ - "* ", - "Ef " - ], - "name": "Icelandic", - "native": "Íslenska", - "rule": [ - "Rule" - ], - "scenario": [ - "Atburðarás" - ], - "scenarioOutline": [ - "Lýsing Atburðarásar", - "Lýsing Dæma" - ], - "then": [ - "* ", - "Þá " - ], - "when": [ - "* ", - "Þegar " - ] - }, - "it": { - "and": [ - "* ", - "E " - ], - "background": [ - "Contesto" - ], - "but": [ - "* ", - "Ma " - ], - "examples": [ - "Esempi" - ], - "feature": [ - "Funzionalità" - ], - "given": [ - "* ", - "Dato ", - "Data ", - "Dati ", - "Date " - ], - "name": "Italian", - "native": "italiano", - "rule": [ - "Rule" - ], - "scenario": [ - "Esempio", - "Scenario" - ], - "scenarioOutline": [ - "Schema dello scenario" - ], - "then": [ - "* ", - "Allora " - ], - "when": [ - "* ", - "Quando " - ] - }, - "ja": { - "and": [ - "* ", - "かつ" - ], - "background": [ - "背景" - ], - "but": [ - "* ", - "しかし", - "但し", - "ただし" - ], - "examples": [ - "例", - "サンプル" - ], - "feature": [ - "フィーチャ", - "機能" - ], - "given": [ - "* ", - "前提" - ], - "name": "Japanese", - "native": "日本語", - "rule": [ - "Rule" - ], - "scenario": [ - "シナリオ" - ], - "scenarioOutline": [ - "シナリオアウトライン", - "シナリオテンプレート", - "テンプレ", - "シナリオテンプレ" - ], - "then": [ - "* ", - "ならば" - ], - "when": [ - "* ", - "もし" - ] - }, - "jv": { - "and": [ - "* ", - "Lan " - ], - "background": [ - "Dasar" - ], - "but": [ - "* ", - "Tapi ", - "Nanging ", - "Ananging " - ], - "examples": [ - "Conto", - "Contone" - ], - "feature": [ - "Fitur" - ], - "given": [ - "* ", - "Nalika ", - "Nalikaning " - ], - "name": "Javanese", - "native": "Basa Jawa", - "rule": [ - "Rule" - ], - "scenario": [ - "Skenario" - ], - "scenarioOutline": [ - "Konsep skenario" - ], - "then": [ - "* ", - "Njuk ", - "Banjur " - ], - "when": [ - "* ", - "Manawa ", - "Menawa " - ] - }, - "ka": { - "and": [ - "* ", - "და" - ], - "background": [ - "კონტექსტი" - ], - "but": [ - "* ", - "მაგრამ" - ], - "examples": [ - "მაგალითები" - ], - "feature": [ - "თვისება" - ], - "given": [ - "* ", - "მოცემული" - ], - "name": "Georgian", - "native": "ქართველი", - "rule": [ - "Rule" - ], - "scenario": [ - "მაგალითად", - "სცენარის" - ], - "scenarioOutline": [ - "სცენარის ნიმუში" - ], - "then": [ - "* ", - "მაშინ" - ], - "when": [ - "* ", - "როდესაც" - ] - }, - "kn": { - "and": [ - "* ", - "ಮತ್ತು " - ], - "background": [ - "ಹಿನ್ನೆಲೆ" - ], - "but": [ - "* ", - "ಆದರೆ " - ], - "examples": [ - "ಉದಾಹರಣೆಗಳು" - ], - "feature": [ - "ಹೆಚ್ಚಳ" - ], - "given": [ - "* ", - "ನೀಡಿದ " - ], - "name": "Kannada", - "native": "ಕನ್ನಡ", - "rule": [ - "Rule" - ], - "scenario": [ - "ಉದಾಹರಣೆ", - "ಕಥಾಸಾರಾಂಶ" - ], - "scenarioOutline": [ - "ವಿವರಣೆ" - ], - "then": [ - "* ", - "ನಂತರ " - ], - "when": [ - "* ", - "ಸ್ಥಿತಿಯನ್ನು " - ] - }, - "ko": { - "and": [ - "* ", - "그리고" - ], - "background": [ - "배경" - ], - "but": [ - "* ", - "하지만", - "단" - ], - "examples": [ - "예" - ], - "feature": [ - "기능" - ], - "given": [ - "* ", - "조건", - "먼저" - ], - "name": "Korean", - "native": "한국어", - "rule": [ - "Rule" - ], - "scenario": [ - "시나리오" - ], - "scenarioOutline": [ - "시나리오 개요" - ], - "then": [ - "* ", - "그러면" - ], - "when": [ - "* ", - "만일", - "만약" - ] - }, - "lt": { - "and": [ - "* ", - "Ir " - ], - "background": [ - "Kontekstas" - ], - "but": [ - "* ", - "Bet " - ], - "examples": [ - "Pavyzdžiai", - "Scenarijai", - "Variantai" - ], - "feature": [ - "Savybė" - ], - "given": [ - "* ", - "Duota " - ], - "name": "Lithuanian", - "native": "lietuvių kalba", - "rule": [ - "Rule" - ], - "scenario": [ - "Pavyzdys", - "Scenarijus" - ], - "scenarioOutline": [ - "Scenarijaus šablonas" - ], - "then": [ - "* ", - "Tada " - ], - "when": [ - "* ", - "Kai " - ] - }, - "lu": { - "and": [ - "* ", - "an ", - "a " - ], - "background": [ - "Hannergrond" - ], - "but": [ - "* ", - "awer ", - "mä " - ], - "examples": [ - "Beispiller" - ], - "feature": [ - "Funktionalitéit" - ], - "given": [ - "* ", - "ugeholl " - ], - "name": "Luxemburgish", - "native": "Lëtzebuergesch", - "rule": [ - "Rule" - ], - "scenario": [ - "Beispill", - "Szenario" - ], - "scenarioOutline": [ - "Plang vum Szenario" - ], - "then": [ - "* ", - "dann " - ], - "when": [ - "* ", - "wann " - ] - }, - "lv": { - "and": [ - "* ", - "Un " - ], - "background": [ - "Konteksts", - "Situācija" - ], - "but": [ - "* ", - "Bet " - ], - "examples": [ - "Piemēri", - "Paraugs" - ], - "feature": [ - "Funkcionalitāte", - "Fīča" - ], - "given": [ - "* ", - "Kad " - ], - "name": "Latvian", - "native": "latviešu", - "rule": [ - "Rule" - ], - "scenario": [ - "Piemērs", - "Scenārijs" - ], - "scenarioOutline": [ - "Scenārijs pēc parauga" - ], - "then": [ - "* ", - "Tad " - ], - "when": [ - "* ", - "Ja " - ] - }, - "mk-Cyrl": { - "and": [ - "* ", - "И " - ], - "background": [ - "Контекст", - "Содржина" - ], - "but": [ - "* ", - "Но " - ], - "examples": [ - "Примери", - "Сценарија" - ], - "feature": [ - "Функционалност", - "Бизнис потреба", - "Можност" - ], - "given": [ - "* ", - "Дадено ", - "Дадена " - ], - "name": "Macedonian", - "native": "Македонски", - "rule": [ - "Rule" - ], - "scenario": [ - "Пример", - "Сценарио", - "На пример" - ], - "scenarioOutline": [ - "Преглед на сценарија", - "Скица", - "Концепт" - ], - "then": [ - "* ", - "Тогаш " - ], - "when": [ - "* ", - "Кога " - ] - }, - "mk-Latn": { - "and": [ - "* ", - "I " - ], - "background": [ - "Kontekst", - "Sodrzhina" - ], - "but": [ - "* ", - "No " - ], - "examples": [ - "Primeri", - "Scenaria" - ], - "feature": [ - "Funkcionalnost", - "Biznis potreba", - "Mozhnost" - ], - "given": [ - "* ", - "Dadeno ", - "Dadena " - ], - "name": "Macedonian (Latin)", - "native": "Makedonski (Latinica)", - "rule": [ - "Rule" - ], - "scenario": [ - "Scenario", - "Na primer" - ], - "scenarioOutline": [ - "Pregled na scenarija", - "Skica", - "Koncept" - ], - "then": [ - "* ", - "Togash " - ], - "when": [ - "* ", - "Koga " - ] - }, - "mn": { - "and": [ - "* ", - "Мөн ", - "Тэгээд " - ], - "background": [ - "Агуулга" - ], - "but": [ - "* ", - "Гэхдээ ", - "Харин " - ], - "examples": [ - "Тухайлбал" - ], - "feature": [ - "Функц", - "Функционал" - ], - "given": [ - "* ", - "Өгөгдсөн нь ", - "Анх " - ], - "name": "Mongolian", - "native": "монгол", - "rule": [ - "Rule" - ], - "scenario": [ - "Сценар" - ], - "scenarioOutline": [ - "Сценарын төлөвлөгөө" - ], - "then": [ - "* ", - "Тэгэхэд ", - "Үүний дараа " - ], - "when": [ - "* ", - "Хэрэв " - ] - }, - "nl": { - "and": [ - "* ", - "En " - ], - "background": [ - "Achtergrond" - ], - "but": [ - "* ", - "Maar " - ], - "examples": [ - "Voorbeelden" - ], - "feature": [ - "Functionaliteit" - ], - "given": [ - "* ", - "Gegeven ", - "Stel " - ], - "name": "Dutch", - "native": "Nederlands", - "rule": [ - "Rule" - ], - "scenario": [ - "Voorbeeld", - "Scenario" - ], - "scenarioOutline": [ - "Abstract Scenario" - ], - "then": [ - "* ", - "Dan " - ], - "when": [ - "* ", - "Als ", - "Wanneer " - ] - }, - "no": { - "and": [ - "* ", - "Og " - ], - "background": [ - "Bakgrunn" - ], - "but": [ - "* ", - "Men " - ], - "examples": [ - "Eksempler" - ], - "feature": [ - "Egenskap" - ], - "given": [ - "* ", - "Gitt " - ], - "name": "Norwegian", - "native": "norsk", - "rule": [ - "Regel" - ], - "scenario": [ - "Eksempel", - "Scenario" - ], - "scenarioOutline": [ - "Scenariomal", - "Abstrakt Scenario" - ], - "then": [ - "* ", - "Så " - ], - "when": [ - "* ", - "Når " - ] - }, - "pa": { - "and": [ - "* ", - "ਅਤੇ " - ], - "background": [ - "ਪਿਛੋਕੜ" - ], - "but": [ - "* ", - "ਪਰ " - ], - "examples": [ - "ਉਦਾਹਰਨਾਂ" - ], - "feature": [ - "ਖਾਸੀਅਤ", - "ਮੁਹਾਂਦਰਾ", - "ਨਕਸ਼ ਨੁਹਾਰ" - ], - "given": [ - "* ", - "ਜੇਕਰ ", - "ਜਿਵੇਂ ਕਿ " - ], - "name": "Panjabi", - "native": "ਪੰਜਾਬੀ", - "rule": [ - "Rule" - ], - "scenario": [ - "ਉਦਾਹਰਨ", - "ਪਟਕਥਾ" - ], - "scenarioOutline": [ - "ਪਟਕਥਾ ਢਾਂਚਾ", - "ਪਟਕਥਾ ਰੂਪ ਰੇਖਾ" - ], - "then": [ - "* ", - "ਤਦ " - ], - "when": [ - "* ", - "ਜਦੋਂ " - ] - }, - "pl": { - "and": [ - "* ", - "Oraz ", - "I " - ], - "background": [ - "Założenia" - ], - "but": [ - "* ", - "Ale " - ], - "examples": [ - "Przykłady" - ], - "feature": [ - "Właściwość", - "Funkcja", - "Aspekt", - "Potrzeba biznesowa" - ], - "given": [ - "* ", - "Zakładając ", - "Mając ", - "Zakładając, że " - ], - "name": "Polish", - "native": "polski", - "rule": [ - "Rule" - ], - "scenario": [ - "Przykład", - "Scenariusz" - ], - "scenarioOutline": [ - "Szablon scenariusza" - ], - "then": [ - "* ", - "Wtedy " - ], - "when": [ - "* ", - "Jeżeli ", - "Jeśli ", - "Gdy ", - "Kiedy " - ] - }, - "pt": { - "and": [ - "* ", - "E " - ], - "background": [ - "Contexto", - "Cenário de Fundo", - "Cenario de Fundo", - "Fundo" - ], - "but": [ - "* ", - "Mas " - ], - "examples": [ - "Exemplos", - "Cenários", - "Cenarios" - ], - "feature": [ - "Funcionalidade", - "Característica", - "Caracteristica" - ], - "given": [ - "* ", - "Dado ", - "Dada ", - "Dados ", - "Dadas " - ], - "name": "Portuguese", - "native": "português", - "rule": [ - "Rule" - ], - "scenario": [ - "Exemplo", - "Cenário", - "Cenario" - ], - "scenarioOutline": [ - "Esquema do Cenário", - "Esquema do Cenario", - "Delineação do Cenário", - "Delineacao do Cenario" - ], - "then": [ - "* ", - "Então ", - "Entao " - ], - "when": [ - "* ", - "Quando " - ] - }, - "ro": { - "and": [ - "* ", - "Si ", - "Și ", - "Şi " - ], - "background": [ - "Context" - ], - "but": [ - "* ", - "Dar " - ], - "examples": [ - "Exemple" - ], - "feature": [ - "Functionalitate", - "Funcționalitate", - "Funcţionalitate" - ], - "given": [ - "* ", - "Date fiind ", - "Dat fiind ", - "Dată fiind", - "Dati fiind ", - "Dați fiind ", - "Daţi fiind " - ], - "name": "Romanian", - "native": "română", - "rule": [ - "Rule" - ], - "scenario": [ - "Exemplu", - "Scenariu" - ], - "scenarioOutline": [ - "Structura scenariu", - "Structură scenariu" - ], - "then": [ - "* ", - "Atunci " - ], - "when": [ - "* ", - "Cand ", - "Când " - ] - }, - "ru": { - "and": [ - "* ", - "И ", - "К тому же ", - "Также " - ], - "background": [ - "Предыстория", - "Контекст" - ], - "but": [ - "* ", - "Но ", - "А ", - "Иначе " - ], - "examples": [ - "Примеры" - ], - "feature": [ - "Функция", - "Функциональность", - "Функционал", - "Свойство" - ], - "given": [ - "* ", - "Допустим ", - "Дано ", - "Пусть " - ], - "name": "Russian", - "native": "русский", - "rule": [ - "Rule" - ], - "scenario": [ - "Пример", - "Сценарий" - ], - "scenarioOutline": [ - "Структура сценария" - ], - "then": [ - "* ", - "То ", - "Затем ", - "Тогда " - ], - "when": [ - "* ", - "Когда ", - "Если " - ] - }, - "sk": { - "and": [ - "* ", - "A ", - "A tiež ", - "A taktiež ", - "A zároveň " - ], - "background": [ - "Pozadie" - ], - "but": [ - "* ", - "Ale " - ], - "examples": [ - "Príklady" - ], - "feature": [ - "Požiadavka", - "Funkcia", - "Vlastnosť" - ], - "given": [ - "* ", - "Pokiaľ ", - "Za predpokladu " - ], - "name": "Slovak", - "native": "Slovensky", - "rule": [ - "Rule" - ], - "scenario": [ - "Príklad", - "Scenár" - ], - "scenarioOutline": [ - "Náčrt Scenáru", - "Náčrt Scenára", - "Osnova Scenára" - ], - "then": [ - "* ", - "Tak ", - "Potom " - ], - "when": [ - "* ", - "Keď ", - "Ak " - ] - }, - "sl": { - "and": [ - "In ", - "Ter " - ], - "background": [ - "Kontekst", - "Osnova", - "Ozadje" - ], - "but": [ - "Toda ", - "Ampak ", - "Vendar " - ], - "examples": [ - "Primeri", - "Scenariji" - ], - "feature": [ - "Funkcionalnost", - "Funkcija", - "Možnosti", - "Moznosti", - "Lastnost", - "Značilnost" - ], - "given": [ - "Dano ", - "Podano ", - "Zaradi ", - "Privzeto " - ], - "name": "Slovenian", - "native": "Slovenski", - "rule": [ - "Rule" - ], - "scenario": [ - "Primer", - "Scenarij" - ], - "scenarioOutline": [ - "Struktura scenarija", - "Skica", - "Koncept", - "Oris scenarija", - "Osnutek" - ], - "then": [ - "Nato ", - "Potem ", - "Takrat " - ], - "when": [ - "Ko ", - "Ce ", - "Če ", - "Kadar " - ] - }, - "sr-Cyrl": { - "and": [ - "* ", - "И " - ], - "background": [ - "Контекст", - "Основа", - "Позадина" - ], - "but": [ - "* ", - "Али " - ], - "examples": [ - "Примери", - "Сценарији" - ], - "feature": [ - "Функционалност", - "Могућност", - "Особина" - ], - "given": [ - "* ", - "За дато ", - "За дате ", - "За дати " - ], - "name": "Serbian", - "native": "Српски", - "rule": [ - "Rule" - ], - "scenario": [ - "Пример", - "Сценарио", - "Пример" - ], - "scenarioOutline": [ - "Структура сценарија", - "Скица", - "Концепт" - ], - "then": [ - "* ", - "Онда " - ], - "when": [ - "* ", - "Када ", - "Кад " - ] - }, - "sr-Latn": { - "and": [ - "* ", - "I " - ], - "background": [ - "Kontekst", - "Osnova", - "Pozadina" - ], - "but": [ - "* ", - "Ali " - ], - "examples": [ - "Primeri", - "Scenariji" - ], - "feature": [ - "Funkcionalnost", - "Mogućnost", - "Mogucnost", - "Osobina" - ], - "given": [ - "* ", - "Za dato ", - "Za date ", - "Za dati " - ], - "name": "Serbian (Latin)", - "native": "Srpski (Latinica)", - "rule": [ - "Rule" - ], - "scenario": [ - "Scenario", - "Primer" - ], - "scenarioOutline": [ - "Struktura scenarija", - "Skica", - "Koncept" - ], - "then": [ - "* ", - "Onda " - ], - "when": [ - "* ", - "Kada ", - "Kad " - ] - }, - "sv": { - "and": [ - "* ", - "Och " - ], - "background": [ - "Bakgrund" - ], - "but": [ - "* ", - "Men " - ], - "examples": [ - "Exempel" - ], - "feature": [ - "Egenskap" - ], - "given": [ - "* ", - "Givet " - ], - "name": "Swedish", - "native": "Svenska", - "rule": [ - "Rule" - ], - "scenario": [ - "Scenario" - ], - "scenarioOutline": [ - "Abstrakt Scenario", - "Scenariomall" - ], - "then": [ - "* ", - "Så " - ], - "when": [ - "* ", - "När " - ] - }, - "ta": { - "and": [ - "* ", - "மேலும் ", - "மற்றும் " - ], - "background": [ - "பின்னணி" - ], - "but": [ - "* ", - "ஆனால் " - ], - "examples": [ - "எடுத்துக்காட்டுகள்", - "காட்சிகள்", - "நிலைமைகளில்" - ], - "feature": [ - "அம்சம்", - "வணிக தேவை", - "திறன்" - ], - "given": [ - "* ", - "கொடுக்கப்பட்ட " - ], - "name": "Tamil", - "native": "தமிழ்", - "rule": [ - "Rule" - ], - "scenario": [ - "உதாரணமாக", - "காட்சி" - ], - "scenarioOutline": [ - "காட்சி சுருக்கம்", - "காட்சி வார்ப்புரு" - ], - "then": [ - "* ", - "அப்பொழுது " - ], - "when": [ - "* ", - "எப்போது " - ] - }, - "th": { - "and": [ - "* ", - "และ " - ], - "background": [ - "แนวคิด" - ], - "but": [ - "* ", - "แต่ " - ], - "examples": [ - "ชุดของตัวอย่าง", - "ชุดของเหตุการณ์" - ], - "feature": [ - "โครงหลัก", - "ความต้องการทางธุรกิจ", - "ความสามารถ" - ], - "given": [ - "* ", - "กำหนดให้ " - ], - "name": "Thai", - "native": "ไทย", - "rule": [ - "Rule" - ], - "scenario": [ - "เหตุการณ์" - ], - "scenarioOutline": [ - "สรุปเหตุการณ์", - "โครงสร้างของเหตุการณ์" - ], - "then": [ - "* ", - "ดังนั้น " - ], - "when": [ - "* ", - "เมื่อ " - ] - }, - "tl": { - "and": [ - "* ", - "మరియు " - ], - "background": [ - "నేపథ్యం" - ], - "but": [ - "* ", - "కాని " - ], - "examples": [ - "ఉదాహరణలు" - ], - "feature": [ - "గుణము" - ], - "given": [ - "* ", - "చెప్పబడినది " - ], - "name": "Telugu", - "native": "తెలుగు", - "rule": [ - "Rule" - ], - "scenario": [ - "ఉదాహరణ", - "సన్నివేశం" - ], - "scenarioOutline": [ - "కథనం" - ], - "then": [ - "* ", - "అప్పుడు " - ], - "when": [ - "* ", - "ఈ పరిస్థితిలో " - ] - }, - "tlh": { - "and": [ - "* ", - "'ej ", - "latlh " - ], - "background": [ - "mo'" - ], - "but": [ - "* ", - "'ach ", - "'a " - ], - "examples": [ - "ghantoH", - "lutmey" - ], - "feature": [ - "Qap", - "Qu'meH 'ut", - "perbogh", - "poQbogh malja'", - "laH" - ], - "given": [ - "* ", - "ghu' noblu' ", - "DaH ghu' bejlu' " - ], - "name": "Klingon", - "native": "tlhIngan", - "rule": [ - "Rule" - ], - "scenario": [ - "lut" - ], - "scenarioOutline": [ - "lut chovnatlh" - ], - "then": [ - "* ", - "vaj " - ], - "when": [ - "* ", - "qaSDI' " - ] - }, - "tr": { - "and": [ - "* ", - "Ve " - ], - "background": [ - "Geçmiş" - ], - "but": [ - "* ", - "Fakat ", - "Ama " - ], - "examples": [ - "Örnekler" - ], - "feature": [ - "Özellik" - ], - "given": [ - "* ", - "Diyelim ki " - ], - "name": "Turkish", - "native": "Türkçe", - "rule": [ - "Rule" - ], - "scenario": [ - "Örnek", - "Senaryo" - ], - "scenarioOutline": [ - "Senaryo taslağı" - ], - "then": [ - "* ", - "O zaman " - ], - "when": [ - "* ", - "Eğer ki " - ] - }, - "tt": { - "and": [ - "* ", - "Һәм ", - "Вә " - ], - "background": [ - "Кереш" - ], - "but": [ - "* ", - "Ләкин ", - "Әмма " - ], - "examples": [ - "Үрнәкләр", - "Мисаллар" - ], - "feature": [ - "Мөмкинлек", - "Үзенчәлеклелек" - ], - "given": [ - "* ", - "Әйтик " - ], - "name": "Tatar", - "native": "Татарча", - "rule": [ - "Rule" - ], - "scenario": [ - "Сценарий" - ], - "scenarioOutline": [ - "Сценарийның төзелеше" - ], - "then": [ - "* ", - "Нәтиҗәдә " - ], - "when": [ - "* ", - "Әгәр " - ] - }, - "uk": { - "and": [ - "* ", - "І ", - "А також ", - "Та " - ], - "background": [ - "Передумова" - ], - "but": [ - "* ", - "Але " - ], - "examples": [ - "Приклади" - ], - "feature": [ - "Функціонал" - ], - "given": [ - "* ", - "Припустимо ", - "Припустимо, що ", - "Нехай ", - "Дано " - ], - "name": "Ukrainian", - "native": "Українська", - "rule": [ - "Rule" - ], - "scenario": [ - "Приклад", - "Сценарій" - ], - "scenarioOutline": [ - "Структура сценарію" - ], - "then": [ - "* ", - "То ", - "Тоді " - ], - "when": [ - "* ", - "Якщо ", - "Коли " - ] - }, - "ur": { - "and": [ - "* ", - "اور " - ], - "background": [ - "پس منظر" - ], - "but": [ - "* ", - "لیکن " - ], - "examples": [ - "مثالیں" - ], - "feature": [ - "صلاحیت", - "کاروبار کی ضرورت", - "خصوصیت" - ], - "given": [ - "* ", - "اگر ", - "بالفرض ", - "فرض کیا " - ], - "name": "Urdu", - "native": "اردو", - "rule": [ - "Rule" - ], - "scenario": [ - "منظرنامہ" - ], - "scenarioOutline": [ - "منظر نامے کا خاکہ" - ], - "then": [ - "* ", - "پھر ", - "تب " - ], - "when": [ - "* ", - "جب " - ] - }, - "uz": { - "and": [ - "* ", - "Ва " - ], - "background": [ - "Тарих" - ], - "but": [ - "* ", - "Лекин ", - "Бирок ", - "Аммо " - ], - "examples": [ - "Мисоллар" - ], - "feature": [ - "Функционал" - ], - "given": [ - "* ", - "Агар " - ], - "name": "Uzbek", - "native": "Узбекча", - "rule": [ - "Rule" - ], - "scenario": [ - "Сценарий" - ], - "scenarioOutline": [ - "Сценарий структураси" - ], - "then": [ - "* ", - "Унда " - ], - "when": [ - "* ", - "Агар " - ] - }, - "vi": { - "and": [ - "* ", - "Và " - ], - "background": [ - "Bối cảnh" - ], - "but": [ - "* ", - "Nhưng " - ], - "examples": [ - "Dữ liệu" - ], - "feature": [ - "Tính năng" - ], - "given": [ - "* ", - "Biết ", - "Cho " - ], - "name": "Vietnamese", - "native": "Tiếng Việt", - "rule": [ - "Rule" - ], - "scenario": [ - "Tình huống", - "Kịch bản" - ], - "scenarioOutline": [ - "Khung tình huống", - "Khung kịch bản" - ], - "then": [ - "* ", - "Thì " - ], - "when": [ - "* ", - "Khi " - ] - }, - "zh-CN": { - "and": [ - "* ", - "而且", - "并且", - "同时" - ], - "background": [ - "背景" - ], - "but": [ - "* ", - "但是" - ], - "examples": [ - "例子" - ], - "feature": [ - "功能" - ], - "given": [ - "* ", - "假如", - "假设", - "假定" - ], - "name": "Chinese simplified", - "native": "简体中文", - "rule": [ - "Rule" - ], - "scenario": [ - "场景", - "剧本" - ], - "scenarioOutline": [ - "场景大纲", - "剧本大纲" - ], - "then": [ - "* ", - "那么" - ], - "when": [ - "* ", - "当" - ] - }, - "zh-TW": { - "and": [ - "* ", - "而且", - "並且", - "同時" - ], - "background": [ - "背景" - ], - "but": [ - "* ", - "但是" - ], - "examples": [ - "例子" - ], - "feature": [ - "功能" - ], - "given": [ - "* ", - "假如", - "假設", - "假定" - ], - "name": "Chinese traditional", - "native": "繁體中文", - "rule": [ - "Rule" - ], - "scenario": [ - "場景", - "劇本" - ], - "scenarioOutline": [ - "場景大綱", - "劇本大綱" - ], - "then": [ - "* ", - "那麼" - ], - "when": [ - "* ", - "當" - ] - } -} diff --git a/gherkin/java/src/test/java/gherkin/GherkinDialectProviderTest.java b/gherkin/java/src/test/java/gherkin/GherkinDialectProviderTest.java deleted file mode 100644 index 204a8389ba..0000000000 --- a/gherkin/java/src/test/java/gherkin/GherkinDialectProviderTest.java +++ /dev/null @@ -1,14 +0,0 @@ -package gherkin; - -import org.junit.Test; - -import static gherkin.SymbolCounter.countSymbols; -import static org.junit.Assert.assertEquals; - -public class GherkinDialectProviderTest { - @Test - public void providesEmojiDialect() { - GherkinDialect em = new GherkinDialectProvider().getDialect("em", null); - assertEquals(1, countSymbols(em.getScenarioKeywords().get(0))); - } -} diff --git a/gherkin/java/src/test/java/gherkin/GherkinDocumentBuilderTest.java b/gherkin/java/src/test/java/gherkin/GherkinDocumentBuilderTest.java deleted file mode 100644 index 8200628aac..0000000000 --- a/gherkin/java/src/test/java/gherkin/GherkinDocumentBuilderTest.java +++ /dev/null @@ -1,98 +0,0 @@ -package gherkin; - -import gherkin.pickles.PickleCompiler; -import io.cucumber.messages.Messages.Comment; -import io.cucumber.messages.Messages.FeatureChild; -import io.cucumber.messages.Messages.GherkinDocument; -import io.cucumber.messages.Messages.Pickle; -import io.cucumber.messages.Messages.PickleStep; -import io.cucumber.messages.Messages.TableRow; -import org.junit.Test; - -import java.util.List; - -import static org.junit.Assert.assertEquals; - -public class GherkinDocumentBuilderTest { - @Test - public void is_reusable() { - Parser<GherkinDocument.Builder> parser = new Parser<>(new GherkinDocumentBuilder()); - TokenMatcher matcher = new TokenMatcher(); - - GherkinDocument d1 = parser.parse("Feature: 1", matcher).build(); - GherkinDocument d2 = parser.parse("Feature: 2", matcher).build(); - - assertEquals("1", d1.getFeature().getName()); - assertEquals("2", d2.getFeature().getName()); - } - - @Test - public void parses_rules() { - Parser<GherkinDocument.Builder> parser = new Parser<>(new GherkinDocumentBuilder()); - GherkinDocument doc = parser.parse("" + - "Feature: Some rules\n" + - "\n" + - " Background:\n" + - " Given fb\n" + - "\n" + - " Rule: A\n" + - " The rule A description\n" + - "\n" + - " Background:\n" + - " Given ab\n" + - "\n" + - " Example: Example A\n" + - " Given a\n" + - "\n" + - " Rule: B\n" + - " The rule B description\n" + - "\n" + - " Example: Example B\n" + - " Given b").build(); - - List<FeatureChild> children = doc.getFeature().getChildrenList(); - assertEquals(3, children.size()); - - PickleCompiler pickleCompiler = new PickleCompiler(); - List<Pickle> pickles = pickleCompiler.compile(doc, "hello.feature"); - assertEquals(2, pickles.size()); - - assertEquals(3, pickles.get(0).getStepsList().size()); - - assertEquals(2, pickles.get(1).getStepsList().size()); - } - - @Test - public void parses_just_comments() { - Parser<GherkinDocument.Builder> parser = new Parser<>(new GherkinDocumentBuilder()); - GherkinDocument doc = parser.parse("" + - "# Just a comment").build(); - List<Comment> children = doc.getCommentsList(); - assertEquals(1, children.size()); - } - - @Test - public void sets_empty_table_cells() { - Parser<GherkinDocument.Builder> parser = new Parser<>(new GherkinDocumentBuilder()); - GherkinDocument doc = parser.parse("" + - "Feature:\n Scenario:\n Given a table\n |a||b|").build(); - TableRow row = doc.getFeature().getChildren(0).getScenario().getSteps(0).getDataTable().getRows(0); - assertEquals("a", row.getCells(0).getValue()); - assertEquals("", row.getCells(1).getValue()); - assertEquals("b", row.getCells(2).getValue()); - } - - @Test - public void reports_step_text_column() { - Parser<GherkinDocument.Builder> parser = new Parser<>(new GherkinDocumentBuilder()); - GherkinDocument doc = parser.parse("" + - "Feature:\n Scenario:\n Given a step").build(); - PickleCompiler pickleCompiler = new PickleCompiler(); - List<Pickle> pickles = pickleCompiler.compile(doc, "hello.feature"); - - PickleStep step = pickles.get(0).getSteps(0); - assertEquals(11, step.getLocations(0).getColumn()); - - } - -} diff --git a/gherkin/java/src/test/java/gherkin/GherkinLineTest.java b/gherkin/java/src/test/java/gherkin/GherkinLineTest.java deleted file mode 100644 index 4cf9b6a861..0000000000 --- a/gherkin/java/src/test/java/gherkin/GherkinLineTest.java +++ /dev/null @@ -1,23 +0,0 @@ -package gherkin; - -import org.junit.Test; - -import java.util.List; - -import static java.util.Arrays.asList; -import static org.junit.Assert.assertEquals; - -public class GherkinLineTest { - @Test - public void finds_tags() { - GherkinLine gherkinLine = new GherkinLine(" @this @is @atag "); - List<GherkinLineSpan> gherkinLineSpans = gherkinLine.getTags(); - - assertEquals(asList( - new GherkinLineSpan(5, "@this"), - new GherkinLineSpan(11, "@is"), - new GherkinLineSpan(16, "@atag") - ), gherkinLineSpans); - } - -} diff --git a/gherkin/java/src/test/java/gherkin/ParserTest.java b/gherkin/java/src/test/java/gherkin/ParserTest.java deleted file mode 100644 index 750bae517d..0000000000 --- a/gherkin/java/src/test/java/gherkin/ParserTest.java +++ /dev/null @@ -1,28 +0,0 @@ -package gherkin; - -import io.cucumber.messages.Messages.GherkinDocument; -import io.cucumber.messages.com.google.gson.JsonParser; -import io.cucumber.messages.com.google.protobuf.InvalidProtocolBufferException; -import io.cucumber.messages.com.google.protobuf.util.JsonFormat; -import io.cucumber.messages.com.google.protobuf.util.JsonFormat.Printer; -import org.junit.Test; - -import static org.junit.Assert.assertEquals; - -public class ParserTest { - - @Test - public void change_default_language() throws InvalidProtocolBufferException { - JsonParser jsonParser = new JsonParser(); - Printer printer = JsonFormat.printer(); - TokenMatcher matcher = new TokenMatcher("no"); - Parser<GherkinDocument.Builder> parser = new Parser<>(new GherkinDocumentBuilder()); - - GherkinDocument gherkinDocument = parser.parse("Egenskap: i18n support\n", matcher).build(); - String json = printer.print(gherkinDocument); - - assertEquals(jsonParser.parse("" + - "{\"feature\":{\"location\":{\"line\":1,\"column\":1},\"language\":\"no\",\"keyword\":\"Egenskap\",\"name\":\"i18n support\"}}"), - jsonParser.parse(json)); - } -} diff --git a/gherkin/java/src/test/java/gherkin/messages/SubprocessCucumberMessagesTest.java b/gherkin/java/src/test/java/io/cucumber/gherkin/SubprocessCucumberMessagesTest.java similarity index 88% rename from gherkin/java/src/test/java/gherkin/messages/SubprocessCucumberMessagesTest.java rename to gherkin/java/src/test/java/io/cucumber/gherkin/SubprocessCucumberMessagesTest.java index 5833a81fbe..ba30dff203 100644 --- a/gherkin/java/src/test/java/gherkin/messages/SubprocessCucumberMessagesTest.java +++ b/gherkin/java/src/test/java/io/cucumber/gherkin/SubprocessCucumberMessagesTest.java @@ -1,5 +1,6 @@ -package gherkin.messages; +package io.cucumber.gherkin; +import io.cucumber.gherkin.SubprocessCucumberMessages; import io.cucumber.messages.Messages; import org.junit.Ignore; import org.junit.Test; From 18654964302691be91241443aea9621bb8bd3179 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aslak=20Helles=C3=B8y?= <aslak.hellesoy@gmail.com> Date: Mon, 2 Jul 2018 16:43:59 +0100 Subject: [PATCH 2/6] Embed executables in jar, and extract before executing. --- gherkin/java/Makefile | 10 +- gherkin/java/assembly.xml | 24 ++++ gherkin/java/pom.xml | 21 ++++ .../java/io/cucumber/gherkin/MagicFile.java | 105 ++++++++++++++++++ .../main/java/io/cucumber/gherkin/Main.java | 25 ++--- .../gherkin/SubprocessCucumberMessages.java | 9 +- .../io/cucumber/gherkin/MagicFileTest.java | 48 ++++++++ .../SubprocessCucumberMessagesTest.java | 4 +- 8 files changed, 220 insertions(+), 26 deletions(-) create mode 100644 gherkin/java/assembly.xml create mode 100644 gherkin/java/src/main/java/io/cucumber/gherkin/MagicFile.java create mode 100644 gherkin/java/src/test/java/io/cucumber/gherkin/MagicFileTest.java diff --git a/gherkin/java/Makefile b/gherkin/java/Makefile index 0eddefcfc9..82c396efcd 100644 --- a/gherkin/java/Makefile +++ b/gherkin/java/Makefile @@ -30,7 +30,7 @@ default: .compared acceptance/testdata/%.feature.ast.ndjson: testdata/%.feature testdata/%.feature.ast.ndjson .built mkdir -p `dirname $@` - bin/gherkin --no-source --no-pickles $< | jq --sort-keys --compact-output "." > $@ + bin/gherkin --no-source --no-pickles --json $< | jq --sort-keys --compact-output "." > $@ diff --unified <(jq "." $<.ast.ndjson) <(jq "." $@) # # Generate - we only do this in the Java project, then rsync to others @@ -45,7 +45,7 @@ acceptance/testdata/%.feature.ast.ndjson: testdata/%.feature testdata/%.feature. acceptance/testdata/%.feature.protobuf.bin.ndjson: testdata/%.feature.protobuf.bin .built mkdir -p `dirname $@` - cat $< | bin/gherkin | jq --sort-keys --compact-output "." > $@ + cat $< | bin/gherkin --json | jq --sort-keys --compact-output "." > $@ diff --unified <(jq "." $<.ndjson) <(jq "." $@) # # Generate @@ -55,7 +55,7 @@ acceptance/testdata/%.feature.protobuf.bin.ndjson: testdata/%.feature.protobuf.b acceptance/testdata/%.feature.pickles.ndjson: testdata/%.feature testdata/%.feature.pickles.ndjson .built mkdir -p `dirname $@` - bin/gherkin --no-source --no-ast $< | jq --sort-keys --compact-output "." > $@ + bin/gherkin --no-source --no-ast --json $< | jq --sort-keys --compact-output "." > $@ diff --unified <(jq "." $<.pickles.ndjson) <(jq "." $@) # # Generate @@ -65,7 +65,7 @@ acceptance/testdata/%.feature.pickles.ndjson: testdata/%.feature testdata/%.feat acceptance/testdata/%.feature.source.ndjson: testdata/%.feature testdata/%.feature.source.ndjson .built mkdir -p `dirname $@` - bin/gherkin --no-ast --no-pickles $< | jq --sort-keys --compact-output "." > $@ + bin/gherkin --no-ast --no-pickles --json $< | jq --sort-keys --compact-output "." > $@ diff --unified <(jq "." $<.source.ndjson) <(jq "." $@) # # Generate @@ -75,7 +75,7 @@ acceptance/testdata/%.feature.source.ndjson: testdata/%.feature testdata/%.featu acceptance/testdata/%.feature.errors.ndjson: testdata/%.feature testdata/%.feature.errors.ndjson .built mkdir -p `dirname $@` - bin/gherkin --no-source $< | jq --sort-keys --compact-output "." > $@ + bin/gherkin --no-source --json $< | jq --sort-keys --compact-output "." > $@ diff --unified <(jq "." $<.errors.ndjson) <(jq "." $@) clean: diff --git a/gherkin/java/assembly.xml b/gherkin/java/assembly.xml new file mode 100644 index 0000000000..7d3f632256 --- /dev/null +++ b/gherkin/java/assembly.xml @@ -0,0 +1,24 @@ +<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"> + + <id>gherkin-jar-with-executables</id> + <formats> + <format>jar</format> + </formats> + <includeBaseDirectory>false</includeBaseDirectory> + <dependencySets> + <dependencySet> + <outputDirectory>/</outputDirectory> + <useProjectArtifact>true</useProjectArtifact> + <useTransitiveDependencies>false</useTransitiveDependencies> + <unpack>true</unpack> + <scope>runtime</scope> + </dependencySet> + </dependencySets> + <fileSets> + <fileSet> + <directory>gherkin-go</directory> + </fileSet> + </fileSets> +</assembly> diff --git a/gherkin/java/pom.xml b/gherkin/java/pom.xml index b07bd6644e..85076e5641 100644 --- a/gherkin/java/pom.xml +++ b/gherkin/java/pom.xml @@ -81,6 +81,27 @@ <build> <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-assembly-plugin</artifactId> + <version>3.1.0</version> + <configuration> + <appendAssemblyId>false</appendAssemblyId> + <descriptors> + <descriptor>assembly.xml</descriptor> + </descriptors> + </configuration> + <executions> + <execution> + <id>make-assembly</id> + <phase>package</phase> + <goals> + <goal>single</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> diff --git a/gherkin/java/src/main/java/io/cucumber/gherkin/MagicFile.java b/gherkin/java/src/main/java/io/cucumber/gherkin/MagicFile.java new file mode 100644 index 0000000000..ed892a4a23 --- /dev/null +++ b/gherkin/java/src/main/java/io/cucumber/gherkin/MagicFile.java @@ -0,0 +1,105 @@ +package io.cucumber.gherkin; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.Map; + +/** + * A Magic File can be extracted from a Jar file. + */ +public class MagicFile { + private final Map<Object, Object> props; + private final String fileName; + private final File targetFile; + private final File targetDir; + + /** + * @param fileNamePattern A string that contains <pre>{{.OS}}</pre> anb <pre>{{.Arch}}</pre>, which will be replaced + * with platform-specific values + */ + public MagicFile(String fileNamePattern) { + this(fileNamePattern, System.getProperties()); + } + + MagicFile(String executablePattern, Map<Object, Object> props) { + this.props = props; + String formatPattern = executablePattern.replace("{{.OS}}", "%s").replace("{{.Arch}}", "%s"); + this.fileName = String.format(formatPattern, getOs(), getArch()); + File codeFile = new File(getClass().getProtectionDomain().getCodeSource().getLocation().getFile()); + targetDir = codeFile.isDirectory() ? codeFile : codeFile.getParentFile(); + targetFile = new File(targetDir, new File(fileName).getName()); + } + + /** + * Extracts the file. The file is made executable, and will be deleted when the VM exits. + * @return the extracted file. + */ + public File extract() { + try { + File targetFile = getTargetFile(); + + String resourcePath = "/" + fileName; + FileOutputStream os = null; + InputStream is = getClass().getResourceAsStream(resourcePath); + if (is == null) { + File file = new File(fileName); + if (!file.isFile()) { + throw new GherkinException(String.format("%s not found. I looked in the jar and on the file system: ", fileName)); + } + is = new FileInputStream(fileName); + } + + try { + os = new FileOutputStream(targetFile); + copy(is, os); + } finally { + is.close(); + if (os != null) os.close(); + } + targetFile.setExecutable(true); + targetFile.deleteOnExit(); + return targetFile; + } catch (IOException e) { + throw new GherkinException(e); + } + } + + String getOs() { + String osName = ((String) props.get("os.name")).toLowerCase(); + if (osName.contains("mac")) { + return "darwin"; + } + return null; + } + + String getArch() { + String osArch = ((String) props.get("os.arch")).toLowerCase(); + if (osArch.contains("x86_64")) { + return "386"; + } + return null; + } + + String getFileName() { + return fileName; + } + + File getTargetDir() { + return targetDir; + } + + File getTargetFile() { + return targetFile; + } + + private static void copy(InputStream in, OutputStream out) throws IOException { + int read = 0; + byte[] buf = new byte[4096]; + while ((read = in.read(buf)) > 0) out.write(buf, 0, read); + } + +} diff --git a/gherkin/java/src/main/java/io/cucumber/gherkin/Main.java b/gherkin/java/src/main/java/io/cucumber/gherkin/Main.java index a5ed230540..7a59b3b5cd 100644 --- a/gherkin/java/src/main/java/io/cucumber/gherkin/Main.java +++ b/gherkin/java/src/main/java/io/cucumber/gherkin/Main.java @@ -13,15 +13,13 @@ public class Main { public static void main(String[] argv) throws IOException { - Printer printer = JsonFormat.printer(); - List<String> args = new ArrayList<>(asList(argv)); List<String> paths = new ArrayList<>(); boolean includeSource = true; boolean includeAst = true; boolean includePickles = true; - boolean json = false; + Printer jsonPrinter = null; while (!args.isEmpty()) { String arg = args.remove(0).trim(); @@ -37,31 +35,30 @@ public static void main(String[] argv) throws IOException { includePickles = false; break; case "--json": - json = true; + jsonPrinter = JsonFormat.printer(); break; default: paths.add(arg); } } - String gherkinExecutable = System.getenv("GHERKIN_EXECUTABLE"); if (paths.isEmpty()) { CucumberMessages cucumberMessages = new ProtobufCucumberMessages(System.in); - printMessages(printer, json, cucumberMessages); - } else if (gherkinExecutable != null) { - CucumberMessages cucumberMessages = new SubprocessCucumberMessages(gherkinExecutable, paths, includeSource, includeAst, includePickles); - printMessages(printer, json, cucumberMessages); + printMessages(jsonPrinter, cucumberMessages); + } else { + CucumberMessages cucumberMessages = new SubprocessCucumberMessages(paths, includeSource, includeAst, includePickles); + printMessages(jsonPrinter, cucumberMessages); } } - private static void printMessages(Printer printer, boolean protobuf, CucumberMessages cucumberMessages) throws IOException { + private static void printMessages(Printer jsonPrinter, CucumberMessages cucumberMessages) throws IOException { for (Wrapper wrapper : cucumberMessages.messages()) { - if (protobuf) { - wrapper.writeDelimitedTo(System.out); - } else { - Stdio.out.write(printer.print(wrapper)); + if (jsonPrinter != null) { + Stdio.out.write(jsonPrinter.print(wrapper)); Stdio.out.write("\n"); Stdio.out.flush(); + } else { + wrapper.writeDelimitedTo(System.out); } } } diff --git a/gherkin/java/src/main/java/io/cucumber/gherkin/SubprocessCucumberMessages.java b/gherkin/java/src/main/java/io/cucumber/gherkin/SubprocessCucumberMessages.java index b6d418d6d0..c0cf16385c 100644 --- a/gherkin/java/src/main/java/io/cucumber/gherkin/SubprocessCucumberMessages.java +++ b/gherkin/java/src/main/java/io/cucumber/gherkin/SubprocessCucumberMessages.java @@ -13,14 +13,12 @@ * Spawns a subprocess and reads messages from that process' STDOUT (as Protobuf messages) */ public class SubprocessCucumberMessages implements CucumberMessages { - private final String cucumberExecutable; private final List<String> paths; private final boolean includeSource; private final boolean includeAst; private final boolean includePickles; - public SubprocessCucumberMessages(String gherkinExecutable, List<String> paths, boolean includeSource, boolean includeAst, boolean includePickles) { - this.cucumberExecutable = gherkinExecutable; + public SubprocessCucumberMessages(List<String> paths, boolean includeSource, boolean includeAst, boolean includePickles) { this.paths = paths; this.includeSource = includeSource; this.includeAst = includeAst; @@ -29,9 +27,12 @@ public SubprocessCucumberMessages(String gherkinExecutable, List<String> paths, @Override public List<Wrapper> messages() { + MagicFile magicFile = new MagicFile("gherkin-go/gherkin-{{.OS}}-{{.Arch}}"); + magicFile.extract(); + try { List<String> args = new ArrayList<>(); - args.add(cucumberExecutable); + args.add(magicFile.getTargetFile().getAbsolutePath()); if (!includeSource) args.add("--no-source"); if (!includeAst) args.add("--no-ast"); if (!includePickles) args.add("--no-pickles"); diff --git a/gherkin/java/src/test/java/io/cucumber/gherkin/MagicFileTest.java b/gherkin/java/src/test/java/io/cucumber/gherkin/MagicFileTest.java new file mode 100644 index 0000000000..b065a1f702 --- /dev/null +++ b/gherkin/java/src/test/java/io/cucumber/gherkin/MagicFileTest.java @@ -0,0 +1,48 @@ +package io.cucumber.gherkin; + +import org.junit.Test; + +import java.io.File; +import java.util.HashMap; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +public class MagicFileTest { + + @Test + public void detects_osx() { + MagicFile magicFile = new MagicFile("", new HashMap<Object, Object>() {{ + put("os.name", "Mac OS X"); + put("os.arch", "x86_64"); + }}); + + assertEquals("darwin", magicFile.getOs()); + assertEquals("386", magicFile.getArch()); + } + + @Test + public void generates_file_name() { + MagicFile magicFile = new MagicFile("gherkin-{{.OS}}-{{.Arch}}", new HashMap<Object, Object>() {{ + put("os.name", "Mac OS X"); + put("os.arch", "x86_64"); + }}); + assertEquals("gherkin-darwin-386", magicFile.getFileName()); + } + + @Test + public void extracts_file() { + MagicFile magicFile = new MagicFile("README.md", new HashMap<Object, Object>() {{ + put("os.name", "Mac OS X"); + put("os.arch", "x86_64"); + }}); + + File targetFile = magicFile.getTargetFile(); + targetFile.delete(); + magicFile.extract(); + magicFile.extract(); + System.out.println("targetFile = " + magicFile.getTargetDir()); + assertTrue(targetFile.isFile()); + } + +} diff --git a/gherkin/java/src/test/java/io/cucumber/gherkin/SubprocessCucumberMessagesTest.java b/gherkin/java/src/test/java/io/cucumber/gherkin/SubprocessCucumberMessagesTest.java index ba30dff203..ea884517e6 100644 --- a/gherkin/java/src/test/java/io/cucumber/gherkin/SubprocessCucumberMessagesTest.java +++ b/gherkin/java/src/test/java/io/cucumber/gherkin/SubprocessCucumberMessagesTest.java @@ -1,6 +1,5 @@ package io.cucumber.gherkin; -import io.cucumber.gherkin.SubprocessCucumberMessages; import io.cucumber.messages.Messages; import org.junit.Ignore; import org.junit.Test; @@ -14,9 +13,8 @@ public class SubprocessCucumberMessagesTest { @Ignore @Test public void executes_child_and_processes_its_stdout() { - SubprocessCucumberMessages cucumberMessages = new SubprocessCucumberMessages("../javascript/bin/gherkin", singletonList("testdata/good/minimal.feature"), true, true, true); + SubprocessCucumberMessages cucumberMessages = new SubprocessCucumberMessages(singletonList("testdata/good/minimal.feature"), true, true, true); List<Messages.Wrapper> messages = cucumberMessages.messages(); assertEquals(3, messages.size()); } - } From fd767b494e6af5608440e2d30464bfc0fc06f16d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aslak=20Helles=C3=B8y?= <aslak.hellesoy@gmail.com> Date: Tue, 3 Jul 2018 10:46:56 +0100 Subject: [PATCH 3/6] gherkin: java: Make exe extraction more robust --- gherkin/java/pom.xml | 6 ++ .../java/io/cucumber/gherkin/MagicFile.java | 73 ++++++++++++------- .../gherkin/SubprocessCucumberMessages.java | 5 +- .../io/cucumber/gherkin/MagicFileTest.java | 39 +++++++++- 4 files changed, 94 insertions(+), 29 deletions(-) diff --git a/gherkin/java/pom.xml b/gherkin/java/pom.xml index 85076e5641..8b50fa7b41 100644 --- a/gherkin/java/pom.xml +++ b/gherkin/java/pom.xml @@ -90,6 +90,12 @@ <descriptors> <descriptor>assembly.xml</descriptor> </descriptors> + <archive> + <manifest> + <addDefaultImplementationEntries>true</addDefaultImplementationEntries> + <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries> + </manifest> + </archive> </configuration> <executions> <execution> diff --git a/gherkin/java/src/main/java/io/cucumber/gherkin/MagicFile.java b/gherkin/java/src/main/java/io/cucumber/gherkin/MagicFile.java index ed892a4a23..91eb88f282 100644 --- a/gherkin/java/src/main/java/io/cucumber/gherkin/MagicFile.java +++ b/gherkin/java/src/main/java/io/cucumber/gherkin/MagicFile.java @@ -2,20 +2,24 @@ import java.io.File; import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.net.URL; +import java.net.URLConnection; +import java.net.UnknownHostException; import java.util.Map; /** - * A Magic File can be extracted from a Jar file. + * A Magic File can be extracted from a Jar file or downloaded from the World Wide Web. */ public class MagicFile { + private static boolean deleteOnExit; private final Map<Object, Object> props; private final String fileName; private final File targetFile; - private final File targetDir; /** * @param fileNamePattern A string that contains <pre>{{.OS}}</pre> anb <pre>{{.Arch}}</pre>, which will be replaced @@ -30,44 +34,68 @@ public MagicFile(String fileNamePattern) { String formatPattern = executablePattern.replace("{{.OS}}", "%s").replace("{{.Arch}}", "%s"); this.fileName = String.format(formatPattern, getOs(), getArch()); File codeFile = new File(getClass().getProtectionDomain().getCodeSource().getLocation().getFile()); - targetDir = codeFile.isDirectory() ? codeFile : codeFile.getParentFile(); + File targetDir = codeFile.isDirectory() ? codeFile : codeFile.getParentFile(); targetFile = new File(targetDir, new File(fileName).getName()); } + public static void deleteOnExit() { + deleteOnExit = true; + } + /** * Extracts the file. The file is made executable, and will be deleted when the VM exits. + * * @return the extracted file. */ public File extract() { try { - File targetFile = getTargetFile(); - - String resourcePath = "/" + fileName; - FileOutputStream os = null; - InputStream is = getClass().getResourceAsStream(resourcePath); - if (is == null) { - File file = new File(fileName); - if (!file.isFile()) { - throw new GherkinException(String.format("%s not found. I looked in the jar and on the file system: ", fileName)); - } - is = new FileInputStream(fileName); - } + InputStream is = getInputStream(); - try { - os = new FileOutputStream(targetFile); + try (FileOutputStream os = new FileOutputStream(targetFile)) { copy(is, os); - } finally { is.close(); - if (os != null) os.close(); } targetFile.setExecutable(true); - targetFile.deleteOnExit(); + targetFile.setLastModified(System.currentTimeMillis()); + if (deleteOnExit) targetFile.deleteOnExit(); return targetFile; } catch (IOException e) { throw new GherkinException(e); } } + private InputStream getInputStream() throws IOException { + File file = new File(fileName); + if (file.isFile()) return new FileInputStream(fileName); + + InputStream is = getClass().getResourceAsStream("/" + fileName); + if (is != null) return is; + + return newUrlInputStream(fileName, targetFile); + } + + private InputStream newUrlInputStream(String fileName, File targetFile) throws IOException { + URL baseUrl = new URL("https://s3.eu-west-2.amazonaws.com/io.cucumber/gherkin-go/" + getVersion() + "/"); + URL fileUrl = new URL(baseUrl, fileName); + URLConnection con = fileUrl.openConnection(); + con.setRequestProperty("User-Agent", "Mozilla"); + try { + return con.getInputStream(); + } catch (UnknownHostException | FileNotFoundException e) { + throw new GherkinException(String.format("Failed to download %s.\nTry downloading it manually and place it in %s", fileUrl, targetFile.getAbsolutePath())); + } + } + + private String getVersion() { + Package p = getClass().getPackage(); + // This is set in pom.xml + String version = p.getImplementationVersion(); + if (version == null || version.endsWith("-SNAPSHOT")) { + version = "master"; + } + return version; + } + String getOs() { String osName = ((String) props.get("os.name")).toLowerCase(); if (osName.contains("mac")) { @@ -88,10 +116,6 @@ String getFileName() { return fileName; } - File getTargetDir() { - return targetDir; - } - File getTargetFile() { return targetFile; } @@ -101,5 +125,4 @@ private static void copy(InputStream in, OutputStream out) throws IOException { byte[] buf = new byte[4096]; while ((read = in.read(buf)) > 0) out.write(buf, 0, read); } - } diff --git a/gherkin/java/src/main/java/io/cucumber/gherkin/SubprocessCucumberMessages.java b/gherkin/java/src/main/java/io/cucumber/gherkin/SubprocessCucumberMessages.java index c0cf16385c..440acebc31 100644 --- a/gherkin/java/src/main/java/io/cucumber/gherkin/SubprocessCucumberMessages.java +++ b/gherkin/java/src/main/java/io/cucumber/gherkin/SubprocessCucumberMessages.java @@ -27,8 +27,9 @@ public SubprocessCucumberMessages(List<String> paths, boolean includeSource, boo @Override public List<Wrapper> messages() { - MagicFile magicFile = new MagicFile("gherkin-go/gherkin-{{.OS}}-{{.Arch}}"); - magicFile.extract(); + MagicFile magicFile = new MagicFile("gherkin-{{.OS}}-{{.Arch}}"); + if (!magicFile.getTargetFile().isFile()) + magicFile.extract(); try { List<String> args = new ArrayList<>(); diff --git a/gherkin/java/src/test/java/io/cucumber/gherkin/MagicFileTest.java b/gherkin/java/src/test/java/io/cucumber/gherkin/MagicFileTest.java index b065a1f702..ff51913cdb 100644 --- a/gherkin/java/src/test/java/io/cucumber/gherkin/MagicFileTest.java +++ b/gherkin/java/src/test/java/io/cucumber/gherkin/MagicFileTest.java @@ -1,6 +1,9 @@ package io.cucumber.gherkin; +import org.junit.Before; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import java.io.File; import java.util.HashMap; @@ -10,6 +13,14 @@ public class MagicFileTest { + @Rule + public ExpectedException expected = ExpectedException.none(); + + @Before + public void setup() { + MagicFile.deleteOnExit(); + } + @Test public void detects_osx() { MagicFile magicFile = new MagicFile("", new HashMap<Object, Object>() {{ @@ -31,7 +42,7 @@ public void generates_file_name() { } @Test - public void extracts_file() { + public void extracts_file_from_file_system() { MagicFile magicFile = new MagicFile("README.md", new HashMap<Object, Object>() {{ put("os.name", "Mac OS X"); put("os.arch", "x86_64"); @@ -40,9 +51,33 @@ public void extracts_file() { File targetFile = magicFile.getTargetFile(); targetFile.delete(); magicFile.extract(); + assertTrue(targetFile.isFile()); + } + + @Test + public void downloads_file_from_s3() { + MagicFile magicFile = new MagicFile("gherkin-{{.OS}}-{{.Arch}}", new HashMap<Object, Object>() {{ + put("os.name", "Mac OS X"); + put("os.arch", "x86_64"); + }}); + + File targetFile = magicFile.getTargetFile(); + targetFile.delete(); magicFile.extract(); - System.out.println("targetFile = " + magicFile.getTargetDir()); assertTrue(targetFile.isFile()); } + @Test + public void throws_exception_with_explanation_when_file_not_found() { + expected.expectMessage("Failed to download https://s3.eu-west-2.amazonaws.com/io.cucumber/gherkin-go/master/notfound-darwin-386"); + MagicFile magicFile = new MagicFile("notfound-{{.OS}}-{{.Arch}}", new HashMap<Object, Object>() {{ + put("os.name", "Mac OS X"); + put("os.arch", "x86_64"); + }}); + + File targetFile = magicFile.getTargetFile(); + targetFile.delete(); + magicFile.extract(); + assertTrue(targetFile.isFile()); + } } From 8702cfdf9af2409f9a7e1ac28fbfe7edbb123b6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aslak=20Helles=C3=B8y?= <aslak.hellesoy@gmail.com> Date: Tue, 3 Jul 2018 11:54:51 +0100 Subject: [PATCH 4/6] gherkin: java: detect more platforms --- .../java/io/cucumber/gherkin/MagicFile.java | 128 ++++++++++++++++-- .../io/cucumber/gherkin/MagicFileTest.java | 19 ++- 2 files changed, 132 insertions(+), 15 deletions(-) diff --git a/gherkin/java/src/main/java/io/cucumber/gherkin/MagicFile.java b/gherkin/java/src/main/java/io/cucumber/gherkin/MagicFile.java index 91eb88f282..3589e08f4d 100644 --- a/gherkin/java/src/main/java/io/cucumber/gherkin/MagicFile.java +++ b/gherkin/java/src/main/java/io/cucumber/gherkin/MagicFile.java @@ -10,6 +10,7 @@ import java.net.URL; import java.net.URLConnection; import java.net.UnknownHostException; +import java.util.Locale; import java.util.Map; /** @@ -31,13 +32,20 @@ public MagicFile(String fileNamePattern) { MagicFile(String executablePattern, Map<Object, Object> props) { this.props = props; - String formatPattern = executablePattern.replace("{{.OS}}", "%s").replace("{{.Arch}}", "%s"); - this.fileName = String.format(formatPattern, getOs(), getArch()); + String formatPattern = executablePattern + .replace("{{.OS}}", "%s") + .replace("{{.Arch}}", "%s") + .replace("{{.Ext}}", "%s"); + this.fileName = String.format(formatPattern, getOs(), getArch(), getExt()); File codeFile = new File(getClass().getProtectionDomain().getCodeSource().getLocation().getFile()); File targetDir = codeFile.isDirectory() ? codeFile : codeFile.getParentFile(); targetFile = new File(targetDir, new File(fileName).getName()); } + private String getExt() { + return "windows".equals(getOs()) ? ".exe" : ""; + } + public static void deleteOnExit() { deleteOnExit = true; } @@ -97,19 +105,119 @@ private String getVersion() { } String getOs() { - String osName = ((String) props.get("os.name")).toLowerCase(); - if (osName.contains("mac")) { - return "darwin"; - } - return null; + return normalizeOs((String) props.get("os.name")); } String getArch() { - String osArch = ((String) props.get("os.arch")).toLowerCase(); - if (osArch.contains("x86_64")) { + return normalizeArch((String) props.get("os.arch")); + } + + private static String normalize(String value) { + if (value == null) { + return ""; + } + return value.toLowerCase(Locale.US).replaceAll("[^a-z0-9]+", ""); + } + + // https://github.com/trustin/os-maven-plugin/blob/master/src/main/java/kr/motd/maven/os/Detector.java + // https://gist.github.com/asukakenji/f15ba7e588ac42795f421b48b8aede63 + private static String normalizeArch(String value) { + value = normalize(value); + if (value.matches("^(x8664|amd64|ia32e|em64t|x64)$")) { + return "amd64"; + } + if (value.matches("^(x8632|x86|i[3-6]86|ia32|x32)$")) { return "386"; } - return null; + if (value.matches("^(ia64w?|itanium64)$")) { + return "itanium_64"; // TODO - not supported by https://github.com/mitchellh/gox ? + } + if ("ia64n".equals(value)) { + return "itanium_32"; // TODO - not supported by https://github.com/mitchellh/gox ? + } + if (value.matches("^(sparc|sparc32)$")) { + return "sparc_32"; // TODO - not supported by https://github.com/mitchellh/gox ? + } + if (value.matches("^(sparcv9|sparc64)$")) { + return "sparc_64"; // TODO - not supported by https://github.com/mitchellh/gox ? + } + if (value.matches("^(arm|arm32)$")) { + return "arm"; + } + if ("aarch64".equals(value)) { + return "aarch_64"; // TODO - not supported by https://github.com/mitchellh/gox ? + } + if (value.matches("^(mips|mips32)$")) { + return "mips"; + } + if (value.matches("^(mipsel|mips32el)$")) { // TODO - Is this a typo? Should it be mipsle|mips32le ? + return "mipsle"; + } + if ("mips64".equals(value)) { + return "mips64"; + } + if ("mips64el".equals(value)) { // TODO - Is this a typo? Should it be mips64le? + return "mips64le"; + } + if (value.matches("^(ppc|ppc32)$")) { + return "ppc_32"; // TODO - not supported by https://github.com/mitchellh/gox ? + } + if (value.matches("^(ppcle|ppc32le)$")) { + return "ppcle_32"; // TODO - not supported by https://github.com/mitchellh/gox ? + } + if ("ppc64".equals(value)) { + return "ppc_64"; // TODO - not supported by https://github.com/mitchellh/gox ? + } + if ("ppc64le".equals(value)) { + return "ppcle_64"; // TODO - not supported by https://github.com/mitchellh/gox ? + } + if ("s390".equals(value)) { + return "s390_32"; // TODO - not supported by https://github.com/mitchellh/gox ? + } + if ("s390x".equals(value)) { + return "s390x"; + } + + return "unknown"; + } + + private static String normalizeOs(String value) { + value = normalize(value); + if (value.startsWith("aix")) { + return "aix"; // TODO - not supported by https://github.com/mitchellh/gox ? + } + if (value.startsWith("hpux")) { + return "hpux"; // TODO - not supported by https://github.com/mitchellh/gox ? + } + if (value.startsWith("os400")) { + // Avoid the names such as os4000 + if (value.length() <= 5 || !Character.isDigit(value.charAt(5))) { + return "os400"; // TODO - not supported by https://github.com/mitchellh/gox ? + } + } + if (value.startsWith("linux")) { + return "linux"; + } + if (value.startsWith("macosx") || value.startsWith("osx")) { + return "darwin"; + } + if (value.startsWith("freebsd")) { + return "freebsd"; + } + if (value.startsWith("openbsd")) { + return "openbsd"; + } + if (value.startsWith("netbsd")) { + return "netbsd"; + } + if (value.startsWith("solaris") || value.startsWith("sunos")) { + return "sunos"; + } + if (value.startsWith("windows")) { + return "windows"; + } + + return "unknown"; } String getFileName() { diff --git a/gherkin/java/src/test/java/io/cucumber/gherkin/MagicFileTest.java b/gherkin/java/src/test/java/io/cucumber/gherkin/MagicFileTest.java index ff51913cdb..a2af05958b 100644 --- a/gherkin/java/src/test/java/io/cucumber/gherkin/MagicFileTest.java +++ b/gherkin/java/src/test/java/io/cucumber/gherkin/MagicFileTest.java @@ -29,16 +29,25 @@ public void detects_osx() { }}); assertEquals("darwin", magicFile.getOs()); - assertEquals("386", magicFile.getArch()); + assertEquals("amd64", magicFile.getArch()); } @Test - public void generates_file_name() { - MagicFile magicFile = new MagicFile("gherkin-{{.OS}}-{{.Arch}}", new HashMap<Object, Object>() {{ + public void generates_file_name_for_macos() { + MagicFile magicFile = new MagicFile("gherkin-{{.OS}}-{{.Arch}}{{.Ext}}", new HashMap<Object, Object>() {{ put("os.name", "Mac OS X"); put("os.arch", "x86_64"); }}); - assertEquals("gherkin-darwin-386", magicFile.getFileName()); + assertEquals("gherkin-darwin-amd64", magicFile.getFileName()); + } + + @Test + public void generates_file_name_for_windows() { + MagicFile magicFile = new MagicFile("gherkin-{{.OS}}-{{.Arch}}{{.Ext}}", new HashMap<Object, Object>() {{ + put("os.name", "Windows 10"); + put("os.arch", "x86_32"); + }}); + assertEquals("gherkin-windows-386.exe", magicFile.getFileName()); } @Test @@ -69,7 +78,7 @@ public void downloads_file_from_s3() { @Test public void throws_exception_with_explanation_when_file_not_found() { - expected.expectMessage("Failed to download https://s3.eu-west-2.amazonaws.com/io.cucumber/gherkin-go/master/notfound-darwin-386"); + expected.expectMessage("Failed to download https://s3.eu-west-2.amazonaws.com/io.cucumber/gherkin-go/master/notfound-darwin-amd64"); MagicFile magicFile = new MagicFile("notfound-{{.OS}}-{{.Arch}}", new HashMap<Object, Object>() {{ put("os.name", "Mac OS X"); put("os.arch", "x86_64"); From 6d427b8055433f4041bdbe9eeb38e281abc2ad63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aslak=20Helles=C3=B8y?= <aslak.hellesoy@gmail.com> Date: Tue, 3 Jul 2018 12:19:56 +0100 Subject: [PATCH 5/6] gherkin: java: Bundle linux/windows/darwin binaries in jar when building a tag --- gherkin/java/.gitignore | 1 + gherkin/java/Makefile | 25 +++++++++++++++++-- .../java/io/cucumber/gherkin/MagicFile.java | 2 +- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/gherkin/java/.gitignore b/gherkin/java/.gitignore index abacee925a..064047b642 100644 --- a/gherkin/java/.gitignore +++ b/gherkin/java/.gitignore @@ -5,3 +5,4 @@ acceptance/ .built .compared dependency-reduced-pom.xml +gherkin-go/ diff --git a/gherkin/java/Makefile b/gherkin/java/Makefile index 82c396efcd..2c1f9bf849 100644 --- a/gherkin/java/Makefile +++ b/gherkin/java/Makefile @@ -11,6 +11,12 @@ ERRORS = $(patsubst testdata/%.feature,acceptance/testdata/%.feature.error JAVA_FILES = $(shell find . -name "*.java") +ifdef TRAVIS_TAG + DOWNLOAD_BINARIES_TARGET=gherkin-go +else + DOWNLOAD_BINARIES_TARGET=no-gherkin-go +endif + .DELETE_ON_ERROR: default: .compared @@ -19,10 +25,25 @@ default: .compared .compared: $(PROTOBUFS) $(ASTS) $(PICKLES) $(ERRORS) $(SOURCES) touch $@ -.built: $(JAVA_FILES) LICENSE pom.xml +.built: $(JAVA_FILES) LICENSE pom.xml $(DOWNLOAD_BINARIES_TARGET) mvn install touch $@ +# Downloads the most common platform binaries, which will be included in the jar +# The jar will download other binaries at runtime if they are not bundles +gherkin-go: + mkdir -p $@ + curl https://s3.eu-west-2.amazonaws.com/io.cucumber/gherkin-go/${TRAVIS_TAG}/gherkin-darwin-amd64 -o gherkin-go/gherkin-darwin-amd64 + curl https://s3.eu-west-2.amazonaws.com/io.cucumber/gherkin-go/${TRAVIS_TAG}/gherkin-darwin-386 -o gherkin-go/gherkin-darwin-386 + curl https://s3.eu-west-2.amazonaws.com/io.cucumber/gherkin-go/${TRAVIS_TAG}/gherkin-linux-amd64 -o gherkin-go/gherkin-linux-amd64 + curl https://s3.eu-west-2.amazonaws.com/io.cucumber/gherkin-go/${TRAVIS_TAG}/gherkin-linux-386 -o gherkin-go/gherkin-linux-386 + curl https://s3.eu-west-2.amazonaws.com/io.cucumber/gherkin-go/${TRAVIS_TAG}/gherkin-windows-amd64.exe -o gherkin-go/gherkin-windows-amd64.exe + curl https://s3.eu-west-2.amazonaws.com/io.cucumber/gherkin-go/${TRAVIS_TAG}/gherkin-windows-386.exe -o gherkin-go/gherkin-windows-386.exe + +no-gherkin-go: + echo "Not downloading binaries, because TRAVIS_TAG is not defined" +.PHONY: no-gherkin-go + # # Generate # acceptance/testdata/%.feature.ast.ndjson: testdata/%.feature .built # mkdir -p `dirname $@` @@ -79,5 +100,5 @@ acceptance/testdata/%.feature.errors.ndjson: testdata/%.feature testdata/%.featu diff --unified <(jq "." $<.errors.ndjson) <(jq "." $@) clean: - rm -rf .compared .built acceptance target + rm -rf .compared .built acceptance target gherkin-go .PHONY: clean diff --git a/gherkin/java/src/main/java/io/cucumber/gherkin/MagicFile.java b/gherkin/java/src/main/java/io/cucumber/gherkin/MagicFile.java index 3589e08f4d..5b3ce8c105 100644 --- a/gherkin/java/src/main/java/io/cucumber/gherkin/MagicFile.java +++ b/gherkin/java/src/main/java/io/cucumber/gherkin/MagicFile.java @@ -76,7 +76,7 @@ private InputStream getInputStream() throws IOException { File file = new File(fileName); if (file.isFile()) return new FileInputStream(fileName); - InputStream is = getClass().getResourceAsStream("/" + fileName); + InputStream is = getClass().getResourceAsStream("/gherkin-go/" + fileName); if (is != null) return is; return newUrlInputStream(fileName, targetFile); From 53838598cfa79a81223ced0199aed94d42c980c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aslak=20Helles=C3=B8y?= <aslak.hellesoy@gmail.com> Date: Tue, 3 Jul 2018 12:22:18 +0100 Subject: [PATCH 6/6] gherkin: Add {{.Ext}} --- .../java/src/test/java/io/cucumber/gherkin/MagicFileTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gherkin/java/src/test/java/io/cucumber/gherkin/MagicFileTest.java b/gherkin/java/src/test/java/io/cucumber/gherkin/MagicFileTest.java index a2af05958b..11fd6cdf9b 100644 --- a/gherkin/java/src/test/java/io/cucumber/gherkin/MagicFileTest.java +++ b/gherkin/java/src/test/java/io/cucumber/gherkin/MagicFileTest.java @@ -65,7 +65,7 @@ public void extracts_file_from_file_system() { @Test public void downloads_file_from_s3() { - MagicFile magicFile = new MagicFile("gherkin-{{.OS}}-{{.Arch}}", new HashMap<Object, Object>() {{ + MagicFile magicFile = new MagicFile("gherkin-{{.OS}}-{{.Arch}}{{.Ext}}", new HashMap<Object, Object>() {{ put("os.name", "Mac OS X"); put("os.arch", "x86_64"); }}); @@ -79,7 +79,7 @@ public void downloads_file_from_s3() { @Test public void throws_exception_with_explanation_when_file_not_found() { expected.expectMessage("Failed to download https://s3.eu-west-2.amazonaws.com/io.cucumber/gherkin-go/master/notfound-darwin-amd64"); - MagicFile magicFile = new MagicFile("notfound-{{.OS}}-{{.Arch}}", new HashMap<Object, Object>() {{ + MagicFile magicFile = new MagicFile("notfound-{{.OS}}-{{.Arch}}{{.Ext}}", new HashMap<Object, Object>() {{ put("os.name", "Mac OS X"); put("os.arch", "x86_64"); }});