From b093c9f86b9eb27592b9f82b1e197f09b2e96fb2 Mon Sep 17 00:00:00 2001 From: Ulya Trofimovich Date: Fri, 26 Jul 2019 10:31:20 +0100 Subject: [PATCH] Paper: cleaned up source files (mostly removed unused files). Touched the following papers: - 1994 paper "RE2C: a More Versatile Parser Generator" - 2017 paper "Tagged Deterministic Finite Automata with Lookahead" (after arXiv publication) - 2019 paper "Efficient POSIX Submatch Extraction on NFA" All .pdf and .ps files have been moved to gh-pages-gen branch. --- Makefile.am | 3 - doc/loplas.ps | 5249 ----------------- ...nistic_finite_automata_with_lookahead.tex} | 435 +- .../__mk.sh | 3 + .../bench/__mk.sh | 0 .../bench/data | 0 .../bench/plot.gnuplot | 0 .../bibliography.bib | 0 .../img/bench_size_gcc_clang.png} | Bin .../img/bench_size_tcc_pcc.png} | Bin .../img/bench_time_gcc_clang.png} | Bin .../img/bench_time_tcc_pcc.png} | Bin .../img/example1_all.png} | Bin .../img/example2_all.png} | Bin .../img/example3_all.png} | Bin .../img/example4_all.png} | Bin .../img/example5_all.png} | Bin .../img/example6_all.png} | Bin .../img/fallback_tdfa0.png} | Bin .../img/fallback_tdfa0_fallback.png} | Bin .../img/fallback_tdfa0_raw.png} | Bin .../img/fallback_tdfa1.png} | Bin .../img/fallback_tdfa1_fallback.png} | Bin .../img/fallback_tdfa1_raw.png} | Bin .../img/fallback_tnfa.png} | Bin .../img/plot_acyc_neg_both.png | Bin .../img/plot_grid_nhard_both.png | Bin .../img/tnfa_concat.png} | Bin .../img/tnfa_repeat_bound.png} | Bin .../img/tnfa_repeat_unbound.png} | Bin .../img/tnfa_union.png} | Bin .../.gitignore | 0 ...cient_posix_submatch_extraction_on_nfa.tex | 3222 ++++++++++ .../Makefile | 7 + .../WileyNJD-v2.cls | 0 .../bench/data_artificial | 0 .../bench/data_pathological | 0 .../bench/data_realworld | 0 .../bench/log | 372 ++ .../bench/log_to_plot_data.sh | 79 + .../img/Makefile | 2 +- .../img/mark_and_enum.tex} | 39 +- .../img/parenthesized_expressions.tex} | 0 .../img/tnfa_construction.tex | 0 .../proof-at-the-end.sty | 343 ++ .../xparse.sty | 2317 ++++++++ doc/sample.bib | 48 - doc/tdfa/img/__montage_big.sh | 35 - doc/tdfa/img/__montage_small.sh | 38 - doc/tdfa/img/example1/tdfa0.png | Bin 3255 -> 0 bytes doc/tdfa/img/example1/tdfa0_raw.png | Bin 11284 -> 0 bytes doc/tdfa/img/example1/tdfa1.png | Bin 4145 -> 0 bytes doc/tdfa/img/example1/tdfa1_raw.png | Bin 11029 -> 0 bytes doc/tdfa/img/example1/tnfa.png | Bin 7704 -> 0 bytes doc/tdfa/img/example2/tdfa0.png | Bin 3429 -> 0 bytes doc/tdfa/img/example2/tdfa0_raw.png | Bin 18440 -> 0 bytes doc/tdfa/img/example2/tdfa1.png | Bin 3187 -> 0 bytes doc/tdfa/img/example2/tdfa1_raw.png | Bin 18010 -> 0 bytes doc/tdfa/img/example2/tnfa.png | Bin 6547 -> 0 bytes doc/tdfa/img/example3/tdfa0.png | Bin 4291 -> 0 bytes doc/tdfa/img/example3/tdfa0_raw.png | Bin 18543 -> 0 bytes doc/tdfa/img/example3/tdfa1.png | Bin 3997 -> 0 bytes doc/tdfa/img/example3/tdfa1_raw.png | Bin 18614 -> 0 bytes doc/tdfa/img/example3/tnfa.png | Bin 4872 -> 0 bytes doc/tdfa/img/example4/tdfa0.png | Bin 5039 -> 0 bytes doc/tdfa/img/example4/tdfa0_raw.png | Bin 25515 -> 0 bytes doc/tdfa/img/example4/tdfa1.png | Bin 5062 -> 0 bytes doc/tdfa/img/example4/tdfa1_raw.png | Bin 25566 -> 0 bytes doc/tdfa/img/example4/tnfa.png | Bin 8998 -> 0 bytes doc/tdfa/img/example5/tdfa0.png | Bin 6623 -> 0 bytes doc/tdfa/img/example5/tdfa0_raw.png | Bin 22811 -> 0 bytes doc/tdfa/img/example5/tdfa1.png | Bin 6097 -> 0 bytes doc/tdfa/img/example5/tdfa1_raw.png | Bin 22185 -> 0 bytes doc/tdfa/img/example5/tnfa.png | Bin 5802 -> 0 bytes doc/tdfa/img/example6/tdfa0.png | Bin 2964 -> 0 bytes doc/tdfa/img/example6/tdfa0_raw.png | Bin 6204 -> 0 bytes doc/tdfa/img/example6/tdfa1.png | Bin 3851 -> 0 bytes doc/tdfa/img/example6/tdfa1_raw.png | Bin 7506 -> 0 bytes doc/tdfa/img/example6/tnfa.png | Bin 5449 -> 0 bytes doc/tdfa/img/plot_acyc_neg.png | Bin 8641 -> 0 bytes doc/tdfa/img/plot_acyc_neg_logscale.png | Bin 11514 -> 0 bytes doc/tdfa/img/plot_grid_nhard.png | Bin 9830 -> 0 bytes doc/tdfa/img/plot_grid_nhard_logscale.png | Bin 12042 -> 0 bytes doc/tdfa/mk.sh | 6 - doc/tdfa/tdfa.pdf | Bin 836087 -> 0 bytes doc/tdfa_v2/Makefile | 7 - doc/tdfa_v2/NJDnatbib.sty | 1262 ---- doc/tdfa_v2/TODO | 206 - doc/tdfa_v2/WileyNJD-AMA.bst | 1094 ---- doc/tdfa_v2/img/gor1.tex | 334 -- doc/tdfa_v2/img/tnfa.tex | 511 -- doc/tdfa_v2/img/tnfa_example.tex | 225 - doc/tdfa_v2/img/trees.tex | 139 - 93 files changed, 6664 insertions(+), 9312 deletions(-) delete mode 100644 doc/loplas.ps rename doc/{tdfa/tdfa.tex => papers/2017_tagged_deterministic_finite_automata_with_lookahead/2017_trofimovich_tagged_deterministic_finite_automata_with_lookahead.tex} (93%) create mode 100755 doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/__mk.sh rename doc/{tdfa/img => papers/2017_tagged_deterministic_finite_automata_with_lookahead}/bench/__mk.sh (100%) rename doc/{tdfa/img => papers/2017_tagged_deterministic_finite_automata_with_lookahead}/bench/data (100%) rename doc/{tdfa/img => papers/2017_tagged_deterministic_finite_automata_with_lookahead}/bench/plot.gnuplot (100%) rename doc/{tdfa => papers/2017_tagged_deterministic_finite_automata_with_lookahead}/bibliography.bib (100%) rename doc/{tdfa/img/bench/size_gcc_clang.png => papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/bench_size_gcc_clang.png} (100%) rename doc/{tdfa/img/bench/size_tcc_pcc.png => papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/bench_size_tcc_pcc.png} (100%) rename doc/{tdfa/img/bench/time_gcc_clang.png => papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/bench_time_gcc_clang.png} (100%) rename doc/{tdfa/img/bench/time_tcc_pcc.png => papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/bench_time_tcc_pcc.png} (100%) rename doc/{tdfa/img/example1/all.png => papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/example1_all.png} (100%) rename doc/{tdfa/img/example2/all.png => papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/example2_all.png} (100%) rename doc/{tdfa/img/example3/all.png => papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/example3_all.png} (100%) rename doc/{tdfa/img/example4/all.png => papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/example4_all.png} (100%) rename doc/{tdfa/img/example5/all.png => papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/example5_all.png} (100%) rename doc/{tdfa/img/example6/all.png => papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/example6_all.png} (100%) rename doc/{tdfa/img/fallback/tdfa0.png => papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/fallback_tdfa0.png} (100%) rename doc/{tdfa/img/fallback/tdfa0_fallback.png => papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/fallback_tdfa0_fallback.png} (100%) rename doc/{tdfa/img/fallback/tdfa0_raw.png => papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/fallback_tdfa0_raw.png} (100%) rename doc/{tdfa/img/fallback/tdfa1.png => papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/fallback_tdfa1.png} (100%) rename doc/{tdfa/img/fallback/tdfa1_fallback.png => papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/fallback_tdfa1_fallback.png} (100%) rename doc/{tdfa/img/fallback/tdfa1_raw.png => papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/fallback_tdfa1_raw.png} (100%) rename doc/{tdfa/img/fallback/tnfa.png => papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/fallback_tnfa.png} (100%) rename doc/{tdfa => papers/2017_tagged_deterministic_finite_automata_with_lookahead}/img/plot_acyc_neg_both.png (100%) rename doc/{tdfa => papers/2017_tagged_deterministic_finite_automata_with_lookahead}/img/plot_grid_nhard_both.png (100%) rename doc/{tdfa/img/tnfa/concat.png => papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/tnfa_concat.png} (100%) rename doc/{tdfa/img/tnfa/repeat_bound.png => papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/tnfa_repeat_bound.png} (100%) rename doc/{tdfa/img/tnfa/repeat_unbound.png => papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/tnfa_repeat_unbound.png} (100%) rename doc/{tdfa/img/tnfa/union.png => papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/tnfa_union.png} (100%) rename doc/{tdfa_v2 => papers/2019_efficient_posix_submatch_extraction_on_nfa}/.gitignore (100%) create mode 100644 doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/2019_borsotti_trofimovich_efficient_posix_submatch_extraction_on_nfa.tex create mode 100644 doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/Makefile rename doc/{tdfa_v2 => papers/2019_efficient_posix_submatch_extraction_on_nfa}/WileyNJD-v2.cls (100%) rename doc/{tdfa_v2/img => papers/2019_efficient_posix_submatch_extraction_on_nfa}/bench/data_artificial (100%) rename doc/{tdfa_v2/img => papers/2019_efficient_posix_submatch_extraction_on_nfa}/bench/data_pathological (100%) rename doc/{tdfa_v2/img => papers/2019_efficient_posix_submatch_extraction_on_nfa}/bench/data_realworld (100%) create mode 100644 doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/bench/log create mode 100755 doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/bench/log_to_plot_data.sh rename doc/{tdfa_v2 => papers/2019_efficient_posix_submatch_extraction_on_nfa}/img/Makefile (57%) rename doc/{tdfa_v2/img/mark_enum.tex => papers/2019_efficient_posix_submatch_extraction_on_nfa/img/mark_and_enum.tex} (86%) rename doc/{tdfa_v2/img/pe.tex => papers/2019_efficient_posix_submatch_extraction_on_nfa/img/parenthesized_expressions.tex} (100%) rename doc/{tdfa_v2 => papers/2019_efficient_posix_submatch_extraction_on_nfa}/img/tnfa_construction.tex (100%) create mode 100644 doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/proof-at-the-end.sty create mode 100644 doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/xparse.sty delete mode 100644 doc/sample.bib delete mode 100755 doc/tdfa/img/__montage_big.sh delete mode 100755 doc/tdfa/img/__montage_small.sh delete mode 100644 doc/tdfa/img/example1/tdfa0.png delete mode 100644 doc/tdfa/img/example1/tdfa0_raw.png delete mode 100644 doc/tdfa/img/example1/tdfa1.png delete mode 100644 doc/tdfa/img/example1/tdfa1_raw.png delete mode 100644 doc/tdfa/img/example1/tnfa.png delete mode 100644 doc/tdfa/img/example2/tdfa0.png delete mode 100644 doc/tdfa/img/example2/tdfa0_raw.png delete mode 100644 doc/tdfa/img/example2/tdfa1.png delete mode 100644 doc/tdfa/img/example2/tdfa1_raw.png delete mode 100644 doc/tdfa/img/example2/tnfa.png delete mode 100644 doc/tdfa/img/example3/tdfa0.png delete mode 100644 doc/tdfa/img/example3/tdfa0_raw.png delete mode 100644 doc/tdfa/img/example3/tdfa1.png delete mode 100644 doc/tdfa/img/example3/tdfa1_raw.png delete mode 100644 doc/tdfa/img/example3/tnfa.png delete mode 100644 doc/tdfa/img/example4/tdfa0.png delete mode 100644 doc/tdfa/img/example4/tdfa0_raw.png delete mode 100644 doc/tdfa/img/example4/tdfa1.png delete mode 100644 doc/tdfa/img/example4/tdfa1_raw.png delete mode 100644 doc/tdfa/img/example4/tnfa.png delete mode 100644 doc/tdfa/img/example5/tdfa0.png delete mode 100644 doc/tdfa/img/example5/tdfa0_raw.png delete mode 100644 doc/tdfa/img/example5/tdfa1.png delete mode 100644 doc/tdfa/img/example5/tdfa1_raw.png delete mode 100644 doc/tdfa/img/example5/tnfa.png delete mode 100644 doc/tdfa/img/example6/tdfa0.png delete mode 100644 doc/tdfa/img/example6/tdfa0_raw.png delete mode 100644 doc/tdfa/img/example6/tdfa1.png delete mode 100644 doc/tdfa/img/example6/tdfa1_raw.png delete mode 100644 doc/tdfa/img/example6/tnfa.png delete mode 100644 doc/tdfa/img/plot_acyc_neg.png delete mode 100644 doc/tdfa/img/plot_acyc_neg_logscale.png delete mode 100644 doc/tdfa/img/plot_grid_nhard.png delete mode 100644 doc/tdfa/img/plot_grid_nhard_logscale.png delete mode 100755 doc/tdfa/mk.sh delete mode 100644 doc/tdfa/tdfa.pdf delete mode 100644 doc/tdfa_v2/Makefile delete mode 100644 doc/tdfa_v2/NJDnatbib.sty delete mode 100644 doc/tdfa_v2/TODO delete mode 100644 doc/tdfa_v2/WileyNJD-AMA.bst delete mode 100644 doc/tdfa_v2/img/gor1.tex delete mode 100644 doc/tdfa_v2/img/tnfa.tex delete mode 100644 doc/tdfa_v2/img/tnfa_example.tex delete mode 100644 doc/tdfa_v2/img/trees.tex diff --git a/Makefile.am b/Makefile.am index ce19a049..8fc14825 100644 --- a/Makefile.am +++ b/Makefile.am @@ -238,9 +238,6 @@ EXTRA_DIST = \ README.md \ autogen.sh \ genhelp.sh \ - doc/loplas.ps \ - doc/sample.bib \ - doc/tdfa/tdfa.pdf \ examples \ test diff --git a/doc/loplas.ps b/doc/loplas.ps deleted file mode 100644 index 2067b582..00000000 --- a/doc/loplas.ps +++ /dev/null @@ -1,5249 +0,0 @@ -%!PS-Adobe-2.0 -%%Creator: dvipsk 5.526a Copyright 1986, 1993 Radical Eye Software -%%Title: paper.dvi -%%Pages: 16 -%%PageOrder: Ascend -%%BoundingBox: 0 0 612 792 -%%EndComments -%DVIPSCommandLine: dvips -o paper.ps paper -%DVIPSParameters: dpi=300, compressed, comments removed -%DVIPSSource: TeX output 1994.04.15:2115 -%%BeginProcSet: texc.pro -/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N -/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72 -mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1} -ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale -isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div -hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul -TR matrix currentmatrix dup dup 4 get round 4 exch put dup dup 5 get -round 5 exch put setmatrix}N /@landscape{/isls true N}B /@manualfeed{ -statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 -0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn -begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X -array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo -setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx -FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{ -pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get} -B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 ch-data dup -length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B -/ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type -/stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp -0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 -index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff -ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice -ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]/id -ch-image N /rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N /cp 0 N{ -rc 0 ne{rc 1 sub /rc X rw}{G}ifelse}imagemask restore}B /G{{id gp get -/gp gp 1 add N dup 18 mod S 18 idiv pl S get exec}loop}B /adv{cp add /cp -X}B /chg{rw cp id gp 4 index getinterval putinterval dup gp add /gp X -adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{dup -255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1 adv} -B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 2 idiv -S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2 index string -putinterval adv}B /set{rw cp fillstr 0 4 index getinterval putinterval -adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv 1 chg} -{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{ -adv rsh nd}{1 add adv}{/rc X nd}{1 add set}{1 add clr}{adv 2 chg}{adv 2 -chg nd}{pop nd}]dup{bind pop}forall N /D{/cc X dup type /stringtype ne{] -}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup -length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{ -cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin -0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul -add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore showpage -userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook -known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X -/IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for -65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 -0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V -{}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7 -getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false} -ifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale rulex ruley -false RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex ruley -scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave -transform round exch round exch itransform moveto rulex 0 rlineto 0 -ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta -0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail} -B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{ -3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p --1 w}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{ -3 2 roll p a}B /bos{/SS save N}B /eos{SS restore}B end -%%EndProcSet -%%BeginProcSet: special.pro -TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N -/vs 792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen -false N /rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B -/@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit -div /vsc X}B /@hsize{/hs X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{ -/CLIP 2 N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{ -10 div /rwi X /rwiSeen true N}B /@rhi{10 div /rhi X /rhiSeen true N}B -/@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X}B /magscale -true def end /@MacSetUp{userdict /md known{userdict /md get type -/dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup -length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{} -N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath -clippath mark{transform{itransform moveto}}{transform{itransform lineto} -}{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{ -itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{ -closepath}}pathforall newpath counttomark array astore /gc xdf pop ct 39 -0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}if}N -/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1 -scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get -ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip -not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 -TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR -pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 --1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg -TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg -sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr -0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add -2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp -{pop pop showpage pm restore}N end}if}if}N /normalscale{Resolution 72 -div VResolution 72 div neg scale magscale{DVImag dup scale}if 0 setgray} -N /psfts{S 65781.76 div N}N /startTexFig{/psf$SavedState save N userdict -maxlength dict begin /magscale false def normalscale currentpoint TR -/psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts -/psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx -psf$llx sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy -scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR -/showpage{}N /erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{ -psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 -roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath -moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{SDict -begin /SpecialSave save N gsave normalscale currentpoint TR -@SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial -{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto -closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx -sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR -}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse -CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury -lineto closepath clip}if /showpage{}N /erasepage{}N /copypage{}N newpath -}N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{ -end}repeat grestore SpecialSave restore end}N /@defspecial{SDict begin} -N /@fedspecial{end}B /li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{ -/SaveX currentpoint /SaveY X N 1 setlinecap newpath}N /st{stroke SaveX -SaveY moveto}N /fil{fill SaveX SaveY moveto}N /ellipse{/endangle X -/startangle X /yrad X /xrad X /savematrix matrix currentmatrix N TR xrad -yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end -%%EndProcSet -TeXDict begin 40258431 52099146 1000 300 300 (paper.dvi) -@start /Fa 43 122 df<126012F0A212701210A31220A312401280040C7B830D>44 -D<126012F0A2126004047B830D>46 D<1303A3497EA2497E130BA2EB11E0A3EB20F0A249 -7E1478A2497EA33801FFFEEB001E0002131F80A248EB0780A2120C001E14C039FF803FFC -1E1D7E9C22>65 DI<90380FE0209038 -7018603801C00439030003E000061301000E13004814605A15201278127000F01400A800 -70142012781238A26C14407E000614806CEB01003801C00638007018EB0FE01B1E7D9C21 ->II -II<90381FC04090387030C03801C00C38030003000E1301120C001C -13005A15401278127000F01400A6EC7FF8EC07C00070130312781238A27E120C120E0003 -13053801C008390070304090381FC0001D1E7D9C23>I<39FFF0FFF0390F000F00AC90B5 -FCEB000FAD39FFF0FFF01C1C7D9B22>I<380FFF8038007C00133CB3127012F8A21338EA -7078EA4070EA30E0EA0F80111D7D9B18>74 D<39FFF00FF8390F0007C0EC030014025C5C -5C1460148049C7FC13021307497E1317EB23C0EB43E01381EB00F08014788080141F80EC -078015C015E039FFF03FFC1E1C7D9B23>IIII80 D82 -D<3803E080EA0C19EA1005EA3003EA600112E01300A36C13007E127EEA7FE0EA3FFC6CB4 -FC00071380EA007FEB07C0EB03E0130113007EA36C13C0A238E0018038D00300EACE06EA -81F8131E7D9C19>I<007FB512C038700F010060130000401440A200C014201280A30000 -1400B1497E3803FFFC1B1C7D9B21>I<39FFF01FF0390F000380EC0100B3A26C13021380 -00035BEA01C03800E018EB7060EB0F801C1D7D9B22>I<39FFE003FC001FC712F06C1440 -A26C6C1380A27F0003EB0100A23801E002A2EBF00600001304A2EB7808A2EB7C18EB3C10 -A26D5AA2EB1F60EB0F40A26D5AA36DC7FCA21E1D7E9B22>I<3BFFE07FF03FC03B1F000F -800F00ED00066CEC8004A213800007496C5A1413A23A03C033E0101421A23A01E061F020 -1440A2D800F06D5AEC8078A20178EB7C80903879003CA2013D013FC7FC013E7FA2011E13 -1E011C130EA2010C130C010813042A1D7E9B2E>I<13201370A313B8A3EA011CA3EA020E -A2487EA2EA07FF38080380A3381801C0EA380338FE0FF815157F9419>97 -DIIII103 D<38FF8FF8381C01C0A9EA1FFFEA1C01A938FF8FF815157F9419>II<38FF83F8381C01E01480140013025B5B5B1330137013B8EA1D -1C121EEA1C0E7F14801303EB01C014E014F038FF83FC16157F941A>107 -DI<00FEEB0FE0001E1400 -00171317A338138027A23811C047A33810E087A2EB7107A3133AA2131CA2123839FE083F -E01B157F941F>I<38FC03F8381E00E014401217EA138013C01211EA10E01370A2133813 -1CA2130E130714C0130313011300123800FE134015157F9419>III114 -DI<387FFFF03860703000401310A20080 -1308A300001300ADEA07FF15157F9419>I<38FF83F8381C00E01440AE000C13C0000E13 -8038060100EA0386EA00FC15157F9419>I<38FF01F8383C00F0001C1340A2001E13C000 -0E1380A238070100A21383EA0382A2EA01C4A213E4EA00E8A21370A3132015157F9419> -I<38FF87F0381E0380000E1300EA0F026C5AEA038413C8EA01D0EA00F0A21370137813BC -EA011C7FEA020F487EEB0380000C13C0123C38FE07F815157F9419>120 -D<38FF80FE381E0078000E1320000F13407E3803808013C100011300EA00E2A21374137C -1338A848B4FC1715809419>I E /Fb 7 118 df101 D<123E120CA41218A41230A41260 -A412C012C8A312D0126007177D9609>108 D<3830783C38498CC6384E0502EA4C06389C -0E06EA180CA348485A15801418A23960300900140E190E7D8D1D>I111 -D114 -DI117 D E /Fc 1 59 df<126012F0A2126004047D830A>58 -D E /Fd 1 111 df110 D E /Fe 22 121 df45 -D<12E0A303037D820A>I<130813181330A31360A313C0A3EA0180A3EA0300A21206A35A -A35AA35AA35AA35AA20D217E9812>I<1202120E12FEA2120EB0EAFFE0A20B167D9512> -49 D90 D97 D<12E0A8EAE7C0EAFFE0 -EAF870EAE038A2131CA51338A2EAF0F0EAFFE0EAE7800E177E9612>II101 DII<12E0A31200A612E0AF03187E9708>105 -D<12E0B3A503177E9608>108 D<38E7E1F838EFF3FC38F87E1E38F03C0EEAE038AB170F -7E8E1C>IIII114 D<121FEA7FC012E01300A27E127FEA3F80EA0FC0EA -01E0128012C0EAE1C0127FEA1F000B0F7F8E0E>I<1238A4EAFFC0A2EA3800AA1340EA1F -C013000A137F920D>II120 D E /Ff 34 121 df<3801F1C0120312071301120EA7EAFFF1A2EA0E01B012 -1D809C16>13 D45 D<12E0A303037C820C>I<130113031306A3 -130CA31318A31330A31360A213C0A3EA0180A3EA0300A31206A25AA35AA35AA35AA35AA2 -10297E9E15>II<5A1207123FB4FC12C71207B3A3EAFFF8 -A20D1C7C9B15>II -I<133C137C135C13DC1201139C1203A2EA071CA2120EA2121C123C12381278127012F0B5 -12C0A238001C00A7121B7F9A15>II55 D57 D69 -D<387FFFF0A2380001E0130314C013071480EB0F005B131E133E133C5B13F85B12015B48 -5A12075B120F90C7FC121E123E123C127C1278B512F0A2141D7E9C19>90 -D97 D<12E0ABEAE3E0EAEFF0EAFFF8EAF87CEAF01CEAE01E13 -0EA6131C12F0EAF87CEAFFF8EAEFF0EAE3C00F1D7D9C15>II<130EABEA0F -8EEA1FEEEA3FFEEA7C3EEA700EA212E0A612F0EA701EEA7C3EEA3FFEEA1FEEEA0F8E0F1D -7E9C15>II<13FC12011203EA0700120EA7EAFFE0A2EA0E -00B00E1D809C0D>I<3803C3C0EA0FFF5A381C3800487EA56C5AEA1FF85BEA3BC00038C7 -FCA2EA1FFC13FF481380EA700738E001C0A3EAF003387C0F80383FFF006C5AEA07F8121B -7F9115>I<12F0A41200A71270B2041D7E9C0A>105 D<12E0AB133C137813F0EAE1E0EAE3 -C0EAE780EAEF00B4FC138012FBEAF9C0EAF1E012E013F013781338133C131E0F1D7D9C14 ->107 D<12E0B3AB031D7D9C0A>I<38E3F03F39EFF8FF80D8FFFD13C039F81F81E038F00F -00EAE00EAD1B127D9122>II< -EA03F0EA0FFC487EEA3C0F38780780EA700338E001C0A5EAF00300701380EA7807383C0F -00EA1FFE6C5AEA03F012127F9115>II114 DI<121CA6EA -FFE0A2EA1C00AC1320EA1FF0120FEA07C00C187F970F>II<39E03E0380A3D870371300EB7707A213733838E38EA33818E18C -381CC1CC001D13DCA2380D80D8000F13F8A20007137019127F911C>119 -D<3870038038780700EA3C0EEA1C1C120E6C5AEA03F06C5A5B7F487EEA0738EA0E18131C -487E487E3870038000F013C01212809113>I E /Fg 72 126 df<126012F0AA12701200 -A4126012F0A212600414799312>33 DII37 D<1207EA1F80EA19C01239A3EA3B9E133EEA3E38EA1C70A2EA1E -E0123E1267EAE7C0EAE3C413CE12E7EA7EFCEA3C380F147F9312>I<126012F012F81278 -1218A31230A2126012C01280050C799312>II<128012C012601230121812 -1C120C120EA21207A7120EA2120C121C12181230126012C0128008197C9612>I<1207A3 -EAE738EAFFF8EA7FF0EA1FC0A2EA7FF0EAFFF8EAE738EA0700A30D0E7E9012>II<126012F012F8127812181230A212E012C0050979 -8312>II<126012F0A212600404798312>I<13181338A21370A2 -13E0A2EA01C0A3EA0380A2EA0700A2120EA25AA35AA25AA25AA25A0D1A7E9612>II<1206A2120E121E12FE12EE120EACEAFFE0A20B147D9312>III<12E0EAFFFEA2 -EAE0181338EA007013E013C01201EA0380A2EA0700A4120EA512040F157F9412>55 -DII<126012F0A212601200A6126012F0A21260040E798D12>I<126012F0A2126012 -00A6126012F0A212701230A2126012C012800413798D12>I<13381378EA01F0EA03E0EA -0F80EA1F00123C12F85A7E123C121FEA0F80EA03E0EA01F0EA007813380D117E9212>I< -EAFFFEA2127FC7FCA3EA7FFE12FFA20F097F8E12>I<124012E07E127C7EEA0F80EA07C0 -EA01E0EA00F8137813F8EA01E0EA07C0EA0F80EA3E005A12F05A12400D137E9312>I65 DII69 DI73 D75 DII79 -D -I82 DII<38FE3F80A238380E00AE6C5A6C5AEA07F06C5A111480 -9312>I89 DII<12C07E -A21270A27EA27EA37EA27EA2EA0380A2EA01C0A3EA00E0A21370A21338A213180D1A7E96 -12>II97 D<12F8A21238A4EA3BE0 -EA3FF0EA3C38EA381C130C130EA4130C131CEA3C38EA3FF0EA1BC00F147F9312>II< -13F8A21338A4EA07B8EA1FF8EA3878EA7038126012E0A41260EA70781238EA1FFEEA0FBE -0F147F9312>II<137E13FFEA01C7EA03821380A2EA7FFE12FFEA0380AA -EA3FF8A21014809312>II<12F8A212 -38A4EA39E0EA3FF0EA3E38123C1238A8EAFE3EA20F147F9312>I<1206120FA21206C7FC -A3127FA21207AAEAFFF0A20C157D9412>I<12F8A21238A4EA3BFCA2EA38F0EA39E0EA3B -C0EA3F80A213C0EA3DE0123813701338EAFC7EA20F147F9312>107 -DIIIII114 -DI<1206120EA3EA7FF812FFEA0E00A7131CA3EA07F8EA01E00E127F -9112>IIIIIII<13F81201EA0380EA0700A8120E12FCA2120E7EA8EA0380EA01F812000D1A7E96 -12>I<127812FC120E7EA8EA0380EA01F8A2EA0380EA0700A8120E12FC12780D1A7E9612> -125 D E /Fh 37 123 df<90383FE3F83901F03F1C3903C03E3E0007137CEA0F80151C15 -00A5B612C0A2390F807C00AE397FE1FFC0A21F1D809C1C>11 D<127812FCA4127806067D -850D>46 D<1360EA01E0120F12FF12F31203B3A2387FFF80A2111B7D9A18>49 -DI< -EA03F8EA1FFEEA3C1FEB0F80387C07C0127E127C123838000F80A2EB1E005BEA03F8EA00 -1EEB0F80EB07C0A214E01230127812FCA214C038780F80EB1F00EA1FFEEA07F8131B7E9A -18>II66 D<90381FE0209038FFF8E03803F80F3807C003380F -800148C7FC123E1560127E127C00FC1400A8007C1460127E123E15C07E390F8001803907 -C003003803F80E3800FFFCEB1FE01B1C7D9B22>I69 D77 D79 -D82 D<3807F820381FFEE0EA3C07EA -7801EA700012F01460A26C130012FEEAFFE0EA7FFE6C7E1480000F13C06C13E0EA007FEB -03F01301130012C0A214E07E38F001C0EAFC0338EFFF00EA83FC141C7D9B1B>I<007FB5 -12E0A238781F81007013800060146000E0147000C01430A400001400B03807FFFEA21C1C -7E9B21>I97 DIIII<137F3801 -E3803803C7C0EA0787120FEB8380EB8000A5EAFFF8A2EA0F80AEEA7FF8A2121D809C0F> -I<3803F8F0380E0F38121E381C0730003C1380A4001C1300EA1E0FEA0E0EEA1BF80010C7 -FC1218A2EA1FFF14C06C13E04813F0387801F838F00078A300701370007813F0381E03C0 -3807FF00151B7F9118>II<121E123FA4121EC7FCA6B4FCA2121FAEEAFFE0A20B1E7F9D0E>I107 DI<39FF0FC0 -7E903831E18F3A1F40F20780D980FC13C0A2EB00F8AB3AFFE7FF3FF8A225127F9128>I< -38FF0FC0EB31E0381F40F0EB80F8A21300AB38FFE7FFA218127F911B>II<38FF3F80EBE1E0381F80F0EB0078147C143C143EA6143C147C -1478EB80F0EBC1E0EB3F0090C7FCA6EAFFE0A2171A7F911B>I114 DI<1203A45AA25AA2EA3FFC12FFEA1F00A9130CA4EA0F08EA0798EA03F00E1A7F9913>I< -38FF07F8A2EA1F00AC1301120F380786FFEA01F818127F911B>I<39FF8FF8FEA2391F03 -E030A201831370000FEBF0601386D807C613C0EBCEF8EBEC790003EB7D80EBF83D0001EB -3F00A2497E0000131EEBE00EA21F127F9122>119 D<38FFC7FCA2381F8180EA0F833807 -C700EA03EEEA01FC5B1200137C13FEEA01DFEA039F38070F80380607C0380C03E038FF07 -FCA216127F9119>I<38FFC1FCA2381F0060EB80E0000F13C013C03807C180A23803E300 -A2EA01F713F6EA00FE5BA21378A21330A21370EA706012F85BEAF9800073C7FC123E161A -7F9119>I<383FFF80383C1F00EA303F133E485A13FC5BEA01F01203485AEBC180EA0F81 -121F1303003E1300EA7E07EA7C0FB5FC11127F9115>I E /Fi 55 -124 df<1218123CA31204A21208A21210122012401280060C779C0D>39 -D43 D<12181238127812381208A21210A212201240A21280050C7D -830D>II<1230127812F0126005047C830D>I<14031407140E14 -0C141C141814381430147014E014C013011480130314005B1306130E5B13181338133013 -70136013E05B1201485A90C7FC5A1206120E120C121C121812385A126012E05AA218297F -9E15>I<133C13C6EA0183EA030312061480120E120C121C1400485AA4EA700EA4485AA3 -5BA21330485A12E0EA60C0EA7180001EC7FC111D7B9B15>I<13021306130C131C137CEA -039CEA0038A41370A413E0A4EA01C0A4EA0380A41207EAFFF00F1C7C9B15>I<133C13C3 -38010180120214C0EA0441A21208A338108380A238110700EA0E06C65A5B5B13C048C7FC -12061208485A13021220EA4006EA7E0CEAC7F81283EA80E0121D7C9B15>I<133EEBC180 -EA0101380200C05A1340EA0841A3EB8380EA070338000700130EEA01F8EA0038130CA213 -0EA41270485A12805B1330EA4060EA21C0001FC7FC121D7C9B15>III<130FEB308013C0EA01831203 -90C7FC1206120E120C121C13F0EA3B18EA3C0C12381278EA700EA3EA601C12E0A35BA25B -EA60605BEA2180001EC7FC111D7B9B15>I<131E1361EB8180EA0180380300C0A2380601 -80A3380703001386EA03CC13F01201EA0378EA063CEA081EEA180E1230EA6006A3485AA2 -5BEA60105BEA30C0000FC7FC121D7C9B15>56 D<133C13C6EA0183EA03031206120E000C -1380121C1400A2485AA35B130EEA181EA2EA0C6CEA079CEA001C1318133813305BEAE0C0 -A2EA81800086C7FC127C111D7B9B15>I<1206120FA212061200AA1230127812F0126008 -127C910D>I<1418A21438A21478A214B8130114381302143CEB041CA213081318131013 -20A2EB7FFCEB401C1380120113001202A2487F120C001C131EB4EBFFC01A1D7E9C1F>65 -D<903803F02090381E0C6090383002E09038E003C03801C001EA038048C7FC000E148012 -1E121C123C15005AA35AA41404A35C12705C6C5B00185B6C485AD80706C7FCEA01F81B1E -7A9C1E>67 D<48B512E038003C00013813601540A35BA214201500495AA214C013FF3801 -C080A43803810113801402A248485AA2140C5C000E1378B55A1B1C7D9B1C>69 -D<48B512C038003C01EB38001580A35BA214201500495AA214C013FF3801C080A4D80381 -C7FC1380A348C8FCA45AEAFFF01A1C7D9B1B>I<903803F02090381E0C6090383002E090 -38E003C03801C001EA038048C7FC000E1480121E121C123C15005AA35AA2903801FFC090 -38001E00141CA400705BA27E001813786C139038070710D801F8C7FC1B1E7A9C20>I<38 -01FFC038003C001338A45BA45BA4485AA4485AA448C7FCA45AEAFFE0121C7E9B10>73 -D<3801FFE038003C001338A45BA45BA4485AA438038008A31410EA07001430146014E038 -0E03C0B5FC151C7D9B1A>76 DI<3901FC03FE39001C0070013C13 -60012E1340A301471380A3EB43809038838100A2138114C1380101C2A2EB00E2A2000213 -E41474A3481338A3000C1318001C1310EAFF801F1C7D9B1F>II<3801FF -FC38003C079038380380EC01C0A3EB7003A31580EBE0071500140E14383801FFE001C0C7 -FCA3485AA448C8FCA45AEAFFE01A1C7D9B1C>I<3801FFF838003C0EEB3807EC0380A3EB -7007A3EC0F00EBE00E5C1470EBFFC0EA01C014601470A2EA0380A4380700F01540A21580 -48137839FFE07900C7121E1A1D7D9B1E>82 DI<001FB512C0381C070138300E -0000201480126012405B1280A2000014005BA45BA45BA4485AA41203EA7FFE1A1C799B1E ->I<397FF0FF80390F001C00000E13181410A3485BA4485BA4485BA44848C7FCA31302A2 -5BA2EA6008EA3030EA1040EA0F80191D779B1F>I<3901FF81FE39001E00F0011C136001 -1E1380EB0E011500EB0F026D5A5C1490EB03A014C01301A28013021304497EEB10701320 -EB60381340EB803C3801001C12020006131E121E39FF80FFC01F1C7E9B1F>88 -D97 D<123F1207A2120EA45AA4EA39C0EA3E60EA3830A2EA7038A4EAE0 -70A3136013E0EAC0C012C1EA6180EA6300123C0D1D7B9C13>IIIII<13F3EA018FEA030FEA0607EA0E0E120C121CA2EA381CA413381230A2EA1878 -13F0EA0F701200A213E0A2EAC0C012E1EAC300127E101A7D9113>III108 D<393C1E078039266318C0394683A0E0384703C0008E13 -80A2120EA2391C0701C0A3EC0380D8380E1388A2EC0708151039701C032039300C01C01D -127C9122>IIIIIII<13C01201A3EA0380A4EAFFE0EA0700A3120EA45AA4EA3840A313 -80EA1900120E0B1A7D990E>II<381E0183382703871247148338870701A2 -120EA2381C0E02A31404EA180C131C1408001C1310380C26303807C3C018127C911C> -119 DI -I123 D E /Fj 38 123 df<90380FF83F90397FFDFFC03A01F81F -E3E03903E03F87EA07C0D80F801307ED03C06EC7FCA6B612FCA2260F801FC7FCB2397FF0 -FFF0A223237FA221>11 D<1238127C12FE12FFA2127F123B1203A212071206A2120C121C -12181270122008117CA210>39 D<1238127C12FEA3127C123807077C8610>46 -D<13181378EA01F812FFA21201B3A7387FFFE0A213207C9F1C>49 -DI<13FE3807FFC0380F07E0381E03F0123FEB81F8A3EA1F -0314F0120014E0EB07C0EB1F803801FE007F380007C0EB01F014F8EB00FCA2003C13FE12 -7EB4FCA314FCEA7E01007813F8381E07F0380FFFC03801FE0017207E9F1C>I<14E01301 -1303A21307130F131FA21337137713E7EA01C71387EA03071207120E120C121812381270 -12E0B512FEA2380007E0A7EBFFFEA217207E9F1C>I<00101320381E01E0381FFFC01480 -14005B13F8EA1BC00018C7FCA4EA19FCEA1FFF381E0FC0381807E01303000013F0A214F8 -A21238127C12FEA200FC13F0A2387007E0003013C0381C1F80380FFF00EA03F815207D9F -1C>I<1470A214F8A3497EA2497EA3EB06FF80010E7FEB0C3FA201187F141F01387FEB30 -0FA201607F140701E07F90B5FCA239018001FCA200038090C7FCA20006147FA23AFFE00F -FFF8A225227EA12A>65 DIIIIII76 D79 -DI82 D<007FB61280A2397E03F80F0078140700701403006014 -0100E015C0A200C01400A400001500B3A20003B512F8A222227EA127>84 -D87 D97 D99 -DI<13FE3807FF80380F -87C0381E01E0003E13F0EA7C0014F812FCA2B5FCA200FCC7FCA3127CA2127E003E13186C -1330380FC0703803FFC0C6130015167E951A>I<3803FC1E380FFF7F381F0F8F383E07CF -383C03C0007C13E0A5003C13C0EA3E07381F0F80EBFF00EA13FC0030C7FCA21238383FFF -806C13F06C13F84813FCEA380048133E00F0131EA40078133C007C137C383F01F8380FFF -E00001130018217E951C>103 DI<121C123E127FA3123E121CC7FCA7B4FCA2121FB2 -EAFFE0A20B247EA310>I<3AFF07F007F090391FFC1FFC3A1F303E303E01401340496C48 -7EA201001300AE3BFFE0FFE0FFE0A22B167E9530>109 D<38FF07E0EB1FF8381F307CEB -403CEB803EA21300AE39FFE1FFC0A21A167E951F>I<13FE3807FFC0380F83E0381E00F0 -003E13F848137CA300FC137EA7007C137CA26C13F8381F01F0380F83E03807FFC03800FE -0017167E951C>I<38FF0FE0EB3FF8381FF07CEB803E497E1580A2EC0FC0A8EC1F80A290 -38803F00EBC03EEBE0FCEB3FF8EB0FC090C8FCA8EAFFE0A21A207E951F>I114 -DI<487EA412 -03A21207A2120F123FB5FCA2EA0F80ABEB8180A5EB8300EA07C3EA03FEEA00F811207F9F -16>I<38FF01FEA2381F003EAF147E14FE380F81BE3907FF3FC0EA01FC1A167E951F>I<39 -FFE01FE0A2390F800600A2EBC00E0007130CEBE01C00031318A26C6C5AA26C6C5AA2EB7C -C0A2137F6D5AA26DC7FCA2130EA21B167F951E>I<387FFFF0A2387C03E0387007C0EA60 -0F38E01F8000C01300133E137EC65A5B485A00031330EA07E013C0380F8070121F383F00 -60003E13E0EA7C03B5FCA214167E9519>122 D E /Fk 4 122 df15 -D<133C13E0EA01C013801203AD13005A121C12F0121C12077E1380AD120113C0EA00E013 -3C0E297D9E15>102 D<12F0121C12077E1380AD120113C0EA00E0133C13E0EA01C01380 -1203AD13005A121C12F00E297D9E15>I<12021207A61202A3EA7270EAFFF8EA7270EA02 -00A21207B11202A60D267E9C12>121 D E /Fl 12 114 df<38078010EA1FC0383FE020 -EA7FF03860304038C01080128038000900A2130AA3130CA21308A31318A35BA45BA21340 -141B7F9115>13 D<126012F0A2126004047C830C>58 D<126012F0A212701210A41220A2 -12401280040C7C830C>I<140CA2141CA2143C147C145C149C148EEB010EA213021304A2 -1308A213101320EB3FFEEB4007A21380EA0100A21202A21206121E39FF807FF01C1D7F9C -1F>65 D<3801FFE038003C001338A45BA45BA4485AA438038002A31404EA0700140C1418 -1438000E13F0B5FC171C7E9B1C>76 D<3801FFFE39003C03C090383800E015F01570A249 -13F0A3EC01E001E013C0EC0780EC1E00EBFFF03801C03080141CA2EA0380A43807003C15 -08A2151048131E39FFE00E20C7EA07C01D1D7E9B20>82 DI97 D<123F1207A2120EA45AA4EA39E0EA3A30EA3C1812381270131CA3EAE038A31330 -1370136013C01261EA2300121E0E1D7E9C12>II110 D113 -D E /Fm 77 125 df<126012F0AF12601200A4126012F0A212600419779816>33 -DII<13C01201A3EA07F0EA1F -FC48B4FCEA7DCF38F1C78012E1A338F1C300EA79C0127FEA1FF0EA07FCEA01FE13CFEBC7 -80EAF1C3A3EAE1C712F13879DF00EA3FFE6C5AEA07E0EA01C0A2120011207E9C16>I38 -D<1218123C123E121E120EA3121E121C123C127812F01260070D799816>I<13E01201EA -07C013005A121E5A123812781270A312F05AA77E1270A312781238123C7E7E7E13C0EA01 -E012000B217A9C16>I<12E07E127C121C121E7EEA0780120313C01201A313E01200A712 -0113C0A3120313801207EA0F00121E121C127C12F05A0B217C9C16>III<1238127C127EA2123E120E121E -123C127C12F81260070B798416>II<127012F8A3127005057884 -16>IIIIII<137C13FC13DC1201EA039CA2EA071C120F120E121E123C1238 -127812F0B512E0A338001C00A53801FFC0A313197F9816>II<13F8EA03FEEA0FFFEA1F0F123E123CEA78060070C7FC12F0EAF3F8EA -EFFE12FFEAF80F38F00780A2EAE00312F0A21270EA7807EB0F006C5AEA1FFEEA0FF8EA03 -E011197E9816>I<12E0B51280A338E00F00131EEA001C5B137813705BA2485AA3485AA4 -48C7FCA7111A7E9916>III<127012F8A312701200A8127012F8A312700512789116>I<1238 -127CA312381200A81238127CA3123C121C123C123812F812F012600618799116>III<12C012F012FC123EEA0F806C7EEA01F06C7E133EEB1F801307131FEB3E -0013F8485AEA07C0485A003EC7FC12FC12F012C011157E9616>II<13E0487EA213B0A2EA03B8A31318EA071CA5EA0E0EA2EA0FFEA2 -487EEA1C07A3387F1FC000FF13E0007F13C013197F9816>65 D<3801F180EA07FF5AEA1F -0FEA3C0712781303127000F0C7FC5AA77E387003801278A2EA3C07381F0F00EA0FFE6C5A -EA01F011197E9816>67 DI<387FFFC0B5FC7EEA1C -01A490C7FCA2131CA2EA1FFCA3EA1C1CA290C7FC14E0A5EA7FFFB5FC7E13197F9816>I< -B512E0A3EA1C00A41400A2131CA2EA1FFCA3EA1C1CA290C7FCA6B47E7F5B13197F9816> -I<387F1FC038FFBFE0387F1FC0381C0700A7EA1FFFA3EA1C07A9387F1FC038FFBFE0387F -1FC013197F9816>72 DI<387F0FE038FF8F -F0387F0FE0381C0780EB0F00130E5B133C5B5B5BEA1DF0121F7F1338EA1E1C121C7FA27F -A2EB0380387F07E038FF8FF0387F07E01419809816>75 DI<38FC07E0EAFE0FA2383A0B80EA3B1BA513BBEA39B3A413F3 -EA38E3A21303A538FE0FE0A313197F9816>I<387E1FC038FF3FE0387F1FC0381D070013 -87A313C7A2121CA213E7A31367A21377A21337A31317EA7F1FEAFF9FEA7F0F13197F9816 ->III82 -DI<387FFFE0B5FC -A2EAE0E0A400001300AFEA07FC487E6C5A13197F9816>I<387F07F038FF8FF8387F07F0 -381C01C0B0380E0380A23807070013FF6C5AEA00F81519809816>I<387F1F80133F131F -380E1E00131CEA073C1338EA03B813F012015B120012017F120313B81207131CA2EA0E0E -A2487E387F1FC000FF13E0007F13C013197F9816>88 D<38FE0FE0EAFF1FEAFE0F381C07 -00A2EA0E0EA26C5AA3EA03B8A2EA01F0A26C5AA8EA03F8487E6C5A13197F9816>I91 D<12C07EA21270A27EA27EA27EA27EA26C7E -A26C7EA26C7EA21370A27FA27FA27FA27FA2EB0380A2130111207E9C16>II<120C121E123C1278127012F012E0A312F012F81278 -1230070D789B16>96 DI<127E12FE127E120EA4 -133EEBFF80000F13C0EB83E01301380E00F0A21470A414F0000F13E01301EB83C013FF00 -0E1300EA063C1419809816>II<133F5B7F1307A4EA03C7EA0FF7 -EA3FFFEA3C1F487E487EA212E0A412F05BEA781FEA7C3F383FFFE0381FF7F03807C7E014 -197F9816>II<131FEB7F8013FFEA01E7EBC30013C0 -A2EA7FFFB5FCA2EA01C0ACEA3FFE487E6C5A11197F9816>I<3803E3C0380FFFE05A381E -3CC0383C1E00EA380EA3EA3C1E6C5AEA1FFC5BEA3BE00038C7FCA2EA1FFC13FF4813C0EA -780338F001E0EAE000A3EAF001387C07C0383FFF80380FFE00EA03F8131C7F9116>I<12 -7E12FE127E120EA4133C13FF000F138013871303A2120EA9387FC7F038FFE7F8387FC7F0 -1519809816>II108 D<38F9C38038FFEFC0EBFFE0EA3E -7CEA3C78EA3870AA38FE7CF8A2EB3C781512809116>IIIII<38FF0FC0EB3FE0137F3807F040EBE0005B5BA290C7 -FCA7EAFFFCA313127F9116>II<12035AA4EA -7FFFB5FCA20007C7FCA75BEB0380A2130713873803FF005BEA00F811177F9616>I<387E -1F80EAFE3FEA7E1FEA0E03AA1307EA0F0FEBFFF06C13F83803E3F01512809116>I<38FF -1FE013BF131F38380380A413E33819F300A213B3EA1DB7A4EA0F1EA313127F9116>119 -D<387F1FC0133F131F380F1C00EA073CEA03B813F012016C5A12017FEA03B8EA073C131C -EA0E0E387F1FC038FF3FE0387F1FC013127F9116>I<387F1FC038FF9FE0387F1FC0381C -0700120E130EA212075BA2EA039CA21398EA01B8A2EA00F0A35BA3485A1279127BEA7F80 -6CC7FC123C131B7F9116>I<383FFFC05AA238700780EB0F00131EC65A5B485A485AEA07 -8048C7FC381E01C0123C1278B5FCA312127F9116>I<12E0B3AE0320779C16>124 -D E /Fn 10 58 df<121FEA3180EA60C0EA4040EAC060A8EA4040EA60C0EA3180EA1F00 -0B107F8F0F>48 D<120C123C12CC120CACEAFF8009107E8F0F>I<121FEA6180EA40C0EA -806012C01200A213C0EA0180EA030012065AEA10201220EA7FC012FF0B107F8F0F>I<12 -1FEA2180EA60C0A2120013801201EA0F00EA00801340136012C0A2EA8040EA6080EA1F00 -0B107F8F0F>I<1203A25A5A120B121312331223124312C3EAFFE0EA0300A4EA1FE00B10 -7F8F0F>III<1240EA7FE013C0EA8080A2EA010012025AA2 -120C1208A21218A50B117E900F>I<121FEA3180EA60C0A3EA7180EA3F00120FEA3380EA -61C0EAC060A3EA4040EA6080EA1F000B107F8F0F>I<121FEA3180EA60C0EAC0401360A3 -EA40E01221EA1E6012001340EA60C01380EA4300123E0B107F8F0F>I -E /Fo 66 124 df11 D<13FCEA0782EA0E07121C130290C7FCA4B5FCEA1C07AC38FF1FE013 -17809614>I<13FFEA0707120E121CA6B5FCEA1C07AC38FFBFE01317809614>I<12011202 -1204120C1218A21230A212701260A312E0AA1260A312701230A21218A2120C1204120212 -0108227D980E>40 D<12801240122012301218A2120CA2120E1206A31207AA1206A3120E -120CA21218A2123012201240128008227E980E>I<126012F0A212701210A21220A21240 -A2040A7D830A>44 DI<126012F0A2126004047D830A>I<130813 -181330A31360A313C0A3EA0180A3EA0300A21206A35AA35AA35AA35AA35AA20D217E9812 ->I<12035AB4FC1207B1EA7FF00C157E9412>49 DII<1330A2137013F01201 -1370120212041208121812101220124012C0EAFFFEEA0070A5EA03FE0F157F9412>II -I<1240EA7FFE13FC13F8EAC008EA80101320EA00401380A2EA0100A25A12021206A2120E -A512040F167E9512>I57 -D61 D<13101338A3135CA3138EA3EA0107A200 -031380EA0203A23807FFC0EA0401A2380800E0A21218003813F038FE03FE17177F961A> -65 DIIIIII73 D<38FF80FE381C0078146014401480EB0100130613085B13381378139C -EA1D0E121EEA1C07EB0380EB01C0A2EB00E014701478147C38FF80FF18177F961B>75 -DI<00FEEB03F800 -1E14C000171305A338138009A23811C011A33810E021A2EB7041A3EB3881A2EB1D01A213 -0EA2123839FE040FF81D177F9620>I<00FC13FE001E1338001F13101217EA1380EA11C0 -A2EA10E013701338A2131C130E130F1307EB0390EB01D0A2EB00F014701430123800FE13 -1017177F961A>I<13FCEA0303380E01C0381C00E0481370003013300070133800601318 -00E0131CA700701338A200301330003813706C13E0380E01C038030300EA00FC16177E96 -1B>II82 DI<387FFFF83860381800401308A200801304A300001300 -AF3807FFC016177F9619>I<38FF80FE383C0038001C1310A26C1320A26C1340A3380380 -80A213C100011300A2EA00E2A213F61374A21338A3131017177F961A>86 -D<38FF83FC381F01E0380E00807EEB8100EA0382EA01C213E4EA00E81378A21338137C13 -5E138EEA0187EB0780EA0203380601C0000413E0EA0C00001C13F038FF03FE17177F961A ->88 D<12FCA212C0B3AB12FCA206217D980A>91 D<12FCA2120CB3AB12FCA2062180980A ->93 D97 D<12FC121CA813F8EA1F06EA1C031480130114C0A4148013031400 -EA1B0EEA10F81217809614>II<137E130EA8EA07CEEA1C3EEA300E1270126012E0A412 -601270EA301EEA182E3807CFC012177F9614>IIII<12FC121CA8137CEA1D8EEA1E07121CAA38FF9FE01317809614>I<121812 -3CA212181200A5127C121CAC12FF081780960A>I<1203EA0780A2EA0300C7FCA5EA1F80 -1203AF1243EAE30012E7127C091D82960B>I<12FC121CA8EB3F80EB1C00131813205B13 -C0EA1FE0EA1CF0137013787F7FA238FF3FC01217809613>I<12FC121CB3A3EAFF800917 -80960A>I<38FC7C1F391D8E6380391E0781C0001C1301AA39FF9FE7F81D0E808D1E>IIIII< -EAFCF0EA1D38121EEA1C101300A9EAFF800D0E808D0E>II<1208A31218 -A21238EAFF80EA3800A71340A4EA1C80EA0F000A147F930E>III<38FCFE7C383838381410381C3C20A2134C380E4E40A2138638 -078780A2130300031300A2160E7F8D19>IIIII E /Fp 1 4 df<120CA2EACCC012EDEA -7F80EA0C00EA7F80EAEDC012CCEA0C00A20A0B7D8B10>3 D E /Fq -10 58 df<120FEA30C0EA6060A2EA4020EAC030A9EA4020EA6060A2EA30C0EA0F000C13 -7E9211>48 D<120C121C12EC120CAFEAFFC00A137D9211>I<121FEA60C01360EAF07013 -301260EA0070A2136013C012011380EA02005AEA08101210EA2020EA7FE012FF0C137E92 -11>II<136013E0A2EA016012021206120C1208121012 -20126012C0EAFFFCEA0060A5EA03FC0E137F9211>III<1240EA7FFC13F8EA401012801320EA00401380EA0100 -A25A12021206A2120EA512040E147E9311>II< -120FEA3080EA6040EA4060EAC0201330A31240EA6070EA30B0EA0F30120013201360EAE0 -401380EA4100123E0C137E9211>I E /Fr 76 124 df11 -D<137E3801C180EA0301380703C0120EEB018090C7FCA5B512C0EA0E01B0387F87F8151D -809C17>II< -90383F07E03901C09C18380380F0D80701133C000E13E00100131892C7FCA5B612FC390E -00E01CB03A7FC7FCFF80211D809C23>I34 D<126012F012F812681208A31210A212201240 -1280050C7C9C0C>39 D<13401380EA0100120212065AA25AA25AA212701260A312E0AC12 -60A312701230A27EA27EA27E12027EEA008013400A2A7D9E10>I<7E12407E7E12187EA2 -7EA27EA213801201A313C0AC1380A312031300A21206A25AA25A12105A5A5A0A2A7E9E10 ->I<1306ADB612E0A2D80006C7FCAD1B1C7E9720>43 D<126012F0A212701210A41220A2 -12401280040C7C830C>II<126012F0A2126004047C830C>I48 D<12035A123F12C71207B3A4EA0F80EAFFF80D1C7C9B -15>III<13 -0CA2131C133CA2135C13DC139CEA011C120312021204120C1208121012301220124012C0 -B512C038001C00A73801FFC0121C7F9B15>II<13F0EA030CEA0604EA0C0EEA181E1230130CEA7000A21260EAE3 -E0EAE430EAE818EAF00C130EEAE0061307A51260A2EA7006EA300E130CEA1818EA0C30EA -03E0101D7E9B15>I<1240387FFF801400A2EA4002485AA25B485AA25B1360134013C0A2 -12015BA21203A41207A66CC7FC111D7E9B15>III<126012F0A212601200AA126012F0 -A2126004127C910C>I<126012F0A212601200AA126012F0A212701210A41220A2124012 -80041A7C910C>I<1306A3130FA3EB1780A3EB23C0A3EB41E0A3EB80F0A200017FEB0078 -EBFFF83803007C0002133CA20006133E0004131EA2000C131F121E39FF80FFF01C1D7F9C -1F>65 DI<90381F8080EBE061380180 -1938070007000E13035A14015A00781300A2127000F01400A8007014801278A212386CEB -0100A26C13026C5B380180083800E030EB1FC0191E7E9C1E>IIII<90381F -8080EBE0613801801938070007000E13035A14015A00781300A2127000F01400A6ECFFF0 -EC0F80007013071278A212387EA27E6C130B380180113800E06090381F80001C1E7E9C21 ->I<39FFF3FFC0390F003C00ACEBFFFCEB003CAD39FFF3FFC01A1C7E9B1F>III76 DII< -EB3F80EBE0E03803803848487E000E7F487F003C148000381303007814C0A20070130100 -F014E0A8007014C000781303A200381480003C1307001C14006C130E6C5B6C6C5A3800E0 -E0EB3F801B1E7E9C20>II82 D<3807E080EA1C19EA3005EA7003EA600112E01300A36C13007E127CEA7FC0EA -3FF8EA1FFEEA07FFC61380130FEB07C0130313011280A300C01380A238E00300EAD002EA -CC0CEA83F8121E7E9C17>I<007FB512C038700F010060130000401440A200C014201280 -A300001400B1497E3803FFFC1B1C7F9B1E>I<39FFF07FC0390F000E001404B3A26C5B13 -8000035B12016C6C5AEB70C0011FC7FC1A1D7E9B1F>I<39FFE00FF0391F0003C06CEB01 -8015006D5A00071302A26C6C5AA36C6C5AA213F000005BA2EBF830EB7820A26D5AA36D5A -A2131F6DC7FCA21306A31C1D7F9B1F>I<3AFFE0FFE0FF3A1F001F003C001E011E13186C -011F1310A3D807801420EC2780A2D803C01440EC43C0A213E00001903881E080A33A00F1 -00F100A3017913FA017A137AA2013E137C013C133CA301181318A3281D7F9B2B>I<397F -F0FFC0390FC03E0038078018EA03C0EBE01000015BEBF06000001340EB7880137D013DC7 -FC7F131F7F80A2EB13C0EB23E01321EB41F0EBC0F8EB80783801007C48133C00027F0006 -131F001FEB3F8039FFC0FFF01C1C7F9B1F>I<12FEA212C0B3B312FEA207297C9E0C>91 -D -I<12FEA21206B3B312FEA20729809E0C>I97 -D<12FC121CAA137CEA1D86EA1E03381C018014C0130014E0A614C013011480381E0300EA -1906EA10F8131D7F9C17>II<133F1307AAEA03E7EA0C17EA180F487E12 -70126012E0A61260127012306C5AEA0C373807C7E0131D7E9C17>II<13F8EA018CEA071E1206EA0E0C1300A6EAFFE0EA0E00B0EA7FE00F1D809C -0D>II<12FC121CAA137C1387EA1D03001E1380121CAD38FF9FF0141D -7F9C17>I<1218123CA21218C7FCA712FC121CB0EAFF80091D7F9C0C>I<13C0EA01E0A2EA -00C01300A7EA0FE01200B3A21260EAF0C012F1EA6180EA3E000B25839C0D>I<12FC121C -AAEB3FC0EB0F00130C13085B5B5B13E0121DEA1E70EA1C781338133C131C7F130F148038 -FF9FE0131D7F9C16>I<12FC121CB3A9EAFF80091D7F9C0C>I<39FC7E07E0391C83883839 -1D019018001EEBE01C001C13C0AD3AFF8FF8FF8021127F9124>IIIIIII<1204A4120CA212 -1C123CEAFFE0EA1C00A91310A5120CEA0E20EA03C00C1A7F9910>I<38FC1F80EA1C03AD -1307120CEA0E1B3803E3F014127F9117>I<38FF07E0383C0380381C0100A2EA0E02A26C -5AA3EA0388A213D8EA01D0A2EA00E0A3134013127F9116>I<39FF3FCFE0393C0F038038 -1C07011500130B000E1382A21311000713C4A213203803A0E8A2EBC06800011370A2EB80 -30000013201B127F911E>I<387F8FF0380F03801400EA0702EA0384EA01C813D8EA00F0 -1370137813F8139CEA010E1202EA060738040380381E07C038FF0FF81512809116>I<38 -FF07E0383C0380381C0100A2EA0E02A26C5AA3EA0388A213D8EA01D0A2EA00E0A31340A2 -5BA212F000F1C7FC12F31266123C131A7F9116>I -II E /Fs 40 122 df<49B4FC011F13C090387F81E0EBFC013901 -F807F01203EA07F0A4EC01C091C8FCA3EC3FF8B6FCA33807F003B3A33A7FFF3FFF80A321 -2A7FA925>12 D<130E131E137EEA07FE12FFA212F81200B3AB387FFFFEA317277BA622> -49 DII<140E141E143E147E14 -FEA213011303EB077E130EA2131C1338137013E0A2EA01C0EA0380EA0700120EA25A5A5A -5AB612F8A3C7EAFE00A890387FFFF8A31D277EA622>I<00181303381F801FEBFFFE5C5C -5C14C091C7FC001CC8FCA7EB7FC0381DFFF8381F80FC381E003F1208C7EA1F8015C0A215 -E0A21218127C12FEA315C05A0078EB3F80A26CEB7F00381F01FE6CB45A000313F0C61380 -1B277DA622>II<1238123E003FB512F0A34814E015C0158015003870000EA25C485B5C5CEA -00015C495A130791C7FC5B5B131E133EA2137E137CA213FCA41201A76C5A13701C297CA8 -22>I65 D<91387FE003903907FFFC07 -011FEBFF0F90397FF00F9F9039FF0001FFD801FC7F4848147F4848143F4848141F485A16 -0F485A1607127FA290C9FC5AA97E7F1607123FA26C7E160E6C7E6C6C141C6C6C143C6C6C -14786CB4EB01F090397FF007C0011FB512800107EBFE009038007FF028297CA831>67 -DIII<91387FE003903907FFFC07011FEBFF0F90397FF00F9F9039FF0001FF -D801FC7F484880484880484880485A82485A82127FA290CAFC5AA892B512F87E7F030013 -00123FA26C7EA26C7E6C7E6C7E6C7E6CB45B90387FF007011FB5129F0107EBFE0F903900 -7FF0032D297CA835>I73 -D82 D<01FF13C0000313E1000F13F9381F80FF383F003F -003E130F481307A200FC1303A214017EA26C90C7FC13C0EA7FFCEBFFE06C13F86C13FE80 -000714806C14C0C6FC010F13E0EB007FEC1FF0140F140700E01303A46C14E0A26C13076C -14C0B4EB0F80EBE01F00E3B5120000E113FC38C01FF01C297CA825>I87 -D<3803FF80000F13F0381F01FC383F80FE147F801580EA1F00C7FCA4EB3FFF3801FC3FEA -0FE0EA1F80EA3F00127E5AA4145F007E13DF393F839FFC381FFE0F3803F8031E1B7E9A21 ->97 DIIIII<90387F80F03901FFE3 -F83907C0FE1C390F807C7C381F003E151048EB3F00A66C133EA26C6C5A6C6C5A3805FFE0 -380C7F8048C8FC121CA2121E381FFFF814FF6C14C06C14E06C14F0120F383E000748EB01 -F8481300A4007CEB01F0A2003FEB07E0390FC01F806CB5120038007FF01E287E9A22>I< -EAFFE0A3120FAC147E9038E1FF809038E30FC001E413E0EBE80701F813F013F0A213E0B0 -39FFFE3FFFA3202A7DA925>I<1207EA0F80EA1FC0EA3FE0A3EA1FC0EA0F80EA0700C7FC -A7EAFFE0A3120FB3A3EAFFFEA30F2B7EAA12>I107 DI<26FFC07FEB1FC0903AC1FFC07FF0903AC307E0C1F8D80FC49038F101FC9039 -C803F20001D801FE7F01D05BA201E05BB03CFFFE3FFF8FFFE0A3331B7D9A38>I<38FFC0 -7E9038C1FF809038C30FC0D80FC413E0EBC80701D813F013D0A213E0B039FFFE3FFFA320 -1B7D9A25>II<38FFE1FE9038E7FF809038FE0FE0390FF803F09038F001F8 -01E013FC140015FEA2157FA8157E15FEA215FC140101F013F89038F803F09038FC0FE090 -38EFFF809038E1FC0001E0C7FCA9EAFFFEA320277E9A25>I<38FFC3E0EBC7F8EBCC7C38 -0FD8FE13D0A213F0EBE07C1400B0B5FCA3171B7E9A1B>114 D<3803FE30380FFFF0EA3E -03EA7800127000F01370A27E00FE1300EAFFE06CB4FC14C06C13E06C13F0000713F8C6FC -EB07FC130000E0137C143C7E14387E6C137038FF01E038E7FFC000C11300161B7E9A1B> -I<1370A413F0A312011203A21207381FFFE0B5FCA23807F000AD1470A7000313E03801F8 -C0EA00FFEB3F0014267FA51A>I<39FFE07FF0A3000F1307B2140FA2000713173903F067 -FF3801FFC738007F87201B7D9A25>I<3BFFFC7FFC1FFCA33B0FE00FE001C02607F007EB -0380A201F8EBF0070003160015F82601FC0F130EA29039FE1FFC1E0000011C131C15FE90 -39FF387E3C017F1438EC787F6D486C5AA29138E01FF0011F5CA26D486C5AA36D486C5AA2 -2E1B7F9A31>119 D<39FFFC1FFEA33907F00780D803F813006C6C5AEBFE1E00005BEB7F -78EB3FF85C6D5A130F6D7E80130F497EEB3DFEEB38FFEB787F9038F03F80D801E013C039 -03C01FE0EB800F39FFF03FFFA3201B7F9A23>I<39FFFE07FFA33907F000E0A2EBF80100 -0314C0A23901FC0380A2EBFE07000014006D5AEB7F0EA2EB3F9CA214FC6D5AA26D5AA213 -075CA26D5AA25CA21307003890C7FC127CEAFE0EA25B5BEA7C70EA3FE0EA0F8020277F9A -23>I E /Ft 14 123 df97 D99 D -II<13F338038B8038060700120E120C121CEA380EA4EA301CA3EA183C5BEA -07B8EA0038A25B1260EAE0E0EAC1C0007FC7FC11177E8F12>103 -D<1203120712061200A61238124C124E128E129CA2121C1238A212701272A212E212E412 -64123808197C980C>105 D<121F1207A3120EA4121CA41238A41270A412E4A412E81230 -081A7D990A>108 D110 DII115 D<1206120EA45AA2EAFFC0EA1C005AA45AA412E1A312 -E212E412380A177C960D>II122 -D E /Fu 54 124 df<13FCEA0182EA0703EA0607EA0E0290C7FCA5B5FCEA0E07AE387F0F -E0131A809915>12 D<90387E1F803901C17040390703C0600006EB80E0000E14401500A5 -B612E0380E0380AE397F8FE3FC1E1A809920>14 D<1380EA010012025A120C120812185A -A35AA412E0AA1260A47EA37E1208120C12047E7EEA008009267D9B0F>40 -D<7E12407E7E12181208120C7EA37EA41380AA1300A41206A35A1208121812105A5A5A09 -267E9B0F>I<126012F0A212701210A31220A212401280040B7D830B>44 -DI<126012F0A2126004047D830B>I50 DI<1330A2137013F0A2EA0170120312021204120C12081210123012 -20124012C0B5FCEA0070A6EA07FF10187F9713>I<1240EA7FFE13FCA2EA4008EA8010A2 -1320EA0040A213801201A213005AA45AA612020F197E9813>55 D<126012F0A212601200 -A8126012F0A2126004107D8F0B>58 D<126012F0A212601200A8126012F0A212701210A3 -1220A21240128004177D8F0B>I<130CA3131EA2133F1327A2EB4380A3EB81C0A348C67E -A213FF38020070A20006137800041338A2487FA2001C131EB4EBFFC01A1A7F991D>65 -D67 -DII71 -D<38FFE7FF380E0070AB380FFFF0380E0070AC38FFE7FF181A7E991D>II<39FFE07F80390E001E00141814105C5C5C49C7FC13025B5B -131C132E134E1387380F0380120E6D7E6D7EA21470A28080143E39FFE0FF80191A7E991E ->75 DI80 D82 DI<007FB5FC38701C0700401301A200C01480008013 -00A300001400B13803FFE0191A7F991C>I<3AFF83FF0FF03A3C007801C0001CEC0080A2 -6CEC0100A2149C6C1402A2EB010EA2D803815BEB8207A2D801C25B9038C40388A2D800E4 -1390A29038E801D0017813E0A2EB7000A201305B01201340241A7F9927>87 -D<12FEA212C0B3AF12FEA207257D9B0B>91 D<12FEA21206B3AF12FEA20725809B0B>93 -D97 D<12FC121CA913F8EA1F0EEA1E07381C0380130114C0A6EB038014 -00EA1E07EA1B0CEA10F0121A7F9915>II<137E130EA9EA03CEEA0C3EEA380E12301270 -12E0A612601270EA381EEA1C2E3807CFC0121A7F9915>IIII<12FC121CA913F8EA1D0CEA1E0EA2121CAB38FF9F -C0121A7F9915>I<1218123CA21218C7FCA612FC121CAEEAFF80091A80990A>II<12FC121C -A9EB3F80EB1E00131813105B5BEA1DC0EA1FE0121C1370137813387F131E131F38FF3FC0 -121A7F9914>I<12FC121CB3A6EAFF80091A80990A>I<38FC7C1F391D8E6380391E0781C0 -A2001C1301AB39FF9FE7F81D107F8F20>IIII114 DI<1204A3120CA2121C123CEAFFC0EA -1C00A81320A5EA0E40EA03800B177F960F>II<38FF1F80383C0600EA1C04A2EA1E0CEA0E08A26C5AA21390EA03A0A2EA01 -C0A36C5A11107F8F14>I<39FF3F9F80393C0E070000381306381C16041317001E130C38 -0E23081488000F13983807419014D03803C1E01380A200015BEB004019107F8F1C>I<38 -FF3F80383C1C00EA1C18EA0E106C5A13606C5A12017F1203EA0270487E1208EA181CEA38 -1E38FC3FC012107F8F14>I<38FF1F80383C0600EA1C04A2EA1E0CEA0E08A26C5AA21390 -EA03A0A2EA01C0A36C5AA248C7FCA212E112E212E4127811177F8F14>I123 D E /Fv 16 118 df<1303497EA3497EA2EB1BE0A3EB31F0A2EB60F8A2EBE0 -FCEBC07CA248487EEBFFFE487FEB001FA20006EB0F80A2000E14C039FFC07FFCA21E1A7F -9921>65 D76 -D80 D97 D<12FEA2121EA7137F381FC3C0EB00E0001E13F01478 -A2147CA51478A214F0001F13E0381D83C038187F00161A7F9919>II< -EA03F0EA0E1C487EEA3C071278148012F8A2B5FC00F8C7FCA21278A2383C0180381C0300 -EA0E06EA03FC11117F9014>101 D<3807E3C0381C3CE0EA381C38781EC01400A4EA381C -6C5AEA27E00020C7FCA21230EA3FFE381FFF8014C0EA700338E000E0A4387001C0383C07 -803807FC0013197F9016>103 D<123C127EA4123CC7FCA4127EA2121EADEAFF80A2091B -7F9A0D>105 D<39FE1F01F0903863C63C391E81C81C391F01F01EA2001E13E0AA3AFFCF -FCFFC0A222117F9025>109 DII114 DI<1206A4120EA2121EEA3FF0 -12FFEA1E00A81318A5EA0F30EA03E00D187F9711>I<38FE0FE0A2EA1E01AB1303A2380F -05FCEA03F916117F9019>I E /Fw 1 4 df<1202A3EAC218EAF278EA3AE0EA0F80A2EA3A -E0EAF278EAC218EA0200A30D0E7E8E12>3 D E /Fx 34 122 df<127012F812FCA21274 -1204A41208A21210A212201240060F7C840E>44 D<127012F8A3127005057C840E>46 -D<13801203120F12F31203B3A9EA07C0EAFFFE0F217CA018>49 D<13021306130EA2131E -A2132E134EA2138EA2EA010E1202A21204A212081210A21220A212401280B512F838000E -00A7131F3801FFF015217FA018>52 D<00101380381E0700EA1FFF5B13F8EA13E00010C7 -FCA613F8EA130EEA1407381803801210380001C0A214E0A4127012F0A200E013C01280EA -4003148038200700EA1006EA0C1CEA03F013227EA018>I57 -D<497EA3497EA3EB05E0A2EB0DF01308A2497E1478A2497EA3497EA3497EA290B5FC3901 -000780A24814C000021303A24814E01401A2000CEB00F0A2003EEB01F839FF800FFF2023 -7EA225>65 DI<903807E0109038381830EBE0063901C00170390380 -00F048C7FC000E1470121E001C1430123CA2007C14101278A200F81400A812781510127C -123CA2001C1420121E000E14407E6C6C13803901C001003800E002EB381CEB07E01C247D -A223>II<9038 -07F00890383C0C18EBE0023901C001B839038000F848C71278481438121E15185AA2007C -14081278A200F81400A7EC1FFF0078EB00F81578127C123CA27EA27E7E6C6C13B86C7E39 -00E0031890383C0C08903807F00020247DA226>71 D80 D<3803F020380C0C60EA1802383001E0EA70000060136012E0A21420A36C1300A212 -78127FEA3FF0EA1FFE6C7E0003138038003FC0EB07E01301EB00F0A214707EA46C1360A2 -6C13C07E38C8018038C60700EA81FC14247DA21B>83 D<39FFFC07FF390FC000F86C4813 -701520B3A5000314407FA2000114806C7E9038600100EB3006EB1C08EB03F020237EA125 ->85 D<3BFFF03FFC03FE3B1F8007E000F86C486C4813701720A26C6C6C6C1340A32703C0 -02F01380A33B01E004780100A33A00F0083C02A39039F8183E06903978101E04A2137C90 -393C200F08A390391E400790A390390F8003E0A36D486C5AA36D5C010213002F237FA132 ->87 D97 D<120E12FE121E120EAB131FEB -61C0EB8060380F0030000E1338143C141C141EA7141C143C1438000F1370380C8060EB41 -C038083F0017237FA21B>II<14E0130F130113 -00ABEA01F8EA0704EA0C02EA1C01EA38001278127012F0A7127012781238EA1801EA0C02 -38070CF03801F0FE17237EA21B>II<133C13C6EA018F1203130FEA0700A9EAFFF8EA0700B21380EA7FF8102380A20F>I< -121C123EA3121CC7FCA8120E12FE121E120EB1EAFFC00A227FA10E>105 -D<120E12FE121E120EB3ADEAFFE00B237FA20E>108 D<390E1FC07F3AFE60E183803A1E -807201C03A0F003C00E0A2000E1338AF3AFFE3FF8FFE27157F942A>I<380E1F8038FE60 -C0381E80E0380F0070A2120EAF38FFE7FF18157F941B>III< -EA0E3CEAFE46EA1E8FEA0F0F13061300120EAD120FEAFFF010157F9413>114 -DI<1202A41206A3120E121E12 -3EEAFFF8EA0E00AB1304A6EA07081203EA01F00E1F7F9E13>I<000E137038FE07F0EA1E -00000E1370AD14F0A238060170380382783800FC7F18157F941B>I<38FFC1FE381E0078 -000E13301420A26C1340A238038080A33801C100A2EA00E2A31374A21338A3131017157F -941A>I<39FF8FF8FF391E01E03C001CEBC018120EECE010A239070260201470A2390384 -30401438A23901C81880141CA23900F00D00140FA2EB6006A320157F9423>I<38FFC1FE -381E0078000E13301420A26C1340A238038080A33801C100A2EA00E2A31374A21338A313 -10A25BA35B12F05B12F10043C7FC123C171F7F941A>121 D E /Fy -20 124 df50 D<1403A34A7EA24A7EA3EC17E01413A2EC23F01421A2EC40F8A3EC807CA2 -0101137EEC003EA20102133F81A2496D7EA3496D7EA2011880011FB5FCA29039200003F0 -1501A249801500A249147CA348C87EA248153F825AD81F80EC3F80D8FFE0903803FFFCA2 -2E327EB132>65 D<91383FE001903901FFF803903807F01E90391F800307013EC7128701 -78144F49142F4848141F4848140F485A000F150790C8FC481503121E123E003C1501127C -A30078150012F8AB1278127C1601A2123C123E121E001F15027E6D1406000715046C6C14 -086C7E6C6C141001781420013E14C090391F800380903907F00F00903801FFFC9038003F -E028337CB130>67 D69 D71 D77 D82 D<90387F80203801FFE03907C07860380F001C001EEB -06E048130300381301007813001270156012F0A21520A37E1500127C127E7E13C0EA1FF8 -6CB47E6C13F86C7FC613FF010F1380010013C0EC1FE01407EC03F01401140015F8A26C14 -78A57E15706C14F015E07E6CEB01C000ECEB038000C7EB070038C1F01E38807FFCEB0FF0 -1D337CB125>I86 D<13FE380303C0380C00E00010137080003C133C003E13 -1C141EA21208C7FCA3EB0FFEEBFC1EEA03E0EA0F80EA1F00123E123C127C481404A3143E -A21278007C135E6CEB8F08390F0307F03903FC03E01E1F7D9E21>97 -D99 -D101 D<120FEA1F80A4EA0F00C7FCABEA078012FFA2120F1207B3A6 -EA0FC0EAFFF8A20D307EAF12>105 D108 D<380780FE39FF83078090388C03C0390F9001E0EA07A06E7E13C0A2 -5BB3A2486C487E3AFFFC1FFF80A2211F7E9E25>110 D -I<380783E038FF8C18EB907C120FEA07A0EBC0381400A35BB3487EEAFFFEA2161F7E9E19 ->114 D<3801FC10380E0330381800F048137048133012E01410A37E6C1300127EEA3FF0 -6CB4FC6C13C0000313E038003FF0EB01F813006C133CA2141C7EA27E14186C1338143000 -CC136038C301C03880FE00161F7E9E1A>I<1340A513C0A31201A212031207120F381FFF -E0B5FC3803C000B01410A80001132013E000001340EB78C0EB1F00142C7FAB19>I123 D E end -%%EndProlog -%%BeginSetup -%%Feature: *Resolution 300dpi -TeXDict begin - -%%EndSetup -%%Page: 1 1 -1 0 bop 284 369 a Fy(RE2C)21 b({)h(A)f(More)h(V)-6 b(ersatile)23 -b(Scanner)e(Generator)472 490 y Fx(P)o(eter)15 b(Bum)o(bulis)209 -b(Donald)17 b(D.)f(Co)o(w)o(an)272 548 y(Computer)g(Science)e -(Departmen)o(t)h(and)i(Computer)e(Systems)g(Group)692 -606 y(Univ)o(ersit)o(y)e(of)k(W)l(aterlo)q(o)1175 588 -y Fw(\003)782 704 y Fx(April)e(15,)i(1994)849 895 y Fv(Abstract)120 -960 y Fu(It)f(is)g(usually)j(claimed)f(that)e(lexical)j(analysis)f -(routines)g(are)e(still)i(co)q(ded)f(b)o(y)f(hand,)i(despite)g(the)e -(widespread)62 1005 y(a)o(v)n(ailabil)q(i)q(t)o(y)h(of)d(scanner)i -(generators,)f(for)f(e\016ciency)i(reasons.)23 b(While)16 -b(e\016ciency)g(is)f(a)f(consideration)q(,)j(there)e(exist)62 -1051 y(freely)k(a)o(v)n(ailable)j(scanner)d(generators)g(suc)o(h)g(as)g -(GLA)f([7])g(that)g(can)h(generate)g(scanners)h(that)e(are)h(faster)f -(than)62 1097 y(most)g(hand-co)q(ded)h(ones.)30 b(Ho)o(w)o(ev)o(er,)18 -b(most)g(generated)g(scanners)g(are)g(tailored)h(for)e(a)g(particular)j -(en)o(vironmen)o(t,)62 1142 y(and)c(retargetting)h(these)e(scanners)i -(to)e(other)h(en)o(vironmen)o(ts,)h(if)f(p)q(ossible,)h(is)f(usually)i -(complex)f(enough)f(to)f(mak)o(e)62 1188 y(a)h(hand-co)q(ded)h(scanner) -f(more)g(app)q(ealing.)26 b(In)16 b(this)g(pap)q(er)g(w)o(e)f(describ)q -(e)i(RE2C,)e(a)g(scanner)i(generator)f(that)f(not)62 -1234 y(only)e(generates)f(scanners)h(whic)o(h)f(are)g(faster)f(\(and)h -(usually)i(smaller\))f(than)f(those)g(pro)q(duced)h(b)o(y)f(an)o(y)g -(other)g(scanner)62 1279 y(generator)i(kno)o(wn)g(to)f(the)g(authors,)g -(includin)q(g)j(GLA,)c(but)i(also)g(adapt)f(easily)i(to)e(an)o(y)h(en)o -(vironmen)o(t.)62 1371 y(Categories)19 b(and)f(Sub)r(ject)g -(Descriptors:)27 b(D.3.2)17 b([)p Fv(Programming)j(Languages)p -Fu(]:)25 b(Language)19 b(Classi\014cations)i({)62 1416 -y Ft(sp)n(e)n(cialize)n(d)11 b(applic)n(atio)o(n)g(languages)o -Fu(;)f(D.3.4)j([)p Fv(Programming)h(Languages)p Fu(]:)j(Pro)q(cessors) -62 1508 y(General)e(T)m(erms:)h(Algorithms,)e(Languages,)h(P)o -(erformance)62 1599 y(Additional)h(Key)d(W)m(ords)h(and)g(Phrases:)j -(Lexical)e(analysis,)g(scanner)f(generator)-42 1736 y -Fs(1)67 b(In)n(tro)r(duction)-42 1827 y Fr(Lexical)14 -b(analysis)g(routines)h(are)g(still)f(often)g(co)q(ded)i(b)o(y)e(hand)g -(despite)i(the)f(widespread)g(a)o(v)n(ailabilit)o(y)c(of)j(scanner)i -(gener-)-42 1877 y(ators.)k(F)m(or)14 b(example,)e(while)i(most)f(Unix) -h(systems)g(ha)o(v)o(e)g(a)g(scanner)i(generator)f(installed)f(\(t)o -(ypically)f(LEX)h([15)o(])g(or)g(\015ex)-42 1927 y([16]\),)d(few)i -(Unix)f(applications)f(use)i(a)f(mec)o(hanically)e(generated)k -(scanner.)19 b(One)13 b(commonly)c(cited)k(reason)g(for)e(not)i(using) --42 1977 y(LEX-generated)k(scanners)f(is)f(p)q(erformance:)20 -b(they)15 b(can)g(b)q(e)g(10)g(times)f(slo)o(w)o(er)g(than)h(equiv)n -(alen)o(t)f(hand-co)q(ded)i(scanners)-42 2026 y([13].)h(As)d(a)g -(result,)g(there)h(has)f(b)q(een)h(considerable)f(researc)o(h)i(in)o -(to)d(impro)o(ving)e(the)j(p)q(erformance)g(of)f(mec)o(hanically)e -(gen-)-42 2076 y(erated)17 b(scanners)f([16)o(,)f(7,)f(9].)21 -b(GLA)15 b([7)o(],)g(one)g(suc)o(h)h(scanner)g(generator,)g(can)f(pro)q -(duce)h(scanners)h(that)e(are)h(faster)f(than)-42 2126 -y(most)h(hand-co)q(ded)h(scanners.)29 b(Ho)o(w)o(ev)o(er,)17 -b(the)h(use)f(of)f(hand-co)q(ded)i(scanners)g(is)f(still)f(prev)n(alen) -o(t.)27 b(One)17 b(p)q(ossibilit)o(y)f(is)-42 2176 y(that)e(this)g(is)g -(due)h(to)e(the)i(di\016cult)o(y)e(of)g(adapting)g(the)h(generated)i -(scanners)f(to)f(sp)q(eci\014c)h(applications.)21 2226 -y(Most)g(scanner)g(generators)h(are)f(tailored)f(to)g(a)h(particular)f -(en)o(vironmen)o(t.)19 b(In)14 b(fact,)g(the)i(trend)f(in)f(recen)o(t)i -(y)o(ears)f(has)-42 2276 y(b)q(een)i(to)e(in)o(tegrate)g(scanner)i -(generators)f(with)f(compiler)f(to)q(olkits.)21 b(F)m(or)15 -b(example,)f(GLA)h(is)g(part)g(of)g(the)g(Eli)g(compiler)-42 -2325 y(construction)k(system)f([8)o(],)g(and)g(Rex)f([9])g(is)h(part)g -(of)f(the)h(GMD)f(T)m(o)q(olb)q(o)o(x)g(for)g(Compiler)f(Construction) -1688 2310 y Fq(1)1707 2325 y Fr(.)30 b(Scanners)p -42 -2362 780 2 v 4 2389 a Fp(\003)22 2401 y Fo(P)o(ermission)9 -b(to)j(cop)o(y)e(without)h(fee)g(all)g(or)g(part)g(of)g(this)g -(material)e(is)j(gran)o(ted)d(pro)o(vided)h(that)g(the)h(copies)f(are)h -(not)g(made)f(or)i(distributed)-42 2440 y(for)g(direct)e(commercial)f -(adv)n(an)o(tage,)g(the)i(A)o(CM)j(cop)o(yrigh)o(t)9 -b(notice)i(and)g(the)g(title)g(of)h(the)f(publication)e(and)i(its)g -(date)g(app)q(ear,)f(and)h(notice)g(is)-42 2480 y(giv)o(en)g(that)g -(cop)o(ying)f(is)i(b)o(y)f(p)q(ermission)e(of)j(the)f(Asso)q(ciation)f -(for)h(Computing)f(Mac)o(hinery)m(.)15 b(T)m(o)d(cop)o(y)f(otherwise,)f -(or)i(to)f(republish,)f(requires)-42 2519 y(a)k(fee)f(and/or)f(sp)q -(eci\014c)g(p)q(ermission.)19 b(Cop)o(yrigh)o(t)12 b(1994)h(b)o(y)g -(the)g(Asso)q(ciation)f(for)h(Computing)e(Mac)o(hinery)m(,)h(Inc.)22 -b(T)m(o)14 b(app)q(ear)e(in)h(LOPLAS)-42 2558 y(2\(1{4\).)5 -2586 y Fn(1)22 2598 y Fo(Also)f(kno)o(wn)e(as)i(Co)q(c)o(ktail)e -(\(Compiler-Compi)o(ler-)o(T)m(o)q(olb)q(o)n(x)f(Karlsruhe\).)923 -2748 y Fr(1)p eop -%%Page: 2 2 -2 1 bop -42 195 a Fr(generated)21 b(b)o(y)d(these)i(to)q(ols)f(assume)f -(the)i(existence)g(of)e(a)h(library)f(of)g(supp)q(ort)h(mo)q(dules)f -(for)h(error)g(handling,)g(input)-42 245 y(bu\013ering,)c(sym)o(b)q(ol) -d(table)i(managemen)o(t,)d(and)j(similar)e(functions.)18 -b(While)c(these)h(supp)q(ort)g(mo)q(dules)e(simplify)f(the)i(task)-42 -295 y(of)c(implemen)o(ting)c(a)k(compiler)f(or)h(in)o(terpreter,)i -(they)e(mak)o(e)f(adaptation)g(to)h(other)g(purp)q(oses)i(more)d -(di\016cult.)16 b(Adaptation)-42 345 y(to)e(other)h(en)o(vironmen)o(ts) -e(is)h(also)f(made)g(more)g(di\016cult)g(b)q(ecause)j(often)e -(assumptions)f(are)i(made)d(ab)q(out)i(the)h(input)f(and)-42 -394 y(restrictions)j(are)e(placed)g(on)g(tok)o(ens)g(in)g(order)g(to)g -(ac)o(hiev)o(e)g(b)q(etter)i(p)q(erformance.)k(RE2C)14 -b(go)q(es)i(to)f(the)g(other)h(extreme:)-42 444 y(it)e(concen)o(trates) -i(solely)d(on)h(generating)g(co)q(de)h(for)e(matc)o(hing)f(regular)i -(expressions.)21 494 y(RE2C)f(is)h(successful)h(at)f(its)g(task:)k(not) -13 b(only)g(do)q(es)i(it)e(pro)q(duce)i(scanners)h(whic)o(h)e(are)g -(faster)g(than)g(those)g(created)i(b)o(y)-42 544 y(other)g(scanner)h -(generators)f(but,)f(surprisingly)m(,)f(they)i(are)g(usually)e(smaller) -f(as)j(w)o(ell.)21 b(F)m(urther,)15 b(RE2C)g(do)q(es)h(not)f(mak)o(e) --42 594 y(an)o(y)i(assumptions)e(ab)q(out)h(the)h(input)g(or)f(place)h -(an)o(y)f(restrictions)i(on)e(tok)o(ens.)26 b(T)m(o)16 -b(a)g(large)g(degree,)i(the)g(p)q(erformance)-42 643 -y(and)d(\015exibilit)o(y)d(of)i(RE2C-generated)h(scanners)h(is)f(due)f -(to)h(a)f(no)o(v)o(el)f(metho)q(d)h(for)g(determining)f(when)i(to)f -(re\014ll)g(a)g(bu\013er)-42 693 y(whic)o(h)g(a)o(v)o(oids)f(the)i -(complications)c(in)o(tro)q(duced)k(b)o(y)f(the)g(sen)o(tinel)h(metho)q -(d)e([1)o(].)21 743 y(The)e(follo)o(wing)d(sections)j(of)f(this)h(pap)q -(er)g(describ)q(e)i(RE2C)d(scanner)i(sp)q(eci\014cations,)f(discuss)h -(ho)o(w)e(these)i(sp)q(eci\014cations)-42 793 y(are)21 -b(con)o(v)o(erted)g(in)o(to)f(scanners,)j(and)d(giv)o(e)f(p)q -(erformance)h(results)h(ac)o(hiev)o(ed)g(b)o(y)f(our)g(implemen)o -(tatio)o(n)d(\(including)j(a)-42 843 y(comparison)13 -b(with)g(GLA\).)-42 980 y Fs(2)67 b(Scanner)24 b(Sp)r(eci\014cations) --42 1071 y Fr(An)14 b(RE2C)g(source)h(\014le)f(consists)h(of)e(C[14)o -(])g(or)h(C++[4])842 1056 y Fq(2)874 1071 y Fr(co)q(de)g(in)o(terlea)o -(v)o(ed)g(with)g(commen)o(ts)e(of)h(the)i(form)d Fm(/*!re2c)20 -b Fl(:)7 b(:)g(:)-42 1121 y Fm(*/)15 b Fr(con)o(taining)f(scanner)i(sp) -q(eci\014cations.)23 b(These)16 b(sp)q(eci\014cations)g(are)g(replaced) -g(with)e(generated)j(co)q(de)e(that)g(is)g(in)o(v)o(ok)o(ed)-42 -1170 y(simply)d(b)o(y)i(\\falling)d(in)o(to")i(the)i(commen)o(ts)d(as)i -(illustrated)g(in)f(Figure)h(1)g(and)f(in)h(App)q(endix)g(A)1481 -1155 y Fq(3)1500 1170 y Fr(.)469 1254 y Fm(#define)20 -b(YYCURSOR)42 b(p)469 1304 y(unsigned)20 b(char)h(*scan)p -887 1304 14 2 v 14 w(uint\(unsigned)e(char)i(*p\))p Fk(f)469 -1353 y Fm(/*!re2c)556 1403 y([0-9]+)195 b Fk(f)p Fm(return)20 -b(p;)p Fk(g)556 1453 y Fm([\\)o(000-\\)o(377])87 b Fk(f)p -Fm(return)20 b(NULL;)p Fk(g)469 1503 y Fm(*/)469 1553 -y Fk(g)681 1634 y Fr(Figure)14 b(1:)k(A)c(simple)f(scanner.)21 -1733 y(A)i(scanner)h(sp)q(eci\014cation)f(tak)o(es)g(the)g(form)e(of)h -(a)h(list)f(of)g(rules,)h(eac)o(h)g(rule)g(consisting)g(of)f(a)g -(regular)h(expression)h([10)o(])-42 1783 y(and)g(an)g(action)f -(expressed)k(in)c(executable)i(co)q(de.)25 b(Figure)16 -b(2)g(illustrates)g(a)g(trivial)e(RE2C)h(scanner)j(sp)q(eci\014cation)e -(that)-42 1833 y(will)c(b)q(e)h(used)h(as)f(an)f(example)g(throughout)g -(this)h(pap)q(er.)36 b(Eac)o(h)14 b(call)d(to)i(the)g(co)q(de)h -(generated)g(from)d(a)h(sp)q(eci\014cation)i(will)416 -1926 y Fm("print")201 b Fk(f)22 b Fm(return)e(PRINT;)49 -b(/*)21 b(rule)g(5)h(*/)f Fk(g)416 1975 y Fm([a-z])o(+)224 -b Fk(f)22 b Fm(return)e(ID;)115 b(/*)21 b(rule)g(4)h(*/)f -Fk(g)416 2025 y Fm([0-9])o(+)224 b Fk(f)22 b Fm(return)e(DEC;)93 -b(/*)21 b(rule)g(3)h(*/)f Fk(g)416 2075 y Fm("0x")g([0-9a-f])n(+)50 -b Fk(f)22 b Fm(return)e(HEX;)93 b(/*)21 b(rule)g(2)h(*/)f -Fk(g)416 2125 y Fm([\\000-\\)o(377])114 b Fk(f)22 b Fm(return)e(ERR;)93 -b(/*)21 b(rule)g(1)h(*/)f Fk(g)108 2214 y Fr(Figure)15 -b(2:)20 b(Sample)13 b(sp)q(eci\014cation.)22 b Fm([)p -Fl(a)p Fm(-)p Fl(b)p Fm(])14 b Fr(matc)o(hes)h(an)o(y)f(c)o(haracter)i -(b)q(et)o(w)o(een)g Fl(a)f Fr(and)g Fl(b)p Fr(,)f(inclusiv)o(ely)m(.) -108 2264 y(The)i(last)f(rule,)g(for)g(example,)e(will)h(matc)o(h)g(an)o -(y)g(eigh)o(t)h(bit)g(c)o(haracter.)23 b(Rules)15 b(are)g(listed)h(in)e -(order)i(of)108 2314 y(precedence)q(.)-42 2414 y(\014rst)d(determine)g -(the)f(longest)h(p)q(ossible)f(pre\014x)h(of)f(the)h(remaining)d(input) -i(that)g(matc)o(hes)g(one)g(of)g(the)h(regular)f(expressions)-42 -2463 y(and)i(will)f(then)h(execute)i(the)e(action)g(in)f(the)i(\014rst) -g(applicable)e(rule.)p -42 2498 780 2 v 5 2525 a Fn(2)22 -2537 y Fo(Retargetting)8 b(RE2C)k(to)f(a)h(di\013eren)o(t)d(language)g -(is)i(straigh)o(tforw)o(ard.)5 2564 y Fn(3)22 2576 y -Fo(RE2C-generated)e(scanners)g(require)h(no)h(additional)d(supp)q(ort)i -(co)q(de.)923 2748 y Fr(2)p eop -%%Page: 3 3 -3 2 bop 138 1062 a @beginspecial 53 @llx 268 @lly 435 -@urx 486 @ury 3820 @rwi @setspecial -%%BeginDocument: scanner.eps - - - - - - - - - - - -/AutoFlatness false def - -% -------------- POSTSCRIPT PROLOG FOR CORELDRAW 3.X ------ - -% Copyright 1992 Corel Corporation. All rights reserved. - -/wCorelDict 300 dict def wCorelDict begin/bd{bind def}bind def - -/ld{load def}bd/xd{exch def}bd/_ null def - -/$c 0 def/$m 0 def/$y 0 def/$k 0 def/$t 1 def - -/$n _ def/$o 0 def/$fil 0 def/$bkg false def - -/$C 0 def/$M 0 def/$Y 0 def/$K 0 def/$T 1 def - -/$N _ def/$O 0 def/$PF false def/$ctm matrix currentmatrix def - -/$ptm matrix def/$ttm matrix def/$stm matrix def - -/$fst 128 def/$pad 0 def/$rox 0 def/$roy 0 def - -currentscreen/@dsp xd/$dsp/@dsp def/$dsa xd - -/$dsf xd/$sdf false def/$SDF false def/$Scra 0.0 def - -/$sv 0 def/@cp/closepath ld/@gs/gsave ld/@gr/grestore ld - -/@np/newpath ld/@sv{/$sv save def}bd/@rs{$sv restore}bd - -/@ss{exch $Scra add exch load setscreen}bd - -AutoFlatness{/$cpx ([Error: PathTooComplex; OffendingCommand: AnyPaintingOperator]\n) def - -/@err1{$cpx print flush newpath}bd/@ifl{dup currentflat exch sub 10 gt - -{@err1 exit}{currentflat 2 add setflat}ifelse}bd - -/@fill/fill ld/fill{currentflat{{@fill}stopped{@ifl}{exit}ifelse - -}bind loop setflat}bd/@eofill/eofill ld/eofill{currentflat{{@eofill} - -stopped{@ifl}{exit}ifelse}bind loop setflat}bd - -/@clip/clip ld/clip{currentflat{{@clip}stopped{initclip @ifl}{exit - -}ifelse}bind loop setflat}bd/@eoclip/eoclip ld - -/eoclip{currentflat{{@eoclip}stopped{initclip @ifl}{exit}ifelse - -}bind loop setflat}bd/@stroke/stroke ld/stroke{currentflat{{@stroke} - -stopped{@ifl}{exit}ifelse}bind loop setflat}bd}if - -/InRange{3 -1 roll 2 copy le{pop}{exch pop}ifelse - -2 copy ge{pop}{exch pop}ifelse}bd/wDstChck{2 1 roll dup 3 -1 roll - -eq{1 add}if}bd/@dot{dup mul exch dup mul add 1 exch sub 2 div}bd - -/@lin{exch pop abs 1 exch sub}bd/@MN{2 copy le{pop}{exch pop}ifelse}bd - -/setcmykcolor where{pop}{/setcmykcolor{4 1 roll - -3{3 index add 1 @MN 1 exch sub 3 1 roll}repeat - -setrgbcolor pop}bd}ifelse/setoverprint{/$op xd}bd - -/currentoverprint{$op}bd/setsepcolor{1 exch sub setgray}bd - -/checksepcolor{1 exch sub dup setgray 1 eq exch 1 eq and not}bd - -/setprocesscolor{ColorSeparationMode 0 eq{setcmykcolor}{ - -0 4 $ink sub index exch pop 5 1 roll 4{pop}repeat - -setsepcolor}ifelse}bd/findcmykcustomcolor{5 array astore}bd - -/setcustomcolor where{pop}{/setcustomcolor{ColorSeparationMode 0 eq{ - -exch aload pop pop 4{4 index mul 4 1 roll}repeat - -5 -1 roll pop setcmykcolor}{exch aload pop - -CurrentInkName eq{4 index}{0}ifelse 6 1 roll - -5{pop}repeat setsepcolor}ifelse}bd}ifelse/colorimage where{pop}{ - -/colorimage{pop pop pop pop pop{currentfile $dat readhexstring pop pop} - -repeat pop}bd}ifelse/@tc{dup 1 ge{pop}{4{dup - -6 -1 roll mul exch}repeat pop}ifelse}bd/@scc{1 eq setoverprint - -dup _ eq{pop setprocesscolor pop}{findcmykcustomcolor - -exch setcustomcolor}ifelse ColorSeparationMode 0 eq{true}{ - -currentgray 1 eq currentoverprint and not}ifelse}bd - -/@sft{/$tx $tllx $pxf add dup $tllx gt{$pwid sub}if def - -/$ty $tury $pyf sub dup $tury lt{$phei add}if def}bd - -/@stb{pathbbox/$ury xd/$urx xd/$lly xd/$llx xd}bd - -/@ep{{cvx exec}forall}bd/@tp{@sv/$in true def - -2 copy dup $lly le{/$in false def}if $phei sub $ury ge{/$in false def}if - -dup $urx ge{/$in false def}if $pwid add $llx le{/$in false def}if - -$in{@np 2 copy m $pwid 0 rl 0 $phei neg rl $pwid neg 0 rl - -0 $phei rl clip @np $pn cvlit load aload pop - -7 -1 roll 5 index sub 7 -1 roll 3 index sub translate - -/$ctm matrix currentmatrix def @ep pop pop pop pop}{pop pop}ifelse - -@rs}bd/@th{@sft 0 1 $tly 1 sub{dup $psx mul $tx add{ - -dup $llx gt{$pwid sub}{exit}ifelse}loop exch $phei mul $ty exch sub - -0 1 $tlx 1 sub{$pwid mul 3 copy 3 -1 roll add exch - -@tp pop}for pop pop}for}bd/@tv{@sft 0 1 $tlx 1 sub{dup $pwid mul $tx add - -exch $psy mul $ty exch sub{dup $ury lt{$phei add}{exit}ifelse}loop - -0 1 $tly 1 sub{$phei mul 3 copy sub @tp pop}for - -pop pop}for}bd/@pf{@gs $ctm setmatrix $pm concat - -@stb eoclip Bburx Bbury $pm itransform/$tury xd/$turx xd - -Bbllx Bblly $pm itransform/$tlly xd/$tllx xd - -/$wid $turx $tllx sub def/$hei $tury $tlly sub def - -@gs $vectpat{1 0 0 0 0 _ $o @scc{eofill}if}{$t $c $m $y $k $n $o @scc{ - -$tllx $tlly translate $wid $hei scale <00> 8 1 false [ 8 0 0 1 0 0 ]{}imagemask - -/$bkg true def}if}ifelse @gr $wid 0 gt $hei 0 gt and{ - -$pn cvlit load aload pop/$pd xd 3 -1 roll sub/$phei xd - -exch sub/$pwid xd/$tlx $wid $pwid div ceiling 1 add def - -/$tly $hei $phei div ceiling 1 add def $psx 0 eq{@tv}{@th}ifelse}if - -@gr @np/$bkg false def}bd/@dlt{ColorSeparationMode 0 eq{ - -/$dc $toc $tot mul $frc $frt mul dup/$c xd sub $fst 1 sub div def - -/$dm $tom $tot mul $frm $frt mul dup/$m xd sub $fst 1 sub div def - -/$dy $toy $tot mul $fry $frt mul dup/$y xd sub $fst 1 sub div def - -/$dk $tok $tot mul $frk $frt mul dup/$k xd sub $fst 1 sub div def - -true}{$frt $frc $frm $fry $frk $frn $o @scc - -dup{/$frk 1 currentgray sub def}{/$frk 0 def}ifelse - -$tot $toc $tom $toy $tok $ton $o @scc dup{/$tok 1 currentgray sub def}{ - -/$tok 0 def}ifelse or dup{/$c 0 def/$m 0 def/$y 0 def/$k $frk def - -/$dc 0 def/$dm 0 def/$dy 0 def/$dk $tok $frk sub $fst 1 sub div def}if - -}ifelse}bd/@ftl{1 index 4 index sub dup $pad mul dup/$pdw xd - -2 mul sub $fst div/$wid xd 2 index sub/$hei xd - -pop translate $c $m $y $k 4 copy ColorSeparationMode 0 ne - -{1 exch sub setgray pop pop pop}{setcmykcolor}ifelse - -0 0 moveto 0 $hei lineto $pdw $hei lineto $pdw 0 lineto 0 0 lineto fill - -$pdw 0 translate $fst{4 copy ColorSeparationMode 0 ne - -{1 exch sub setgray pop pop pop}{setcmykcolor}ifelse - -0 0 moveto 0 $hei lineto $wid $hei lineto $wid 0 lineto 0 0 lineto fill - -$wid 0 translate $dk add 4 1 roll $dy add 4 1 roll - -$dm add 4 1 roll $dc add 4 1 roll}repeat $dk sub 4 1 roll - -$dy sub 4 1 roll $dm sub 4 1 roll $dc sub 4 1 roll - -ColorSeparationMode 0 ne{1 exch sub setgray pop pop pop} - -{setcmykcolor}ifelse 0 0 moveto 0 $hei lineto $pdw $hei lineto $pdw 0 lineto 0 0 lineto fill - -}bd/@ftr{1 index 4 index sub dup $rox mul/$row xd - -2 div 1 index 4 index sub dup $roy mul/$roh xd - -2 div 2 copy dup mul exch dup mul add sqrt - -$row dup mul $roh dup mul add sqrt add dup/$hei xd $fst div/$wid xd - -4 index add $roh add exch 5 index add $row add - -exch translate pop pop pop pop currentflat dup 5 mul setflat - -$c $m $y $k 4 copy ColorSeparationMode 0 ne - -{1 exch sub setgray pop pop pop}{setcmykcolor}ifelse - -$wid 0 moveto 0 0 $hei 0 360 arc fill 1.0 $pad 2 mul sub dup scale - -$fst{4 copy ColorSeparationMode 0 ne{1 exch sub setgray pop pop pop} - -{setcmykcolor}ifelse $wid 0 moveto 0 0 $hei 0 360 arc fill - -/$hei $hei $wid sub def $dk add 4 1 roll $dy add 4 1 roll - -$dm add 4 1 roll $dc add 4 1 roll}repeat pop pop pop pop - -setflat}bd/@ff{@gs @dlt{$ctm setmatrix eoclip - -newpath Bbllx Bblly moveto Bbllx Bbury lineto - -Bburx Bbury lineto Bburx Bblly lineto $fan rotate - -pathbbox newpath $fty 1 eq{@ftr}{@ftl}ifelse}if - -@gr @np}bd/@Pf{@sv ColorSeparationMode 0 eq $ink 3 eq or{0 J 0 j [] 0 d - -$t $c $m $y $k $n $o @scc pop $ctm setmatrix - -72 1000 div dup matrix scale dup concat dup Bburx exch Bbury exch itransform - -ceiling cvi/Bbury xd ceiling cvi/Bburx xd Bbllx exch Bblly exch itransform - -floor cvi/Bblly xd floor cvi/Bbllx xd $Prm aload pop - -$Psn load exec}{1 setgray eofill}ifelse @rs - -@np}bd/g{1 exch sub/$k xd/$c 0 def/$m 0 def/$y 0 def/$t 1 def/$n _ def/$fil 0 def - -}bd/G{1 exch sub/$K xd/$C 0 def/$M 0 def/$Y 0 def/$T 1 def/$N _ def}bd - -/k{/$k xd/$y xd/$m xd/$c xd/$t 1 def/$n _ def/$fil 0 def}bd - -/K{/$K xd/$Y xd/$M xd/$C xd/$T 1 def/$N _ def}bd - -/x{/$t xd/$n xd/$k xd/$y xd/$m xd/$c xd/$fil 0 def}bd - -/X{/$T xd/$N xd/$K xd/$Y xd/$M xd/$C xd}bd - -/d/setdash ld/i{dup 0 ne{setflat}{pop}ifelse}bd - -/j/setlinejoin ld/J/setlinecap ld/M/setmiterlimit ld - -/w/setlinewidth ld/O{/$o xd}bd/R{/$O xd}bd - -/c/curveto ld/C/c ld/v{4 -2 roll 2 copy 6 -2 roll curveto}bd - -/V/v ld/y{2 copy curveto}bd/Y/y ld/l/lineto ld - -/L/l ld/rl/rlineto ld/m/moveto ld/n/newpath ld - -/N/newpath ld/F{matrix currentmatrix $sdf{$scf $sca $scp @ss}if - -$fil 1 eq{@pf}{$fil 2 eq{@ff}{$fil 3 eq{@Pf}{$t $c $m $y $k $n $o @scc - -{eofill}{@np}ifelse}ifelse}ifelse}ifelse $sdf{$dsf $dsa $dsp @ss}if - -setmatrix}bd/f{@cp F}bd/S{matrix currentmatrix - -$ctm setmatrix $SDF{$SCF $SCA $SCP @ss}if $T $C $M $Y $K $N $O @scc{ - -matrix currentmatrix $ptm concat stroke setmatrix}{@np}ifelse - -$SDF{$dsf $dsa $dsp @ss}if setmatrix}bd/s{@cp - -S}bd/B{@gs F @gr S}bd/b{@cp B}bd/W{eoclip}bd - -/p{/$pm xd 7{pop}repeat/$pyf xd/$pxf xd/$pn xd - -/$fil 1 def}bd/P{11{pop}repeat}bd/u{}bd/U{}bd - -/A{pop}bd/q/@gs ld/Q/@gr ld/E{5 array astore - -exch cvlit exch def}bd/`{}bd/~{}bd/@{}bd/&{}bd - -/CorelDrawReencodeVect [ 16#82/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl - -16#88/circumflex/perthousand/Scaron/guilsinglleft/OE - -16#91/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash - -16#98/tilde/trademark/scaron/guilsinglright/oe - -16#9F/Ydieresis 16#A1/exclamdown/cent/sterling/currency/yen/brokenbar/section - -16#a8/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/minus/registered/macron - -16#b0/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered - -16#b8/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown - -16#c0/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla - -16#c8/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis - -16#d0/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply - -16#d8/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls - -16#e0/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla - -16#e8/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis - -16#f0/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide - -16#f8/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis - -] def/@cc{currentfile $dat readhexstring pop}bd - -/@sm{/$ctm $ctm currentmatrix def}bd/@E{/Bbury xd/Bburx xd - -/Bblly xd/Bbllx xd}bd/@c{@cp}bd/@p{/$fil 1 def - -1 eq/$vectpat xd/$pm xd/$psy xd/$psx xd/$pyf xd/$pxf xd - -/$pn xd}bd/@P{/$fil 3 def/$Psn xd array astore - -/$Prm xd}bd/@k{/$fil 2 def/$roy xd/$rox xd/$pad xd - -/$fty xd/$fan xd $fty 1 eq{/$fan 0 def}if/$tok xd/$toy xd/$tom xd/$toc xd - -/$frk xd/$fry xd/$frm xd/$frc xd/$frn _ def/$frt 1 def/$ton _ def/$tot 1 def - -}bd/@x{/$fil 2 def/$roy xd/$rox xd/$pad xd - -/$fty xd/$fan xd/$tot xd/$ton xd/$tok xd/$toy xd/$tom xd/$toc xd - -/$frt xd/$frn xd/$frk xd/$fry xd/$frm xd/$frc xd}bd - -/@ii{concat 3 index 3 index m 3 index 1 index l - -2 copy l 1 index 3 index l 3 index 3 index l - -clip pop pop pop pop}bd/@i{@sm @gs @ii 6 index 1 ne{/$frg true def - -pop pop}{1 eq{$T $C $M $Y $K $N $O @scc/$frg xd}{/$frg false def - -}ifelse 1 eq{@gs $ctm setmatrix $t $c $m $y $k $n $o @scc{eofill}if - -@gr}if}ifelse/$frg $frg $bkg or def @np/$ury xd/$urx xd/$lly xd/$llx xd - -/$bts xd/$hei xd/$wid xd/$dat $wid $bts mul 8 div ceiling cvi string def - -$frg{$SDF{$SCF $SCA $SCP @ss}if $llx $lly translate - -$urx $llx sub $ury $lly sub scale $wid $hei abs - -$bts 1 eq{false}{$bts}ifelse [ $wid 0 0 $hei neg 0 - -$hei 0 gt{$hei}{0}ifelse]/@cc load $bts 1 eq{imagemask}{image}ifelse - -$SDF{$dsf $dsa $dsp @ss}if}{$hei abs{@cc pop}repeat}ifelse - -@gr $ctm setmatrix}def/@M{@sv}bd/@N{/@cc{}def - -1 eq{12 -1 roll neg 12 1 roll @I}{13 -1 roll neg 13 1 roll - -@i}ifelse @rs}bd/@I{@sm @gs @ii @np/$ury xd/$urx xd/$lly xd/$llx xd - -/$ncl xd/$bts xd/$hei xd/$wid xd/$dat $wid $bts mul $ncl mul 8 div ceiling cvi string def - -$llx $lly translate $urx $llx sub $ury $lly sub scale - -$wid $hei abs $bts [ $wid 0 0 $hei neg 0 $hei 0 gt{$hei}{0}ifelse] - -/@cc load false $ncl colorimage @gr $ctm setmatrix}bd - -/z{exch findfont exch scalefont setfont}bd - -/ZB{9 dict dup begin 4 1 roll/FontType 3 def - -/FontMatrix xd/FontBBox xd/Encoding 256 array def - -0 1 255{Encoding exch/.notdef put}for/CharStrings 256 dict def - -CharStrings/.notdef{}put/Metrics 256 dict def - -Metrics/.notdef 3 -1 roll put/BuildChar{exch - -dup/$char exch/Encoding get 3 index get def - -dup/Metrics get $char get aload pop setcachedevice - -begin Encoding exch get CharStrings exch get - -end exec}def end definefont pop}bd/ZBAddChar{findfont begin - -dup 4 1 roll dup 6 1 roll Encoding 3 1 roll put - -CharStrings 3 1 roll put Metrics 3 1 roll put - -end}bd/Z{findfont dup maxlength 2 add dict exch - -dup{1 index/FID ne{3 index 3 1 roll put}{pop pop}ifelse}forall - -pop dup dup/Encoding get 256 array copy dup/$fe xd - -/Encoding exch put dup/Fontname 3 index put - -3 -1 roll dup length 0 ne{0 exch{dup type 0 type eq{exch pop}{ - -$fe exch 2 index exch put 1 add}ifelse}forall - -pop}if dup 256 dict dup/$met xd/Metrics exch put - -dup/FontMatrix get 0 get 1000 mul 1 exch div - -3 index length 256 eq{0 1 255{dup $fe exch get - -dup/.notdef eq{pop pop}{5 index 3 -1 roll get - -2 index mul $met 3 1 roll put}ifelse}for}if - -pop definefont pop pop}bd/@ftx{{currentpoint 3 -1 roll - -(0) dup 3 -1 roll 0 exch put dup @gs true charpath - -$ctm setmatrix @@txt @gr @np stringwidth pop 3 -1 roll add exch moveto - -}forall}bd/@ft{matrix currentmatrix exch $sdf{$scf $sca $scp @ss}if - -$fil 1 eq{/@@txt/@pf ld @ftx}{$fil 2 eq{/@@txt/@ff ld @ftx}{$fil 3 eq - -{/@@txt/@Pf ld @ftx}{$t $c $m $y $k $n $o @scc{show}{pop}ifelse}ifelse - -}ifelse}ifelse $sdf{$dsf $dsa $dsp @ss}if setmatrix}bd - -/@st{matrix currentmatrix exch $SDF{$SCF $SCA $SCP @ss}if - -$T $C $M $Y $K $N $O @scc{{currentpoint 3 -1 roll - -(0) dup 3 -1 roll 0 exch put dup @gs true charpath - -$ctm setmatrix $ptm concat stroke @gr @np stringwidth pop 3 -1 roll add exch moveto - -}forall}{pop}ifelse $SDF{$dsf $dsa $dsp @ss}if - -setmatrix}bd/@te{@ft}bd/@tr{@st}bd/@ta{dup - -@gs @ft @gr @st}bd/@t@a{dup @gs @st @gr @ft}bd - -/@tm{/$textsave save def @sm concat}bd/e{/t{@te}def}bd - -/r{/t{@tr}def}bd/o{/t{pop}def}bd/a{/t{@ta}def}bd - -/@a{/t{@t@a}def}bd/t{@te}def/T{@np $ctm setmatrix - -/$ttm matrix def $textsave restore}bd/@t{/$stm $stm currentmatrix def - -3 1 roll moveto $ttm concat t $stm setmatrix}def - -/@n{/$ttm exch matrix rotate def}bd/@s{}bd - -/@l{}bd/@B{@gs S @gr F}bd/@b{@cp @B}bd/@w{matrix rotate/$ptm xd - -matrix scale $ptm dup concatmatrix/$ptm xd - -1 eq{$ptm exch dup concatmatrix/$ptm xd}if - -1 w}bd/@g{1 eq dup/$sdf xd{/$scp xd/$sca xd - -/$scf xd}if}bd/@G{1 eq dup/$SDF xd{/$SCP xd - -/$SCA xd/$SCF xd}if}bd/@D{3 copy @ss/$dsp xd - -/$dsa xd/$dsf xd}bd/@j{@sv @np}bind def/@J{@rs}bind def - -/@sep{/ColorSeparationMode where{pop}{/ColorSeparationMode 0 def - -/CurrentInkName (Composite) def}ifelse ColorSeparationMode 0 eq{ - -/CurrentInkName (Composite) def}if/CurrentInkName where{pop}{ - -/CurrentInkName (Composite) def}ifelse CurrentInkName (Composite) eq - -{/$ink -1 def}{CurrentInkName (Cyan) eq{/$ink 0 def}{ - -CurrentInkName (Magenta) eq{/$ink 1 def}{CurrentInkName (Yellow) eq - -{/$ink 2 def}{CurrentInkName (Black) eq{/$ink 3 def}{/$ink 4 def - -}ifelse}ifelse}ifelse}ifelse}ifelse}bd @sep - -/@whi{@gs -72000 dup moveto -72000 72000 lineto - -72000 dup lineto 72000 -72000 lineto closepath 1 setgray fill - -@gr}bd/@neg{ [{1 exch sub}/exec cvx currenttransfer/exec cvx] cvx settransfer - -@whi}bd/@reg{[] 0 d 0 setgray .3 setlinewidth - -2 copy 5.4 0 360 arc closepath 2 copy moveto 9 0 rlineto - -2 copy moveto -9 0 rlineto 2 copy moveto 0 9 rlineto - -moveto 0 -9 rlineto stroke}bd/leftbracket{(\050)}def - -/rightbracket{(\051)}def - - - - - -11.4737 setmiterlimit - -1.00 setflat - -/$fst 128 def - -[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 229 - -229 291 457 457 732 543 182 275 275 322 480 229 275 229 229 457 - -457 457 457 457 457 457 457 457 457 229 229 480 480 480 457 836 - -543 543 592 592 543 504 639 592 229 408 543 457 686 592 639 543 - -639 592 543 504 592 543 771 543 543 504 229 229 229 387 457 275 - -457 457 408 457 457 229 457 457 182 182 408 182 686 457 457 457 - -457 275 408 229 457 408 592 408 408 408 275 213 275 480 750 750 - -750 750 457 275 818 457 457 275 818 750 275 818 750 750 750 750 - -182 182 275 275 229 457 818 275 818 750 275 771 750 750 750 750 - -275 457 457 457 457 148 457 275 605 299 457 480 750 605 750 750 - -750 750 750 275 750 441 750 275 750 299 457 750 750 750 504 543 - -543 543 543 543 543 818 592 543 543 543 543 229 229 229 229 750 - -592 639 639 639 639 639 750 639 592 592 592 592 543 750 504 457 - -457 457 457 457 457 732 408 457 457 457 457 229 229 229 229 750 - -457 457 457 457 457 457 750 504 457 457 457 457 408 750 408 ] - -CorelDrawReencodeVect /_Helvetica-Narrow /Helvetica-Narrow Z - -[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600 - -600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 - -600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 - -600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 - -600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 - -600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 - -600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 - -600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 - -600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 - -600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 - -600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 - -600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 - -600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 - -600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 - -600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 ] - -CorelDrawReencodeVect /_Courier /Courier Z - - - - -@sv - -/$ctm matrix currentmatrix def - -@sv - - -106.13 392.62 110.02 399.38 @E - - -[0.07199 0.00000 0.00000 0.07199 106 392] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Helvetica-Narrow 125.00 z - -0 0 (0) @t - -T - - -160.70 392.69 163.30 399.31 @E - - -[0.07199 0.00000 0.00000 0.07199 160 392] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Helvetica-Narrow 125.00 z - -0 0 (1) @t - -T - - -214.06 392.69 217.94 399.24 @E - - -[0.07199 0.00000 0.00000 0.07199 214 392] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Helvetica-Narrow 125.00 z - -0 0 (2) @t - -T - - -268.06 392.54 271.94 399.24 @E - - -[0.07199 0.00000 0.00000 0.07199 268 392] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Helvetica-Narrow 125.00 z - -0 0 (3) @t - -T - - -321.98 392.47 325.94 399.10 @E - - -[0.07199 0.00000 0.00000 0.07199 322 392] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Helvetica-Narrow 125.00 z - -0 0 (4) @t - -T - - -375.98 392.40 379.94 399.10 @E - - -[0.07199 0.00000 0.00000 0.07199 376 392] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Helvetica-Narrow 125.00 z - -0 0 (5) @t - -T - - -159.98 446.69 163.94 453.38 @E - - -[0.07199 0.00000 0.00000 0.07199 160 446] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Helvetica-Narrow 125.00 z - -0 0 (6) @t - -T - - -106.06 338.83 110.09 345.38 @E - - -[0.07199 0.00000 0.00000 0.07199 106 338] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Helvetica-Narrow 125.00 z - -0 0 (7) @t - -T - - -159.98 338.62 163.94 345.46 @E - - -[0.07199 0.00000 0.00000 0.07199 160 338] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Helvetica-Narrow 125.00 z - -0 0 (8) @t - -T - - -106.13 284.62 110.02 291.46 @E - - -[0.07199 0.00000 0.00000 0.07199 106 284] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Helvetica-Narrow 125.00 z - -0 0 (9) @t - -T - - -157.97 284.69 166.10 291.53 @E - - -[0.07199 0.00000 0.00000 0.07199 158 285] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Helvetica-Narrow 125.00 z - -0 0 (10) @t - -T - - -104.54 446.69 111.53 453.31 @E - - -[0.07199 0.00000 0.00000 0.07199 104 446] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Helvetica-Narrow 125.00 z - -0 0 (11) @t - -T - - -112.54 440.93 114.55 445.97 @E - - -[0.07199 0.00000 0.00000 0.07199 112 440] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Helvetica-Narrow 97.00 z - -0 0 (1) @t - -T - - -166.46 278.93 169.49 283.97 @E - - -[0.07199 0.00000 0.00000 0.07199 166 278] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Helvetica-Narrow 97.00 z - -0 0 (2) @t - -T - - -112.46 332.86 115.49 337.90 @E - - -[0.07199 0.00000 0.00000 0.07199 112 332] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Helvetica-Narrow 97.00 z - -0 0 (3) @t - -T - - -166.46 332.86 169.49 337.90 @E - - -[0.07199 0.00000 0.00000 0.07199 166 332] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Helvetica-Narrow 97.00 z - -0 0 (3) @t - -T - - -328.46 386.93 331.56 391.97 @E - - -[0.07199 0.00000 0.00000 0.07199 328 386] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Helvetica-Narrow 97.00 z - -0 0 (4) @t - -T - - -274.46 386.93 277.56 391.97 @E - - -[0.07199 0.00000 0.00000 0.07199 274 386] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Helvetica-Narrow 97.00 z - -0 0 (4) @t - -T - - -220.46 386.93 223.56 391.97 @E - - -[0.07199 0.00000 0.00000 0.07199 220 386] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Helvetica-Narrow 97.00 z - -0 0 (4) @t - -T - - -166.46 386.93 169.56 391.97 @E - - -[0.07199 0.00000 0.00000 0.07199 166 386] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Helvetica-Narrow 97.00 z - -0 0 (4) @t - -T - - -166.46 440.93 169.56 445.97 @E - - -[0.07199 0.00000 0.00000 0.07199 166 440] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Helvetica-Narrow 97.00 z - -0 0 (4) @t - -T - - -382.46 386.78 385.56 391.90 @E - - -[0.07199 0.00000 0.00000 0.07199 382 386] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Helvetica-Narrow 97.00 z - -0 0 (5) @t - -T - - -94.54 382.54 121.61 409.46 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -108.07 409.46 m - -115.49 409.46 121.61 403.42 121.61 396.00 c - -121.61 388.58 115.49 382.54 108.07 382.54 c - -100.66 382.54 94.54 388.58 94.54 396.00 c - -94.54 403.42 100.66 409.46 108.07 409.46 c - -@c - -S - - -94.54 274.54 121.61 301.46 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -108.07 301.46 m - -115.49 301.46 121.61 295.42 121.61 288.00 c - -121.61 280.58 115.49 274.54 108.07 274.54 c - -100.66 274.54 94.54 280.58 94.54 288.00 c - -94.54 295.42 100.66 301.46 108.07 301.46 c - -@c - -S - - -94.54 328.61 121.61 355.54 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -108.07 355.54 m - -115.49 355.54 121.61 349.49 121.61 342.07 c - -121.61 334.66 115.49 328.61 108.07 328.61 c - -100.66 328.61 94.54 334.66 94.54 342.07 c - -94.54 349.49 100.66 355.54 108.07 355.54 c - -@c - -S - - -95.83 329.98 120.17 354.31 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -108.00 354.31 m - -114.62 354.31 120.17 348.91 120.17 342.14 c - -120.17 335.45 114.62 329.98 108.00 329.98 c - -101.30 329.98 95.83 335.45 95.83 342.14 c - -95.83 348.91 101.30 354.31 108.00 354.31 c - -@c - -S - - -148.46 328.54 175.54 355.46 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -162.00 355.46 m - -169.42 355.46 175.54 349.42 175.54 342.00 c - -175.54 334.58 169.42 328.54 162.00 328.54 c - -154.58 328.54 148.46 334.58 148.46 342.00 c - -148.46 349.42 154.58 355.46 162.00 355.46 c - -@c - -S - - -149.76 329.90 174.10 354.24 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -161.93 354.24 m - -168.55 354.24 174.10 348.84 174.10 342.07 c - -174.10 335.38 168.55 329.90 161.93 329.90 c - -155.23 329.90 149.76 335.38 149.76 342.07 c - -149.76 348.84 155.23 354.24 161.93 354.24 c - -@c - -S - - -148.46 436.54 175.54 463.46 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -162.00 463.46 m - -169.42 463.46 175.54 457.42 175.54 450.00 c - -175.54 442.58 169.42 436.54 162.00 436.54 c - -154.58 436.54 148.46 442.58 148.46 450.00 c - -148.46 457.42 154.58 463.46 162.00 463.46 c - -@c - -S - - -149.76 437.90 174.10 462.24 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -161.93 462.24 m - -168.55 462.24 174.10 456.84 174.10 450.07 c - -174.10 443.38 168.55 437.90 161.93 437.90 c - -155.23 437.90 149.76 443.38 149.76 450.07 c - -149.76 456.84 155.23 462.24 161.93 462.24 c - -@c - -S - - -94.54 436.54 121.61 463.46 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -108.07 463.46 m - -115.49 463.46 121.61 457.42 121.61 450.00 c - -121.61 442.58 115.49 436.54 108.07 436.54 c - -100.66 436.54 94.54 442.58 94.54 450.00 c - -94.54 457.42 100.66 463.46 108.07 463.46 c - -@c - -S - - -95.83 437.90 120.17 462.24 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -108.00 462.24 m - -114.62 462.24 120.17 456.84 120.17 450.07 c - -120.17 443.38 114.62 437.90 108.00 437.90 c - -101.30 437.90 95.83 443.38 95.83 450.07 c - -95.83 456.84 101.30 462.24 108.00 462.24 c - -@c - -S - - -148.46 382.54 175.54 409.46 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -162.00 409.46 m - -169.42 409.46 175.54 403.42 175.54 396.00 c - -175.54 388.58 169.42 382.54 162.00 382.54 c - -154.58 382.54 148.46 388.58 148.46 396.00 c - -148.46 403.42 154.58 409.46 162.00 409.46 c - -@c - -S - - -149.76 383.90 174.10 408.24 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -161.93 408.24 m - -168.55 408.24 174.10 402.84 174.10 396.07 c - -174.10 389.38 168.55 383.90 161.93 383.90 c - -155.23 383.90 149.76 389.38 149.76 396.07 c - -149.76 402.84 155.23 408.24 161.93 408.24 c - -@c - -S - - -148.54 274.61 175.61 301.54 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -162.07 301.54 m - -169.49 301.54 175.61 295.49 175.61 288.07 c - -175.61 280.66 169.49 274.61 162.07 274.61 c - -154.66 274.61 148.54 280.66 148.54 288.07 c - -148.54 295.49 154.66 301.54 162.07 301.54 c - -@c - -S - - -149.83 275.98 174.17 300.31 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -162.00 300.31 m - -168.62 300.31 174.17 294.91 174.17 288.14 c - -174.17 281.45 168.62 275.98 162.00 275.98 c - -155.30 275.98 149.83 281.45 149.83 288.14 c - -149.83 294.91 155.30 300.31 162.00 300.31 c - -@c - -S - - -202.46 382.46 229.54 409.39 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -216.00 409.39 m - -223.42 409.39 229.54 403.34 229.54 395.93 c - -229.54 388.51 223.42 382.46 216.00 382.46 c - -208.58 382.46 202.46 388.51 202.46 395.93 c - -202.46 403.34 208.58 409.39 216.00 409.39 c - -@c - -S - - -203.76 383.83 228.10 408.17 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -215.93 408.17 m - -222.55 408.17 228.10 402.77 228.10 396.00 c - -228.10 389.30 222.55 383.83 215.93 383.83 c - -209.23 383.83 203.76 389.30 203.76 396.00 c - -203.76 402.77 209.23 408.17 215.93 408.17 c - -@c - -S - - -256.46 382.39 283.54 409.32 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -270.00 409.32 m - -277.42 409.32 283.54 403.27 283.54 395.86 c - -283.54 388.44 277.42 382.39 270.00 382.39 c - -262.58 382.39 256.46 388.44 256.46 395.86 c - -256.46 403.27 262.58 409.32 270.00 409.32 c - -@c - -S - - -257.76 383.76 282.10 408.10 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -269.93 408.10 m - -276.55 408.10 282.10 402.70 282.10 395.93 c - -282.10 389.23 276.55 383.76 269.93 383.76 c - -263.23 383.76 257.76 389.23 257.76 395.93 c - -257.76 402.70 263.23 408.10 269.93 408.10 c - -@c - -S - - -310.46 382.32 337.54 409.25 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -324.00 409.25 m - -331.42 409.25 337.54 403.20 337.54 395.78 c - -337.54 388.37 331.42 382.32 324.00 382.32 c - -316.58 382.32 310.46 388.37 310.46 395.78 c - -310.46 403.20 316.58 409.25 324.00 409.25 c - -@c - -S - - -311.76 383.69 336.10 408.02 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -323.93 408.02 m - -330.55 408.02 336.10 402.62 336.10 395.86 c - -336.10 389.16 330.55 383.69 323.93 383.69 c - -317.23 383.69 311.76 389.16 311.76 395.86 c - -311.76 402.62 317.23 408.02 323.93 408.02 c - -@c - -S - - -364.46 382.25 391.54 409.18 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -378.00 409.18 m - -385.42 409.18 391.54 403.13 391.54 395.71 c - -391.54 388.30 385.42 382.25 378.00 382.25 c - -370.58 382.25 364.46 388.30 364.46 395.71 c - -364.46 403.13 370.58 409.18 378.00 409.18 c - -@c - -S - - -365.76 383.62 390.10 407.95 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -377.93 407.95 m - -384.55 407.95 390.10 402.55 390.10 395.78 c - -390.10 389.09 384.55 383.62 377.93 383.62 c - -371.23 383.62 365.76 389.09 365.76 395.78 c - -365.76 402.55 371.23 407.95 377.93 407.95 c - -@c - -S - - -121.54 395.86 148.54 396.14 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -121.54 396.00 m - -147.17 396.00 L - -S - -@j - -0.00 0.00 0.00 1.00 K - -0.00 0.00 0.00 1.00 k - -0 @g - -0 @G - -[] 0 d 0 J 0 j - -0 R 0 O 0 1.01 1.01 0 @w - -144.00 398.52 m - -147.96 396.00 L - -144.00 393.48 L - -S - -@J - - -175.54 395.86 202.54 396.14 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -175.54 396.00 m - -201.17 396.00 L - -S - -@j - -0.00 0.00 0.00 1.00 K - -0.00 0.00 0.00 1.00 k - -0 @g - -0 @G - -[] 0 d 0 J 0 j - -0 R 0 O 0 1.01 1.01 0 @w - -198.00 398.52 m - -201.96 396.00 L - -198.00 393.48 L - -S - -@J - - -229.54 395.86 256.54 396.14 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -229.54 396.00 m - -255.17 396.00 L - -S - -@j - -0.00 0.00 0.00 1.00 K - -0.00 0.00 0.00 1.00 k - -0 @g - -0 @G - -[] 0 d 0 J 0 j - -0 R 0 O 0 1.01 1.01 0 @w - -252.00 398.52 m - -255.96 396.00 L - -252.00 393.48 L - -S - -@J - - -283.54 395.86 310.54 396.14 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -283.54 396.00 m - -309.17 396.00 L - -S - -@j - -0.00 0.00 0.00 1.00 K - -0.00 0.00 0.00 1.00 k - -0 @g - -0 @G - -[] 0 d 0 J 0 j - -0 R 0 O 0 1.01 1.01 0 @w - -306.00 398.52 m - -309.96 396.00 L - -306.00 393.48 L - -S - -@J - - -337.54 395.86 364.54 396.14 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -337.54 396.00 m - -363.17 396.00 L - -S - -@j - -0.00 0.00 0.00 1.00 K - -0.00 0.00 0.00 1.00 k - -0 @g - -0 @G - -[] 0 d 0 J 0 j - -0 R 0 O 0 1.01 1.01 0 @w - -360.00 398.52 m - -363.96 396.00 L - -360.00 393.48 L - -S - -@J - - -125.57 268.56 143.86 284.98 @E - - -[0.07198 0.00000 0.00000 0.07199 125 278] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Courier 125.00 z - -0 0 (\133) @t - -60 0 (0) @t - -120 0 (-) @t - -180 0 (9) @t - -0 -125 (a) @t - -60 -125 (-) @t - -120 -125 (f) @t - -180 -125 (\135) @t - -T - - -121.54 287.86 148.54 288.14 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -121.54 288.00 m - -147.17 288.00 L - -S - -@j - -0.00 0.00 0.00 1.00 K - -0.00 0.00 0.00 1.00 k - -0 @g - -0 @G - -[] 0 d 0 J 0 j - -0 R 0 O 0 1.01 1.01 0 @w - -144.00 290.52 m - -147.96 288.00 L - -144.00 285.48 L - -S - -@J - - -121.54 341.86 148.54 342.14 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -121.54 342.00 m - -147.17 342.00 L - -S - -@j - -0.00 0.00 0.00 1.00 K - -0.00 0.00 0.00 1.00 k - -0 @g - -0 @G - -[] 0 d 0 J 0 j - -0 R 0 O 0 1.01 1.01 0 @w - -144.00 344.52 m - -147.96 342.00 L - -144.00 339.48 L - -S - -@J - - -107.86 301.54 108.14 328.54 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -108.00 328.54 m - -108.00 302.90 L - -S - -@j - -0.00 0.00 0.00 1.00 K - -0.00 0.00 0.00 1.00 k - -0 @g - -0 @G - -[] 0 d 0 J 0 j - -0 R 0 O 0 1.01 1.01 0 @w - -110.52 306.14 m - -108.00 302.18 L - -105.48 306.14 L - -S - -@J - - -107.86 355.54 108.14 382.54 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -108.00 382.54 m - -108.00 356.90 L - -S - -@j - -0.00 0.00 0.00 1.00 K - -0.00 0.00 0.00 1.00 k - -0 @g - -0 @G - -[] 0 d 0 J 0 j - -0 R 0 O 0 1.01 1.01 0 @w - -110.52 360.14 m - -108.00 356.18 L - -105.48 360.14 L - -S - -@J - - -107.86 409.54 108.14 436.54 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -108.00 409.54 m - -108.00 435.17 L - -S - -@j - -0.00 0.00 0.00 1.00 K - -0.00 0.00 0.00 1.00 k - -0 @g - -0 @G - -[] 0 d 0 J 0 j - -0 R 0 O 0 1.01 1.01 0 @w - -105.41 432.00 m - -108.00 435.96 L - -110.59 432.00 L - -S - -@J - - -117.00 405.00 153.00 441.00 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -117.00 405.00 m - -152.06 440.06 L - -S - -@j - -0.00 0.00 0.00 1.00 K - -0.00 0.00 0.00 1.00 k - -0 @g - -0 @G - -[] 0 d 0 J 0 j - -0 R 0 O 0 1.01 1.01 0 @w - -147.96 439.63 m - -152.64 440.64 L - -151.70 436.03 L - -S - -@J - - -117.00 351.00 153.00 387.00 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -117.00 387.00 m - -152.06 351.94 L - -S - -@j - -0.00 0.00 0.00 1.00 K - -0.00 0.00 0.00 1.00 k - -0 @g - -0 @G - -[] 0 d 0 J 0 j - -0 R 0 O 0 1.01 1.01 0 @w - -151.63 356.04 m - -152.64 351.43 L - -148.03 352.44 L - -S - -@J - - -166.39 341.93 196.63 377.14 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -173.38 346.82 m - -177.48 347.47 182.59 350.42 186.77 354.60 c - -193.75 361.58 196.63 370.22 193.18 373.68 c - -189.72 377.14 181.08 374.33 174.10 367.34 c - -169.92 363.17 166.90 358.06 166.39 353.95 C - -S - -@j - -0.00 0.00 0.00 1.00 K - -0.00 0.00 0.00 1.00 k - -0 @g - -0 @G - -[] 0 d 0 J 0 j - -0 R 0 O 0 1.01 1.01 0 @w - -169.34 356.90 m - -166.39 353.30 L - -164.30 357.62 L - -S - -@J - - -166.39 450.72 196.63 485.93 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -173.38 455.62 m - -177.48 456.26 182.59 459.22 186.77 463.39 c - -193.75 470.38 196.63 479.02 193.18 482.47 c - -189.72 485.93 181.08 483.12 174.10 476.14 c - -169.92 471.96 166.90 466.85 166.39 462.74 C - -S - -@j - -0.00 0.00 0.00 1.00 K - -0.00 0.00 0.00 1.00 k - -0 @g - -0 @G - -[] 0 d 0 J 0 j - -0 R 0 O 0 1.01 1.01 0 @w - -169.34 465.70 m - -166.39 462.10 L - -164.30 466.42 L - -S - -@J - - -166.39 287.93 196.63 323.14 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -173.38 292.82 m - -177.48 293.47 182.59 296.42 186.77 300.60 c - -193.75 307.58 196.63 316.22 193.18 319.68 c - -189.72 323.14 181.08 320.33 174.10 313.34 c - -169.92 309.17 166.90 304.06 166.39 299.95 C - -S - -@j - -0.00 0.00 0.00 1.00 K - -0.00 0.00 0.00 1.00 k - -0 @g - -0 @G - -[] 0 d 0 J 0 j - -0 R 0 O 0 1.01 1.01 0 @w - -169.34 302.90 m - -166.39 299.30 L - -164.30 303.62 L - -S - -@J - - -166.61 396.00 198.00 450.00 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -182.30 396.00 m - -190.94 396.00 198.00 408.17 198.00 423.00 c - -198.00 437.83 190.94 450.00 182.30 450.00 C - -S - -@j - -0.00 0.00 0.00 1.00 K - -0.00 0.00 0.00 1.00 k - -0 @g - -0 @G - -[] 0 d 0 J 0 j - -0 R 0 O 0 1.01 1.01 0 @w - -185.54 447.41 m - -181.58 450.00 L - -185.54 452.59 L - -S - -@J - - -220.61 396.00 252.00 450.00 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -236.30 396.00 m - -244.94 396.00 252.00 408.17 252.00 423.00 c - -252.00 437.83 244.94 450.00 236.30 450.00 C - -S - -@j - -0.00 0.00 0.00 1.00 K - -0.00 0.00 0.00 1.00 k - -0 @g - -0 @G - -[] 0 d 0 J 0 j - -0 R 0 O 0 1.01 1.01 0 @w - -239.54 447.41 m - -235.58 450.00 L - -239.54 452.59 L - -S - -@J - - -274.61 396.00 306.00 450.00 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -290.30 396.00 m - -298.94 396.00 306.00 408.17 306.00 423.00 c - -306.00 437.83 298.94 450.00 290.30 450.00 C - -S - -@j - -0.00 0.00 0.00 1.00 K - -0.00 0.00 0.00 1.00 k - -0 @g - -0 @G - -[] 0 d 0 J 0 j - -0 R 0 O 0 1.01 1.01 0 @w - -293.54 447.41 m - -289.58 450.00 L - -293.54 452.59 L - -S - -@J - - -328.61 396.00 360.00 450.00 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -344.30 396.00 m - -352.94 396.00 360.00 408.17 360.00 423.00 c - -360.00 437.83 352.94 450.00 344.30 450.00 C - -S - -@j - -0.00 0.00 0.00 1.00 K - -0.00 0.00 0.00 1.00 k - -0 @g - -0 @G - -[] 0 d 0 J 0 j - -0 R 0 O 0 1.01 1.01 0 @w - -347.54 447.41 m - -343.58 450.00 L - -347.54 452.59 L - -S - -@J - - -382.54 396.00 413.93 450.00 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -398.23 396.00 m - -406.87 396.00 413.93 408.17 413.93 423.00 c - -413.93 437.83 406.87 450.00 398.23 450.00 C - -S - -@j - -0.00 0.00 0.00 1.00 K - -0.00 0.00 0.00 1.00 k - -0 @g - -0 @G - -[] 0 d 0 J 0 j - -0 R 0 O 0 1.01 1.01 0 @w - -401.47 447.41 m - -397.51 450.00 L - -401.47 452.59 L - -S - -@J - - -391.54 395.86 398.23 396.14 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -391.54 396.00 m - -398.23 396.00 L - -S - - -175.54 449.86 398.23 450.14 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -398.23 450.00 m - -175.54 450.00 L - -S - - -139.46 385.27 144.43 391.03 @E - - -[0.07199 0.00000 0.00000 0.07199 139 386] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Courier 125.00 z - -0 0 (p) @t - -T - - -188.93 386.93 193.90 390.96 @E - - -[0.07199 0.00000 0.00000 0.07199 188 386] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Courier 125.00 z - -0 0 (r) @t - -T - - -242.93 386.93 247.61 392.76 @E - - -[0.07199 0.00000 0.00000 0.07199 242 386] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Courier 125.00 z - -0 0 (i) @t - -T - - -296.93 386.93 301.97 391.03 @E - - -[0.07199 0.00000 0.00000 0.07199 296 386] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Courier 125.00 z - -0 0 (n) @t - -T - - -350.93 386.86 355.82 392.18 @E - - -[0.07199 0.00000 0.00000 0.07199 350 386] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Courier 125.00 z - -0 0 (t) @t - -T - - -98.93 364.39 103.46 370.22 @E - - -[0.07199 0.00000 0.00000 0.07199 98 364] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Courier 125.00 z - -0 0 (0) @t - -T - - -98.93 310.46 103.97 314.42 @E - - -[0.07199 0.00000 0.00000 0.07199 98 310] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Courier 125.00 z - -0 0 (x) @t - -T - - -125.50 331.78 146.66 338.76 @E - - -[0.07199 0.00000 0.00000 0.07199 125 332] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Courier 125.00 z - -0 0 (\133) @t - -60 0 (0) @t - -120 0 (-) @t - -180 0 (9) @t - -240 0 (\135) @t - -T - - -134.50 367.78 155.66 374.76 @E - - -[0.07199 0.00000 0.00000 0.07199 134 368] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Courier 125.00 z - -0 0 (\133) @t - -60 0 (1) @t - -120 0 (-) @t - -180 0 (9) @t - -240 0 (\135) @t - -T - - -134.28 416.74 166.46 424.73 @E - - -[0.07199 0.00000 0.00000 0.07199 134 418] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Courier 125.00 z - -0 0 (\133) @t - -60 0 (a) @t - -120 0 (-) @t - -180 0 (z) @t - -240 0 (\135) @t - -300 0 (\134) @t - -360 0 (p) @t - -T - - -197.28 417.31 229.46 424.73 @E - - -[0.07199 0.00000 0.00000 0.07199 197 418] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Courier 125.00 z - -0 0 (\133) @t - -60 0 (a) @t - -120 0 (-) @t - -180 0 (z) @t - -240 0 (\135) @t - -300 0 (\134) @t - -360 0 (r) @t - -T - - -251.28 417.31 283.18 424.73 @E - - -[0.07199 0.00000 0.00000 0.07199 251 418] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Courier 125.00 z - -0 0 (\133) @t - -60 0 (a) @t - -120 0 (-) @t - -180 0 (z) @t - -240 0 (\135) @t - -300 0 (\134) @t - -360 0 (i) @t - -T - - -305.28 417.31 337.54 424.73 @E - - -[0.07199 0.00000 0.00000 0.07199 305 418] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Courier 125.00 z - -0 0 (\133) @t - -60 0 (a) @t - -120 0 (-) @t - -180 0 (z) @t - -240 0 (\135) @t - -300 0 (\134) @t - -360 0 (n) @t - -T - - -359.28 417.31 391.39 424.73 @E - - -[0.07199 0.00000 0.00000 0.07199 359 418] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Courier 125.00 z - -0 0 (\133) @t - -60 0 (a) @t - -120 0 (-) @t - -180 0 (z) @t - -240 0 (\135) @t - -300 0 (\134) @t - -360 0 (t) @t - -T - - -413.50 417.31 434.66 424.15 @E - - -[0.07199 0.00000 0.00000 0.07199 413 418] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Courier 125.00 z - -0 0 (\133) @t - -60 0 (a) @t - -120 0 (-) @t - -180 0 (z) @t - -240 0 (\135) @t - -T - - -193.03 475.78 214.20 482.62 @E - - -[0.07199 0.00000 0.00000 0.07199 193 476] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Courier 125.00 z - -0 0 (\133) @t - -60 0 (a) @t - -120 0 (-) @t - -180 0 (z) @t - -240 0 (\135) @t - -T - - -193.03 367.78 214.20 374.76 @E - - -[0.07199 0.00000 0.00000 0.07199 193 368] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Courier 125.00 z - -0 0 (\133) @t - -60 0 (0) @t - -120 0 (-) @t - -180 0 (9) @t - -240 0 (\135) @t - -T - - -192.74 313.78 227.45 320.76 @E - - -[0.07199 0.00000 0.00000 0.07199 193 314] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Courier 125.00 z - -0 0 (\133) @t - -60 0 (0) @t - -120 0 (-) @t - -180 0 (9) @t - -240 0 (a) @t - -300 0 (-) @t - -360 0 (f) @t - -420 0 (\135) @t - -T - - -52.70 412.56 107.21 429.41 @E - - -[0.07199 0.00000 0.00000 0.07199 53 422] @tm - - 0 O 0 @g - -0.00 0.00 0.00 1.00 k - -e - -/_Courier 125.00 z - -0 0 (\133) @t - -60 0 (\134) @t - -120 0 (0) @t - -180 0 (0) @t - -240 0 (0) @t - -300 0 (-) @t - -360 0 (\134) @t - -420 0 (3) @t - -480 0 (7) @t - -540 0 (7) @t - -600 0 (\135) @t - -660 0 (\134) @t - -0 -125 (\133) @t - -60 -125 (0) @t - -120 -125 (-) @t - -180 -125 (9) @t - -240 -125 (a) @t - -300 -125 (-) @t - -360 -125 (z) @t - -420 -125 (\135) @t - -T - - -54.00 391.54 94.54 401.83 @E - -0 J 0 j [] 0 d 0 R 0 @G - -0.00 0.00 0.00 1.00 K - -0 0.22 0.22 0.00 @w - - -54.00 396.65 m - -55.51 398.16 56.52 401.83 58.54 401.18 c - -62.50 399.89 63.29 392.18 67.54 392.18 c - -71.71 392.18 72.29 401.18 76.54 401.18 c - -80.71 401.18 81.50 393.55 85.54 392.18 c - -87.48 391.54 88.27 396.58 90.00 396.65 C - -93.17 396.65 L - -S - -@j - -0.00 0.00 0.00 1.00 K - -0.00 0.00 0.00 1.00 k - -0 @g - -0 @G - -[] 0 d 0 J 0 j - -0 R 0 O 0 1.01 1.01 0 @w - -90.00 399.17 m - -93.96 396.65 L - -90.00 394.13 L - -S - -@J - -@rs - -@rs - - - end - -%%EndDocument - @endspecial 108 1136 a Fr(Figure)21 b(3:)32 b(A)20 b(DF)-5 -b(A)21 b(for)f(the)i(sample)d(sp)q(eci\014cation)j(in)e(Figure)g(2.)39 -b(State)21 b(0)f(is)h(the)g(start)g(state.)108 1186 y(Accepting)d -(states)g(are)g(lab)q(eled)e(with)h(the)g(n)o(um)o(b)q(er)f(of)g(the)i -(rule)f(that)g(they)g(matc)o(h.)26 b(F)m(or)16 b(example,)108 -1236 y(state)i(10)d(accepts)j(rule)f(2.)25 b(T)m(ransitions)16 -b(di\013ering)g(only)g(b)o(y)g(lab)q(el)f(are)i(represen)o(ted)i(with)d -(the)h(same)108 1286 y(arc.)i(F)m(or)12 b(example,)f(state)j(0)e(has)h -(transitions)g(to)f(state)i(6)e(on)h(all)e(of)i(the)g(follo)o(wing)d(c) -o(haracters:)19 b Fm(a)p Fr(,)13 b Fl(:)7 b(:)g(:)n Fr(,)108 -1336 y Fm(o)p Fr(,)14 b Fm(q)p Fr(,)f Fl(:)7 b(:)g(:)12 -b Fm(z)p Fr(.)21 1469 y(RE2C)i(is)g(di\013eren)o(t)h(from)e(most)g -(other)i(scanner)h(generators)f(in)f(that)h(the)g(user)g(m)o(ust)f(pro) -o(vide)g(the)h(input)f(bu\013ering)-42 1519 y(mec)o(hanism)i(for)h(the) -i(scanner;)h(the)f(generated)g(co)q(de)g(simply)c(assumes)j(that)g(the) -g(user)h(has)f(de\014ned)h(three)g(p)q(oin)o(ters:)-42 -1569 y Fm(YYCURSOR)p Fr(,)9 b Fm(YYLIMIT)g Fr(and)h Fm(YYMARKER)p -Fr(,)e(and)i(a)h(routine)f Fm(YYFILL\()p Fl(n)p Fm(\))p -Fr(.)15 b(Before)d(executing)f(the)g(generated)h(co)q(de,)f -Fm(YYCURSOR)-42 1619 y Fr(and)h Fm(YYLIMIT)d Fr(m)o(ust)h(b)q(e)i(set)g -(to)g(p)q(oin)o(t)e(to)h(the)h(\014rst)g(and)f(one)h(past)f(the)h(last) -f(c)o(haracter)i(in)e(the)g(bu\013er,)i(resp)q(ectiv)o(ely)m(.)18 -b(After)-42 1669 y(a)f(tok)o(en)g(is)f(recognized,)i(and)f(b)q(efore)g -(an)o(y)f(action)g(is)h(executed,)i Fm(YYCURSOR)c Fr(is)h(set)i(to)e(p) -q(oin)o(t)g(to)h(just)g(past)g(the)g(tok)o(en.)-42 1718 -y Fm(YYFILL)d Fr(will)g(b)q(e)i(called)f(as)g(the)h(bu\013er)h(needs)f -(\014lling;)e(at)h(least)h Fl(n)f Fr(additional)e(input)i(c)o -(haracters)i(should)e(b)q(e)h(pro)o(vided.)-42 1768 y(When)g -Fm(YYFILL)d Fr(is)i(called,)f Fm(YYCURSOR)f Fr(will)h(p)q(oin)o(t)g(to) -h(the)g(next)h(c)o(haracter)g(to)f(b)q(e)g(scanned)h(and)f -Fm(YYMARKER)p Fr(,)d(if)i(set,)i(will)-42 1818 y(p)q(oin)o(t)f(to)f(a)g -(p)q(ossible)h(bac)o(ktrac)o(king)g(p)q(oin)o(t)f(in)g(the)h(bu\013er.) -21 b Fm(YYFILL)14 b Fr(m)o(ust)f(up)q(date)j Fm(YYLIMIT)p -Fr(,)c(and)j(p)q(ossibly)f Fm(YYCURSOR)-42 1868 y Fr(and)f -Fm(YYMARKER)f Fr(b)q(efore)h(returning.)18 b(T)o(ypically)12 -b Fm(YYCURSOR)p Fr(,)f Fm(YYLIMIT)p Fr(,)g Fm(YYMARKER)p -Fr(,)f(and)j Fm(YYFILL\()p Fl(n)p Fm(\))e Fr(will)h(b)q(e)h(de\014ned)h -(as)-42 1918 y(macros.)-42 2034 y Fj(2.1)56 b(Things)19 -b(That)g(RE2C)f(Do)r(esn't)g(Pro)n(vide)-42 2111 y Fr(RE2C)11 -b(do)q(esn't)h(pro)o(vide)f(man)o(y)e(things)j(a)o(v)n(ailable)d(in)h -(more)h(con)o(v)o(en)o(tional)f(scanner)j(generators)f(including)e -(default)h(rules,)-42 2160 y(end-of-input)17 b(pseudo-tok)o(ens,)i(and) -e(bu\013er)i(managemen)o(t)14 b(routines.)29 b(All)17 -b(of)f(these)j(m)o(ust)d(b)q(e)i(supplied)g(b)o(y)f(the)h(user.)-42 -2210 y(Rather)10 b(than)g(b)q(eing)f(a)g(handicap,)h(this)g(allo)o(ws)e -(RE2C-generated)i(scanners)h(to)f(b)q(e)g(tailored)f(to)g(almost)f(an)o -(y)h(en)o(vironmen)o(t.)-42 2260 y(F)m(or)k(example,)f(the)i(scanner)h -(de\014ned)f(in)f(Figure)h(1)f(compiles)f(in)o(to)h(32)g(b)o(ytes)h(of) -e(i486)h(co)q(de)h(\(using)f(W)m(atcom)e(C)j(9.5\);)e(the)-42 -2310 y(same)g(size)h(as)f(an)g(equiv)n(alen)o(t)g(hand-co)q(ded)h -(routine.)k(Most)c(other)g(scanner)g(generators)h(cannot)e(pro)q(duce)h -(scanners)h(that)-42 2360 y(are)k(comp)q(etitiv)o(e)e(with)g(hand-co)q -(ded)i(analyzers)f(in)f(this)h(case.)28 b(F)m(urther,)18 -b(it)f(is)g(not)f(o)o(v)o(erly)h(di\016cult)f(to)h(implem)o(en)o(t)e(a) --42 2409 y(more)c(traditional)f(scanner)j(using)f(RE2C.)e(F)m(or)h -(example,)g(App)q(endix)h(A)f(con)o(tains)h(the)g(supp)q(ort)h(co)q(de) -f(for)f(the)i(C)e(scanner)-42 2459 y(b)q(enc)o(hmark)o(ed)j(in)f(T)m -(able)g(1.)k(Note)d(that)g(this)f(co)q(de)h(allo)o(ws)f(for)g -(arbitrarily)f(long)h(con)o(tiguous)g(tok)o(ens)h(and)f(pro)o(vides)h -(line)-42 2509 y(and)g(column)e(n)o(um)o(b)q(er)i(information.)923 -2748 y(3)p eop -%%Page: 4 4 -4 3 bop -42 195 a Fs(3)67 b(Generating)23 b(Directly)h(Executable)g -(Scanners)-42 286 y Fr(As)14 b(demonstrated)g(b)o(y)f(GLA)g([7)o(])g -(generating)h(directly)g(executable)g(co)q(de)g(instead)g(of)f(tables)h -(can)f(result)i(in)e(m)o(uc)o(h)f(faster)-42 336 y(scanners.)20 -b(Ho)o(w)o(ev)o(er,)13 b(to)g(ac)o(hiev)o(e)h(this)f(sp)q(eed,)h -(GLA-generated)h(scanners)f(mak)o(e)e(some)g(assumptions)h(ab)q(out)g -(the)h(input)-42 386 y(and)i(place)g(certain)g(restrictions)g(on)g(tok) -o(ens)680 371 y Fq(4)699 386 y Fr(.)23 b(In)15 b(this)h(section)g(w)o -(e)g(will)e(sho)o(w)h(ho)o(w)g(to)h(generate)g(directly)g(executable) --42 435 y(scanners)22 b(whic)o(h)d(not)g(only)g(a)o(v)o(oid)f(suc)o(h)i -(restrictions,)h(but)f(are)g(also)e(faster)i(and)f(usually)g(smaller.) -33 b(The)19 b(approac)o(h)-42 485 y(presen)o(ted)f(here)f(has)f(the)g -(added)g(b)q(ene\014t)h(that)f(ev)o(en)g(faster)h(scanners)g(can)f(b)q -(e)g(easily)f(b)q(e)i(created,)g(at)e(the)i(exp)q(ense)g(of)-42 -535 y(increased)f(co)q(de)e(size,)h(b)o(y)e(using)h(a)f(tec)o(hnique)i -(akin)e(to)h(lo)q(op)f(unrolling.)-42 651 y Fj(3.1)56 -b(Constructing)19 b(a)g(DF)-6 b(A)-42 728 y Fr(The)15 -b(\014rst)g(step)g(in)f(generating)h(a)f(directly)g(executable)h -(scanner)h(is)e(to)g(construct)i(a)e(DF)-5 b(A)15 b(that)f(recognizes)i -(the)e(regular)-42 778 y(expressions)g(in)e(the)h(sp)q(eci\014cation.) -18 b(Figure)12 b(3)g(presen)o(ts)i(a)e(DF)-5 b(A)13 b(that)f -(recognizes)h(the)g(regular)f(expressions)i(in)e(Figure)g(2.)-42 -828 y(One)18 b(p)q(ossible)f(algorithm)e(for)h(constructing)i(suc)o(h)g -(a)e(DF)-5 b(A)18 b(can)f(b)q(e)g(found)g(in)f([1].)26 -b(Giv)o(en)16 b(suc)o(h)i(a)f(DF)-5 b(A,)16 b(the)i(task)f(of)p --42 864 780 2 v 5 891 a Fn(4)22 903 y Fo(These)11 b(assumptions)e(and)h -(restrictions)f(are)i(discussed)e(in)j(more)e(detail)g(in)h(Sections)e -(3.3.1)i(and)f(5.1.)923 2748 y Fr(4)p eop -%%Page: 5 5 -5 4 bop -42 195 a Fr(scanning)14 b(the)h(input)f(can)g(b)q(e)g -(expressed)i(as)e(follo)o(ws:)125 278 y(Starting)i(from)g(the)i(start)g -(state,)g(mo)o(v)o(e)e(from)f(state)j(to)f(state)h(along)e(transitions) -i(lab)q(eled)f(with)g(con-)62 328 y(secutiv)o(e)f(c)o(haracters)h(from) -c(the)i(input.)21 b(When)15 b(no)f(further)i(transitions)f(can)g(b)q(e) -g(made,)e(bac)o(ktrac)o(k)i(to)g(the)62 378 y(last)h(accepting)g -(state,)h(sa)o(y)f Fl(q)q Fr(.)24 b(The)16 b(path)g(to)f -Fl(q)i Fr(sp)q(ells)g(the)f(next)g(tok)o(en)g(and)g(the)g(rule)h(asso)q -(ciated)f(with)g Fl(q)62 428 y Fr(determines)e(the)h(co)q(de)g(to)e(b)q -(e)i(executed.)-42 511 y(As)d(a)e(result,)h(the)h(problem)d(of)h -(generating)h(scanners)h(essen)o(tially)f(reduces)h(to)f(the)g(problem) -e(of)h(generating)h(an)f(executable)-42 560 y(represen)o(tation)16 -b(for)d(a)h(DF)-5 b(A.)-42 677 y Fj(3.2)56 b(Generating)18 -b(Co)r(de)-42 753 y Fr(If)g(w)o(e)g(assume)g(that)g(the)h(input)f(is)g -(en)o(tirely)g(con)o(tained)g(in)g(a)f(single)h(bu\013er)h(then)g -(generating)f(co)q(de)h(for)f(the)g(DF)-5 b(A)19 b(is)-42 -803 y(relativ)o(ely)13 b(straigh)o(tforw)o(ard,)f(as)h(is)g -(illustrated)g(b)o(y)f(the)i(co)q(de)g(templates)e(in)h(Figure)g(4.)35 -b(Note)14 b(that)f(the)g(only)g(di\013erence)p 575 863 -717 2 v 575 912 2 50 v 856 897 a Fi(Pr)n(olo)n(gue)p -1290 912 V 575 914 717 2 v 575 964 2 50 v 720 949 a Fm(int)21 -b(yyaccept;)p 1290 964 V 575 1014 V 720 999 a(goto)g(M)p -Fi(start)p Fm(;)p 1290 1014 V 575 1063 V 720 1049 a(fin:)g(YYCURSOR)f -(=)i(YYMARKER;)p 1290 1063 V 575 1113 V 720 1098 a(switch\(yyaccept\))p -Fk(f)p 1290 1113 V 575 1163 V 807 1148 a Fl(:)7 b(:)g(:)p -1290 1163 V 575 1213 V 602 1198 a Fm(A)p Fl(n)p Fm(:)93 -b(case)21 b Fl(n)p Fm(:)43 b Fi(action)p Fr(\()p Fl(n)p -Fr(\))p Fm(;)p 1290 1213 V 575 1263 V 807 1248 a Fl(:)7 -b(:)g(:)p 1290 1263 V 575 1313 V 720 1298 a Fk(g)p 1290 -1313 V 575 1362 V 720 1347 a Fi(c)n(o)n(de)15 b(for)g(states)p -1290 1362 V 575 1364 717 2 v 204 1370 720 2 v 204 1420 -2 50 v 346 1405 a(Co)n(de)g(for)f(ac)n(c)n(epting)h(state)p -921 1420 V 204 1421 720 2 v 204 1471 2 50 v 230 1456 -a Fm(L)p Fl(q)q Fm(:)50 b(++YYCURSOR;)p 921 1471 V 204 -1521 V 344 1506 a(yyaccept)20 b(=)h Fi(rule)p Fr(\()p -Fl(q)q Fr(\))p Fm(;)p 921 1521 V 204 1571 V 344 1556 -a(YYMARKER)f(=)h(YYCURSOR;)p 921 1571 V 204 1621 V 230 -1606 a(M)p Fl(q)q Fm(:)50 b(switch\(*YYCURSO)o(R\))p -Fk(f)p 921 1621 V 204 1670 V 431 1655 a Fl(:)7 b(:)g(:)p -921 1670 V 204 1720 V 387 1705 a Fm(case)21 b Fl(c)p -Fm(:)43 b(goto)21 b(L)p Fi(goto)q Fr(\()p Fl(q)q(;)7 -b(c)p Fr(\))p Fm(;)p 921 1720 V 204 1770 V 431 1755 a -Fl(:)g(:)g(:)p 921 1770 V 204 1820 V 387 1805 a Fm(default:)42 -b(goto)21 b(fin;)p 921 1820 V 204 1870 V 344 1855 a Fk(g)p -921 1870 V 204 1871 720 2 v 944 1370 V 944 1420 2 50 -v 1045 1405 a Fi(Co)n(de)15 b(for)g(non-ac)n(c)n(epting)h(state)p -1662 1420 V 944 1421 720 2 v 944 1471 2 50 v 971 1456 -a Fm(L)p Fl(q)q Fm(:)49 b(++YYCURSOR;)p 1662 1471 V 944 -1521 V 1662 1521 V 944 1571 V 1662 1571 V 944 1621 V -971 1606 a(M)p Fl(q)q Fm(:)g(switch\(*YYCURSOR\))p Fk(f)p -1662 1621 V 944 1670 V 1172 1655 a Fl(:)7 b(:)g(:)p 1662 -1670 V 944 1720 V 1128 1705 a Fm(case)21 b Fl(c)p Fm(:)43 -b(goto)21 b(L)p Fi(goto)p Fr(\()p Fl(q)q(;)7 b(c)p Fr(\))p -Fm(;)p 1662 1720 V 944 1770 V 1172 1755 a Fl(:)g(:)g(:)p -1662 1770 V 944 1820 V 1128 1805 a Fm(default:)42 b(goto)21 -b(fin;)p 1662 1820 V 944 1870 V 1084 1855 a Fk(g)p 1662 -1870 V 944 1871 720 2 v 108 1946 a Fr(Figure)g(4:)30 -b(Directly)20 b(executable)h(scanner.)38 b(The)20 b(co)q(de)h -(generated)g(for)f(a)g(scanner)h(consists)g(of)f(a)108 -1996 y(prologue)12 b(follo)o(w)o(ed)f(b)o(y)h(co)q(de)i(for)e(eac)o(h)h -(state.)18 b Fi(start)11 b Fr(is)i(the)g(start)g(state.)18 -b Fi(action)p Fr(\()p Fl(n)p Fr(\))13 b(denotes)h(the)f(co)q(de)108 -2045 y(asso)q(ciated)h(with)e(rule)h Fl(n)p Fr(,)f Fi(goto)p -Fr(\()p Fl(q)q(;)7 b(c)p Fr(\))12 b(denotes)i(the)f(state)g(reac)o(hed) -h(from)d(state)i Fl(q)h Fr(along)d(the)i(transition)108 -2095 y(lab)q(eled)18 b(with)e Fl(c)h Fr(and)g Fi(rule)p -Fr(\()p Fl(q)q Fr(\))g(denotes)i(the)e(rule)h(asso)q(ciated)g(with)e -(state)i Fl(q)q Fr(.)28 b Fm(yyaccept)16 b Fr(is)h(used)h(to)108 -2145 y(sa)o(v)o(e)d(bac)o(ktrac)o(king)e(information.)i(The)g -Fm(M)p Fr(-lab)q(els)e(will)f(b)q(e)j(used)g(in)e(section)i(3.4.2.)-42 -2245 y(b)q(et)o(w)o(een)j(the)f(templates)f(for)g(accepting)g(and)h -(non-accepting)f(states)i(is)e(that)g(the)h(accepting)g(states)g(ha)o -(v)o(e)f(additional)-42 2294 y(co)q(de)e(to)f(sa)o(v)o(e)g(bac)o(ktrac) -o(king)f(information.)j(Figure)e(5)g(sho)o(ws)g(co)q(de)h(that)f(migh)o -(t)d(b)q(e)k(generated)g(for)f(state)g(1)g(in)f(Figure)h(3.)-42 -2460 y Fj(3.3)56 b(Bu\013ering)-42 2537 y Fr(Complications)13 -b(arise)i(when)g(the)g(input)g(is)g(not)f(con)o(tained)h(in)g(a)f -(single)g(bu\013er:)21 b(additional)13 b(co)q(de)j(is)e(needed)j(for)d -(\014lling)-42 2587 y(the)h(bu\013er)g(as)f(necessary)m(.)923 -2748 y(5)p eop -%%Page: 6 6 -6 5 bop 647 188 a Fm(L1:)49 b(++YYCURSOR;)762 238 y(yyaccept)20 -b(=)i(4;)762 288 y(YYMARKER)e(=)i(YYCURSOR;)647 338 y(M1:)49 -b(switch\(*YYCURSOR\))p Fk(f)806 388 y Fm(case)21 b('a':)43 -b(goto)21 b(L6;)849 438 y Fl(:)7 b(:)g(:)806 487 y Fm(case)21 -b('q':)43 b(goto)21 b(L6;)806 537 y(case)g('r':)43 b(goto)21 -b(L2;)806 587 y(case)g('s':)43 b(goto)21 b(L6;)849 637 -y Fl(:)7 b(:)g(:)806 687 y Fm(case)21 b('z':)43 b(goto)21 -b(L6;)806 736 y(default:)42 b(goto)21 b(fin;)762 786 -y Fk(g)690 876 y Fr(Figure)14 b(5:)k(Co)q(de)c(for)g(state)g(1.)505 -968 y Fm(L6:)50 b(++YYCURSOR;)621 1018 y(if\(YYLIMIT)19 -b(==)j(YYCURSOR\))e(YYFILL\(1\);)621 1068 y(yyaccept)g(=)h(4;)621 -1118 y(YYMARKER)f(=)h(YYCURSOR;)505 1168 y(M6:)50 b(switch\(*YYCURSO)o -(R\))p Fk(f)708 1217 y Fl(:)7 b(:)g(:)621 1267 y Fk(g)690 -1357 y Fr(Figure)14 b(6:)k(Co)q(de)c(for)g(state)g(6.)-42 -1489 y Fh(3.3.1)48 b(The)16 b(Sen)o(tinel)c(Metho)q(d)-42 -1566 y Fr(Most)20 b(scanner)g(generators)g(use)g(the)g(sen)o(tinel)f -(metho)q(d)g([1)o(])f(to)h(determine)g(when)h(the)f(bu\013er)i(needs)f -(\014lling.)32 b(In)19 b(the)-42 1616 y(simplest)d(case,)h(a)f(sym)o(b) -q(ol)f(that)h(do)q(es)i(not)e(app)q(ear)h(in)f(v)n(alid)f(input)h(is)g -(c)o(hosen)h(as)g(the)g(sen)o(tinel)g(c)o(haracter.)26 -b(An)17 b(extra)-42 1666 y(state)12 b(is)f(added)g(to)g(the)h(DF)-5 -b(A)11 b(and)g(transitions)f(to)h(this)g(state)h(on)f(the)g(sen)o -(tinel)h(sym)o(b)q(ol)d(are)i(added)g(to)g(the)h(original)d(states.)-42 -1715 y(When)16 b(the)g(DF)-5 b(A)16 b(arriv)o(es)f(in)g(this)h(new)f -(state)i(it)e(is)g(time)f(to)h(re\014ll)g(the)h(bu\013er.)23 -b(After)16 b(the)g(bu\013er)h(is)e(re\014lled,)g(scanning)-42 -1765 y(m)o(ust)h(b)q(e)g(restarted)i(in)e(the)h(previous)f(state.)26 -b(Unfortunately)m(,)16 b(this)g(is)g(not)g(p)q(ossible)g(with)g(the)h -(approac)o(h)f(outlined)g(in)-42 1815 y(Figure)j(4:)26 -b(the)19 b(necessary)h(information)15 b(is)j(simply)e(not)i(a)o(v)n -(ailable.)28 b(Co)q(de)19 b(could)f(b)q(e)g(added)h(to)f(eac)o(h)g -(state)h(to)f(sa)o(v)o(e)-42 1865 y(the)e(necessary)g(information)c -(but)j(this)g(w)o(ould)e(result)j(in)e(slo)o(w)o(er)h(and)f(larger)h -(scanners.)22 b(GLA)14 b(solv)o(es)h(this)f(problem)g(b)o(y)-42 -1915 y(ensuring)i(that)g(the)f(sen)o(tinel)h(only)f(gets)g(inserted)i -(b)q(et)o(w)o(een)g(tok)o(ens:)k(if)14 b(this)i(is)f(the)h(case,)g(the) -g(scanner)g(can)g(alw)o(a)o(ys)e(b)q(e)-42 1964 y(restarted)k(from)c -(the)j(start)f(state.)25 b(T)m(o)15 b(ensure)i(that)f(the)h(sen)o -(tinel)f(only)f(gets)i(inserted)g(b)q(et)o(w)o(een)g(tok)o(ens,)f(GLA)g -(allo)o(ws)-42 2014 y(newline)g(\(ASCI)q(I)g(LF\))g(c)o(haracters)h(to) -f(app)q(ear)g(only)f(at)g(the)h(end)g(of)f(a)h(tok)o(en)g(and)f -(disallo)o(ws)f(the)i(bu\013ering)g(of)f(partial)-42 -2064 y(lines)39 2049 y Fq(5)58 2064 y Fr(.)-42 2172 y -Fh(3.3.2)48 b(Bu\013ering)-42 2249 y Fr(RE2C-generated)17 -b(scanners)h(c)o(hec)o(k)f(if)e(the)i(bu\013er)g(needs)g(\014lling)e -(simply)f(b)o(y)i(comparing)e Fm(YYCURSOR)g Fr(and)i -Fm(YYLIMIT)p Fr(.)e(A)-42 2298 y(metho)q(d)d(inspired)g(b)o(y)g(the)h -(mec)o(hanism)d(used)j(to)f(guard)g(against)g(stac)o(k)g(o)o(v)o -(er\015o)o(w)g(in)g([17)o(])1365 2283 y Fq(6)1394 2298 -y Fr(is)g(used)i(to)e(reduce)h(the)g(amoun)o(t)-42 2348 -y(of)i(c)o(hec)o(king.)21 2398 y(Chec)o(ks)j(are)g(only)f(inserted)h -(in)f(certain)h(k)o(ey)f(states.)27 b(These)18 b(c)o(hec)o(ks)g(simply) -c(ensure)k(that)e(there)i(is)e(enough)h(input)-42 2448 -y(in)g(the)g(bu\013er)h(for)f(the)h(scan)f(to)g(pro)q(ceed)h(un)o(til)e -(the)i(next)f(k)o(ey)g(state.)28 b(F)m(or)17 b(example,)f(in)g(the)i -(DF)-5 b(A)17 b(of)f(Figure)h(3)g(it)g(is)-42 2498 y(su\016cien)o(t)e -(to)e(c)o(hec)o(k)i(that)f(there)h(are)g(at)e(least)h(6)g(c)o -(haracters)h(in)f(the)g(bu\013er)h(when)f(it)g(starts,)g(and)g(that)g -(there)h(is)f(at)f(least)-42 2547 y(one)i(c)o(haracter)g(in)e(the)i -(bu\013er)g(when)f(the)h(DF)-5 b(A)14 b(is)g(in)f(states)j(6,)d(8,)g -(or)h(10.)k(No)13 b(other)i(c)o(hec)o(ks)g(are)g(required.)k(The)14 -b(c)o(hec)o(ks)-42 2597 y(inserted)i(in)d(k)o(ey)h(states)h(are)f(of)g -(the)g(form)923 2748 y(6)p eop -%%Page: 7 7 -7 6 bop 62 195 a Fm(if\(\(YYLIMIT)20 b(-)h(YYCURSOR\))f(<)i -Fl(n)p Fm(\))f(YYFILL\()p Fl(n)p Fm(\);)-42 278 y Fr(where)c -Fl(n)f Fr(is)f(the)i(maxim)n(um)11 b(n)o(um)o(b)q(er)k(of)g(c)o -(haracters)i(that)f(can)g(b)q(e)g(consumed)g(b)q(efore)g(another)g(k)o -(ey)g(state)g(is)g(reac)o(hed.)-42 328 y(F)m(or)e(example,)e(Figure)i -(6)g(sho)o(ws)g(the)g(co)q(de)h(generated)g(for)f(state)h(6)e(in)h -(Figure)g(3.)21 378 y(A)h(set)g(of)f(k)o(ey)h(states)h(can)f(b)q(e)g -(determined)g(b)o(y)f(disco)o(v)o(ering)h(the)g(strongly-connected)h -(comp)q(onen)o(ts)e(\(SCCs\))i(of)e(the)-42 428 y(DF)-5 -b(A.)12 b(An)h(SCC)f(is)f(a)h(maxima)o(l)d(subset)k(of)f(states)h(suc)o -(h)g(that)f(there)h(exists)g(a)f(path)g(from)e(an)o(y)i(state)g(in)g -(the)h(subset)g(to)f(an)o(y)-42 477 y(other.)24 b(The)16 -b(set)g(of)f(k)o(ey)h(states)g(consists)h(of)e(all)f(of)h(the)h(states) -h(in)e(non-trivial)f(SCCs,)h(together)i(with)e(the)h(start)g(state.)-42 -527 y(Note)d(that)f(for)g(eac)o(h)g(SCC)g Fl(S)r Fr(,)h(w)o(e)f -(actually)g(only)f(ha)o(v)o(e)h(to)g(include)g(a)f(subset)j(of)d -(states)j(of)d Fl(S)k Fr(suc)o(h)e(that)f(when)g(the)h(subset)-42 -577 y(is)f(remo)o(v)o(ed,)f Fl(S)k Fr(b)q(ecomes)d(acyclic.)17 -b(Indeed,)c([17)o(])e(describ)q(es)j(a)e(simple)e(heuristic)j(for)e(c)o -(ho)q(osing)h(suc)o(h)g(a)g(subset.)18 b(Ho)o(w)o(ev)o(er,)-42 -627 y(since)c(in)f(practice)h(most)d(of)i(the)g(\(non-trivial\))f(SCCs) -h(encoun)o(tered)i(will)c(consist)j(of)e(a)h(single)g(state)g(the)h -(curren)o(t)g(v)o(ersion)-42 677 y(of)f(RE2C)g(simply)e(includes)j(all) -d(states)k(in)e(non-trivial)e(SCCs)943 662 y Fq(7)962 -677 y Fr(.)18 b(An)13 b(algorithm)e(giv)o(en)h(in)h([3)o(])g(w)o(as)g -(used)h(to)f(compute)g(the)-42 726 y(SCCs.)-42 843 y -Fj(3.4)56 b(Optimizations)-42 919 y Fr(Ev)o(en)17 b(go)q(o)q(d)f -(optimizing)e(C)i(compilers)f(can)i(b)q(e)g(coaxed)f(in)o(to)g -(generating)g(m)o(uc)o(h)f(smaller)g(and)h(sligh)o(tly)f(faster)i(co)q -(de)g(if)-42 969 y(some)c(transformations)g(are)h(\014rst)h(applied)e -(to)h(the)g(generated)i(co)q(de.)-42 1077 y Fh(3.4.1)48 -b(Eliminatin)o(g)13 b(Bac)o(ktrac)o(king)-42 1154 y Fr(Consider)19 -b(state)g(1)f(in)g(the)h(DF)-5 b(A)18 b(in)g(Figure)g(3.)31 -b(Note)19 b(that)f(since)h(all)e(of)h(the)h(transitions)f(from)e(state) -j(1)f(reac)o(h)h(only)-42 1203 y(accepting)f(states,)h(bac)o(ktrac)o -(king)f(information)c(do)q(es)k(not)f(need)i(to)e(b)q(e)h(sa)o(v)o(ed)g -(if)e(the)i(co)q(de)g(for)f(the)h Fm(default)e Fr(case)j(is)-42 -1253 y(c)o(hanged)h(to)e(go)g(directly)h(to)g(the)g(co)q(de)h(asso)q -(ciated)f(with)f(state)i(1.)32 b(The)19 b(result)h(of)e(this)h -(optimization)d(is)i(sho)o(wn)h(in)-42 1303 y(Figure)d(7.)48 -b(More)17 b(generally)m(,)e(this)h(optimization)d(can)j(b)q(e)g -(applied)f(to)h(all)f(accepting)h(states)h(whic)o(h)f(ha)o(v)o(e)g -(transitions)647 1396 y Fm(L1:)49 b(++YYCURSOR;)647 1446 -y(M1:)g(switch\(*YYCURSOR\))p Fk(f)806 1495 y Fm(case)21 -b('a':)43 b(goto)21 b(L6;)849 1545 y Fl(:)7 b(:)g(:)806 -1595 y Fm(case)21 b('q':)43 b(goto)21 b(L6;)806 1645 -y(case)g('r':)43 b(goto)21 b(L2;)806 1695 y(case)g('s':)43 -b(goto)21 b(L6;)849 1744 y Fl(:)7 b(:)g(:)806 1794 y -Fm(case)21 b('z':)43 b(goto)21 b(L6;)806 1844 y(default:)42 -b(goto)21 b(A4;)762 1894 y Fk(g)419 1983 y Fr(Figure)14 -b(7:)k(Co)q(de)c(for)g(state)g(1)g(with)g(bac)o(ktrac)o(king)f -(eliminated.)-42 2083 y(only)h(to)f(accepting)i(states.)-42 -2191 y Fh(3.4.2)48 b(Optimizing)12 b Fm(switch)p Fh(es)-42 -2268 y Fr(Most)21 b(C)g(compilers)f(will)f(generate)j(either)f(a)g -(jump)e(table)h(or)h(a)g(set)g(of)f Fm(if)g Fr(statemen)o(ts)h(for)g(a) -f Fm(switch)g Fr(statemen)o(t)-42 2317 y(dep)q(ending)e(on)e(the)i -(distribution)e(of)g(the)i Fm(case)e Fr(lab)q(els.)26 -b(In)17 b(man)o(y)e(compilers)h(the)h(decision)g(as)g(to)g(whic)o(h)g -(metho)q(d)f(to)-42 2367 y(use)j(is)f(biased)f(to)o(w)o(ards)h -(generating)g(jump)e(tables)i(since)g(in)g(most)e(cases)j(this)f -(results)h(in)e(faster)h(alb)q(eit)f(larger)h(co)q(de.)-42 -2417 y(Ho)o(w)o(ev)o(er,)c(exp)q(erience)h(with)e(directly)h -(executable)h(scanners)g(has)e(sho)o(wn,)g(that)g(replacing)h(man)o(y)d -(of)i(these)h(jump)e(tables)p -42 2452 780 2 v 5 2478 -a Fn(5)22 2490 y Fo(If)f(the)g(input)f(con)o(tains)g(no)h(newlines,)f -(a)h(GLA)h(scanner)e(will)h(attempt)f(to)h(bu\013er)f(the)g(en)o(tire)g -(input)h(stream.)5 2518 y Fn(6)22 2530 y Fo(The)h(problem)d(of)i -(detecting)e(stac)o(k)h(o)o(v)o(er\015o)o(w)g(in)i(LR)f(parsers)f(is)i -(probably)d(b)q(est)i(left)f(to)h(hardw)o(are)f(mec)o(hanisms)f([12)o -(].)5 2558 y Fn(7)22 2569 y Fo(It)i(should)f(b)q(e)h(noted)f(that)g -(\014nding)f(the)i(minimal)e(set)i(of)g(states)f(to)h(remo)o(v)o(e)f -(from)g(an)h(SCC)h(in)f(order)f(to)h(render)f(it)h(acyclic)e(is)j -(equiv)n(alen)o(t)-42 2609 y(to)g(the)e(FEEDBA)o(CK)j(VER)m(TEX)h(SET)d -(problem)f(whic)o(h)h(is)g(NP-complete)e([6].)923 2748 -y Fr(7)p eop -%%Page: 8 8 -8 7 bop -42 195 a Fr(with)12 b Fm(if)g Fr(statemen)o(ts)g(results)h(in) -f(scanners)i(whic)o(h)d(are)i(m)o(uc)o(h)e(smaller,)f(and)i -(surprisingly)m(,)f(in)h(some)f(cases)i(sligh)o(tly)e(faster)-42 -245 y(as)h(w)o(ell)78 230 y Fq(8)96 245 y Fr(.)17 b(As)c(a)e(result,)h -(the)h(capabilit)o(y)d(of)h(replacing)g(a)h Fm(switch)e -Fr(statemen)o(t)i(with)f Fm(if)g Fr(statemen)o(ts)h(w)o(as)g(added)g -(to)f(RE2C.)21 295 y(RE2C)j(bases)j(its)e(decision)g(on)g(whether)i(to) -e(generate)i(a)d Fm(switch)g Fr(statemen)o(t)i(or)f(to)g(replace)h(it)f -(with)g Fm(if)p Fr(s)g(solely)g(on)-42 345 y(the)j(densit)o(y)162 -329 y Fq(9)198 345 y Fr(of)f(the)g Fm(switch)f Fr(statemen)o(t.)27 -b(It)18 b(is)e(surprising)i(that)f(suc)o(h)h(a)e(simple)g(heuristic)i -(w)o(orks)f(w)o(ell.)27 b(F)m(or)16 b(more)-42 394 y(esoteric)h -(applications)e(in)g(whic)o(h)h(the)g(input)f(alphab)q(et)h(is)f(not)h -(a)f(simple)f(in)o(terv)n(al)h(RE2C)g(has)g(the)i(adv)n(an)o(tage)d(in) -h(that)-42 444 y(there)f(is)e(no)g(pro)o(vision)f(for)h(don't)f(care)i -(en)o(tries)g(in)f(a)g Fm(switch)f Fr(statemen)o(t:)17 -b(if)11 b(no)h Fm(case)f Fr(matc)o(hes)h(none)g(of)f(the)i(statemen)o -(ts)-42 494 y(in)i(the)g Fm(switch)e Fr(m)o(ust)g(b)q(e)i(executed.)22 -b(Ho)o(w)o(ev)o(er,)15 b(for)f(the)h(examples)f(in)g(T)m(able)f(1)h -(this)h(is)f(not)h(so:)k(RE2C)14 b(simply)f(do)q(es)i(a)-42 -544 y(b)q(etter)j(job)d(of)g(generating)g(co)q(de)i(for)e -Fm(switch)f Fr(statemen)o(ts)i(than)g(the)g(compiler.)21 -b([18)o(],)15 b([11)o(],)g(and)h([2)o(])f(also)g(address)i(the)-42 -594 y(problem)c(of)g(generating)h(go)q(o)q(d)g(co)q(de)h(for)e -Fm(switch)g Fr(statemen)o(ts.)-42 702 y Fh(Replacing)18 -b Fm(switch)p Fh(es)g(with)g Fm(if)p Fh(s)41 b Fr(When)17 -b(replacing)g(a)f Fm(switch)g Fr(statemen)o(t)h(with)g -Fm(if)f Fr(statemen)o(ts,)i(it)f(is)f(useful)i(to)-42 -751 y(sort)g(the)f Fm(case)p Fr(s)f(b)o(y)h(lab)q(el)f(and)g(then)h -(group)g(them)f(according)h(to)f(rule)h(in)o(to)f(subranges,)i(as)f -(illustrated)f(in)g(Figure)h(8.)-42 801 y(RE2C)c(replaces)h(a)f -Fm(switch)f Fr(with)g(either)i(a)f(linear)f(or)h(binary)g(searc)o(h,)h -(dep)q(ending)f(on)g(the)h(n)o(um)o(b)q(er)e(of)g(subranges)i(in)f(the) -467 894 y Fm(switch\(*YYCURSOR\))p Fk(f)511 944 y Fm(case)21 -b('\\)o(000':)49 b Fl(:)7 b(:)g(:)20 b Fm(case)h('/':)115 -b(goto)21 b(L11;)576 994 y(case)g('0':)431 b(goto)21 -b(L7;)576 1043 y(case)g('1':)49 b Fl(:)7 b(:)g(:)20 b -Fm(case)h('9':)115 b(goto)21 b(L8;)576 1093 y(case)g(':':)49 -b Fl(:)7 b(:)g(:)20 b Fm(case)h('`':)115 b(goto)21 b(L11;)576 -1143 y(case)g('a':)49 b Fl(:)7 b(:)g(:)20 b Fm(case)h('o':)115 -b(goto)21 b(L6;)576 1193 y(case)g('p':)431 b(goto)21 -b(L1;)576 1243 y(case)g('r':)49 b Fl(:)7 b(:)g(:)20 b -Fm(case)h('z':)115 b(goto)21 b(L6;)577 1292 y(case)g(')p -Fk(f)p Fm(':)49 b Fl(:)7 b(:)g(:)20 b Fm(case)h('\\377':)49 -b(goto)21 b(L11;)467 1342 y Fk(g)672 1432 y Fr(Figure)14 -b(8:)j Fm(switch)c Fr(for)g(state)i(0.)-42 1531 y Fm(switch)p -Fr(.)i(If)d(there)h(are)f(only)f(a)h(few)g(subranges)h(a)e(linear)h -(searc)o(h)h(is)f(generated;)g(otherwise,)h(a)e(binary)h(searc)o(h)h -(is)f(used.)21 1581 y(Figure)f(9)f(and)g(Figure)h(10)f(sho)o(w)h -(linear)f(and)h(binary)f(searc)o(hes,)i(resp)q(ectiv)o(ely)m(,)g(that)f -(could)f(b)q(e)h(used)h(to)e(replace)52 b(the)607 1674 -y Fm(if\(*YYCURSOR)19 b(<=)i('/'\))g(goto)g(L11;)607 -1724 y(if\(*YYCURSOR)e(<=)i('0'\))g(goto)g(L7;)607 1773 -y(if\(*YYCURSOR)e(<=)i('9'\))g(goto)g(L8;)607 1823 y(if\(*YYCURSOR)e -(<=)i('`'\))g(goto)g(L11;)607 1873 y(if\(*YYCURSOR)e(==)i('p'\))g(goto) -g(L1;)607 1923 y(if\(*YYCURSOR)e(<=)i('z'\))g(goto)g(L6;)607 -1973 y(goto)g(L11;)477 2062 y Fr(Figure)14 b(9:)k(Linear)c(lo)q(okup)f -(co)q(de)h(sequence)i(for)e(state)h(0.)p -42 2147 780 -2 v 5 2173 a Fn(8)22 2185 y Fo(See)c(T)m(able)g(1)g(for)g(examples.)5 -2213 y Fn(9)22 2225 y Fo(The)h(n)o(um)o(b)q(er)d(of)i(distinct)f -(subranges)f(divided)g(b)o(y)i(the)g(total)f(n)o(um)o(b)q(er)g(of)h -Fg(case)p Fo(s.)923 2748 y Fr(8)p eop -%%Page: 9 9 -9 8 bop 563 188 a Fm(if\(*YYCURSOR)19 b(<=)j('`'\))p -Fk(f)650 238 y Fm(if\(*YYCURSOR)d(<=)j('/'\))f(goto)g(L11;)650 -288 y(if\(*YYCURSOR)e(<=)j('0'\))f(goto)g(L7;)650 338 -y(if\(*YYCURSOR)e(<=)j('9'\))f(goto)g(L8;)650 388 y(goto)g(L11;)563 -438 y Fk(g)h Fm(else)f Fk(f)650 487 y Fm(if\(*YYCURSOR)e(==)j('p'\))f -(goto)g(L1;)650 537 y(if\(*YYCURSOR)e(<=)j('z'\))f(goto)g(L6;)650 -587 y(goto)g(L11;)563 637 y Fk(g)463 726 y Fr(Figure)14 -b(10:)k(Binary)13 b(lo)q(okup)h(co)q(de)g(sequence)i(for)e(state)g(0.) --42 826 y Fm(switch)e Fr(in)g(Figure)h(8.)k(Note)d(in)e(particular)g -(the)i(comparison)d(for)i(the)g(\\)p Fm(p)p Fr(")f(in)g(Figure)h(9.)k -(This)c(optimization)d(eliminates)-42 876 y(a)k(comparison)f(eac)o(h)i -(time)d(it)i(is)g(applied.)k(Also)c(note)h(that)f(no)g(comparisons)f -(are)i(required)g(at)f(the)g(top)g(and)g(b)q(ottom)f(of)-42 -925 y(the)i(range.)-42 1033 y Fh(Simplifyi)o(ng)j Fm(switch)p -Fh(es)40 b Fr(As)19 b(a)f(general)g(rule,)i(b)q(etter)g(replacemen)o(t) -e(co)q(de)h(can)g(b)q(e)g(generated)h(for)e(a)g Fm(switch)f -Fr(if)h(it)-42 1083 y(con)o(tains)g(few)o(er)g(subranges.)31 -b(One)18 b(w)o(a)o(y)f(of)g(reducing)h(the)g(n)o(um)o(b)q(er)f(of)g -(subranges)i(in)e(a)g Fm(switch)p Fr(,)g(at)g(the)i(exp)q(ense)g(of)-42 -1133 y(some)c(sp)q(eed,)j(is)d(to)h(lo)q(cate)g(a)f Fi(b)n(ase)h -Fm(switch)f Fr(whic)o(h)g(is)h(v)o(ery)g(similar)d(and)j(then)g -(replace)h(the)f(co)q(de)h(for)e(all)f(cases)k(whic)o(h)-42 -1183 y(app)q(ear)d(iden)o(tically)d(in)i(the)g(base)h -Fm(switch)d Fr(with)i(a)f Fm(goto)g Fr(to)h(\(the)h(co)q(de)f -(generated)i(for\))d(the)i(base)f Fm(switch)p Fr(.)j(RE2C)c(uses)-42 -1233 y(this)18 b(optimization)d(to)i(go)q(o)q(d)g(adv)n(an)o(tage)g -(when)h(generating)g(co)q(de)g(in)f(the)h(transitions)g(of)f(states)i -(used)f(for)f(matc)o(hing)-42 1282 y(k)o(eyw)o(ords.)i(F)m(or)12 -b(example,)f(note)j(that)f(the)g Fm(switch)p Fr(es)f(for)h(states)h(1)f -(through)g(4)f(di\013er)h(from)f(the)h Fm(switch)f Fr(of)g(state)i(6)e -(only)-42 1332 y(on)i(\\)p Fm(r)p Fr(",)f(\\)p Fm(i)p -Fr(",)g(\\)p Fm(n)p Fr(",)f(and)i(\\)p Fm(t)p Fr(",)f(resp)q(ectiv)o -(ely)m(.)19 b(Figure)14 b(11)f(sho)o(ws)h(the)h(co)q(de)g(generated)g -(for)e(these)j(states.)37 b(Another)15 b(w)o(a)o(y)560 -1425 y Fm(L1:)49 b(++YYCURSOR;)560 1475 y(M1:)g(if\(*YYCURSOR)19 -b(!=)j('r'\))f(goto)g(M6;)560 1525 y(L2:)49 b(++YYCURSOR;)560 -1574 y(M2:)g(if\(*YYCURSOR)19 b(!=)j('i'\))f(goto)g(M6;)560 -1624 y(L3:)49 b(++YYCURSOR;)560 1674 y(M3:)g(if\(*YYCURSOR)19 -b(!=)j('n'\))f(goto)g(M6;)560 1724 y(L4:)49 b(++YYCURSOR;)560 -1774 y(M4:)g(if\(*YYCURSOR)19 b(!=)j('t'\))f(goto)g(M6;)675 -1824 y(goto)g(L5;)444 1913 y Fr(Figure)14 b(11:)j(Co)q(de)d(for)g -(states)h(1{4)e(after)h(all)f(optimizations.)-42 2013 -y(of)h(implemen)o(ting)d(this)j(optimization)e(is)i(to)g(construct)i(a) -e(tunnel)g(automaton)f([9)o(])h(from)e(the)j(DF)-5 b(A,)14 -b(and)g(then)h(generate)-42 2062 y(co)q(de)g(from)d(the)j(tunnel)f -(automaton.)-42 2170 y Fh(Common)i(Sub)q(expression)d(Eliminatio)o(n)38 -b Fr(Man)o(y)14 b(compilers)g(will)f(miss)g(the)i(fact)f(that)h -Fm(*YYCURSOR)d Fr(in)i(Figures)h(9)-42 2220 y(and)e(10)f(should)h(b)q -(e)g(loaded)f(in)o(to)g(a)h(register.)19 b(Most)13 b(can)f(b)q(e)i -(coaxed)f(to)f(do)h(so)g(b)o(y)f(\014rst)i(assigning)e -Fm(*YYCURSOR)e Fr(to)j(a)f(lo)q(cal)-42 2270 y(v)n(ariable.)-42 -2407 y Fs(4)67 b(Exp)r(erimen)n(tal)25 b(Results)-42 -2498 y Fr(T)m(able)16 b(1)h(compares)f(t)o(w)o(o)g(RE2C-generated)h(C)g -(scanners)h(with)e(the)i(\(hand-co)q(ded\))f(lcc)g(scanner)h([5)o(])e -(and)h(comparable)-42 2548 y(GLA-)f(and)g(\015ex-generated)i(scanners)f -(on)f(a)g(v)n(ariet)o(y)g(of)f(platforms.)48 b(It)16 -b(rep)q(orts)i(the)e(times)f(in)h(seconds)i(required)f(b)o(y)-42 -2598 y(the)e(v)n(arious)e(scanners)i(to)e(scan)h(ab)q(out)g(170,000)e -(lines)h(of)g(C)h(source.)19 b(The)14 b(5,607,820)d(b)o(yte)j(source)g -(\014le)g(used)h(essen)o(tially)923 2748 y(9)p eop -%%Page: 10 10 -10 9 bop 707 452 a Fr(time)438 b(space)328 502 y(program)p -516 517 2 50 v 82 w(user)83 b(sys)76 b(total)p 975 517 -V 82 w(text)j(data)d(bss)f(total)p 292 519 1284 2 v 860 -554 a Fi(R4000)16 b(/)f(gc)n(c2.3.3)h(-O)p 292 570 V -317 605 a Fr(\015ex)e(-Cem)p 516 620 2 50 v 71 w(10.36)p -683 620 V 50 w(0.87)p 808 620 V 71 w(11.23)p 975 620 -V 71 w(5200)p 1130 620 V 71 w(4192)p 1285 620 V 92 w(48)p -1420 620 V 72 w(9440)357 655 y(\015ex)h(-Cf)p 516 670 -V 92 w(5.44)p 683 670 V 50 w(0.72)p 808 670 V 92 w(6.16)p -975 670 V 71 w(4688)p 1130 670 V 51 w(64384)p 1285 670 -V 91 w(48)p 1420 670 V 51 w(69120)443 705 y(lcc)p 516 -720 V 93 w(3.19)p 683 720 V 50 w(0.67)p 808 720 V 92 -w(3.86)p 975 720 V 71 w(7328)p 1130 720 V 71 w(1216)p -1285 720 V 51 w(8256)p 1420 720 V 50 w(16800)438 754 -y(gla)p 516 769 V 92 w(2.89)p 683 769 V 50 w(0.63)p 808 -769 V 92 w(3.52)p 975 769 V 50 w(11552)p 1130 769 V 71 -w(3056)p 1285 769 V 72 w(144)p 1420 769 V 50 w(14752)417 -804 y(re2c)p 516 819 V 94 w(2.54)p 683 819 V 50 w(0.68)p -808 819 V 92 w(3.22)p 975 819 V 50 w(13264)p 1130 819 -V 92 w(512)p 1285 819 V 113 w(0)p 1420 819 V 51 w(13776)373 -854 y(re2c)g(-s)p 516 869 V 93 w(2.38)p 683 869 V 50 -w(0.67)p 808 869 V 92 w(3.05)p 975 869 V 50 w(11056)p -1130 869 V 71 w(4528)p 1285 869 V 113 w(0)p 1420 869 -V 51 w(15584)p 292 871 1284 2 v 737 906 a Fi(R4000)h(/)f(c)n(c2.11.2)g -(-O)g(-Olimit)e(5000)p 292 922 V 317 957 a Fr(\015ex)h(-Cem)p -516 972 2 50 v 92 w(9.97)p 683 972 V 50 w(0.89)p 808 -972 V 71 w(10.86)p 975 972 V 71 w(4704)p 1130 972 V 71 -w(4240)p 1285 972 V 92 w(32)p 1420 972 V 72 w(8976)357 -1007 y(\015ex)h(-Cf)p 516 1022 V 92 w(6.19)p 683 1022 -V 50 w(0.72)p 808 1022 V 92 w(6.91)p 975 1022 V 71 w(4256)p -1130 1022 V 51 w(64432)p 1285 1022 V 91 w(32)p 1420 1022 -V 51 w(68720)443 1057 y(lcc)p 516 1072 V 93 w(2.74)p -683 1072 V 50 w(0.72)p 808 1072 V 92 w(3.46)p 975 1072 -V 71 w(9664)p 1130 1072 V 92 w(864)p 1285 1072 V 51 w(8256)p -1420 1072 V 50 w(18784)438 1106 y(gla)p 516 1121 V 92 -w(2.46)p 683 1121 V 50 w(0.69)p 808 1121 V 92 w(3.15)p -975 1121 V 50 w(19232)p 1130 1121 V 71 w(2992)p 1285 -1121 V 72 w(128)p 1420 1121 V 50 w(22352)417 1156 y(re2c)p -516 1171 V 94 w(2.97)p 683 1171 V 50 w(0.63)p 808 1171 -V 92 w(3.60)p 975 1171 V 50 w(15088)p 1130 1171 V 92 -w(528)p 1285 1171 V 113 w(0)p 1420 1171 V 51 w(15616)373 -1206 y(re2c)g(-s)p 516 1221 V 93 w(2.94)p 683 1221 V -50 w(0.61)p 808 1221 V 92 w(3.55)p 975 1221 V 50 w(16080)p -1130 1221 V 51 w(11808)p 1285 1221 V 112 w(0)p 1420 1221 -V 51 w(27888)p 292 1223 1284 2 v 849 1258 a Fi(SP)m(AR)o(C)g(/)g(gc)n -(c2.3.3)g(-O)p 292 1274 V 317 1309 a Fr(\015ex)f(-Cem)p -516 1324 2 50 v 71 w(16.03)p 683 1324 V 50 w(2.78)p 808 -1324 V 71 w(18.81)p 975 1324 V 71 w(8992)p 1130 1324 -V 113 w(24)p 1285 1324 V 92 w(48)p 1420 1324 V 72 w(9064)357 -1359 y(\015ex)h(-Cf)p 516 1374 V 92 w(7.84)p 683 1374 -V 50 w(2.69)p 808 1374 V 71 w(10.53)p 975 1374 V 71 w(6560)p -1130 1374 V 51 w(62232)p 1285 1374 V 91 w(48)p 1420 1374 -V 51 w(68840)443 1409 y(lcc)p 516 1424 V 93 w(4.46)p -683 1424 V 50 w(2.01)p 808 1424 V 92 w(6.47)p 975 1424 -V 71 w(7800)p 1130 1424 V 92 w(384)p 1285 1424 V 51 w(8256)p -1420 1424 V 50 w(16440)438 1459 y(gla)p 516 1473 V 92 -w(4.08)p 683 1473 V 50 w(1.56)p 808 1473 V 92 w(5.64)p -975 1473 V 50 w(10864)p 1130 1473 V 71 w(2168)p 1285 -1473 V 72 w(136)p 1420 1473 V 50 w(13168)417 1508 y(re2c)p -516 1523 V 94 w(3.67)p 683 1523 V 50 w(1.76)p 808 1523 -V 92 w(5.43)p 975 1523 V 50 w(13552)p 1130 1523 V 134 -w(0)p 1285 1523 V 113 w(0)p 1420 1523 V 51 w(13552)373 -1558 y(re2c)g(-s)p 516 1573 V 93 w(3.48)p 683 1573 V -50 w(1.70)p 808 1573 V 92 w(5.18)p 975 1573 V 50 w(15464)p -1130 1573 V 134 w(0)p 1285 1573 V 113 w(0)p 1420 1573 -V 51 w(15464)p 292 1575 1284 2 v 880 1610 a Fi(i486)g(/)g(gc)n(c2.4.5)g -(-O)p 292 1626 V 317 1661 a Fr(\015ex)f(-Cem)p 516 1676 -2 50 v 71 w(21.86)p 683 1676 V 50 w(1.26)p 808 1676 V -71 w(23.12)p 975 1676 V 71 w(8536)p 1130 1676 V 113 w(20)p -1285 1676 V 92 w(24)p 1420 1676 V 72 w(8580)357 1711 -y(\015ex)h(-Cf)p 516 1726 V 92 w(9.12)p 683 1726 V 50 -w(1.18)p 808 1726 V 71 w(10.30)p 975 1726 V 71 w(6200)p -1130 1726 V 51 w(62228)p 1285 1726 V 91 w(24)p 1420 1726 -V 51 w(68452)443 1761 y(lcc)p 516 1776 V 93 w(5.45)p -683 1776 V 50 w(1.22)p 808 1776 V 92 w(6.67)p 975 1776 -V 71 w(5924)p 1130 1776 V 92 w(384)p 1285 1776 V 51 w(8240)p -1420 1776 V 50 w(14548)438 1811 y(gla)p 516 1825 V 92 -w(5.11)p 683 1825 V 50 w(1.18)p 808 1825 V 92 w(6.29)p -975 1825 V 50 w(15496)p 1130 1825 V 71 w(2144)p 1285 -1825 V 72 w(108)p 1420 1825 V 50 w(17748)417 1860 y(re2c)p -516 1875 V 94 w(4.73)p 683 1875 V 50 w(1.13)p 808 1875 -V 92 w(5.86)p 975 1875 V 71 w(9800)p 1130 1875 V 134 -w(0)p 1285 1875 V 113 w(0)p 1420 1875 V 72 w(9800)373 -1910 y(re2c)g(-s)p 516 1925 V 93 w(4.85)p 683 1925 V -50 w(1.17)p 808 1925 V 92 w(6.02)p 975 1925 V 50 w(12968)p -1130 1925 V 134 w(0)p 1285 1925 V 113 w(0)p 1420 1925 -V 51 w(12968)p 292 1927 1284 2 v 871 1962 a Fi(68020)h(/)f(gc)n(c1.40)h -(-O)p 292 1978 V 317 2013 a Fr(\015ex)e(-Cem)p 516 2028 -2 50 v 50 w(117.37)p 683 2028 V 50 w(5.89)p 808 2028 -V 51 w(123.26)p 975 2028 V 70 w(7700)p 1130 2028 V 113 -w(20)p 1285 2028 V 92 w(22)p 1420 2028 V 72 w(7742)357 -2063 y(\015ex)h(-Cf)p 516 2078 V 71 w(50.93)p 683 2078 -V 50 w(5.27)p 808 2078 V 71 w(56.20)p 975 2078 V 71 w(5388)p -1130 2078 V 51 w(62228)p 1285 2078 V 91 w(22)p 1420 2078 -V 51 w(67638)443 2113 y(lcc)p 516 2128 V 72 w(33.28)p -683 2128 V 50 w(6.28)p 808 2128 V 71 w(39.56)p 975 2128 -V 71 w(4956)p 1130 2128 V 92 w(384)p 1285 2128 V 51 w(8236)p -1420 2128 V 50 w(13576)438 2163 y(gla)p 516 2177 V 71 -w(33.80)p 683 2177 V 50 w(4.20)p 808 2177 V 71 w(38.00)p -975 2177 V 50 w(13904)p 1130 2177 V 71 w(2144)p 1285 -2177 V 72 w(106)p 1420 2177 V 50 w(16154)417 2212 y(re2c)p -516 2227 V 73 w(28.92)p 683 2227 V 50 w(2.91)p 808 2227 -V 71 w(31.83)p 975 2227 V 71 w(8556)p 1130 2227 V 134 -w(0)p 1285 2227 V 113 w(0)p 1420 2227 V 72 w(8556)373 -2262 y(re2c)g(-s)p 516 2277 V 72 w(30.72)p 683 2277 V -50 w(3.19)p 808 2277 V 71 w(33.91)p 975 2277 V 71 w(9856)p -1130 2277 V 134 w(0)p 1285 2277 V 113 w(0)p 1420 2277 -V 72 w(9856)513 2352 y(T)m(able)e(1:)18 b(Comparison)12 -b(of)h(generated)j(C)d(scanners.)913 2748 y(10)p eop -%%Page: 11 11 -11 10 bop -42 195 a Fr(consists)15 b(of)d(10)h(copies)h(of)e(the)i -(source)h(to)e(James)f(Clark's)h(SGML)f(parser,)i(sgmls)1263 -180 y Fq(10)1297 195 y Fr(.)k(The)c(times)e(rep)q(orted)i(are)g(a)o(v)o -(erages)-42 245 y(for)j(10)g(trials;)h(the)g(sizes)g(rep)q(orted)h -(include)e(ev)o(erything)h(but)g(C)f(library)f(co)q(de)1251 -230 y Fq(11)1287 245 y Fr(.)28 b(\015ex)18 b(pro)o(vides)f(a)g(n)o(um)o -(b)q(er)g(of)g(table)-42 295 y(compression)e(options)g(including)f -Fm(-Cem)g Fr(for)h(tables)g(optimized)f(for)h(space,)h(and)f -Fm(-Cf)f Fr(for)h(tables)g(optimized)f(for)g(sp)q(eed.)-42 -345 y(By)f(default,)e(RE2C)h(will)f(use)h(a)g(heuristic)h(to)f(decide)h -(if)e(a)h Fm(switch)f Fr(should)h(b)q(e)g(replaced)h(with)f -Fm(if)p Fr(s:)17 b(the)c Fm(-s)e Fr(option)h(forces)-42 -394 y(RE2C)i(to)g(alw)o(a)o(ys)e(generate)k Fm(switch)p -Fr(es.)21 444 y(T)m(o)21 b(mak)o(e)g(comparisons)g(more)g(meaningful,)h -(all)e(seman)o(tic)i(pro)q(cessing)h(co)q(de)g(w)o(as)f(remo)o(v)o(ed)g -(from)e(the)j(GLA-)-42 494 y(generated)d(and)f(lcc)f(scanners,)j(and)d -(co)q(de)i(to)e(pro)o(vide)g(line)g(and)g(column)f(n)o(um)o(b)q(er)h -(information)d(w)o(as)k(added)g(to)f(the)-42 544 y(RE2C)c(sp)q -(eci\014cation.)19 b(The)14 b(remaining)e(di\013erences)k(of)d(note)h -(b)q(et)o(w)o(een)i(the)e(scanners)i(include:)21 627 -y Fk(\017)k Fr(The)15 b(\015ex-generated)g(scanners)h(do)d(not)h(pro)o -(vide)g(line)f(or)h(column)e(n)o(um)o(b)q(er)i(information.)21 -710 y Fk(\017)20 b Fr(The)15 b(GLA-generated)f(scanner)i(assumes)d -(7-bit)h(input.)21 793 y(As)e(a)g(general)g(rule,)h(the)f -(RE2C-generated)h(scanners)h(w)o(ere)f(the)f(fastest,)h(follo)o(w)o(ed) -e(b)o(y)h(the)g(GLA-generated)h(scanner)-42 843 y(and)j(then)g(the)g -(lcc)g(scanner.)24 b(The)15 b(\015ex-generated)i(scanners)h(w)o(ere)e -(signi\014can)o(tly)e(slo)o(w)o(er.)23 b(Only)15 b(the)h -(space-optimized)-42 892 y(\015ex)i(scanner)h(w)o(as)e(smaller)f(than)h -(the)h(default)f(RE2C)g(scanner,)i(and)e(only)g(b)o(y)g(a)g(narro)o(w)g -(margin.)26 b(There)19 b(are)e(some)-42 942 y(arc)o(hitectures,)j -(notably)d(the)g(IBM)h(370,)f(on)g(whic)o(h)g(table)g(driv)o(en)g -(scanners)i(will)d(probably)h(pro)q(duce)h(b)q(etter)h(results:)-42 -992 y(IBM)c(370)e(compilers)g(t)o(ypically)f(generate)j(p)q(o)q(or)f -(co)q(de)h(for)f(large)f(routines.)21 1042 y(The)22 b(v)n(arious)f -(scanners)j(and)d(input)h(\014les)g(used)h(for)e(the)i(tests)g(are)f(a) -o(v)n(ailable)e(for)h(anon)o(ymous)f(ftp)i(from)e Ff(csg.-)-42 -1092 y(u)o(w)o(aterlo)q(o.ca)10 b Fr(in)f Ff(/pub/p)q -(eter/re2c/sampler.ta)o(r.Z)p Fr(.)i(\015ex)f(is)f(a)o(v)n(ailable)e -(for)i(anon)o(ymous)e(ftp)i(from)f Ff(ftp.uu.net)i Fr(as)f -Ff(/pack)o(ages/-)-42 1142 y(gnu/\015ex-2.3.7.ta)o(r.Z)p -Fr(,)14 b(GLA)h(is)g(a)o(v)n(ailable)e(for)i(anon)o(ymous)f(ftp)h(from) -f Ff(ftp.cs.colo)o(rado.edu)i Fr(as)f(part)g(of)g(the)h(Eli)f(pac)o(k)n -(age)-42 1191 y Ff(/pub/cs/distribs/eli/Eli3.4.2.ta)o(r.Z)p -Fr(,)i(and)h(the)g(lcc)h(fron)o(t)e(end)i(is)f(a)o(v)n(ailable)e(for)h -(anon)o(ymous)g(ftp)g(from)g Ff(p)o(rinceton.edu)-42 -1241 y Fr(as)f Ff(/pub/lcc/lccfe-1.9.ta)o(r.Z)p Fr(.)g(An)f(alpha)g(v)o -(ersion)g(of)g(RE2C)g(will)f(so)q(on)i(b)q(e)g(made)e(a)o(v)n(ailable)f -(for)i(anon)o(ymous)f(ftp)h(from)-42 1291 y Ff(csg.u)o(w)o(aterlo)q -(o.ca)g Fr(as)f Ff(/pub/p)q(eter/re2c/re2c-0.5.ta)o(r.Z)p -Fr(.)-42 1428 y Fs(5)67 b(Related)23 b(W)-6 b(ork)-42 -1519 y Fr(The)18 b(k)o(ey)g(to)f(the)h(p)q(erformance)f(and)g -(\015exibilit)o(y)e(of)i(an)g(RE2C-generated)h(scanner)h(is)e(the)h -(approac)o(h)f(used)h(to)f(deter-)-42 1569 y(mine)e(when)i(the)g -(bu\013er)g(needs)g(\014lling.)23 b(In)o(terestingly)m(,)16 -b(the)h(lcc)g(scanner)g([5)o(])f(uses)h(a)f(similar)e(approac)o(h)i -(\(with)g(certain)-42 1619 y(concessions)g(to)e(k)o(eep)g(the)h(b)q(o)q -(okk)o(eeping)e(manageable.\))-42 1735 y Fj(5.1)56 b(Comparison)18 -b(With)g(GLA)-42 1812 y Fr(It)h(is)f(natural)f(to)h(compare)f(RE2C)h -(to)g(GLA)f([7])g(as)h(it)g(also)f(generates)j(directly)f(executable)g -(scanners.)32 b(RE2C)18 b(and)-42 1861 y(GLA)d(ha)o(v)o(e)g(man)o(y)e -(di\013erences)k(simply)c(b)q(ecause)j(they)g(are)f(targeted)h(for)e -(di\013eren)o(t)i(t)o(yp)q(es)g(of)e(users:)22 b(GLA)14 -b(is)h(in)o(tended)-42 1911 y(for)g(p)q(eople)h(who)f(simply)e(wish)i -(to)f(lev)o(erage)i(their)f(e\013orts)i(with)d(existing)h(to)q(ols)g -(and)g(libraries;)g(RE2C)f(is)h(in)o(tended)h(for)-42 -1961 y(p)q(eople)d(that)g(ha)o(v)o(e)f(more)g(sp)q(ecialized)h(needs)h -(and)e(are)h(willing)d(to)j(pro)o(vide)f(their)h(o)o(wn)f(supp)q(ort)h -(routines.)18 b(F)m(or)12 b(example,)-42 2011 y(GLA)h(pro)o(vides)h(a)f -(go)q(o)q(d)f(bu\013ering)i(mec)o(hanism,)c(RE2C)j(users)i(m)o(ust)d -(supply)h(their)h(o)o(wn.)j(These)d(di\013erences,)i(ho)o(w)o(ev)o(er,) --42 2061 y(are)f(not)f(unique)f(to)h(GLA)g(and)f(ha)o(v)o(e)h(b)q(een)h -(addressed)h(for)d(the)i(most)e(part)h(in)f(previous)h(sections.)21 -2111 y(Of)j(more)f(in)o(terest)i(is)f(the)h(di\013erences)i(in)c(the)i -(co)q(de)g(that)f(RE2C)g(and)g(GLA)g(generate.)29 b(Scanners)18 -b(generated)h(b)o(y)-42 2160 y(RE2C)14 b(and)g(GLA)f(di\013er)h -(primarily)e(in)h(t)o(w)o(o)h(asp)q(ects:)19 b(ho)o(w)14 -b(they)g(determine)g(when)h(the)f(bu\013er)h(needs)g(\014lling,)d(and)i -(ho)o(w)-42 2210 y(they)h(generate)g(co)q(de)g(for)e -Fm(switch)p Fr(es.)21 2260 y(GLA)d(uses)i(the)f(ASCI)q(I)g(NUL)f(c)o -(haracter)i(as)f(the)g(sen)o(tinel)g(to)f(determine)h(when)g(the)g -(bu\013er)g(needs)h(\014lling.)j(T)m(o)10 b(impro)o(v)o(e)-42 -2310 y(the)j(sp)q(eed)h(and)e(reduce)i(the)f(size)g(of)e(the)i -(generated)g(scanners)h(GLA)e(bu\013ers)i(only)d(complete)h(lines)g -(and)g(restricts)i(tok)o(ens)-42 2360 y(to)d(those)g(that)f(do)g(not)g -(con)o(tain)g(newline)g(\(ASCI)q(I)h(LF\))f(c)o(haracters)1013 -2345 y Fq(12)1050 2360 y Fr(.)17 b(If)10 b(a)g(tok)o(en)g(with)g(an)g -(em)o(b)q(edded)h(newline)f(c)o(haracter)-42 2409 y(\(suc)o(h)k(as)f(a) -f(commen)o(t\))f(is)h(required)i(it)e(m)o(ust)f(b)q(e)j(recognized)g -(with)e(an)g(auxiliary)f(scanner)j(written)f(in)f(C.)g(This)h(co)q(de)g -(has)-42 2459 y(to)h(p)q(erform)f(the)i(bu\013ering-related)f(b)q(o)q -(okk)o(eeping)g(that)g(is)g(done)g(automatically)d(b)o(y)i -(GLA-generated)i(co)q(de.)p -42 2494 780 2 v -11 2521 -a Fn(10)22 2532 y Fo(Av)n(ailable)10 b(for)h(anon)o(ymous)d(ftp)j(from) -f Fe(ftp.uu.net)i Fo(as)f Fe(/pub/text-p)o(ro)q(cessing/sg)o(ml/sgmls-) -o(1.1.)o(ta)o(r.Z)o Fo(.)-11 2560 y Fn(11)22 2572 y Fo(The)h -(GLA-generated)c(scanner)i(sizes)h(also)f(do)h(not)g(include)f(the)g -(size)h(of)g(an)g(error)g(rep)q(orting)e(mo)q(dule)g -Fg(err.o)p Fo(.)-11 2600 y Fn(12)22 2612 y Fo(This)j(is)f(discussed)f -(in)h(more)f(detail)g(in)h(Section)f(3.3.1.)913 2748 -y Fr(11)p eop -%%Page: 12 12 -12 11 bop 21 195 a Fr(The)20 b(mec)o(hanism)e(RE2C)h(uses)i(to)f -(re\014ll)g(the)g(bu\013er)h(eliminates)d(these)k(restrictions)f(and)e -(y)o(et)i(allo)o(ws)d(RE2C)i(to)-42 245 y(generate)15 -b(faster)f(and)g(smaller)e(scanners.)19 b(RE2C)13 b(also)g(allo)o(ws)g -(b)q(oth)g(auxiliary)f(and)h(primary)f(scanners)j(to)f(b)q(e)g(sp)q -(eci\014ed)-42 295 y(using)g(regular)g(expressions.)20 -b(F)m(or)13 b(example,)f(App)q(endix)i(A)g(con)o(tains)g(an)g -(auxiliary)e(scanner)j(for)f(commen)o(ts.)21 345 y(Lik)o(e)i(RE2C,)g -(GLA)h(usually)f(replaces)i Fm(switch)p Fr(es)e(with)h -Fm(if)p Fr(s.)27 b(Unlik)o(e)16 b(RE2C,)g(GLA)g(do)q(es)i(not)f(use)g -(a)g Fm(case)p Fr(-based)-42 394 y(heuristic)f(to)f(decide)h(whic)o(h)f -Fm(switch)p Fr(es)g(to)g(replace:)21 b(rather,)16 b(it)f(alw)o(a)o(ys)f -(generates)j(a)e Fm(switch)e Fr(for)i(the)h(start)g(state)g(and)-42 -444 y(uses)g Fm(if)p Fr(s)d(for)h(the)g(rest.)20 b(GLA)13 -b(replaces)i Fm(switch)p Fr(es)f(with)f(co)q(de)i(sequences)h(of)e(the) -g(form:)138 518 y Fm(if\(*YYCURSOR)20 b Fi(in)i Fl(S)505 -524 y Fq(1)524 518 y Fm(\))f(goto)g(L)698 524 y Fq(1)717 -518 y Fm(;)226 562 y(.)226 579 y(.)226 595 y(.)138 645 -y(if\(*YYCURSOR)f Fi(in)i Fl(S)505 651 y Fd(n)528 645 -y Fm(\))f(goto)g(L)702 651 y Fd(n)725 645 y Fm(;)-42 -737 y Fr(Bit)12 b(v)o(ectors)h(are)f(used)h(for)e(all)f(mem)o(b)q -(ership)g(tests)k(in)o(v)o(olving)9 b(sets)k(with)e(more)g(than)g(one)h -(elemen)o(t.)17 b(As)12 b(an)g(optimization,)-42 787 -y(if)k(a)f(state)i(has)f(a)g(transition)g(to)g(itself)f(the)i(test)g -(as)f(to)g(whether)h(to)f(remain)f(in)g(the)i(same)e(state)i(or)f(not)g -(is)g(p)q(erformed)-42 837 y(\014rst.)25 b(F)m(or)16 -b(example,)e(Figure)i(12)f(sho)o(ws)i(the)f(GLA-generated)h(co)q(de)f -(for)g(state)g(8)g(in)f(Figure)h(2)1506 822 y Fq(13)1541 -837 y Fr(.)73 b(Note)16 b(the)g(use)h(of)291 926 y Fm(static)j -(unsigned)g(char)h(yytable[])f(=)i Fk(f)291 976 y Fm(0x00,)e(0x00,)h -(0x00,)g(0x00,)g(/*)65 b(0.)g(1.)g(2.)f(3.)22 b(*/)291 -1025 y Fl(:)7 b(:)g(:)291 1075 y Fm(0x00,)20 b(0x00,)h(0x00,)g(0x00,)g -(/*)43 b(,)g(-)h(.)f(/)22 b(*/)291 1125 y(0x01,)e(0x01,)h(0x01,)g -(0x01,)g(/*)43 b(0)g(1)h(2)f(3)22 b(*/)291 1175 y(0x01,)e(0x01,)h -(0x01,)g(0x01,)g(/*)43 b(4)g(5)h(6)f(7)22 b(*/)291 1225 -y(0x01,)e(0x01,)h(0x00,)g(0x00,)g(/*)43 b(8)g(9)h(:)f(;)22 -b(*/)291 1275 y(0x00,)e(0x00,)h(0x00,)g(0x00,)g(/*)43 -b(<)g(=)h(>)f(?)22 b(*/)291 1324 y Fl(:)7 b(:)g(:)291 -1374 y Fm(0x00,)20 b(0x00,)h(0x00,)g(0x00)g Fk(g)p Fm(;)g(/*)43 -b(|)h Fk(g)108 b Fm(127.)21 b(*/)378 1419 y(.)378 1435 -y(.)378 1452 y(.)291 1502 y(L8:)g(if\(yytable[\(*YYC)o(URSOR)o(++\)+0)o -(])e(&)j(1<<0\))e(goto)h(L8;--YYCURSOR;)291 1552 y(goto)g(A3;)527 -1631 y Fr(Figure)14 b(12:)j(GLA)d(co)q(de)h(for)e(state)i(8)e(in)h -(Figure)g(2.)-42 1731 y(128)i(elemen)o(t)f(en)o(tries)i(for)e(the)i -(bit)f(v)o(ectors)h(to)e(reduce)j(the)e(scanner)i(size:)k(A)16 -b(GLA-generated)h(scanner)g(will)e(crash)h(or)-42 1781 -y(otherwise)f(b)q(eha)o(v)o(e)g(unpredictably)f(if)f(a)h(non-ASCI)q(I)f -(c)o(haracter)j(app)q(ears)e(in)g(the)g(source)1395 1766 -y Fq(14)1432 1781 y Fr(.)21 1831 y(In)k(some)g(sense)j(the)e(results)h -(of)e(Section)h(4)f(are)i(a)e(bit)g(misleading:)26 b(the)19 -b(GLA)f(sp)q(eci\014cation)i(that)e(w)o(as)h(used)h(to)-42 -1880 y(obtain)15 b(the)g(\014gures)h(in)e(T)m(able)g(1)h(is)g(not)f(a)h -(t)o(ypical)f(GLA)g(sp)q(eci\014cation.)22 b(Usually)14 -b(scanners)j(implem)o(en)o(ted)c(using)i(GLA)-42 1930 -y(will)h(handle)i(k)o(eyw)o(ords)f(as)h(iden)o(ti\014ers)g(as)g(GLA)f -(has)g(b)q(een)i(optimized)d(for)h(this)g([7)o(].)29 -b(T)m(able)16 b(2)h(presen)o(ts)j(a)d(more)f(fair)-42 -1980 y(comparison:)h(the)e(k)o(eyw)o(ord)f(matc)o(hing)e(rules)j(w)o -(ere)g(remo)o(v)o(ed)e(from)f(b)q(oth)j(the)f(GLA)g(and)g(RE2C)f(sp)q -(eci\014cations.)39 b(The)-42 2030 y(RE2C-generated)18 -b(scanners)g(w)o(ere)f(still)e(faster)i(and)g(smaller)d(except)k(on)e -(the)h(MIPS)g(R4000,)e(where)i(the)g(cc-compiled)-42 -2080 y(GLA)d(scanner)h(w)o(as)f(sligh)o(tly)f(faster.)21 -2130 y(Note)k(ho)o(w)o(ev)o(er,)g(that)g(the)g(RE2C)g(sp)q -(eci\014cation)g(can)g(b)q(e)g(substan)o(tially)f(sp)q(ed)i(up)f(b)o(y) -f(using)h(a)f(tec)o(hnique)i(akin)e(to)-42 2179 y(lo)q(op)e(unrolling.) -i(Replacing)d(the)i(original)d(k)o(eyw)o(ord)h(matc)o(hing)f(rule)j(in) -e(the)i(RE2C)e(sp)q(eci\014cation)1548 2164 y Fq(15)138 -2252 y Fm(L)22 b(I*)435 b Fk(f)22 b Fm(RET\(ID\);)e Fk(g)-42 -2345 y Fr(with)14 b(the)h(follo)o(wing)c(rules)p -42 -2380 780 2 v -11 2407 a Fn(13)22 2419 y Fo(Actually)m(,)f(GLA)i(w)o -(ould)f(generate)e(a)i Fg(while)f Fo(statemen)o(t.)j(Most)e(compilers)e -(will)j(generate)d(the)i(same)f(ob)r(ject)g(co)q(de)g(for)h(b)q(oth.) --11 2446 y Fn(14)22 2458 y Fo(No)h(c)o(hec)o(ks)e(are)h(made)f(to)h -(ensure)f(that)g(only)h(7-bit)f(c)o(haracters)f(app)q(ear)h(in)h(the)g -(input.)-11 2486 y Fn(15)22 2498 y Fg(L)e Fo(=)i Fg([a-zA-Z)p -215 2498 11 2 v 10 w(])g Fo(and)g Fg(I)e Fo(=)i Fg([a-zA-Z)p -514 2498 V 10 w(0-9])n Fo(.)913 2748 y Fr(12)p eop -%%Page: 13 13 -13 12 bop 727 776 a Fr(time)387 b(space)380 826 y(program)p -557 841 2 50 v 61 w(user)72 b(sys)65 b(total)p 974 841 -V 62 w(text)58 b(data)e(bss)64 b(total)p 355 842 1158 -2 v 850 877 a Fi(R4000)16 b(/)f(gc)n(c2.3.3)g(-O)p 355 -894 V 479 929 a Fr(gla)p 557 944 2 50 v 71 w(2.63)p 703 -944 V 51 w(0.58)p 828 944 V 71 w(3.21)p 974 944 V 50 -w(5040)p 1109 944 V 50 w(2496)p 1243 944 V 51 w(144)p -1357 944 V 71 w(7680)458 979 y(re2c)p 557 994 V 73 w(2.50)p -703 994 V 51 w(0.65)p 828 994 V 71 w(3.15)p 974 994 V -50 w(6448)p 1109 994 V 71 w(512)p 1243 994 V 92 w(0)p -1357 994 V 72 w(6960)414 1028 y(re2c)g(-s)p 557 1043 -V 72 w(2.49)p 703 1043 V 51 w(0.67)p 828 1043 V 71 w(3.16)p -974 1043 V 50 w(4976)p 1109 1043 V 50 w(4224)p 1243 1043 -V 92 w(0)p 1357 1043 V 72 w(9200)382 1078 y(re2c)g(-s)f -Fk(y)p 557 1093 V 72 w Fr(2.08)p 703 1093 V 51 w(0.59)p -828 1093 V 71 w(2.67)p 974 1093 V 50 w(5792)p 1109 1093 -V 50 w(4224)p 1243 1093 V 92 w(0)p 1357 1093 V 52 w(10016)p -355 1095 1158 2 v 726 1130 a Fi(R4000)i(/)f(c)n(c2.11.2)g(-O)g(-Olimit) -e(5000)p 355 1146 V 479 1181 a Fr(gla)p 557 1196 2 50 -v 71 w(2.43)p 703 1196 V 51 w(0.64)p 828 1196 V 71 w(3.07)p -974 1196 V 50 w(6512)p 1109 1196 V 50 w(2416)p 1243 1196 -V 51 w(128)p 1357 1196 V 71 w(9056)458 1231 y(re2c)p -557 1246 V 73 w(2.93)p 703 1246 V 51 w(0.67)p 828 1246 -V 71 w(3.60)p 974 1246 V 50 w(8048)p 1109 1246 V 71 w(528)p -1243 1246 V 92 w(0)p 1357 1246 V 72 w(8576)414 1281 y(re2c)i(-s)p -557 1296 V 72 w(3.04)p 703 1296 V 51 w(0.64)p 828 1296 -V 71 w(3.68)p 974 1296 V 50 w(9952)p 1109 1296 V 50 w(2208)p -1243 1296 V 92 w(0)p 1357 1296 V 52 w(12160)p 355 1297 -1158 2 v 838 1332 a Fi(SP)m(AR)o(C)g(/)g(gc)n(c2.3.3)g(-O)p -355 1349 V 479 1384 a Fr(gla)p 557 1399 2 50 v 71 w(4.08)p -703 1399 V 51 w(1.65)p 828 1399 V 71 w(5.73)p 974 1399 -V 50 w(5472)p 1109 1399 V 50 w(1656)p 1243 1399 V 51 -w(136)p 1357 1399 V 71 w(7264)458 1434 y(re2c)p 557 1449 -V 73 w(3.77)p 703 1449 V 51 w(1.67)p 828 1449 V 71 w(5.44)p -974 1449 V 50 w(7008)p 1109 1449 V 113 w(0)p 1243 1449 -V 92 w(0)p 1357 1449 V 72 w(7008)414 1483 y(re2c)g(-s)p -557 1498 V 72 w(3.66)p 703 1498 V 51 w(2.37)p 828 1498 -V 71 w(6.03)p 974 1498 V 50 w(9112)p 1109 1498 V 113 -w(0)p 1243 1498 V 92 w(0)p 1357 1498 V 72 w(9112)p 355 -1500 1158 2 v 869 1535 a Fi(i486)g(/)g(gc)n(c2.4.5)g(-O)p -355 1551 V 479 1586 a Fr(gla)p 557 1601 2 50 v 71 w(5.04)p -703 1601 V 51 w(1.15)p 828 1601 V 71 w(6.19)p 974 1601 -V 50 w(5368)p 1109 1601 V 50 w(1632)p 1243 1601 V 51 -w(108)p 1357 1601 V 71 w(7108)458 1636 y(re2c)p 557 1651 -V 73 w(4.75)p 703 1651 V 51 w(1.17)p 828 1651 V 71 w(5.92)p -974 1651 V 50 w(5448)p 1109 1651 V 113 w(0)p 1243 1651 -V 92 w(0)p 1357 1651 V 72 w(5448)414 1686 y(re2c)g(-s)p -557 1701 V 72 w(5.06)p 703 1701 V 51 w(1.13)p 828 1701 -V 71 w(6.19)p 974 1701 V 50 w(8248)p 1109 1701 V 113 -w(0)p 1243 1701 V 92 w(0)p 1357 1701 V 72 w(8248)p 355 -1703 1158 2 v 860 1737 a Fi(68020)h(/)f(gc)n(c1.40)h(-O)p -355 1754 V 479 1789 a Fr(gla)p 557 1804 2 50 v 51 w(32.69)p -703 1804 V 50 w(3.37)p 828 1804 V 50 w(36.06)p 974 1804 -V 50 w(4772)p 1109 1804 V 50 w(1632)p 1243 1804 V 51 -w(106)p 1357 1804 V 71 w(6510)458 1839 y(re2c)p 557 1854 -V 53 w(29.86)p 703 1854 V 50 w(3.74)p 828 1854 V 50 w(33.60)p -974 1854 V 50 w(4468)p 1109 1854 V 113 w(0)p 1243 1854 -V 92 w(0)p 1357 1854 V 72 w(4468)414 1889 y(re2c)f(-s)p -557 1904 V 52 w(28.77)p 703 1904 V 50 w(3.55)p 828 1904 -V 50 w(32.32)p 974 1904 V 50 w(5616)p 1109 1904 V 113 -w(0)p 1243 1904 V 92 w(0)p 1357 1904 V 72 w(5616)108 -1978 y(T)m(able)i(2:)24 b(Scanner)18 b(p)q(erformance)f(with)g(k)o(eyw) -o(ords)g(treated)h(as)f(iden)o(ti\014ers.)29 b Fk(y)17 -b Fr(uses)h(an)f(\\unrolled")108 2028 y(sp)q(eci\014cation.)913 -2748 y(13)p eop -%%Page: 14 14 -14 13 bop 138 185 a Fm(L)501 b Fk(f)22 b Fm(RET\(ID\);)e -Fk(g)138 235 y Fm(L)i(I)457 b Fk(f)22 b Fm(RET\(ID\);)e -Fk(g)138 284 y Fm(L)i(I)g(I)413 b Fk(f)22 b Fm(RET\(ID\);)e -Fk(g)138 334 y Fm(L)i(I)g(I)f(I)370 b Fk(f)22 b Fm(RET\(ID\);)e -Fk(g)138 384 y Fm(L)i(I)g(I)f(I)h(I)326 b Fk(f)22 b Fm(RET\(ID\);)e -Fk(g)138 434 y Fm(L)i(I)g(I)f(I)h(I)f(I)283 b Fk(f)22 -b Fm(RET\(ID\);)e Fk(g)138 484 y Fm(L)i(I)g(I)f(I)h(I)f(I)h(I)239 -b Fk(f)22 b Fm(RET\(ID\);)e Fk(g)138 533 y Fm(L)i(I)g(I)f(I)h(I)f(I)h -(I)f(I)196 b Fk(f)22 b Fm(RET\(ID\);)e Fk(g)138 583 y -Fm(L)i(I*)435 b Fk(f)22 b Fm(RET\(ID\);)e Fk(g)-42 677 -y Fr(reduces)f(the)e(n)o(um)o(b)q(er)f(of)g(end-of-bu\013er)h(c)o(hec)o -(ks)h(and)e(results)i(in)e(a)g(signi\014can)o(t)g(sp)q(eed)i(impro)o(v) -o(emen)o(t)13 b(o)o(v)o(er)k(the)g(GLA-)-42 726 y(generated)f(scanner.) --42 864 y Fs(6)67 b(Summary)24 b(and)f(F)-6 b(urther)25 -b(W)-6 b(ork)-42 955 y Fr(This)16 b(pap)q(er)h(has)f(describ)q(ed)h -(RE2C,)e(a)h(to)q(ol)f(for)g(creating)h(lexical)f(analyzers.)24 -b(Unlik)o(e)16 b(other)g(suc)o(h)h(to)q(ols,)e(RE2C)g(con-)-42 -1004 y(cen)o(trates)i(solely)d(on)g(generating)g(e\016cien)o(t)h(co)q -(de)g(for)f(matc)o(hing)f(regular)h(expressions.)21 b(Not)14 -b(only)g(do)q(es)h(this)g(singleness)-42 1054 y(of)h(purp)q(ose)i(mak)o -(e)c(RE2C)i(more)g(suitable)g(for)g(a)g(wider)g(v)n(ariet)o(y)g(of)g -(applications,)f(it)h(allo)o(ws)f(it)h(to)g(generate)i(scanners)-42 -1104 y(whic)o(h)c(approac)o(h)g(hand-crafted)h(scanners)g(in)f(terms)g -(of)f(size)i(and)e(sp)q(eed.)20 b(Compared)13 b(to)h(scanners)i -(generated)f(b)o(y)f(\015ex,)-42 1154 y(and)g(GLA,)f(RE2C-generated)i -(scanners)g(are)g(faster)f(and)g(in)f(man)o(y)f(cases)k(smaller)c(as)i -(w)o(ell.)21 1204 y(While)g(RE2C-generated)h(scanners)h(p)q(erform)e(w) -o(ell,)g(there)i(is)e(still)g(ro)q(om)f(for)h(impro)o(v)o(emen)o(t.)k -(Near)d(term)f(impro)o(v)o(e-)-42 1254 y(men)o(ts)g(include)g(using)f -(GLA's)h(bit)f(v)o(ectors)i(to)f(simplify)d(some)i Fm(switch)p -Fr(es)h(and)f(adding)g(a)h(state)h(unrolling)d(op)q(erator.)21 -1303 y(In)i(the)g(longer)g(term,)f(inline)g(actions)h(will)e(b)q(e)i -(added)h(to)e(RE2C.)g(F)m(or)h(example,)e(a)h(sp)q(eci\014cation)i(lik) -o(e)138 1386 y Fm(D)22 b Fk(f)p Fm(c)f(=)h($)p Fk(g)f -Fm(\(D)h Fk(f)p Fm(c)f(=)h(10*c)e(+)i($)p Fk(g)p Fm(\)*)-42 -1469 y Fr(migh)o(t)15 b(b)q(e)i(used)g(to)f(obtain)g(the)h(v)n(alue)f -(of)g(a)g(previously)g(scanned)i(in)o(teger.)26 b(T)o(ypically)m(,)14 -b(these)k(sorts)g(of)d(sp)q(eci\014cations)-42 1519 y(w)o(ould)f(b)q(e) -g(used)h(as)f(an)f(action)h(in)f(some)g(other)i(sp)q(eci\014cation.)-42 -1656 y Fs(7)67 b(Ac)n(kno)n(wledgmen)n(ts)-42 1747 y -Fr(The)15 b(authors)f(thank)g(the)g(referees)j(for)c(their)h(man)o(y)e -(v)n(aluable)h(commen)o(ts)f(and)i(suggestions.)913 2748 -y(14)p eop -%%Page: 15 15 -15 14 bop -42 195 a Fs(A)68 b(C)22 b(Scanner)-42 276 -y Fg(#define)16 b(BSIZE)192 b(8192)-42 315 y(#define)16 -b(RET\(i\))174 b({s->cur)15 b(=)i(cursor;)e(return)h(i;})-42 -394 y(#define)g(YYCTYPE)156 b(uchar)-42 433 y(#define)16 -b(YYCURSOR)138 b(cursor)-42 473 y(#define)16 b(YYLIMIT)156 -b(s->lim)-42 512 y(#define)16 b(YYMARKER)138 b(s->ptr)-42 -552 y(#define)16 b(YYFILL\(n\))120 b({cursor)15 b(=)i(fill\(s,)e -(cursor\);})-42 631 y(typedef)h(struct)f(Scanner)g({)29 -670 y(int)299 b(fd;)29 709 y(uint)281 b(line;)29 749 -y(uchar)263 b(*bot,)16 b(*tok,)g(*ptr,)f(*cur,)h(*pos,)g(*lim,)g(*top,) -g(*eof;)-42 788 y(})i(Scanner;)-42 867 y(uchar)e(*fill\(Scann)o(er)e -(*s,)j(uchar)f(*cursor\){)29 907 y(if\(!s->eof)o(\){)100 -946 y(uint)g(cnt)g(=)i(s->tok)d(-)i(s->bot;)100 985 y(if\(cnt\){)d(/*)j -(move)g(partial)e(token)h(to)g(bottom)g(*/)170 1025 y(memcpy\(s->b)o -(ot,)e(s->tok,)h(s->lim)g(-)j(s->tok\);)d(s->tok)g(=)i(s->bot;)170 -1064 y(s->ptr)f(-=)h(cnt;)f(cursor)f(-=)i(cnt;)f(s->pos)g(-=)h(cnt;)f -(s->lim)g(-=)h(cnt;)100 1104 y(})100 1143 y(if\(\(s->to)o(p)e(-)i -(s->lim\))e(<)i(BSIZE\){)f(/*)g(buffer)g(needs)g(to)h(be)g(expanded)d -(*/)170 1183 y(uchar)i(*buf)g(=)i(\(uchar*\))c(malloc\(\(\(s-)o(>li)o -(m)h(-)i(s->bot\))e(+)i(BSIZE\)*size)o(of\()o(uch)o(ar\))o(\);)170 -1222 y(memcpy\(buf,)d(s->tok,)h(s->lim)h(-)h(s->tok\);)e(s->tok)g(=)i -(buf;)170 1262 y(s->ptr)f(=)h(&buf[s->pt)o(r)e(-)i(s->bot];)e(cursor)g -(=)j(&buf[curs)o(or)c(-)k(s->bot];)170 1301 y(s->pos)e(=)h(&buf[s->po)o -(s)e(-)i(s->bot];)e(s->lim)g(=)j(&buf[s->l)o(im)c(-)k(s->bot];)170 -1340 y(s->top)e(=)h(&s->lim[BS)o(IZE)o(];)170 1380 y(free\(s->bot)o -(\);)d(s->bot)i(=)h(buf;)100 1419 y(})100 1459 y(if\(\(cnt)e(=)i -(read\(s->fd)o(,)e(\(char*\))g(s->lim,)g(BSIZE\)\))g(!=)i(BSIZE\){)e -(/*)i(EOF)g(*/)170 1498 y(s->eof)f(=)h(&s->lim[cn)o(t];)d(*\(s->eof\)+) -o(+)h(=)i('\\n';)100 1538 y(})100 1577 y(s->lim)e(+=)i(cnt;)29 -1616 y(})29 1656 y(return)f(cursor;)-42 1695 y(})-42 -1774 y(int)h(scan\(Scann)o(er)d(*s\){)100 1814 y(uchar)h(*cursor)h(=)h -(s->cur;)-42 1853 y(std:)70 b(s->tok)15 b(=)i(cursor;)-42 -1892 y(/*!re2c)100 1932 y("/*")157 b({)17 b(goto)f(comment;)f(})-42 -2013 y Fc(:)6 b(:)g(:)11 b Fb(mor)n(e)j(rules)e Fc(:)6 -b(:)g(:)100 2086 y Fg([)17 b(\\t\\v\\f]+)50 b({)17 b(goto)f(std;)h(}) -100 2125 y("\\n")157 b({)17 b(if\(cursor)e(==)i(s->eof\))e(RET\(EOI\);) -f(s->pos)i(=)h(cursor;)e(s->line++;)364 2164 y(goto)h(std;)h(})100 -2204 y([\\000-\\37)o(7])32 b({)17 b(printf\("une)o(xpe)o(cte)o(d)d -(character:)h('\045c'\\n",)f(*s->tok\);)364 2243 y(goto)i(std;)h(})-42 -2283 y(*/)-42 2322 y(comment:)-42 2362 y(/*!re2c)100 -2401 y("*/")157 b({)17 b(goto)f(std;)h(})100 2440 y("\\n")157 -b({)17 b(if\(cursor)e(==)i(s->eof\))e(RET\(EOI\);)f(s->tok)i(=)h -(s->pos)e(=)j(cursor;)d(s->line++;)364 2480 y(goto)h(comment;)f(})100 -2519 y([\\000-\\37)o(7])32 b({)17 b(goto)f(comment;)f(})-42 -2559 y(*/)-42 2598 y(})913 2748 y Fr(15)p eop -%%Page: 16 16 -16 15 bop -42 195 a Fs(References)-21 286 y Fr([1])20 -b Fa(Aho,)d(A.)g(V.,)f(Sethi,)h(R.,)h(and)f(Ullman,)h(J.)e(D.)21 -b Fi(Compilers:)e(principles,)c(te)n(chniques,)h(and)g(to)n(ols)p -Fr(.)k(Addison-)44 336 y(W)m(esley)m(,)13 b(1988.)k(Reprin)o(ted)d -(with)f(corrections.)-21 419 y([2])20 b Fa(Bernstein,)c(R.)f(L.)k -Fr(Pro)q(ducing)13 b(go)q(o)q(d)g(co)q(de)i(for)e(the)h(case)g -(statemen)o(t.)j Fi(Softwar)n(e{Pr)n(actic)n(e)d(and)h(Exp)n(erienc)n -(e)g(15)p Fr(,)44 469 y(10)e(\(Octob)q(er)j(1985\),)c(1021{1024.)-21 -552 y([3])20 b Fa(DeRemer,)e(F.,)f(and)g(Pennello,)i(T.)h -Fr(E\016cien)o(t)15 b(computation)e(of)h Fl(LALR)p Fr(\(1\))h(lo)q -(ok-ahead)f(sets.)21 b Fi(A)o(CM)15 b(T)m(r)n(ans-)44 -602 y(actions)g(on)g(Pr)n(o)n(gr)n(amming)g(L)n(anguages)h(and)f -(Systems)g(4)p Fr(,)f(4)g(\(Octob)q(er)h(1982\),)e(615{649.)-21 -685 y([4])20 b Fa(Ellis,)c(M.,)g(and)g(Str)o(oustr)o(up,)h(B.)i -Fi(The)c(A)o(nnotate)n(d)h(C++)e(R)n(efer)n(enc)n(e)h(Manual)p -Fr(.)j(Addison-W)m(esley)m(,)13 b(1990.)-21 768 y([5])20 -b Fa(Fraser,)c(C.)f(W.,)h(and)g(Hanson,)h(D.)f(R.)i Fr(A)c -(retargetable)g(compiler)e(for)h(ANSI)h(C.)j Fi(SIGPLAN)e(Notic)n(es)f -(26)p Fr(,)g(10)44 817 y(\(Octob)q(er)h(1991\),)e(29{43.)-21 -900 y([6])20 b Fa(Garey,)g(M.)d(R.,)i(and)g(Johnson,)h(D.)e(S.)25 -b Fi(Computers)16 b(and)h(Intr)n(actability:)k(A)c(Guide)g(to)f(the)h -(The)n(ory)f(of)h(NP-)44 950 y(Completeness)p Fr(.)h(W.)13 -b(H.)g(F)m(reeman)g(and)h(Compan)o(y)m(,)d(1991.)-21 -1033 y([7])20 b Fa(Gra)m(y,)14 b(R.)e(W.)g Fl(\015)r -Fr(-GLA)e(-)g(A)g(generator)g(for)g(lexical)f(analyzers)h(that)g -(programmers)e(can)i(use.)i Fi(USENIX)g(Confer)n(enc)n(e)44 -1083 y(Pr)n(o)n(c)n(e)n(e)n(dings)17 b Fr(\(June)e(1988\),)d(147{160.) --21 1166 y([8])20 b Fa(Gra)m(y,)c(R.)f(W.,)g(Heuring,)g(V.)f(P.,)h -(Levi,)h(S.)f(P.,)g(Slo)o(ane,)i(A.)d(M.,)h(and)g(W)-5 -b(aite,)15 b(W.)g(M.)h Fr(Eli:)h(A)c(complete,)44 1216 -y(\015exible)h(compiler)e(construction)j(system.)j Fi(Communic)n -(ations)d(of)g(the)g(A)o(CM)f(35)p Fr(,)g(2)g(\(F)m(ebruary)g(1992\),)f -(121{131.)-21 1299 y([9])20 b Fa(Gr)o(osch,)e(J.)i Fr(E\016cien)o(t)15 -b(generation)g(of)f(lexical)f(analysers.)21 b Fi(Softwar)n(e{Pr)n -(actic)n(e)15 b(and)h(Exp)n(erienc)n(e)g(19)p Fr(,)f(11)f(\(1989\),)44 -1349 y(1089{1103.)-42 1432 y([10])20 b Fa(Harrison,)c(M.)g(A.)j -Fi(Intr)n(o)n(duction)c(to)g(F)m(ormal)f(L)n(anguage)i(The)n(ory)p -Fr(.)i(Addison-W)m(esley)m(,)13 b(1978.)-42 1515 y([11])20 -b Fa(Hennessy,)15 b(J.)e(L.,)i(and)f(Mendelsohn,)i(N.)f -Fr(Compilation)8 b(of)j(the)h(Pascal)g(case)g(statemen)o(t.)i -Fi(Softwar)n(e{Pr)n(actic)n(e)44 1565 y(and)h(Exp)n(erienc)n(e)h(12)p -Fr(,)d(9)h(\(Septem)o(b)q(er)h(1982\),)d(879{882.)-42 -1648 y([12])20 b Fa(Horspool,)c(R.)g(N.,)f(and)g(Whitney,)h(M.)h -Fr(Ev)o(en)d(faster)g(LR)e(parsing.)k Fi(Softwar)n(e{Pr)n(actic)n(e)d -(and)i(Exp)n(erienc)n(e)g(20)p Fr(,)44 1697 y(6)e(\(1990\),)g(515{535.) --42 1780 y([13])20 b Fa(Ja)o(cobson,)d(V.)i Fr(T)m(uning)14 -b(UNIX)g(Lex)h(or)f(it's)f(NOT)i(true)g(what)f(they)h(sa)o(y)f(ab)q -(out)g(Lex.)19 b(In)14 b Fi(USENIX)i(Confer)n(enc)n(e)44 -1830 y(Pr)n(o)n(c)n(e)n(e)n(dings)h Fr(\(W)m(ashington,)12 -b(DC,)h(Win)o(ter)h(1987\),)f(pp.)g(163{164.)j(Abstract)f(only)m(.)-42 -1913 y([14])20 b Fa(Kernighan,)h(B.)e(W.,)h(and)g(Ritchie,)f(D.)h(M.)28 -b Fi(The)18 b(C)f(Pr)n(o)n(gr)n(amming)g(L)n(anguage,)i(2nd)g(Ed.)28 -b Fr(Pren)o(tice-Hall,)44 1963 y(Inc.,)13 b(1988.)-42 -2046 y([15])20 b Fa(Lesk,)25 b(M.)e(E.)38 b Fr(LEX)20 -b({)g(a)g(lexical)g(analyzer)g(generator.)38 b(Computing)18 -b(Science)k(T)m(ec)o(hnical)e(Rep)q(ort)h(39,)g(Bell)44 -2096 y(T)m(elephone)14 b(Lab)q(oratories,)g(Murra)o(y)g(Hill,)e(NJ,)h -(1975.)-42 2179 y([16])20 b Fa(P)l(axson,)e(V.)h Fr(\015ex)14 -b({)g(man)e(pages,)i(1988.)j(In)d Ff(\015ex-2.3.7.ta)o(r.Z)p -Fr(.)e(Av)n(ailable)g(for)i(anon)o(ymous)e(ftp)i(from)e -Ff(ftp.uu.net)j Fr(in)44 2229 y Ff(/pack)o(ages/gnu)p -Fr(.)-42 2312 y([17])20 b Fa(Pennello,)k(T.)d(J.)33 b -Fr(V)m(ery)19 b(fast)g(LR)f(parsing.)33 b(In)19 b Fi(Pr)n(o)n(c)n(e)n -(e)n(dings)g(of)g(the)h(A)o(CM)f(SIGPLAN'86)h(Symp)n(osium)g(on)44 -2362 y(Compiler)14 b(Construction)j Fr(\(July)c(1986\),)g(A)o(CM.)-42 -2445 y([18])20 b Fa(Sale,)g(A.)25 b Fr(The)17 b(implemen)o(tatio)o(n)c -(of)j(case)h(statemen)o(ts)g(in)e(Pascal.)25 b Fi(Softwar)n(e{Pr)n -(actic)n(e)16 b(and)i(Exp)n(erienc)n(e)f(11)p Fr(,)g(9)44 -2494 y(\(Septem)o(b)q(er)d(1981\),)f(929{942.)913 2748 -y(16)p eop -%%Trailer -end -userdict /end-hook known{end-hook}if -%%EOF diff --git a/doc/tdfa/tdfa.tex b/doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/2017_trofimovich_tagged_deterministic_finite_automata_with_lookahead.tex similarity index 93% rename from doc/tdfa/tdfa.tex rename to doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/2017_trofimovich_tagged_deterministic_finite_automata_with_lookahead.tex index 2f7ca741..91dde758 100644 --- a/doc/tdfa/tdfa.tex +++ b/doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/2017_trofimovich_tagged_deterministic_finite_automata_with_lookahead.tex @@ -1,5 +1,5 @@ \documentclass{article} -\usepackage[margin=2cm]{geometry} +\usepackage[margin=1.9cm]{geometry} \usepackage{amsmath,amssymb,amsthm,amsfonts} \usepackage[utf8]{inputenc} \usepackage{graphicx} @@ -7,7 +7,6 @@ \usepackage[justification=centering]{caption} \usepackage{url} \usepackage{multicol}\setlength{\columnsep}{1cm} -%\usepackage[vlined]{algorithm2e}\setlength{\algomargin}{0em}\SetArgSty{textnormal} \usepackage[noline,noend]{algorithm2e} \setlength{\algomargin}{0em} \SetArgSty{textnormal} @@ -76,7 +75,7 @@ \title{Tagged Deterministic Finite Automata with Lookahead} \author{Ulya Trofimovich\\ -\texttt{\small{skvadrik@.gmail.com}}} +\texttt{\small{skvadrik@gmail.com}}} \date{August 2017} \begin{document} @@ -226,7 +225,7 @@ However, generalization of regular events to other fields of mathematics remaine in particular, Kleene raised the question whether regular events could be reformulated as a deductive system based on logical axioms and algebraic laws. This question was thoroughly investigated by many authors (see \cite{Koz94} for a historic overview) -and the formalism became known as \emph{the algebra of regular events} %$\mathcal{K} \Xeq (K, +, \cdot, *, 1, 0)$ +and the formalism became known as \emph{the algebra of regular events} or, more generally, the \emph{Kleene algebra} $\mathcal{K} \Xeq (K, +, \cdot, *, 1, 0)$. Several different axiomatizations of Kleene algebra were given; in particular, Kozen gave a finitary axiomatization based on equations and equational implications and sound for all interpretations \cite{Koz94}. @@ -246,7 +245,6 @@ The following definition of regular expressions, with minor notational differenc \item[] $(e^*)$, where $e$ is a RE over $\Sigma$ (\emph{iteration}) \medskip \end{enumerate} - $\square$ \end{Xdef} The usual assumption is that iteration has precedence over product and product has precedence over sum, @@ -261,19 +259,16 @@ and let $\Sigma^*$ denote the set of all strings over $\Sigma$ (including the em \begin{Xdef} \emph{Language} over $\Sigma$ is a subset of $\Sigma^*$. - $\square$ \end{Xdef} \begin{Xdef}\label{langunion} \emph{Union} of two languages $L_1$ and $L_2$ is $L_1 \cup L_2 = \{ x \mid x \Xin L_1 \vee x \Xin L_2 \}$ - $\square$ \end{Xdef} \begin{Xdef}\label{langproduct} \emph{Product} of two languages $L_1$ and $L_2$ is $L_1 \cdot L_2 = \{ x_1 x_2 \mid x_1 \Xin L_1 \wedge x_2 \Xin L_2 \}$ - $\square$ \end{Xdef} \begin{Xdef}\label{langiterate} @@ -282,13 +277,11 @@ and let $\Sigma^*$ denote the set of all strings over $\Sigma$ (including the em \{ \epsilon \} & \text{if } n \Xeq 0 \\[-0.5em] L \cdot L^{n - 1} & \text{if } n\!>\!0 \end{cases}$$ - $\square$ \end{Xdef} \begin{Xdef}\label{langiterate} \emph{Iterate} of language $L$ is $L^* = \bigcup\limits_{n = 0}^\infty L^n$. - $\square$ \end{Xdef} \begin{Xdef} @@ -302,7 +295,6 @@ and let $\Sigma^*$ denote the set of all strings over $\Sigma$ (including the em \XL \Xlb e_1 e_2 \Xrb &= \XL \Xlb e_1 \Xrb \cdot \XL \Xlb e_2 \Xrb \\ \XL \Xlb e^* \Xrb &= \XL \Xlb e \Xrb ^* \end{align*} - $\square$ \end{Xdef} Other interpretations are also possible; @@ -314,7 +306,6 @@ except that we are interested in partial parse structure rather than full parse \begin{Xdef} Language $L$ over $\Sigma$ is \emph{regular} iff exists RE $e$ over $\Sigma$ such that $L$ is denoted by $e$: $\XL \Xlb e \Xrb \Xeq L$. - $\square$ \end{Xdef} For the most useful RE there are special shortcuts: @@ -370,15 +361,12 @@ Generalized repetition, on the other hand, allows to express all kinds of iterat \hphantom{\qquad} and $0 \!\leq\! n \!\leq\! m \!\leq\! \infty$ (\emph{repetition}) \medskip \end{enumerate} - $\square$ \end{Xdef} As usual, we assume that repetition has precedence over product and product has precedence over sum, and redundant parentheses may be omitted. Additionally, the following shorthand notation may be used: \begin{align*} -% e^n &\quad\text{for}\quad \overbrace{e \dots e}^{n} \\[-0.5em] -% e^{n,m} &\quad\text{for}\quad e^{n-1} e^{1,m-n} \\[-0.5em] e^* &\quad\text{for}\quad e^{0,\infty} \\[-0.5em] e^+ &\quad\text{for}\quad e^{1,\infty} \\[-0.5em] e^? &\quad\text{for}\quad e^{0,1} \\[-0.5em] @@ -389,7 +377,6 @@ Generalized repetition, on the other hand, allows to express all kinds of iterat TRE over $\Sigma$, $T$ is \emph{well-formed} iff all tags in it are pairwise different and $T \Xeq \{ 1, \dots, |T| \}$. - $\square$ We will consider only well-formed TRE. \end{Xdef} @@ -410,7 +397,6 @@ and the corresponding strings are \emph{S-strings}: \XS \Xlb e_1 e_2 \Xrb &= \XS \Xlb e_1 \Xrb \cdot \XS \Xlb e_2 \Xrb \\ \XS \Xlb e^{n,m} \Xrb &= \bigcup\limits_{i=n}^m \XS \Xlb e \Xrb ^i \end{align*} - $\square$ \end{Xdef} On the other hand, if we interpret tags as symbols, then every TRE over $\Sigma$, $T$ is a RE over the joined alphabet $\Sigma \cup T$. @@ -445,7 +431,6 @@ Negative tags are marked with bar, and $\Xbar{T}$ denotes the set of all negativ \chi(e) &= \Xbar{t_1} \dots \Xbar{t_n}, \text{ such that} \\ &t_1 \dots t_n \text{ are all tags in } e \end{align*} - $\square$ \end{Xdef} \begin{Xdef}\label{deftlang} @@ -453,7 +438,6 @@ Negative tags are marked with bar, and $\Xbar{T}$ denotes the set of all negativ TRE over $\Sigma$, $T$ denotes a language over $\Sigma \cup T \cup \Xbar{T}$: $\XT \Xlb e \Xrb = \XL \Xlb \widetilde{e} \Xrb$, where $\widetilde{e}$ is a RE syntactically identical to TRE $\XX(e)$. - $\square$ \end{Xdef} The language over $\Sigma \cup T \cup \Xbar{T}$ is called \emph{T-language} @@ -489,7 +473,6 @@ For example: \gamma_i &\text{if } \gamma_i \Xin \Sigma \\[-0.5em] \epsilon &\text{otherwise} \end{cases}$$ - $\square$ \end{Xdef} It is easy to see that for any TRE $e$, $\XS \Xlb e \Xrb$ @@ -503,7 +486,6 @@ However, there might be multiple such T-strings, in which case we speak of \emph \begin{Xdef} T-strings $x$ and $y$ are \emph{ambiguous} iff $x \!\neq\! y$ and $S(x) \Xeq S(y)$. - $\square$ \end{Xdef} We can define equivalence relation $\simeq$ on the T-language: let $x \simeq y \Leftrightarrow S(x) \Xeq S(y)$. @@ -514,7 +496,6 @@ Under this relation each equivalence class with more than one element forms a ma for each subset of pairwise ambiguous T-strings it is total ($\forall$ ambiguous $x, y \Xin L$: either $x \prec y$ or $y \prec x$), and the minimal T-string in this subset exists ($\exists x \Xin L: \forall y \Xin L \mid$ ambiguous $x, y: x \prec y$). - $\square$ \end{Xdef} We will return to disambiguation in section \ref{section_disambiguation}. @@ -539,7 +520,6 @@ and convert them to tag value functions after disambiguation. |S(\gamma_1 \dots \gamma_i)| &\text{if } \gamma_i \Xeq t \\[-0.5em] \epsilon &\text{otherwise} \end{cases}$$ - $\square$ \end{Xdef} Negative submatches have no exact offset: they can be attributed to any point on the alternative path of TRE. @@ -617,21 +597,10 @@ Finally, we add negative tagged transitions. \item[] $\Delta^\Sigma \subseteq Q \times \Sigma \times \{\epsilon\} \times Q$ \item[] $\Delta^\epsilon \subseteq Q \times (P \cup \{\epsilon\}) \times (T \cup \Xbar{T} \cup \{\epsilon\}) \times Q$ \end{itemize} - -% \item[] $\Delta \Xeq \Delta^\Sigma \sqcup \Delta^\epsilon \sqcup \Delta^T \sqcup \Delta^P$ is the \emph{transition} relation, which includes -% transitions on symbols, $\epsilon$-transitions, tagged $\epsilon$-transitions and prioritized $\epsilon$-transitions: -% \begin{itemize} -% \item[] $\Delta^\Sigma \subseteq Q \times \Sigma \times \{\epsilon\} \times Q$ -% \item[] $\Delta^\epsilon \subseteq Q \times \{\epsilon\} \times \{\epsilon\} \times Q$ -% \item[] $\Delta^T \subseteq Q \times \{\epsilon\} \times (T \cup \Xbar{T}) \times Q$ -% \item[] $\Delta^P \subseteq Q \times P \times \{\epsilon\} \times Q$ -% \end{itemize} - and all $\epsilon$-transitions from the same state have different priorities: $\forall (x, r, \epsilon, y), (\widetilde{x}, \widetilde{r}, \epsilon, \widetilde{y}) \Xin \Delta^\epsilon: x \Xeq \widetilde{x} \wedge y \Xeq \widetilde{y} \Rightarrow r \!\neq\! \widetilde{r}$. \end{itemize} - $\square$ \end{Xdef} TNFA construction is similar to Thompson NFA construction, @@ -661,7 +630,7 @@ where $(Q, x, y, \Delta) \Xeq \XF(\XX(e))$ and $\XF$ is defined as follows: \end{align*} % \begin{Xfig} -\includegraphics[width=0.3\linewidth]{img/tnfa/union.png}\\* +\includegraphics[width=0.3\linewidth]{img/tnfa_union.png}\\* \captionof{figure}{Automata union.} \end{Xfig} % @@ -675,7 +644,7 @@ where $(Q, x, y, \Delta) \Xeq \XF(\XX(e))$ and $\XF$ is defined as follows: \end{align*} % \begin{Xfig} -\includegraphics[width=0.25\linewidth]{img/tnfa/concat.png}\\* +\includegraphics[width=0.25\linewidth]{img/tnfa_concat.png}\\* \captionof{figure}{Automata product.} \end{Xfig} % @@ -691,7 +660,7 @@ where $(Q, x, y, \Delta) \Xeq \XF(\XX(e))$ and $\XF$ is defined as follows: \end{align*} % \begin{Xfig} -\includegraphics[width=0.55\linewidth]{img/tnfa/repeat_unbound.png}\\* +\includegraphics[width=0.55\linewidth]{img/tnfa_repeat_unbound.png}\\* \captionof{figure}{Unbounded repetition of automata.} \end{Xfig} % @@ -707,7 +676,7 @@ where $(Q, x, y, \Delta) \Xeq \XF(\XX(e))$ and $\XF$ is defined as follows: \end{align*} % \begin{Xfig} -\includegraphics[width=0.9\linewidth]{img/tnfa/repeat_bound.png}\\* +\includegraphics[width=0.9\linewidth]{img/tnfa_repeat_bound.png}\\* \captionof{figure}{Bounded repetition of automata.} \end{Xfig} @@ -741,13 +710,11 @@ from the one corresponding to $i$-th iteration A \emph{path} in TNFA $(\Sigma, T, P, Q, F, q_0, \Delta)$ is a sequence of transitions $\{(q_i, \alpha_i, a_i, \widetilde{q}_i)\}_{i=1}^n \subseteq \Delta$, where $n \!\geq\! 0$ and $\widetilde{q}_i \Xeq q_{i+1} \; \forall i \Xeq \overline{1,n-1}$. - $\square$ \end{Xdef} \begin{Xdef} Path $\{(q_i, \alpha_i, a_i, \widetilde{q}_i)\}_{i=1}^n$ in TNFA $(\Sigma, T, P, Q, F, q_0, \Delta)$ is \emph{accepting} if either $n \Xeq 0 \wedge q_0 \Xin F$ or $n\!>\!0 \wedge q_1 \Xeq q_0 \wedge \widetilde{q}_n \Xin F$. - $\square$ \end{Xdef} \begin{Xdef} @@ -767,13 +734,11 @@ from the one corresponding to $i$-th iteration \epsilon &\text{otherwise} \end{cases} \end{align*} - $\square$ \end{Xdef} \begin{Xdef} TNFA $\XN$ \emph{transduces} S-string $s$ to a T-string $x$, denoted $s \xrightarrow{\XN} x$ if $s \Xeq S(x)$ and there is an accepting path $\pi$ in $\XN$, such that $\XT(\pi) \Xeq x$. - $\square$ \end{Xdef} The set of all S-strings that are transduced to some T-string is the \emph{input language} of TNFA; @@ -861,7 +826,6 @@ later we will show that both POSIX and leftmost greedy policies have this proper $\pi_2 \Xeq \{(p_i, \beta_i, b_i, \widetilde{p}_i)\}_{i=1}^m$ are \emph{ambiguous} if their start and end states coincide: $q_1 \Xeq p_1$, $\widetilde{q}_n \Xeq \widetilde{p}_m$ and their induced T-strings $\XT(\pi_1)$ and $\XT(\pi_2)$ are ambiguous. - $\square$ \end{Xdef} \begin{Xdef} @@ -870,7 +834,6 @@ later we will show that both POSIX and leftmost greedy policies have this proper so that for any ambiguous paths $\pi_1 $, $\pi_2 $ in TNFA $\XN \Xlb e \Xrb$ and any common suffix $\pi_3$ the following holds: $\XT(\pi_1) \prec \XT(\pi_2) \Leftrightarrow \XT(\pi_1 \pi_3) \prec \XT(\pi_2 \pi_3)$. - $\square$ \end{Xdef} The problem of closure construction can be expressed in terms of single-source shortest-path problem @@ -1077,24 +1040,6 @@ Left: normal scale, right: logarithmic scale on both axes.} \begin{multicols}{2} -%\end{multicols} -%\begin{minipage}{\linewidth} -%\begin{center}\includegraphics[width=\linewidth]{img/plot_acyc_neg_both.png} -%\\ -%\small{Behavior of LAU, LAU1 and GOR algorithms on Acyc-Neg family -%(left -- normal scale, right -- logarithmic scale on both axes).} -%\end{center} -%\end{minipage} -%\begin{minipage}{\linewidth} -%\begin{center}\includegraphics[width=\linewidth]{img/plot_grid_nhard_both.png} -%\\ -%\small{Behavior of LAU, LAU1 and GOR algorithms on Grid-NHard family -%(left -- normal scale, right -- logarithmic scale on both axes).} -%\end{center} -%\end{minipage} -%\\ -%\begin{multicols}{2} - \section{Disambiguation}\label{section_disambiguation} In section \ref{section_tagged_extension} we defined disambiguation policy as strict partial order on the T-language of the given TRE. @@ -1131,8 +1076,6 @@ In order to construct TDFA we must be able to fold loops: if there is a nonempty loop in TNFA, determinization must eventually construct a loop in TDFA (otherwise it won't terminate). To do this, determinization must establish \emph{equivalence} of two TDFA states. -%We cannot define equivalence as exact coincidence: if there is a loop, histories in one state are prefixes of histories in the other. -%But we can use a weaker definition: From disambiguation point of view equivalence means that all ambiguities stemming from one state are resolved in the same way as ambiguities stemming from the other. However, we cannot demand exact coincidence of all state attributes engaged in disambiguation: @@ -1172,7 +1115,6 @@ and each bitcode is lexicographically less than the previous one. Paths that contain $\epsilon$-loops are called \emph{problematic} (see \cite{Gra15}, definition 3.28). If we limit ourselves to non-problematic paths (e.g. by cancelling loops in $\epsilon$-closure), then the minimal element exists and bitcodes are well-ordered. -%The following lemma states an important property of bitcodes induced by paths gathered by $\epsilon$-closure: \begin{XLem}\label{lemma_bitcodes} Let $\Pi$ be a set of TNFA paths that start in the same state, induce the same S-string and end in a core state @@ -1357,8 +1299,6 @@ Histories can be reconstructed from T-strings as follows: } \end{algorithm} -%Disambiguation algorithm should compare individual subhistories, not histories as a whole. -%The number of subhistories depends on the number of iterations of enclosing repetition subexpressions. Due to the hierarchical nature of POSIX disambiguation, if comparison reaches $i$-th subexpression, it means that all enclosing subexpressions have already been compared and their tags coincide. Consequently the number of subhistories of tags $2i - 1$ and $2i$ in the compared T-strings must be equal. @@ -1481,7 +1421,6 @@ Induction step: suppose that lemma is true for all $u \!<\! t$, and for $t$ the conditions of lemma are satisfied. Let $r$ be the start tag of a subexpression in which $t$ is immediately enclosed. Since $r \!<\! t$, the lemma is true for $r$ by inductive hypothesis; -%let $history(x, r) \Xeq C_1 \dots C_m$, $history(y, r) \Xeq D_1 \dots D_m$ and let $c_1 \dots c_m$, $d_1 \dots d_m$ be the corresponding path decompositions. Each subhistory of $t$ is covered by some subhistory of $r$ (by definition $history$ doesn't break at lower-priority tags), therefore decompositions $a_1 \dots a_n$, $b_1 \dots b_n$ can be constructed as a refinement of $c_1 \dots c_m$, $d_1 \dots d_m$. @@ -1585,7 +1524,6 @@ Consequently, $e_1$ itself must be the subexpression that ends with $t$. By construction of TNFA for $e_1 | e_2$ all paths through it contain a single $t$-tagged transition at the very end (either positive or negative). Therefore both $\varnothing$ and non-$\varnothing$ must be discovered at the same step when ambiguous paths join. -%subautomata for $e_1$ and $e_2$ contain a single $t$-tagged transition at the very end (positive and negative respectively). $\square$ \end{XLem} @@ -1617,9 +1555,6 @@ greater values have higher priority. $A_1 \dots A_m \Xset \epsilon \Xund history(x_i, t)$ \; $B_i \Xset A_m$ \; \lIf {$m \Xeq 1$} {$B_i \Xset o_i(t) B_i$} -% \If {$m \Xeq 1$ and ($orbit(t)$ or $B_i \Xeq \epsilon$)} { -% $B_i \Xset o_{i t} B_i$ \; -% } } \BlankLine $\{(p_i, C_i)\} \Xset $ sort $\{(i, B_i)\}$ by second component using inverted $\prec_{subhistory}$ \; @@ -1669,16 +1604,6 @@ where $ox$, $oy$ are ordinals and $x$, $y$ are the added T-string fragments: $A_1 \Xset a A_1$ \; $B_1 \Xset b B_1$ \; -% $A_1 \dots A_n \Xset \epsilon \Xund history(x, 2t), \; a \Xset ox_{2t}$ \; -% $B_1 \dots B_n \Xset \epsilon \Xund history(y, 2t), \; b \Xset oy_{2t}$ \; -% \If {$orbit(2t)$} { -% $A_1 \Xset a A_1$ \; -% $B_1 \Xset b B_1$ \; -% } \Else { -% \lIf {$A_1 \Xeq \epsilon$} {$A_1 \Xset a$} -% \lIf {$B_1 \Xeq \epsilon$} {$B_1 \Xset b$} -% } - \For {$i \Xeq \overline{1, n}$} { \lIf {$A_i \!\neq\! B_i$} {\Return $A_i \prec_{subhistory} B_i$} } @@ -1695,7 +1620,6 @@ including \emph{fictive} tags that don't correspond to any submatch and exist pu They are probably not many: POSIX RE use the same operator for grouping and submatching, and compound expressions usually need grouping to override operator precedence, so it is uncommon to construct a large RE without submatches. -%(otherwise union cannot be enclosed in concatenation and repetition of non-atomic subexpressions cannot be used at all). However, fictive tags must be inserted into RE; neither Laurikari nor Kuklewicz mention it, but both their libraries seem to do it (judging by the source code). \\ @@ -1735,7 +1659,6 @@ but in practice values may be single offsets or anything else. Laurikari determinization algorithm has the same basic principle as the usual powerset construction (see e.g. \cite{HU90}, Theorem 2.1 on page 22): simulation of nondeterministic automaton on all possible inputs combined with merging of equivalent states. The most tricky part is merging: extended configuration sets are no longer equal, as they contain absolute tag values. -%(in fact, they cannot coincide in case of tagged non-empty loops in TNFA). In section \ref{section_disambiguation} we solved similar problem with respect to disambiguation by moving from absolute T-strings to relative ordinals. However, this wouldn't work with tag values, as we need the exact offsets. @@ -1768,7 +1691,6 @@ which brings us to the following definition of TDFA: is the \emph{register initialize} function \end{itemize} where $\YB$ is the boolean set $\{0,1\}$. - $\square$ \end{Xdef} Operations on registers are associated with transitions, final states and start state, @@ -1813,7 +1735,6 @@ Accordingly, \emph{tag-deterministic} RE are those for which it is possible to b (also called \emph{one-pass} in \cite{Cox10}). As with LR(0) and LR(1), many RE are tag-deterministic with respect to TDFA(1), but not TDFA(0). Unlike LR automata, TDFA with conflicts are correct, but they can be very inefficient: -%tags with high degree of nondeterminizm induce a lot of register operations. the higher tag's degree of nondeterminism, the more registers it takes to hold its values, and the more operations are required to manage these registers. Deterministic tags need only a single register and can be implemented without copy operations. @@ -1846,13 +1767,11 @@ in this case we simply substitute it with $r_2$ instead of copying. Determinization algorithm can handle both POSIX and leftmost greedy policies, but in the latter case it can be simplified to avoid explicit calculation of ordinals, as discussed in section \ref{section_disambiguation}. -%\begin{Xfig}\label{fig_det} \begin{figure*} +\begin{algorithm}[H] \DontPrintSemicolon \SetKw{Let}{let} \SetKw{Und}{undefined} \SetKwProg{Fn}{}{}{} \SetAlgoInsideSkip{medskip} \begin{multicols}{2} - \begin{algorithm}[H] \DontPrintSemicolon \SetKw{Let}{let} \SetKw{Und}{undefined} \SetKwProg{Fn}{}{}{} \SetAlgoInsideSkip{medskip} \Fn {$\underline{determinization(\XN \Xeq (\Sigma, T, Q, F, q_0, T, \Delta), \ell)} \smallskip$} { -% \Indm \tcc {initialization} \Let $initord(t) \Xeq 0$ \; @@ -1902,7 +1821,6 @@ but in the latter case it can be simplified to avoid explicit calculation of ord \BlankLine \tcc {final state and reg-finalize function} -% \If {$X$ contains configuration $(q, v, o, x)$ with final state $q \Xin F$} { \If {exists $(q, v, o, x) \Xin X \mid q \Xin F$} { add $X$ to $\YF$ \; \ForEach {tag $t \Xin T$} { @@ -1915,18 +1833,11 @@ but in the latter case it can be simplified to avoid explicit calculation of ord \Let $R \Xeq \{ 1, \dots, maxreg \}$ \; \Return $(\Sigma, T, \YQ, \YF, Q_0, R, \delta, \zeta, \eta, \iota)$ \; } - \end{algorithm} + \BlankLine + \BlankLine - \begin{algorithm}[H] \DontPrintSemicolon \SetKw{Let}{let} \SetKw{Und}{undefined} \SetKwProg{Fn}{}{}{} \SetAlgoInsideSkip{medskip} \Fn {$\underline{op(x, t)} \smallskip$} { -% \lIf {$x \Xeq \epsilon$} {\Return $\epsilon$} -% \Let $x \Xeq a y$ -% \Switch {$a$} { -% \lCase {$\Xbar{t}$} {\Return $0 \cdot op(y, t)$} -% \lCase {$t$} {\Return $1 \cdot op(y, t)$} -% \lOther {\Return $op(y, t)$} -% } \Switch {$x$} { \lCase {$\epsilon$} {\Return $\epsilon$} \lCase {$\Xbar{t} y$} {\Return $0 \cdot op(y, t)$} @@ -1934,10 +1845,11 @@ but in the latter case it can be simplified to avoid explicit calculation of ord \lCase {$a y$} {\Return $op(y, t)$} } } - \end{algorithm} + \vfill\null + +\columnbreak - \begin{algorithm}[H] \DontPrintSemicolon \SetKw{Let}{let} \SetKw{Und}{undefined} \SetKwProg{Fn}{}{}{} \SetAlgoInsideSkip{medskip} \Fn {$\underline{closure(\XN, lookahead, X, maxreg, newreg)} \smallskip$} { \tcc {construct closure and update ordinals} @@ -1985,23 +1897,15 @@ but in the latter case it can be simplified to avoid explicit calculation of ord $regops \Xset \{(newreg(o), r, h) | o \Xeq (t, r, h) \Xin newops\}$ \; \Return $(X, regops, maxreg, newreg)$ \; } - \end{algorithm} + \BlankLine + \BlankLine - \begin{algorithm}[H] \DontPrintSemicolon \SetKw{Let}{let} \SetKw{Und}{undefined} \SetKwProg{Fn}{}{}{} \SetAlgoInsideSkip{medskip} \Fn {$\underline{map(X, Y, T, ops)} \smallskip$} { \Let $xregs(t) \Xeq \{v(t) \mid (q, v, o, x) \Xin X \}$ \; \Let $yregs(t) \Xeq \{v(t) \mid (q, v, o, x) \Xin Y \}$ \; \BlankLine -% \If {exists bijection $M$ between states $X$ and $Y$, -% and for each tag $t \Xin T$ exists bijection $m(t)$ between $xregs(t)$ and $yregs(t)$, such that -% corresponding configurations $(q, v, o, x)$, $(\widetilde{q}, \widetilde{v}, \widetilde{o}, \widetilde{x})$ in $M$ -% have equal states $q \Xeq \widetilde{q}$, equal ordinals $o \Xeq \widetilde{o}$, -% equal lookahead operations $op(x, t) \Xeq op(\widetilde{x}, t)$ $\forall t \Xin T$ -% and their registers correspond $(v(t), \widetilde{v}(t)) \Xin m(t)$ $\forall t \Xin T$, -% } { - \tcc {map one state to the other so that the corresponding configurations have equal TNFA states, ordinals and lookahead operations, and there is bijection between registers} @@ -2014,14 +1918,6 @@ but in the latter case it can be simplified to avoid explicit calculation of ord and $(v(t), \widetilde{v}(t)) \Xin m(t)$, } { -% \If {exists bijection $M: X \leftrightarrow Y$, -% and for each tag $t \Xin T$ exists bijection $m(t): xregs(t) \leftrightarrow yregs(t)$, such that -% corresponding configurations $(q, v, o, x)$, $(\widetilde{q}, \widetilde{v}, \widetilde{o}, \widetilde{x})$ in $M$ -% have equal states $q \Xeq \widetilde{q}$, equal ordinals $o \Xeq \widetilde{o}$, -% equal lookahead operations $op(x, t)$ $\Xeq$ $op(\widetilde{x}, t)$ $\forall t \Xin T$ -% and their registers correspond $(v(t), \widetilde{v}(t)) \Xin m(t)$ $\forall t \Xin T$, -% } { - \Let $m \Xeq \bigcup_{t \in T} m(t)$ \; \tcc {fix target register in existing operations} @@ -2036,9 +1932,9 @@ but in the latter case it can be simplified to avoid explicit calculation of ord \Return \Und } } - \end{algorithm} \end{multicols} +\end{algorithm} \begin{center} \caption{Determinization algorithm.\\ Functions $reach'$ and $closure'$ are exactly as @@ -2047,7 +1943,6 @@ except for the trivial adjustments to carry around ordinals and pass them into d } \end{center} \end{figure*} -%\end{Xfig} \begin{XThe} Determinization algorithm terminates. @@ -2100,7 +1995,7 @@ Note that the resulting automata are not yet optimized and use more registers th \end{multicols} \begin{Xfig} -\includegraphics[width=0.9\linewidth]{img/example1/all.png}\\* +\includegraphics[width=0.9\linewidth]{img/example1_all.png}\\* \textbf{Example 1.} $a^* 1 b^*$ (the TRE mentioned in the introduction).\\* (a) --- TNFA, (b) --- construction of TDFA(0), (c) --- TDFA(0), (d) --- construction of TDFA(1), (e) --- TDFA(1). \\*\medskip @@ -2115,7 +2010,7 @@ and has 2nd degree of nondeterminism with respect to TDFA(0) \end{Xfig} \begin{Xfig} -\includegraphics[width=0.9\linewidth]{img/example2/all.png}\\* +\includegraphics[width=0.9\linewidth]{img/example2_all.png}\\* \textbf{Example 2.} $a^* 1 a^* a$ (the TRE used by Laurikari to explain his algorithm).\\* (a) --- TNFA, (b) --- construction of TDFA(0), (c) --- TDFA(0), (d) --- construction of TDFA(1), (e) --- TDFA(1).\\* This TRE has a modest degree of nondeterminism: 2 for TDFA(1) and 3 for TDFA(0). @@ -2124,7 +2019,7 @@ Compare (c) with figure 3 from \cite{Lau00}: it is the same automaton up to a mi \end{Xfig} \begin{Xfig} -\includegraphics[width=0.8\linewidth]{img/example6/all.png}\\* +\includegraphics[width=0.8\linewidth]{img/example6_all.png}\\* \textbf{Example 3.} $(1 a)^*$ .\\* (a) --- TNFA, (b) --- construction of TDFA(0), (c) --- TDFA(0), (d) --- construction of TDFA(1), (e) --- TDFA(1).\\* This example shows the typical difference between automata: @@ -2134,7 +2029,7 @@ TRE has 2nd degree nondeterminism for TDFA(0) and is deterministic for TDFA(1). \end{Xfig} \begin{Xfig} -\includegraphics[width=0.8\linewidth]{img/example5/all.png}\\* +\includegraphics[width=0.8\linewidth]{img/example5_all.png}\\* \textbf{Example 4.} $(1 a^+ 2 b^+)^+$ .\\* (a) --- TNFA, (b) --- construction of TDFA(0), (c) --- TDFA(0), (d) --- construction of TDFA(1), (e) --- TDFA(1).\\* Like Example 1, this example shows that TDFA(0) tends to pull operations inside of loops @@ -2145,7 +2040,7 @@ Both tags have 2nd degree of nondeterminism for TDFA(0), and both are determinis \end{Xfig} \begin{Xfig} -\includegraphics[width=0.9\linewidth]{img/example3/all.png}\\* +\includegraphics[width=0.9\linewidth]{img/example3_all.png}\\* \textbf{Example 5.} $a^* 1 a^{3}$ .\\* (a) --- TNFA, (b) --- construction of TDFA(0), (c) --- TDFA(0), (d) --- construction of TDFA(1), (e) --- TDFA(1).\\* This example demonstrates a pathological case for both types of automata: @@ -2160,7 +2055,7 @@ e.g. automata with \emph{counters} described in \cite{Bec09} (chapter 5.1.12). \end{Xfig} \begin{Xfig} -\includegraphics[width=\linewidth]{img/example4/all.png}\\* +\includegraphics[width=\linewidth]{img/example4_all.png}\\* \textbf{Example 6.} $1 (3 (a | aa) 4)^* 2$, corresponding to POSIX RE \texttt{(a|aa)+}.\\* (a) --- TNFA, (b) --- construction of TDFA(0), (c) --- TDFA(0), (d) --- construction of TDFA(1), (e) --- TDFA(1).\\* This example uses POSIX disambiguation. @@ -2182,17 +2077,6 @@ Second, both kinds of automata are only suitable for RE with modest levels of am and low submatch detalisation: TDFA can be applied to full parsing, but other methods would probably outperform them. However, RE of such form are very common in practice and for them TDFA can be very efficient. -%\vfill\null\pagebreak - -%\begin{minipage}{\linewidth} -% \centering -% \footnotesize -% \includegraphics[width=0.5\linewidth]{img/x1.png} -% \\ A picture of the same gull looking the other way! -%\end{minipage} -%\begin{center}\includegraphics[width=\linewidth]{img/x0.png}\end{center} -%\begin{center}\includegraphics[width=0.5\linewidth]{img/x1.png}\end{center} -%\begin{center}\includegraphics[width=0.5\linewidth]{img/x2.png}\end{center} \section{Implementation}\label{section_implementation} @@ -2241,12 +2125,12 @@ TRE $(a 1 bc)^+$ exhibits this problem for both TDFA(0) and TDFA(1) (labels 1, 2 and 3 on transitions correspond to symbols \texttt{a}, \texttt{b} and \texttt{c}): \begin{Xfig} -\includegraphics[width=\linewidth]{img/fallback/tdfa0.png} +\includegraphics[width=\linewidth]{img/fallback_tdfa0.png} \captionof{figure}{TDFA(0) for $(a 1 bc)^+$.} \end{Xfig} \begin{Xfig} -\includegraphics[width=\linewidth]{img/fallback/tdfa1.png} +\includegraphics[width=\linewidth]{img/fallback_tdfa1.png} \captionof{figure}{TDFA(1) for $(a 1 bc)^+$.} \end{Xfig} @@ -2268,12 +2152,12 @@ For the above example the ``repaired'' automata look as follows (register 3 is renamed to 2, register 1 is backup, fallback transitions are not shown): \begin{Xfig} -\includegraphics[width=\linewidth]{img/fallback/tdfa0_fallback.png} +\includegraphics[width=\linewidth]{img/fallback_tdfa0_fallback.png} \captionof{figure}{TDFA(0) for $(a 1 bc)^+$ with backup registers.} \end{Xfig} \begin{Xfig} -\includegraphics[width=\linewidth]{img/fallback/tdfa1_fallback.png} +\includegraphics[width=\linewidth]{img/fallback_tdfa1_fallback.png} \captionof{figure}{TDFA(1) for $(a 1 bc)^+$ with backup registers.} \end{Xfig} @@ -2289,7 +2173,6 @@ we can also use it for backup. It may happen that two tags in TRE are separated by a fixed number of characters: each offset of one tag is equal to the corresponding offset of the other tag plus some static offset. -%the value of one tag is always equal to the value of the other plus some static offset. In this case we can track only one of the tags; we say that the second tag is \emph{fixed} on the first one. For example, in TRE $a^* 1 b 2 c^*$ tag 1 is always one character behind of tag 2, therefore it is fixed on tag 2 with offset -1. @@ -2312,7 +2195,6 @@ if this length is variable, distance is infinity and the new tag belongs to a ne When optimizing out fixed tags, one should be careful in two respects. First, negative submatches: if the value of representative is $\varnothing$, then all fixed tags are also $\varnothing$ and their offsets should be ignored. -%if tag $t_1$ is fixed on tag $t_2$ with offset $n$ Second, fixed tags may be used by disambiguation policy: in this case they should be kept until disambiguation is finished; then they can be removed from TDFA with all associated operations. @@ -2523,10 +2405,7 @@ but at the same time both grammars have non-trivial structure composed of multip Each example has two implementations: RFC-compliant and simplified (both forms may be useful in practice). The input to each parser is a 1G file of randomly generated URIs or HTTP messages; it is buffered in 4K chunks. Programs are written so that they spend most of the time on parsing, -%and do only the bare minimum of work necesssary to convince compiler that parse results cannot be optimized out --- -%this way benchmarks measure the efficiency of parsing, not the accompanying code or the operating system. so that benchmarks measure the efficiency of parsing, not the accompanying code or the operating system. -%Alternatively each parser can be built in ``verification mode'', in which it prints out parse results. For each of the four parsers there is a corresponding DFA-based recognizer: it sets a baseline for expectations of how fast and small the lexer can be and what is the real overhead on submatch extraction. Benchmarks are written in C-90 and compiled with \cite{RE2C} version 1.0 @@ -2692,14 +2571,14 @@ in subdirectory \texttt{re2c/benchmarks}. \end{Xtab} \begin{Xfig} -\includegraphics[width=\linewidth]{img/bench/size_gcc_clang.png} -\includegraphics[width=\linewidth]{img/bench/size_tcc_pcc.png} +\includegraphics[width=\linewidth]{img/bench_size_gcc_clang.png} +\includegraphics[width=\linewidth]{img/bench_size_tcc_pcc.png} \captionof{figure}{Binary size for GCC, Clang, TCC and PCC.} \end{Xfig} \begin{Xfig} -\includegraphics[width=\linewidth]{img/bench/time_gcc_clang.png} -\includegraphics[width=\linewidth]{img/bench/time_tcc_pcc.png} +\includegraphics[width=\linewidth]{img/bench_time_gcc_clang.png} +\includegraphics[width=\linewidth]{img/bench_time_tcc_pcc.png} \captionof{figure}{Run time for GCC, Clang, TCC and PCC.} \end{Xfig} @@ -2803,7 +2682,257 @@ And many thanks to all the good people who cheered me up during this work. :) \pagebreak \nocite{*} -\bibliographystyle{abstract} -\bibliography{bibliography} + +\newcommand{\etalchar}[1]{$^{#1}$} +\begin{thebibliography}{GHR{\etalchar{+}}16} + +\bibitem[AC11]{AC11} +Rajeev Alur and Pavol {\v{C}}ern{\`y}. +\newblock Streaming transducers for algorithmic verification of single-pass + list-processing programs. +\newblock In {\em ACM SIGPLAN Notices}, volume~46, pages 599--610. ACM, 2011. + +\bibitem[BC93]{BC93} +Peter Bumbulis and Donald~D Cowan. +\newblock {RE2C}: A more versatile scanner generator. +\newblock {\em ACM Letters on Programming Languages and Systems (LOPLAS)}, + 2(1-4):70--84, 1993. + +\bibitem[BSU]{BSU} +{B}elarusian {S}tate {U}niversity. +\newblock URL: \url{http://bsu.by/}. + +\bibitem[BT10]{BT10} +Claus Brabrand and Jakob~G Thomsen. +\newblock Typed and unambiguous pattern matching on strings using regular + expressions. +\newblock In {\em Proceedings of the 12th international ACM SIGPLAN symposium + on Principles and practice of declarative programming}, pages 243--254. ACM, + 2010. + +\bibitem[Bec09]{Bec09} +Michela Becchi. +\newblock {\em Data structures, algorithms and architectures for efficient + regular expression evaluation}. +\newblock PhD thesis, Washington University In St. Louis, School of Engineering + and Applied Science, Department of Computer Science and Engineering, 2009. + +\bibitem[Ber13]{Ber13} +Jean Berstel. +\newblock {\em Transductions and context-free languages}. +\newblock Springer-Verlag, 2013. + +\bibitem[CGR96]{CGR96} +Boris~V Cherkassky, Andrew~V Goldberg, and Tomasz Radzik. +\newblock Shortest paths algorithms: Theory and experimental evaluation. +\newblock {\em Mathematical programming}, 73(2):129--174, 1996. + +\bibitem[CH11]{CH11} +Koen Claessen and John Hughes. +\newblock Quickcheck: a lightweight tool for random testing of haskell + programs. +\newblock {\em Acm sigplan notices}, 46(4):53--64, 2011. + +\bibitem[Clang]{Clang} +{Clang}: a {C} language family frontend for {LLVM}. +\newblock URL: \url{http://clang.llvm.org/}. + +\bibitem[Cor09]{Cor09} +Thomas~H Cormen. +\newblock {\em Introduction to algorithms}. +\newblock MIT press, 3rd edition, 2009. + +\bibitem[Cox10]{Cox10} +Russ Cox. +\newblock Regular expression matching in the wild. +\newblock URL: \url{http://swtch.com/~rsc/regexp/regexp3.html}, 2010. + +\bibitem[Cox17]{Cox17} +Russ Cox. +\newblock Comments on {RE2} bug tracker. +\newblock URL: \url{http://github.com/google/re2/issues/146}, 2017. + +\bibitem[Fow03]{Fow03} +Glenn Fowler. +\newblock An {I}nterpretation of the {POSIX} {R}egex {S}tandard. +\newblock URL: + \url{https://web.archive.org/web/20050408073627/http://www.research.att.com/~gsf/testregex/re-interpretation.html}, + 2003. + +\bibitem[GCC]{GCC} +{GCC}, the {GNU} {C}ompiler {C}ollection. + +\bibitem[GHRST16]{GHRST16} +Bj{\o}rn~Bugge Grathwohl, Fritz Henglein, Ulrik~Terp Rasmussen, + Kristoffer~Aalund S{\o}holm, and Sebastian~Paaske T{\o}rholm. +\newblock {Kleenex}: Compiling nondeterministic transducers to deterministic + streaming transducers. +\newblock {\em ACM SIGPLAN Notices}, 51(1):284--297, 2016. + +\bibitem[GR93]{GR93} +Andrew~V Goldberg and Tomasz Radzik. +\newblock A heuristic improvement of the {Bellman-Ford} algorithm. +\newblock {\em Applied Mathematics Letters}, 6(3):3--6, 1993. + +\bibitem[Gra15]{Gra15} +Niels Bj{\o}rn~Bugge Grathwohl. +\newblock {\em Parsing with Regular Expressions \& Extensions to {K}leene + Algebra}. +\newblock PhD thesis, DIKU, University of Copenhagen, 2015. + +\bibitem[Gro89]{Gro89} +Josef Grosch. +\newblock Efficient generation of table-driven scanners. +\newblock {\em Software Practice and Experience 19}, pages 1089--1103, 1989. + +\bibitem[HU90]{HU90} +John~E. Hopcroft and Jeffrey~D. Ullman. +\newblock {\em Introduction To Automata Theory, Languages, And Computation}. +\newblock Addison-Wesley Longman Publishing Co., Inc. Boston, MA, USA ©1990, + 1st edition, 1990. + +\bibitem[Kar14]{Kar14} +Aaron Karper. +\newblock {\em Efficient regular expressions that produce parse trees}. +\newblock epubli GmbH, 2014. + +\bibitem[Kle51]{Kle51} +Stephen~Cole Kleene. +\newblock Representation of events in nerve nets and finite automata. +\newblock Technical report, RAND Project US Air Force, 1951. + +\bibitem[Kle56]{Kle56} +Stephen~Cole Kleene. +\newblock Representation of events in nerve nets and finite automata. +\newblock {\em In: Shannon, C.E., McCarthy, J. (eds.) Automata Studies}, page + 3–41, 1956. + +\bibitem[Koz94]{Koz94} +Dexter Kozen. +\newblock A completeness theorem for {Kleene} algebras and the algebra of + regular events. +\newblock {\em Information and computation}, 110(2):366--390, 1994. + +\bibitem[Kuk07]{Kuk07} +Chris Kuklewicz. +\newblock Regular expressions/bounded space proposal. +\newblock URL: + \url{http://wiki.haskell.org/index.php?title=Regular_expressions/Bounded_space_proposal&oldid=11475}, + alternative URL: + \url{https://web.archive.org/web/20170808092516/https://wiki.haskell.org/index.php?title=Regular_expressions/Bounded_space_proposal&oldid=11475}, + 2007. + +\bibitem[Kuk09]{Kuk09} +Chris Kuklewicz. +\newblock Regex-posix-unittest: unit tests for the plaform's {POSIX} regex + library. +\newblock URL: + \url{http://hackage.haskell.org/package/regex-posix-unittest-1.1}, 2009. + +\bibitem[LTU]{LTU} +{Lambda The Ultimate}: comments on thread ``regular expression matching can be + simple and fast''. +\newblock URL: \url{http://lambda-the-ultimate.org/node/2064}, alternative URL: + \url{http://web.archive.org/web/20170808091628/http://lambda-the-ultimate.org/node/2064}, + 2007. + +\bibitem[Lau00]{Lau00} +Ville Laurikari. +\newblock {NFA}s with tagged transitions, their conversion to deterministic + automata and application to regular expressions. +\newblock In {\em String Processing and Information Retrieval, 2000. SPIRE + 2000. Proceedings. Seventh International Symposium on}, pages 181--187. IEEE, + 2000. +\newblock URL: \url{http://laurikari.net/ville/spire2000-tnfa.pdf}. + +\bibitem[Lau01]{Lau01} +Ville Laurikari. +\newblock Efficient submatch addressing for regular expressions. +\newblock {\em Helsinki University of Technology}, 2001. +\newblock URL: \url{http://laurikari.net/ville/regex-submatch.pdf}. + +\bibitem[NPX99]{NPX99} +Maddalena Nonato, Stefano Pallottino, and Bao Xuewen. +\newblock {SPT\_L} shortest path algorithms: review, new proposals and some + experimental results, 1999. + +\bibitem[PCC]{PCC} +{PCC}, the {P}ortable {C} {C}ompiler. +\newblock URL: \url{http://pcc.ludd.ltu.se/}. + +\bibitem[POSIX]{POSIX} +The IEEE and The Open Group. +\newblock {\em {POSIX-1.2008} a.k.a. {IEEE Std 1003.1-2008} a.k.a {The Open + Group Technical Standard Base Specifications, Issue 7}}, 2016 edition, + 2001-2016. + +\bibitem[RE2]{RE2} +{RE2}: regular expression library. +\newblock URL: \url{http://github.com/google/re2}. + +\bibitem[RE2C]{RE2C} +{RE2C}: lexer generator for {C}. +\newblock URL: \url{http://re2c.org}, URL: + \url{http://github.com/skvadrik/re2c}. + +\bibitem[RFC-3986]{RFC-3986} +Tim Berners-Lee, Roy Fielding, and Larry Masinter. +\newblock {U}niform {R}esource {I}dentifier ({URI}): {G}eneric {S}yntax. +\newblock {\em Internet Engineering Task Force (IETF)}, 2005. +\newblock URL: \url{http://tools.ietf.org/html/rfc3986}. + +\bibitem[RFC-7230]{RFC-7230} +Roy Fielding and Julian Reschke. +\newblock {H}ypertext {T}ransfer {P}rotocol ({HTTP/1.1}): {M}essage {S}yntax + and {R}outing. +\newblock {\em Internet Engineering Task Force (IETF)}, 2014. +\newblock URL: \url{http://tools.ietf.org/html/rfc7230}. + +\bibitem[Regex-TDFA]{Regex-TDFA} +Chris Kuklewicz. +\newblock {Regex-TDFA}: {POSIX}-compliant regular expression library for + {Haskell}. +\newblock URL: \url{http://hackage.haskell.org/package/regex-tdfa}. + +\bibitem[SS88]{SS88} +Seppo Sippu and Eljas Soisalon-Soininen. +\newblock {\em Parsing Theory}, volume 1: Languages and Parsing. +\newblock Springer, 1988. + +\bibitem[SSA]{SSA} +{Lots of authors}. +\newblock {\em {Static} {Single} {Assignment} {Book}}. +\newblock Springer, 2015. +\newblock URL: \url{http://ssabook.gforge.inria.fr/latest/book.pdf}. + +\bibitem[SW81]{SW81} +Douglas~R Shier and Christoph Witzgall. +\newblock Properties of labeling methods for determining shortest path trees. +\newblock {\em Journal of Research of the National Bureau of Standards}, + 86(3):317--330, 1981. + +\bibitem[TCC]{TCC} +{T}iny {C} {C}ompiler. +\newblock URL: \url{http://bellard.org/tcc/}. + +\bibitem[TRE]{TRE} +{TRE}: The free and portable approximate regex matching library. +\newblock URL: \url{http://laurikari.net/tre/}, URL: + \url{http://github.com/laurikari/tre/}. + +\bibitem[Tro17]{Tro17} +Ulya Trofimovich. +\newblock Fork of the test suite for shortest path algorithms by {Cherkassky}, + {Goldberg}, {Radzik}. +\newblock URL: \url{https://github.com/skvadrik/cherkassky_goldberg_radzik}, + 2017. + +\bibitem[Wat93]{Wat93} +Bruce~William Watson. +\newblock A taxonomy of finite automata construction algorithms. +\newblock {\em Eindhoven University of Technology, Department of Mathematics + and Computing Science, Computing Science Section}, 1993. + +\end{thebibliography} \end{document} diff --git a/doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/__mk.sh b/doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/__mk.sh new file mode 100755 index 00000000..f1b7ad40 --- /dev/null +++ b/doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/__mk.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e + +pdflatex -shell-escape 2017_trofimovich_tagged_deterministic_finite_automata_with_lookahead.tex tdfa.build_log diff --git a/doc/tdfa/img/bench/__mk.sh b/doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/bench/__mk.sh similarity index 100% rename from doc/tdfa/img/bench/__mk.sh rename to doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/bench/__mk.sh diff --git a/doc/tdfa/img/bench/data b/doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/bench/data similarity index 100% rename from doc/tdfa/img/bench/data rename to doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/bench/data diff --git a/doc/tdfa/img/bench/plot.gnuplot b/doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/bench/plot.gnuplot similarity index 100% rename from doc/tdfa/img/bench/plot.gnuplot rename to doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/bench/plot.gnuplot diff --git a/doc/tdfa/bibliography.bib b/doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/bibliography.bib similarity index 100% rename from doc/tdfa/bibliography.bib rename to doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/bibliography.bib diff --git a/doc/tdfa/img/bench/size_gcc_clang.png b/doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/bench_size_gcc_clang.png similarity index 100% rename from doc/tdfa/img/bench/size_gcc_clang.png rename to doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/bench_size_gcc_clang.png diff --git a/doc/tdfa/img/bench/size_tcc_pcc.png b/doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/bench_size_tcc_pcc.png similarity index 100% rename from doc/tdfa/img/bench/size_tcc_pcc.png rename to doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/bench_size_tcc_pcc.png diff --git a/doc/tdfa/img/bench/time_gcc_clang.png b/doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/bench_time_gcc_clang.png similarity index 100% rename from doc/tdfa/img/bench/time_gcc_clang.png rename to doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/bench_time_gcc_clang.png diff --git a/doc/tdfa/img/bench/time_tcc_pcc.png b/doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/bench_time_tcc_pcc.png similarity index 100% rename from doc/tdfa/img/bench/time_tcc_pcc.png rename to doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/bench_time_tcc_pcc.png diff --git a/doc/tdfa/img/example1/all.png b/doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/example1_all.png similarity index 100% rename from doc/tdfa/img/example1/all.png rename to doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/example1_all.png diff --git a/doc/tdfa/img/example2/all.png b/doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/example2_all.png similarity index 100% rename from doc/tdfa/img/example2/all.png rename to doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/example2_all.png diff --git a/doc/tdfa/img/example3/all.png b/doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/example3_all.png similarity index 100% rename from doc/tdfa/img/example3/all.png rename to doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/example3_all.png diff --git a/doc/tdfa/img/example4/all.png b/doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/example4_all.png similarity index 100% rename from doc/tdfa/img/example4/all.png rename to doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/example4_all.png diff --git a/doc/tdfa/img/example5/all.png b/doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/example5_all.png similarity index 100% rename from doc/tdfa/img/example5/all.png rename to doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/example5_all.png diff --git a/doc/tdfa/img/example6/all.png b/doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/example6_all.png similarity index 100% rename from doc/tdfa/img/example6/all.png rename to doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/example6_all.png diff --git a/doc/tdfa/img/fallback/tdfa0.png b/doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/fallback_tdfa0.png similarity index 100% rename from doc/tdfa/img/fallback/tdfa0.png rename to doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/fallback_tdfa0.png diff --git a/doc/tdfa/img/fallback/tdfa0_fallback.png b/doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/fallback_tdfa0_fallback.png similarity index 100% rename from doc/tdfa/img/fallback/tdfa0_fallback.png rename to doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/fallback_tdfa0_fallback.png diff --git a/doc/tdfa/img/fallback/tdfa0_raw.png b/doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/fallback_tdfa0_raw.png similarity index 100% rename from doc/tdfa/img/fallback/tdfa0_raw.png rename to doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/fallback_tdfa0_raw.png diff --git a/doc/tdfa/img/fallback/tdfa1.png b/doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/fallback_tdfa1.png similarity index 100% rename from doc/tdfa/img/fallback/tdfa1.png rename to doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/fallback_tdfa1.png diff --git a/doc/tdfa/img/fallback/tdfa1_fallback.png b/doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/fallback_tdfa1_fallback.png similarity index 100% rename from doc/tdfa/img/fallback/tdfa1_fallback.png rename to doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/fallback_tdfa1_fallback.png diff --git a/doc/tdfa/img/fallback/tdfa1_raw.png b/doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/fallback_tdfa1_raw.png similarity index 100% rename from doc/tdfa/img/fallback/tdfa1_raw.png rename to doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/fallback_tdfa1_raw.png diff --git a/doc/tdfa/img/fallback/tnfa.png b/doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/fallback_tnfa.png similarity index 100% rename from doc/tdfa/img/fallback/tnfa.png rename to doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/fallback_tnfa.png diff --git a/doc/tdfa/img/plot_acyc_neg_both.png b/doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/plot_acyc_neg_both.png similarity index 100% rename from doc/tdfa/img/plot_acyc_neg_both.png rename to doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/plot_acyc_neg_both.png diff --git a/doc/tdfa/img/plot_grid_nhard_both.png b/doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/plot_grid_nhard_both.png similarity index 100% rename from doc/tdfa/img/plot_grid_nhard_both.png rename to doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/plot_grid_nhard_both.png diff --git a/doc/tdfa/img/tnfa/concat.png b/doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/tnfa_concat.png similarity index 100% rename from doc/tdfa/img/tnfa/concat.png rename to doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/tnfa_concat.png diff --git a/doc/tdfa/img/tnfa/repeat_bound.png b/doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/tnfa_repeat_bound.png similarity index 100% rename from doc/tdfa/img/tnfa/repeat_bound.png rename to doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/tnfa_repeat_bound.png diff --git a/doc/tdfa/img/tnfa/repeat_unbound.png b/doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/tnfa_repeat_unbound.png similarity index 100% rename from doc/tdfa/img/tnfa/repeat_unbound.png rename to doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/tnfa_repeat_unbound.png diff --git a/doc/tdfa/img/tnfa/union.png b/doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/tnfa_union.png similarity index 100% rename from doc/tdfa/img/tnfa/union.png rename to doc/papers/2017_tagged_deterministic_finite_automata_with_lookahead/img/tnfa_union.png diff --git a/doc/tdfa_v2/.gitignore b/doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/.gitignore similarity index 100% rename from doc/tdfa_v2/.gitignore rename to doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/.gitignore diff --git a/doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/2019_borsotti_trofimovich_efficient_posix_submatch_extraction_on_nfa.tex b/doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/2019_borsotti_trofimovich_efficient_posix_submatch_extraction_on_nfa.tex new file mode 100644 index 00000000..0b8e4d54 --- /dev/null +++ b/doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/2019_borsotti_trofimovich_efficient_posix_submatch_extraction_on_nfa.tex @@ -0,0 +1,3222 @@ +\documentclass[AMA,STIX1COL]{WileyNJD-v2} + +\articletype{Research Article} + +\received{xx July 2019} +\revised{xx July 2019} +\accepted{xx July 2019} + +\raggedbottom + +\let\procedure\relax +\let\endprocedure\relax + +\usepackage[utf8]{inputenc} +\usepackage{amsmath, amssymb, amsthm, amsfonts} +\usepackage{accents} +\usepackage{mathtools} +\usepackage{graphicx} +\usepackage{enumitem} +\usepackage[justification=centering]{caption} +\usepackage{url} +\usepackage[section]{placeins} +\usepackage{proof-at-the-end} +\usepackage{setspace} +\usepackage{tikz, pgfplots} + +\usepackage[noline, noend, nofillcomment, linesnumbered]{algorithm2e} +\SetArgSty{textnormal} +\newcommand\Xcommentfont[1]{\selectfont\textnormal{#1}} +\SetCommentSty{Xcommentfont} +\SetNoFillComment +\SetNlSty{textnormal}{}{} +\renewcommand{\algorithmcfname}{ALGORITHM} + + +\let\oldnl\nl +\newcommand{\nonl}{\renewcommand{\nl}{\let\nl\oldnl}} % Remove line number for one line + +\newcommand{\Xl}{\langle} +\newcommand{\Xr}{\rangle} +\newcommand{\Xm}{\langle\!\rangle} +\newcommand{\Xset}{\!\leftarrow\!} +\newcommand{\Xund}{\rule{.4em}{.4pt}} +\newcommand{\Xlb}{[\![} +\newcommand{\Xrb}{]\!]} +\newcommand{\Xmap}{\!\mapsto\!} +\newcommand{\XB}{\mathcal{B}} +\newcommand{\XD}{\mathcal{D}} +\newcommand{\XE}{\mathcal{E}} +\newcommand{\XF}{\mathcal{F}} +\newcommand{\XI}{\mathcal{I}} +\newcommand{\XPT}{\XP\!\XT} +\newcommand{\XIT}{\XI\!\XT} +\newcommand{\XIR}{\XI\!\XR} +\newcommand{\XL}{\mathcal{L}} +\newcommand{\XN}{\mathcal{N}} +\newcommand{\XM}{\mathcal{M}} +\newcommand{\XO}{\mathcal{O}} +\newcommand{\XP}{\mathcal{P}} +\newcommand{\XR}{\mathcal{R}} +\newcommand{\XS}{\mathcal{S}} +\newcommand{\XT}{\mathcal{T}} +\newcommand{\XX}{\mathcal{X}} +\newcommand{\YB}{\mathbb{B}} +\newcommand{\YC}{\mathbb{C}} +\newcommand{\YK}{\mathbb{K}} +\newcommand{\YF}{\mathbb{F}} +\newcommand{\YN}{\mathbb{N}} +\newcommand{\YT}{\mathbb{T}} +\newcommand{\YQ}{\mathbb{Q}} +\newcommand{\YP}{\mathbb{P}} +\newcommand{\YZ}{\mathbb{Z}} +\newcommand{\PT}{PT} +\newcommand{\PE}{P\!E} +\newcommand{\PR}{P\!R} +\newcommand{\IPT}{I\!PT} +\newcommand{\IRE}{I\!RE} + +\newcommand{\Xstirling}[2]{\genfrac{\{}{\}}{0pt}{}{#1}{#2}} +\newcommand*{\Xbar}[1]{\overline{#1}} +\newcommand{\pnorm}[2]{\|{#1}\|^{pos}_{#2}} +\newcommand{\snorm}[2]{\|{#1}\|^{sub}_{#2}} + +\DeclarePairedDelimiter\ceil{\lceil}{\rceil} +\DeclarePairedDelimiter\floor{\lfloor}{\rfloor} + +\setlist{nosep} + +\newenvironment{Xfig} + {\par\medskip\noindent\minipage{\linewidth}\begin{center}} + {\end{center}\endminipage\par\medskip} +\newenvironment{Xtab} + {\par\medskip\noindent\minipage{\linewidth}\begin{center}} + {\end{center}\endminipage\par\medskip} + +\setlength{\parindent}{0pt} +\setlength{\belowcaptionskip}{-1em} + + +\begin{document} + +\title{Efficient POSIX Submatch Extraction on NFA} + +\author[1]{Angelo Borsotti} +\author[2]{Ulya Trofimovich} + +\address[1]{\email{angelo.borsotti@mail.polimi.it}} +\address[2]{\email{skvadrik@gmail.com}} + +\abstract[Summary]{ +In this paper we further develop the POSIX disambiguation algorithm by Okui and Suzuki. +We extend its theoretical foundations on a few important practical cases +and introduce numerous performance improvements. +% +Our algorithm works in worst-case $O(n \, m^2 \, t)$ time and $O(m^2)$ space, +where $n$ is the length of input, $m$ is the size of the regular expression with bounded repetition expanded +and $t$ is the number of capturing groups and subexpressions that contain groups. +% +Benchmarks show that in practice our algorithm is \textasciitilde{}5x slower than leftmost-greedy matching. +% +We present a lazy version of the algorithm that is much faster, but requires memory proportional to the size of input. +% +We study other NFA-based algorithms +and show that the Kuklewicz algorithm is slower in practice, +and the backward matching algorithm by Cox is incorrect. +} + +\keywords{Regular Expressions, Parsing, Submatch Extraction, Finite-State Automata, POSIX} + +\maketitle + + +\section{Introduction} + +In this paper we study NFA-based approaches to the problem of POSIX regular expression parsing and submatch extraction. +A number of algorithms have been proposed in recent years, +but not all of them have been properly studied and formalized. +We experimented with different approaches and found that in practice the algorithm by Okui and Suzuki \cite{OS13} is the most efficient one. +In the process, we have discovered a number of improvements +that require careful reconstruction of the underlying theory and introduction of new algorithms and proofs. +In our experience, the Okui and Suzuki approach is not easy to understand, +therefore we include illustrative examples and detailed pseudocode of the extended algorithm. +% +It should be noted that there is a totally different (and very elegant) approach to the problem +based on Brzozowski derivatives \cite{SL14}. +We choose to focus on NFA-based approach because +in our experience, derivative-based approach is slow in practice +(we also discuss theoretical bounds below). +% +Both NFA and derivatives can be used to construct DFA with POSIX longest-match semantics \cite{SL13} \cite{Bor15} \cite{Tro17}. +The resulting DFA-based algorithms are very fast, because there is no run-time overhead on disambiguation. +However, DFA construction is not always viable due to its exponential worst-case complexity, +and if viable, it needs to be efficient. +Therefore we concentrate on NFA-based algorithms +that can be used directly for matching or serve as a basis for DFA construction. +We give an overview of existing algorithms, including some that are incorrect but interesting. + +\subparagraph{Laurikari, 2001 (incorrect).} + +Laurikari described an algorithm based on TNFA, which is an $\epsilon$-NFA with tagged transitions \cite{Lau01}. +In his algorithm each submatch group is represented with a pair of \emph{tags} (opening and closing). +Disambiguation is based on minimizing the value of opening tags and maximizing the value of closing tags, where +different tags have priority according to POSIX subexpression hierarchy. +Notably, Laurikari used the idea of topological order to avoid worst-case exponential time of $\epsilon$-closure construction. +His algorithm doesn't track history of iteration subexpressions and gives incorrect result in cases like \texttt{(a|aa)*} and string \texttt{aa}. +Reported computational complexity is $O(n \, m \, c \, t \, log(t))$, where +$n$ is input length, +$m$ is TNFA size, +$c$ is the time for comparing tag values +and $t$ is the number of tags. +Memory requirement is $O(m \, t)$. + +\subparagraph{Kuklewicz, 2007.} + +Kuklewicz fixed Laurikari algorithm by introducing \emph{orbit} tags for iteration subexpressions. +He gave only an informal description \cite{Kuk07}, but the algorithm was later formalized in \cite{Tro17}. +It works in the same way as the Laurikari algorithm, +except that comparison of orbit tags is based on their previous history, not just the most recent value. +The clever idea is to avoid recording full history +by compressing histories in a matrix of size $t \times m$, where $m$ is TNFA size and $t$ is the number of tags. +$t$-Th row of the matrix represents ordering of closure states with respect to $t$-th tag +(with possible ties --- different states may have the same order). +Matrix is updated at each step using continuations of tag histories. +The algorithm requires $O(m \, t)$ memory and $O(n \, m \, t \, (m + t \, log(m))$ time, where $n$ is the input length +(we assume that worst-case optimal $O(m^2 \, t)$ algorithm for $\epsilon$-closure is used, +and matrix update takes $O(m \, log(m) \, t^2)$ because for $t$ tags we need to sort $m$ states with $O(t)$ comparison function). +%Kuklewicz disambiguation is combined with Laurikari determinization [Lau00] in [Tro17]. + +\subparagraph{Cox, 2009 (incorrect).} + +Cox came up with the idea of backward POSIX matching \cite{Cox09}, +which is based on the observation that it is easier to maximize submatch on the last iteration than on the first one +because we do not need to remember the history of previous iterations. +The algorithm consumes input from right to left +and tracks two pairs of offsets for each submatch group: +the \emph{active} pair of the most recent offsets (used in disambiguation) +and the \emph{final} pair of offsets on the backwards-first (i.e. the last) iteration. +The algorithm gives incorrect results under two conditions: +(1) ambiguous matches have equal offsets on some iteration, +and (2) disambiguation happens too late, when active offsets have already been updated and the difference between ambiguous matches is erased. +We found that such situations may occur for two reasons. +First, $\epsilon$-closure algorithm sometimes compares ambiguous paths \emph{after} their join point, +when both paths have a common suffix with tagged transitions. +This is the case with Cox prototype implementation \cite{Cox09}; for example, it gives incorrect results for \texttt{(aa|a)*} and string \texttt{aaaaa}. +Most of such failures can be repaired by exploring states in topological order, +but a topological order does not exist in the presence of $\epsilon$-loops. +The second reason is bounded repetition: ambiguous paths may not have an intermediate join point at all. +For example, in case of \texttt{(aaaa|aaa|a)\{3,4\}} and string \texttt{aaaaaaaaaa} +we have matches \texttt{(aaaa)(aaaa)(a)(a)} and \texttt{(aaaa)(aaa)(aaa)} +with different number of iterations. +Assuming that bounded repetition is modeled by chaining three non-optional sub-automata for \texttt{(aaaa|aaa|a)} and the optional fourth one, +by the time ambiguous paths meet both have active offsets \texttt{(0,4)}. +Despite the flaw, Cox algorithm is interesting: if somehow delayed comparison problem was fixed, it would work. +The algorithm requires $O(m \, t)$ memory and $O(n \, m^2 \, t)$ time +(assuming worst-case optimal closure algorithm), +where $n$ is the length of input, +$m$ it the size of the regular expression +and $t$ is the number of submatch groups plus enclosing subexpressions. + +\subparagraph{Okui and Suzuki, 2013.} + +Okui and Suzuki view the disambiguation problem from the point of comparison of parse trees \cite{OS13}. +Ambiguous trees have the same frontier of leaf symbols, but their branching structure is different. +Each subtree corresponds to a subexpression. +The \emph{norm} of a subtree is the number of alphabet symbols in it (a.k.a. submatch length). +Longest match corresponds to a tree in which the norm of each subtree in leftmost in-order traversal is maximized. +The clever idea of Okui and Suzuki is to relate the norm of subtrees to their \emph{height} (distance from the root). +Namely, if we walk through the leaves of two ambiguous trees, tracking the height of each complete subtree, +then at some step heights will diverge: +subtree with a smaller norm will already be complete, but the one with a greater norm will not. +Height of subtrees is easy to track by attributing it to parentheses and encoding in automaton transitions. +Okui and Suzuki use PAT --- $\epsilon$-free position automaton with transitions labeled by sequences of parentheses. +Disambiguation is based on comparing parentheses along ambiguous PAT paths. +Similar to Kuklewicz, Okui and Suzuki avoid recording full-length paths +by pre-comparing them at each step and storing comparison results in a pair of matrices indexed by PAT states. +The authors report complexity $O(n(m^2 + c))$, where +$n$ is the input length, +$m$ is the number of occurrences of the most frequent symbol in the regular expression +and $c$ is the number of submatch groups and repetition operators. +However, this estimate leaves out the construction of PAT and precomputation of the precedence relation. +Memory requirement is $O(m^2)$. +Okui-Suzuki disambiguation is combined with Berry-Sethi construction in \cite{Bor15} in construction of parsing DFA. + +\subparagraph{Sulzmann and Lu, 2013.} + +Sulzmann and Lu based their algorithm on Brzozowski derivatives \cite{SL14} +(correctness proof is given in \cite{ADU16}). +The algorithm unfolds a regular expression into a sequence of derivatives +and then folds it back into a parse tree. +Each derivative is obtained from the previous one by consuming input symbols in left-to-right order, +and each tree is built from the next tree by injecting symbols in reversed right-to-left order. +In practice, Sulzmann and Lu fuse backward and forward passes, +which allows to avoid potentially unbounded memory usage on keeping all intermediate derivatives. +The algorithm is elegant in that it does not require explicit disambiguation: +parse trees are naturally ordered by the longest criterion. +Time and space complexity is not entirely clear. +In \cite{SL14} Sulzmann and Lu consider the size of the regular expression as a constant. +In \cite{SL13} they give more precise estimates: $O(2^m \, t)$ space and $O(n \, log(2^m) \, 2^m \, t^2)$ time, +where $m$ is the size of the regular expression, +$n$ is the length of input +and $t$ the number of submatch groups (the authors do not differentiate between $m$ and $t$). +However, this estimate assumes worst-case $O(2^m)$ derivative size and on-the-fly DFA construction. +The authors also mention a better $O(m^2)$ theoretical bound for derivative size. +If we adopt this bound and exclude DFA construction, we get $O(m^2 \, t)$ memory requirement and $O(n \, m^2 \, t^2)$ time, +which seems reasonably close to (but worse than) NFA-based approaches. +\\ + +Undoubtedly, other approaches exist, +but many of them produce incorrect results or require memory proportional to the length of input +(e.g. Glibc implementation \cite{Glibc}). +% +Our contributions are the following: +\begin{itemize}[itemsep=0.5em, topsep=0.5em] + + \item We extend Okui-Suzuki algorithm on the case of partially ordered parse trees + and introduce the notion of \emph{explicit} and \emph{implicit} submatch groups. + This greatly reduces the overhead on disambiguation + for regular expressions with only a few submatch groups, + which is a common case in practice. + + \item We extend Okui-Suzuki algorithm on the case of bounded repetition. + + \item We combine Okui-Suzuki algorithm with Laurikari TNFA. + It allows us to omit the preprocessing step + at the cost of $\epsilon$-closure construction, + which may be preferable in cases when preprocessing time is included in match time. + + \item We introduce \emph{negative tags} that allow us to handle + no-match situation in the same way as match. + Negative tags provide a simple way to reset obsolete offsets from earlier iterations, + in cases like \texttt{(a(b)?)*} and string \texttt{aba}. + + \item We consider $\epsilon$-closure construction as a shortest-path problem + and show that path concatenation is right-distributive over path comparison + for the subset of paths considered by closure algorithm. + This justifies the use of well-known Goldberg-Radzik algorithm based on the idea of topological order, + which has worst-case optimal quadratic complexity in the size of closure + and guaranteed linear complexity if the closure has no $\epsilon$-loops. + This is an improvement over naive exhaustive depth-first search with backtracking, + and also an improvement over Laurikari algorithm \cite{Tro17}. + + \item We give a faster algorithm for updating precedence matrices. + The straightforward algorithm described by Okui and Suzuki involves pairwise comparison of all states in closure + and takes $O(m^2 \, t)$ time, assuming $m$ states and $O(t)$ comparison function. + We show a pathological example \texttt{((a?)\{0,1000\})*} where $t \approx m$. + Our algorithm takes $O(m^2)$ time. + + \item We show how to use our algorithm in order to build either parse trees or POSIX-style offsets. + + \item We present a lazy version of our algorithm + that reduces the overhead on disambiguation + at the cost of memory usage that grows with the length of input. + The lazy algorithm is well-suited for small inputs. + + \item We provide a C++ implementation of different NFA-based algorithms \cite{RE2C} + and benchmark them against each other and against leftmost greedy implementation + that has no overhead on disambiguation and serves as a baseline. + We also provide a completely independent Java implementation + and a web-page for interactive experiments with our algorithms. +\end{itemize} + +The rest of this paper is arranged as follows. +In section \ref{section_main} we present the main idea and the skeleton of our algorithm. +In section \ref{section_formalization} we provide theoretical foundations for the rest of the paper. +After that, we go into specific details: +section \ref{section_closure} is concerned with $\epsilon$-closure construction, +section \ref{section_pathtree} discusses data structures used to represent TNFA paths, +section \ref{section_results} discusses possible output formats (parse trees or POSIX-style offsets), +section \ref{section_comparison} gives the core disambiguation algorithms, +section \ref{section_lazy} presents lazy variation of our algorithm, +and section \ref{section_tnfa} gives specific TNFA construction. +The remaining sections \ref{section_complexity}, \ref{section_benchmarks} and \ref{section_conclusions} +contain complexity analysis, benchmarks, conclusions and directions for future work. + + +\section{Skeleton of the algorithm}\label{section_main} + +Our algorithm is based on four cornerstone concepts: +regular expressions, parse trees, parenthesized expressions and tagged NFA. +% +As usual, we formalize matching problem +by giving the interpretation of regular expressions as sets of parse trees. +% +Then we define POSIX disambiguation semantics in terms of order on parse trees. +This definition reflects the POSIX standard, +but it is too high-level to be used in a practical matching algorithm. +% +Therefore we go from parse trees to their linearized representation --- parenthesized expressions. +We define an order on parenthesized expressions and show its equivalence to the order on parse trees. +The latter definition of order is more low-level and can be easily converted to an efficient comparison procedure. +% +Finally, we construct TNFA and map parenthesized expressions to its paths, +which allows us to compare ambiguous paths using the definition of order on parenthesized expressions. +% +In this section we give the four basic definitions and the skeleton of the algorithm. +In the following sections we formalize the relation between different representations and fill in all the details. + + \begin{definition} + \emph{Regular expressions (RE)} over finite alphabet $\Sigma$, denoted $\XR_\Sigma$: + \begin{enumerate} + \item + Empty RE $\epsilon$ and + unit RE $\alpha$ (where $\alpha \in \Sigma$) are in $\XR_\Sigma$. + \item If $e_1, e_2 \in \XR_\Sigma$, then + union $e_1 | e_2$, + product $e_1 e_2$, + repetition $e_1^{n, m}$ (where $0 \leq n \leq m \leq \infty$), and + submatch group $(e_1)$ + are in $\XR_\Sigma$. + \end{enumerate} + \end{definition} + + + \begin{definition} + \emph{Parse trees (PT)} over finite alphabet $\Sigma$, denoted $\XT_\Sigma$: + \begin{enumerate} + \item + Nil tree ${\varnothing}^i$, + empty tree ${\epsilon}^i$ and + unit tree ${\alpha}^i$ (where $\alpha \in \Sigma$ and $i \in \YZ$) + are in $\XT_\Sigma$. + \item If $t_1, \dots, t_n \in \XT_\Sigma$ (where $n \geq 1$, and $i \in \YZ$), then + ${T}^i(t_1, \dots, t_n)$ + is in $\XT_\Sigma$. + \end{enumerate} + \end{definition} + + + \begin{definition} + \emph{Parenthesized expressions (PE)} over finite alphabet $\Sigma$, denoted $\XP_\Sigma$: + \begin{enumerate} + \item + Nil expression $\Xm$, + empty expression $\epsilon$ and + unit expression $\alpha$ (where $\alpha \in \Sigma$) + are in $\XP_\Sigma$. + \item If $e_1, e_2 \in \XP_\Sigma$, then + $e_1 e_2$ and + $\Xl e_1 \Xr$ + are in $\XP_\Sigma$. + \end{enumerate} + \end{definition} + + + \begin{definition} + \emph{Tagged Nondeterministic Finite Automaton (TNFA)} + is a structure $(\Sigma, Q, T, \Delta, q_0, q_f)$, where: + \begin{itemize} + \item[] $\Sigma$ is a finite set of symbols (\emph{alphabet}) + \item[] $Q$ is a finite set of \emph{states} + \item[] $T \subset \YN \times \YZ \times \YN \times \YN$ is a mapping of \emph{tags} to their submatch group, lower nested tag and upper nested tag + \item[] $\Delta = \Delta^\Sigma \sqcup \Delta^\epsilon$ is the \emph{transition} relation, + consisting of two parts: + \begin{itemize} + \item[] $\Delta^\Sigma \subseteq Q \times \Sigma \times \{\epsilon\} \times Q$ (transitions on symbols) + \item[] $\Delta^\epsilon \subseteq Q \times \YN \times \big( \YZ \cup \{\epsilon\} \big) \times Q$ + ($\epsilon$-transitions, where $\forall (q, n, \Xund, \Xund), (q, m, \Xund, \Xund) \in \Delta^\epsilon: n \neq m$) + \end{itemize} + \item[] $q_0 \in Q$ is the \emph{initial} state + \item[] $q_f \in Q$ is the \emph{final} state + \end{itemize} + \end{definition} + +As the reader might notice, our definitions are subtly different from the usual ones in literature. +Regular expressions are extended with submatch operator +and generalized repetition (note that it is not just syntactic sugar: in POSIX \texttt{(a)(a)} is semantically different from \texttt{(a)\{2\}}, +and \texttt{(a)} in not the same as \texttt{a}). +Parse trees have a special \emph{nil-tree} constructor +and an upper index, which allows us to distinguish between submatch and non-submatch subtrees. +Mirroring parse trees, parenthesized expressions also have a special \emph{nil-parenthesis}. +TNFA is in essence a nondeterministic finite-state transducer +in which some of the $\epsilon$-transitions are marked with \emph{tags} --- +integer numbers that denote opening and closing parentheses of submatch groups. +For $i$-th group, the opening tag is $2i - 1$ and the closing tag is $2i$ (where $i \in \YN$). +Tags can be negative, which represents the absence of match and corresponds to nil-parenthesis $\Xm$ and nil-tree $\varnothing$. +Additionally, all $\epsilon$-transitions are marked with \emph{priority} +which allows us to impose specific order of TNFA traversal +(all $\epsilon$-transitions from the same state have different priority). +\\ + +\begin{algorithm}[H] \DontPrintSemicolon \SetKwProg{Fn}{}{}{} \SetAlgoInsideSkip{medskip} +\setstretch{0.8} +\Fn {$\underline{match \big( N \!\!=\! (\Sigma, Q, T, \Delta, q_0, q_f), \; \alpha_1 \!\hdots\! \alpha_n \big)} \smallskip$} { + + $B, D : \text{uninitialized matrices in } \YZ^{|Q| \times |Q|}, \; U: \text{path context}$ \; + $r_0 = initial \Xund result(T)$ \; + $u_0 = empty \Xund path(\,)$ \; + $X = \big\{ (q_0, \varnothing, u_0, r_0) \big\}, \; i = 1$ \; + + \BlankLine + \While {$i \leq n \wedge X \neq \emptyset$} { + $X = closure(N, X, U, B, D)$ \; + $X = update \Xund result(T, X, U, i, \alpha_i)$ \; + $(B, D) = update \Xund ptables(N, X, U, B, D)$ \; + $X = \big\{ (q, o, u_0, r) \mid (o, \Xund, \Xund, r) \in X \wedge (o, \alpha_i, \epsilon, q) \in \Delta^\Sigma \big\}$ \; + $i = i + 1$ \; + } + + \BlankLine + $X = closure(N, X, U, B, D)$ \; + \If {$(q_f, \Xund, u, r) \in X$} { + \Return $f\!inal \Xund result (T, U, u, r, n)$ + } \lElse { + \Return $\varnothing$ + } + + \BlankLine +} +\caption{TNFA simulation on a string.}\label{alg_match} +\end{algorithm} +\medskip + +The algorithm takes an automaton $N$ and string $\alpha_1 \!\hdots\! \alpha_n$ as input, +and outputs the match result is some form: it can be a parse tree or a POSIX array of offsets, +but for now we leave it unspecified and hide behind functions +$initial \Xund result ()$, $update \Xund result ()$ and $f\!inal \Xund result ()$. +The algorithm works by consuming input symbols, +tracking a set of active \emph{configurations} +and updating \emph{precedence tables} $B$ and $D$. +Configuration is a tuple $(q, o, u, r)$. +The first component $q$ is a TNFA state that is unique for each configuration in the current set. +Components $o$ and $u$ keep information about the path by which $q$ was reached: +$o$ is the \emph{origin} state used as index in precedence tables, +and $u$ is a path fragment constructed by $closure()$. +Specific representation of path fragments is hidden behind path context $U$ and function stub $empty \Xund path ()$. +Finally, $r$-component is a partial match result associated with state $q$. +Most of the real work happens inside of $closure()$ and $update \Xund ptables ()$, both of which remain undefined for now. +The $closure()$ function builds $\epsilon$-closure of the current configuration set: +it explores all states reachable by $\epsilon$-transitions from the $q$-components +and tracks the best path to each reachable state. +The $update \Xund ptables ()$ function +performs pairwise comparison of all configurations in the new set, +recording results in $B$ and $D$ matrices. +On the next step $q$-components become $o$-components. +If paths originating from current configurations join on some future step, +$closure ()$ will use origin states to lookup comparison results in $B$ and $D$ matrices. +If the paths do not join, then comparison performed by $update \Xund ptables ()$ is redundant --- +unfortunately we do not know in advance which configurations will spawn ambiguous paths. +\\ + + +\section{Formalization}\label{section_formalization} + +In this section we establish the relation between all intermediate representations. +For brevity all proofs are moved to the appendix. +% +First of all, we rewrite REs in a form that makes submatch information explicit: +to each subexpression we assign an \emph{implicit} and \emph{explicit} submatch index. +Explicit indices enumerate submatch groups (for all other subexpressions they are zero). +Implicit indices enumerate submatch groups and subexpressions that are not submatch groups, +but contain nested or sibling groups and need to be considered by disambiguation. +This form reflects the POSIX standard, which states that +submatch extraction applies only to parenthesized subexpressions, +but the longest-match rule applies to all subexpressions regardless of parentheses. + + \begin{definition} + \emph{Indexed regular expressions (IRE)} over finite alphabet $\Sigma$, denoted $\XIR_\Sigma$: + \begin{enumerate} + \item + Empty IRE $(i, j, \epsilon)$ and + unit IRE $(i, j, \alpha)$, where $\alpha \in \Sigma$ and $i, j \in \YZ$, + are in $\XIR_\Sigma$. + + \item If $r_1, r_2 \in \XIR_\Sigma$ and $i, j \in \YZ$, then + union $(i, j, r_1 \mid r_2)$, + product $(i, j, r_1 \cdot r_2)$ and + repetition $(i, j, r_1^{n, m})$, where $0 \leq n \leq m \leq \infty$, + are in $\XIR_\Sigma$. + \end{enumerate} + \end{definition} + +Function $\IRE$ transforms RE into IRE. +It is defined via a composition of two functions, +$mark()$ that transforms RE into IRE with submatch indices in the boolean range $\{0, 1\}$, +and $enum()$ that substitutes boolean indices with consecutive numbers. +An example of constructing an IRE from a RE is given on figure \ref{fig:mark_and_enum}. +% + \begin{align*} + &\begin{aligned} + mark &: \XR_\Sigma \longrightarrow \XIR_\Sigma \\ + mark &(x) \mid_{x \in \{\epsilon, \alpha\}} = (0, 0, x) \\[-0.2em] + % + mark &(e_1 \circ e_2) \mid_{\circ \in \{|,\cdot\}} = (i, 0, + (i, j_1, r_1) \circ + (i, j_2, r_2) + ) \\[-0.2em] + &\text{where } (i_1, j_1, r_1) = mark(e_1) \\[-0.2em] + &\space{\hphantom{where }}(i_2, j_2, r_2) = mark(e_2) \\[-0.2em] + &\space{\hphantom{where }}i = i_1 \vee i_2 \\[-0.2em] + % + mark &(e^{n, m}) \mid_{e = (e_1)} = (1, 0, (1, 1, r)) \\[-0.2em] + &\text{where } (\Xund, \Xund, r) = mark(e_1) \\[-0.2em] + % + mark &(e^{n, m}) \mid_{e \neq (e_1)} = (i, 0, (i, j, r)) \\[-0.2em] + &\text{where } (i, j, r) = mark(e) \\[-0.2em] + % + mark &((e)) = mark((e)^{1, 1}) + \end{aligned} + % + &&\begin{aligned} + enum &: \YZ \times \YZ \times \XIR_\Sigma \longrightarrow \YZ \times \YZ \times \XIR_\Sigma \\ + enum &(\bar{i}, \bar{j}, (i, j, x)) \mid_{x \in \{\epsilon, \alpha\}} + = (\bar{i} + i, \bar{j} + j, (\bar{i} \times i, \bar{j} \times j, x)) + \\[-0.2em] + enum &(\bar{i}, \bar{j}, (i, j, r_1 \circ r_2)) \mid_{\circ \in \{|,\cdot\}} + = (i_2, j_2, (\bar{i} \times i, \bar{j} \times j, \bar{r}_1 \circ \bar{r}_2)) \\[-0.2em] + &\text{where } (i_1, j_1, \bar{r}_1) = enum(\bar{i} + i, \bar{j} + j, r_1) \\[-0.2em] + &\space{\hphantom{where }}(i_2, j_2, \bar{r}_2) = enum(i_1, j_1, r_2) + \\[-0.2em] + enum &(\bar{i}, \bar{j}, (i, j, r^{n,m})) = (i_1, j_1, (\bar{i} \times i, \bar{j} \times j, \bar{r}^{n,m})) \\[-0.2em] + &\text{where } + (i_1, j_1, \bar{r}) = enum(\bar{i} + i, \bar{j} + j, r) + \\[-0.2em] + \\[-0.2em] + \IRE &: \XR_\Sigma \rightarrow \XIR_\Sigma \\[-0.2em] + \IRE&(e) = r \\[-0.2em] + &\text{where }(\Xund, \Xund, r) = enum(1, 1, mark(e)) + \\[-0.2em] + \end{aligned} + \end{align*} + +The relation between regular expressions and parse trees is given by the operator $\PT$. +Each IRE denotes a set of PTs. +% +We write $str(t)$ to denote the string formed by concatenation of all alphabet symbols in the left-to-right traversal of $t$, +and $\PT(r, w)$ denotes the set $\big\{ t \in \PT(r) \mid str(t) = w \big\}$ of all PTs for IRE $r$ and a string $w$. +% + \begin{align*} + \PT &: \XIR_\Sigma \rightarrow 2^{\XT_\Sigma} + \\ + \PT\big((i, \Xund, \epsilon)\big) &= \{ {\epsilon}^{i} \} + \\[-0.2em] + \PT\big((i, \Xund, \alpha)\big) &= \{ {\alpha}^{i} \} + \\[-0.2em] + \PT\big((i, \Xund, (i_1, j_1, r_1) \mid (i_2, j_2, r_2))\big) &= + \big\{ {T}^{i}(t, \varnothing^{i_2}) \mid t \in \PT\big((i_1, j_1, r_1)\big) \big\} \cup + \big\{ {T}^{i}(\varnothing^{i_1}, t) \mid t \in \PT\big((i_2, j_2, r_2)\big) \big\} + \\[-0.2em] + \PT\big((i, \Xund, (i_1, j_1, r_1) \cdot (i_2, j_2, r_2))\big) &= + \big\{ {T}^{i}(t_1, t_2) \mid + t_1 \in \PT\big((i_1, j_1, r_1)\big), + t_2 \in \PT\big((i_2, j_2, r_2)\big) + \big\} \\[-0.2em] + \PT\big((i, \Xund, (i_1, j_1, r_1)^{n, m})\big) &= + \begin{cases} + \big\{ {T}^{i}(t_1, \dots, t_m) \mid t_k \in \PT\big((i_1, j_1, r_1)\big) \; + \forall k = \overline{1, m} \big\} \cup \{ {T}^{i}(\varnothing^{i_1}) \} &\text{if } n = 0 \\[-0.2em] + \big\{ {T}^{i}(t_n, \dots, t_m) \mid t_k \in \PT\big((i_1, j_1, r_1)\big) \; + \forall k = \overline{n, m} \big\} &\text{if } n > 0 + \end{cases} + \end{align*} + \medskip + +Following Okui and Suzuki, we assign \emph{positions} to the nodes of IRE and PT. +The root position is $\Lambda$, and position of the $i$-th subtree of a tree with position $p$ is $p.i$ +(we shorten $\|t\|_\Lambda$ as $\|t\|$). +The \emph{length} of position $p$, denoted $|p|$, is defined as $0$ for $\Lambda$ and $|p| + 1$ for $p.i$. +%The set of all positions is denoted $\XP$. +The subtree of a tree $t$ at position $p$ is denoted $t|_p$. +Position $p$ is a \emph{prefix} of position $q$ iff $q = p.p'$ for some $p'$, +and a \emph{proper prefix} if additionally $p \neq q$. +Position $p$ is a \emph{sibling} of position $q$ iff $q = q'.i, p = q'.j$ for some $q'$ and $i,j \in \YN$. +Positions are ordered lexicographically. +The set of all positions of a tree $t$ is denoted $Pos(t)$. +Additionally, we define a set of \emph{submatch positions} as +$Sub(t) = \big\{ p \mid \exists t|_p = s^i : i \neq 0 \big\}$ --- +a subset of $Pos(t)$ that contains positions of subtrees with nonzero implicit submatch index. +Intuitively, this is the set of positions important from disambiguation perspective: +in the case of ambiguity we do not need to consider the full trees, +just the relevant parts of them. +% +PTs have two definitions of norm, one for $Pos$ and one for $Sub$, +which we call \emph{p-norm} and \emph{s-norm} respectively: + +\begin{figure} +\includegraphics[width=\linewidth]{img/mark_and_enum.pdf} +\vspace{-2em} +\caption{ +IRE for RE $(\epsilon|a^{0,\infty})(a|\epsilon)^{0,3}$ +and examples of PTs for string $a$. +S-norm is marked with $\#$. +}\label{fig:mark_and_enum} +\end{figure} + + \begin{definition}\label{tnorm_of_PTs} + The \emph{p-norm} and \emph{s-norm} of a PT $t$ at position $p$ are: + \begin{align*} + \pnorm{t}{p} = + \begin{cases} + -1 &\text{if } p \in Pos(t) \text{ and } t|_p = \varnothing^i \\[-0.2em] + |str(t|_p)| &\text{if } p \in Pos(t) \text{ and } t|_p \neq \varnothing^i \\[-0.2em] + \infty &\text{if } p \not\in Pos(t) + \end{cases} + \quad\quad\quad + \snorm{t}{p} = + \begin{cases} + -1 &\text{if } p \in Sub(t) \text{ and } t|_p = \varnothing^i \\[-0.2em] + |str(t|_p)| &\text{if } p \in Sub(t) \text{ and } t|_p \neq \varnothing^i \\[-0.2em] + \infty &\text{if } p \not\in Sub(t) + \end{cases} + \end{align*} + \end{definition} + +Generally, the norm of a subtree means the number of alphabet symbols in its leaves, with two exceptions. +First, for nil subtrees the norm is $-1$: intuitively, they have the lowest ``ranking'' among all possible subtrees. +Second, for nonexistent subtrees (those with positions not in $Pos(t)$) the norm is infinite. +This may seem counter-intuitive at first, but it makes sense in the presence of REs with empty repetitions. +According to POSIX, optional empty repetitions are not allowed, and our definition reflects this: +if a tree $s$ has a subtree $s|_p$ corresponding to an empty repetition, +and another tree $t$ has no subtree at position $p$, +then the infinite norm $\|t\|_p$ ``outranks'' $\|s\|_p$. +We define two orders on PTs: + + \begin{definition}[P-order on PTs] + \label{total_order_on_PTs} + Given parse trees $t, s \in PT(r, w)$ for some IRE $r$ and string $w$, we say that $t <_p s$ w.r.t. \emph{decision position} $p$ + iff $\pnorm{t}{p} > \pnorm{s}{p}$ and $\pnorm{t}{q} = \pnorm{s}{q} \; \forall q < p$. + We say that $t < s$ iff $t <_p s$ for some $p$. + \end{definition} + + \begin{definition}[S-order on PTs] + \label{partial_order_on_PTs} + Given parse trees $t, s \in PT(r, w)$ for some IRE $r$ and string $w$, we say that $t \prec_p s$ w.r.t. \emph{decision position} $p$ % $p \in Sub(t) \cup Sub(s)$ + iff $\snorm{t}{p} > \snorm{s}{p}$ and $\snorm{t}{q} = \snorm{s}{q} \; \forall q < p$. + We say that $t \prec s$ iff $t \prec_p s$ for some $p$. + \end{definition} + + \begin{definition}\label{incomparable_PTs} + PTs $t$ and $s$ are \emph{incomparable}, denoted $t \sim s$, + iff neither $t \prec s$, nor $s \prec t$. + \end{definition} + +\begin{theoremEnd}[restate, no link to proof, no link to theorem, category=theorem_porder_on_PTs]{theorem} + \label{theorem_porder_on_PTs} + P-order $<$ is a strict total order on $\PT(e, w)$ for any IRE $e$ and string $w$. +\end{theoremEnd} +\begin{proofEnd} + We need to show that $<$ is transitive and trichotomous. + \begin{itemize}[itemsep=0.5em, topsep=0.5em] + \item[(1)] + Transitivity: we need to show that $\forall t, s, u \in \PT(e,w): (t < s \wedge s < u) \implies t < u$. + \\[0.5em] + Let $t <_p s$ and $s <_q u$ for some positions $p$, $q$, and let $r = min (p, q)$. + \\[0.5em] + First, we show that $\pnorm{t}{r} > \pnorm{u}{r}$. + If $p \leq q$, we have $\pnorm{t}{p} > \pnorm{s}{p}$ (implied by $t <_p s$) + and $\pnorm{s}{p} \geq \pnorm{u}{p}$ (implied by $s <_q u \wedge p \leq q$), + therefore $\pnorm{t}{p} > \pnorm{u}{p}$. + Otherwise $p > q$, we have $\pnorm{t}{q} > \pnorm{u}{q}$ (implied by $s <_q u$) + and $\pnorm{t}{q} = \pnorm{s}{q}$ (implied by $t <_p s \wedge q < p$), + therefore $\pnorm{t}{q} > \pnorm{u}{q}$. + \\[0.5em] + Second, we show that $\forall r' < r : \pnorm{t}{r'} = \pnorm{u}{r'}$. + We have $\pnorm{t}{r'} = \pnorm{s}{r'}$ (implied by $t <_p s \wedge r' < p$) + and $\pnorm{s}{r'} = \pnorm{u}{r'}$ (implied by $s <_q u \wedge r' < q$), + therefore $\pnorm{t}{r'} = \pnorm{u}{r'}$. + + \item[(2)] + Trichotomy: we need to show that $\forall t, s \in \PT(e,w)$ + exactly one of $t < s$, $s < t$ or $t = s$ holds. + Consider the set of positions where norms of $t$ and $s$ disagree + $P = \{p \in Pos(t) \cup Pos(s) : \pnorm{t}{p} \neq \pnorm{s}{p}\}$. + % + \begin{itemize}[itemsep=0.5em] + \item[(2.1)] First case: $P \neq \emptyset$. + We show that in this case exactly one of $t < s$ or $s < t$ is true + ($t \neq s$ is obvious). + \\[0.5em] + First, we show that at least one of $t < s$ or $s < t$ is true. + % + Let $p = min(P)$; it is well-defined since $P$ is non-empty, finite and lexicographically ordered. + % + For all $q < p$ we have $\pnorm{t}{q} = \pnorm{s}{q}$ (by definition of $p$ + and because $\pnorm{t}{q} = \infty = \pnorm{s}{q}$ if $q \not\in Pos(t) \cup Pos(s)$). + % + Since $\pnorm{t}{p} \neq \pnorm{s}{p}$, we have either $t <_p s$ or $t <_p s$. + \\[0.5em] + Second, we show that at most one of $t < s$ or $s < t$ is true, + i.e. $<$ is asymmetric: $\forall t, s \in \PT(e,w) : t < s \implies s \not< t$. + % + Suppose, on the contrary, that $t <_p s$ and $s <_q t$ for some $p$, $q$. + Without loss of generality let $p \leq q$. + On one hand $t <_p s$ implies $\pnorm{t}{p} > \pnorm{s}{p}$. + But on the other hand $s <_q t \wedge p \leq q$ implies $\pnorm{t}{p} \leq \pnorm{s}{p}$. + Contradiction. + + \item[(2.2)] Second case: $P = \emptyset$. + We show that in this case $t = s$. + \\[0.5em] + We have $Pos(t) = Pos(s)$ --- otherwise there is a position with norm $\infty$ in only one of the trees. + Therefore $t$ and $s$ have identical node structure. + % + By lemma \ref{lemma_positions} any position in $t$ and $s$ corresponds to the same position in $e$. + % + Since any position in $e$ corresponds to a unique explicit submatch index, + it must be that submatch indices of all nodes in $t$ and $s$ coincide. + % + Consider some position $p \in Pos(t)$. + If $p$ corresponds to an inner node, then both $t|_p$ and $s|_p$ are of the form $T^i(\hdots)$. + Otherwise, $p$ corresponds to a leaf node, which can be either $\varnothing$ or $\epsilon$ or $\alpha$. + Since all three have different norms ($-1$, $0$ and $1$ respectively), + and since $\pnorm{t}{p} = \pnorm{s}{p}$, it must be that $t|_p$ and $s|_p$ are identical. + \end{itemize} + \end{itemize} +\end{proofEnd} +\vspace{-0.5em} + +\begin{theoremEnd}[restate, no link to proof, no link to theorem, category=theorem_sorder_on_PTs]{theorem} + \label{theorem_sorder_on_PTs} + S-order $\prec$ is a strict weak order on $\PT(e, w)$ for any IRE $e$ and string $w$. +\end{theoremEnd} +\begin{proofEnd} + We need to show that $\prec$ is asymmetric and transitive, and incomparability relation $\sim$ is transitive. + \begin{itemize}[itemsep=0.5em, topsep=0.5em] + \item[(1)] + Asymmetry: we need to show that $\forall t, s \in \PT(e,w): t \prec s \implies s \not\prec t$. + \\[0.5em] + Suppose, on the contrary, that $t \prec_p s$ and $s \prec_q t$ for some $p$, $q$. + Without loss of generality let $p \leq q$. + On one hand $t \prec_p s$ implies $\snorm{t}{p} > \snorm{s}{p}$. + But on the other hand $s \prec_q t \wedge p \leq q$ implies $\snorm{t}{p} \leq \snorm{s}{p}$. + Contradiction. + + \item[(2)] + Transitivity: we need to show that $\forall t, s, u \in \PT(e,w): (t \prec s \wedge s \prec u) \implies t \prec u$. + \\[0.5em] + Let $t \prec_p s$ and $s \prec_q u$ for some positions $p$, $q$, and let $r = min (p, q)$. + \\[0.5em] + First, we show that $\snorm{t}{r} > \snorm{u}{r}$. + If $p \leq q$, we have $\snorm{t}{p} > \snorm{s}{p}$ (implied by $t \prec_p s$) + and $\snorm{s}{p} \geq \snorm{u}{p}$ (implied by $s \prec_q u \wedge p \leq q$), + therefore $\snorm{t}{p} > \snorm{u}{p}$. + Otherwise $p > q$, we have $\snorm{t}{q} > \snorm{u}{q}$ (implied by $s \prec_q u$) + and $\snorm{t}{q} = \snorm{s}{q}$ (implied by $t \prec_p s \wedge q < p$), + therefore $\snorm{t}{q} > \snorm{u}{q}$. + \\[0.5em] + Second, we show that $\forall r' < r : \snorm{t}{r'} = \snorm{u}{r'}$. + We have $\snorm{t}{r'} = \snorm{s}{r'}$ (implied by $t \prec_p s \wedge r' < p$) + and $\snorm{s}{r'} = \snorm{u}{r'}$ (implied by $s \prec_q u \wedge r' < q$), + therefore $\snorm{t}{r'} = \snorm{u}{r'}$. + + \item[(3)] + Transitivity of incomparability: we need to show that $\forall t, s \in \PT(e,w): (t \sim s \wedge s \sim u) \implies t \sim u$. + \\[0.5em] + By forward implication of lemma \ref{lemma_incomparability_equivdef} + $t \sim s \Rightarrow \forall p : \snorm{t}{p} = \snorm{s}{p}$ and + $s \sim u \Rightarrow \forall p : \snorm{s}{p} = \snorm{u}{p}$, therefore + $(t \sim s \wedge s \sim u) \Rightarrow \forall p : \snorm{t}{p} = \snorm{u}{p} \Rightarrow t \sim u$ + by backward implication of lemma \ref{lemma_incomparability_equivdef}. + \end{itemize} +\end{proofEnd} + +The following theorem \ref{theorem_order_compat} establishes an important relation between P-order and S-order. +P-order is total, and there is a unique $<$-minimal tree $t_{min}$. +S-order is partial, it partitions all trees into equivalence classes +and there is a whole class of $\prec$-minimal trees $T_{min}$ +(such trees coincide in submatch positions, but differ in some non-submatch positions). +Theorem \ref{theorem_order_compat} shows that $t_{min} \in T_{min}$. +This means that P-order and S-order ``agree'' on the notion of minimal tree: +we can continuously narrow down $T_{min}$ until we are left with $t_{min}$. +In practice, this means that adding more parentheses in RE does not drastically change submatch results. +% +Note that this doesn't mean that P-order is an extension of S-order: +the two orders may disagree. +For example, consider trees $t$ and $u$ on figure \ref{fig:mark_and_enum}: +on one hand $t \prec_{2.2} u$, because $\snorm{t}{2.2} = \infty > 0 = \snorm{u}{2.2}$ and s-norms at all preceding submatch positions agree; +on the other hand $u <_{1.1} t$, because $\pnorm{t}{1.1} = -1 < 0 = \pnorm{u}{1.1}$ +and p-norms at all preceding positions agree. + +\begin{theoremEnd}[restate, no link to proof, no link to theorem, category=theorem_order_compat]{theorem} + \label{theorem_order_compat} + Let $t_{min}$ be the $<$-minimal tree in $\PT(e,w)$ for some IRE $e$ and string $w$, + and let $T_{min}$ be the class of the $\prec$-minimal trees in $\PT(e,w)$. + Then $t_{min} \in T_{min}$. +\end{theoremEnd} +\begin{proofEnd} + Consider any $t \in T_{min}$. + From $t$ we can construct another tree $t'$ in the following way. + Consider all positions $p \in Sub(t)$ which are not proper prefixes of another position in $Sub(t)$. + For each such position, $t|_p$ is itself a PT for some sub-IRE $r'$ and substring $w'$: $t|_p \in \PT(r', w')$. + Let $t'_{min}$ be the $<$-minimal tree in $\PT(r', w')$ and substitute $t|_p$ with $t'_{min}$. + Let $t'$ be the tree resulting from all such substitutions + (note that they are independent of the order in which we consider positions $p$). + Since substitutions preserve s-norm at submatch positions, we have $t' \in T_{min}$. + We will show that $t' = t_{min}$. + \\[0.5em] + Suppose, on the contrary, that $t' \neq t_{min}$. + % + Then $t_{min} <_p t'$ for some decision position $p$. + % + It must be that $p \not\in Sub(t') \cup Sub(t_{min})$, because + otherwise $\snorm{t_{min}}{p} = \pnorm{t_{min}}{p} > \pnorm{t'}{p} = \snorm{t'}{p}$ + and $\pnorm{t_{min}}{p} = \pnorm{t'}{p} \; \forall q < p$ implies $\snorm{t_{min}}{p} = \snorm{t'}{p} \; \forall q < p$, + which means that $t_{min} \prec_p t'$, which contradicts to $t' \in T_{min}$. + Thus $p$ is a non-submatch position. + % + Let $p = p'.p''$, where $p'$ is the longest proper prefix of $p$ in $Sub(u) \cup Sub(t_{min})$. + % + For all $q \leq p'$ it must be that $\snorm{u}{q} = \snorm{t_{min}}{q}$, + otherwise $\snorm{u}{q} \neq \snorm{t_{min}}{q}$ implies $\pnorm{u}{q} \neq \pnorm{t_{min}}{q}$, + which contradicts to $t_{min} <_p t'$ because $q \leq p' < p$. + % + By lemma \ref{lemma_subtrees}, subtrees $t'_{p'}$ and $t_{min}|_{p'}$ are comparable: + $\exists r', w' : t'|_{p'}, t_{min}|_{p'} \in \PT(r', w')$. + By construction of $t'$, subtree $t'_{p'}$ is $<$-minimal in $\PT(r', w')$, + but at the same time $t_{min} <_{p'.p''} u$ implies $t_{min}|_{p'} <_{p''} u|_{p'}$. + Contradiction. +\end{proofEnd} + +Following the idea of Okui and Suzuki, +we go from comparison of parse trees to comparison of their linearized representation --- parenthesized expressions. +Parenthesis $\Xl$ is opening, and +parenthesis $\Xr$ is closing; +the \emph{nil}-parenthesis $\Xm$ is both opening and closing. +For convenience we sometimes annotate parentheses with \emph{height}, +which we define as the number of preceding opening parentheses (including this one) +minus the number of preceding closing parentheses (including this one). +Explicit height annotations allow us to consider PE fragments in isolation +without losing the context of the whole expression. +However, height is not a part of parenthesis itself, +and it is not taken into account when comparing the elements of PEs. +Function $\Phi$ transforms PT at the given height into PE: +% + \begin{align*} + \Phi &: \YZ \times \XT_\Sigma \rightarrow \XP_\Sigma + \\ + \Phi_{h}(t^{i}) &= \begin{cases} + str(t^{i}) &\text{if } i = 0 \\[-0.2em] + \Xm_h &\text{if } i \neq 0 \wedge t = \varnothing \\[-0.2em] + \Xl_{h+1} \Xr_h &\text{if } i \neq 0 \wedge t = \epsilon \\[-0.2em] + \Xl_{h+1} a \Xr_h &\text{if } i \neq 0 \wedge t = a \in \Sigma \\[-0.2em] + \Xl_{h+1} \Phi_{h+1}(t_1) \dots \Phi_{h+1}(t_n) \Xr_h &\text{if } i \neq 0 \wedge t = T(t_1, \dots, t_n) + \end{cases} + \end{align*} + +For a given IRE $r$ and string $w$ the set of all PEs $\big\{ \Phi_{0}(t) \mid t \in \PT(r, w) \big\}$ is denoted $\PE(r, w)$, +and the set of all prefixes in $\PE(r, w)$ is denoted $\PR(r, w)$. +Each PE $\alpha$ can be represented as $\alpha_0 a_1 \alpha_1 \dots a_n \alpha_n$, +where $\alpha_i$ is the $i$-th \emph{frame} --- a possibly empty sequence of parentheses between +subsequent alphabet symbols $a_i$ and $a_{i+1}$ (or the beginning and end of $\alpha$). +PE fragments $\alpha$ and $\beta$ are \emph{comparable} +if they have the same number of frames and $\alpha, \beta \in \PR(r, w)$ for some $r$ and $w$. +% +For fragments $\alpha$ and $\beta$, +$\alpha \sqcap \beta$ denotes their longest common prefix, +$\alpha \backslash \beta$ denotes the suffix of $\alpha$ after removing $\alpha \sqcap \beta$, +$lasth(\alpha)$ denotes the height of the last parenthesis in $\alpha$ (or $\infty$ if $\alpha$ is empty or begins with an alphabet symbol), +$minh(\alpha)$ denotes the minimal height of parenthesis in $\alpha$ (or $\infty$ if $\alpha$ is empty or begins with an alphabet symbol), +$f\!irst(\alpha)$ denotes the first parenthesis in $\alpha$ (or $\bot$ if $\alpha$ is empty or begins with an alphabet symbol). +For comparable PE fragments $\alpha$ and $\beta$ the index of the first distinct pair of frames is called \emph{fork}. + +\begin{figure} +\includegraphics[width=\linewidth]{img/parenthesized_expressions.pdf} +\vspace{-2em} +\caption{ +Examples: (a) -- (d): four main rules of POSIX comparison, +(e) -- pairwise comparison of PEs. +}\label{fig_pe} +\end{figure} + + \begin{definition} + \label{def_traces} + Let $\alpha$, $\beta$ be comparable PE prefixes, such that + $\alpha = \alpha_0 a_1 \alpha_1 \dots a_n \alpha_n$, + $\beta = \beta_0 a_1 \beta_1 \dots a_n \beta_n$ and $k$ is the fork. + We define $trace (\alpha, \beta)$ as the sequence $(\rho_0, \dots, \rho_n)$, where: + % + \begin{align*} + \rho_i = \begin{cases} + -1 &\text{if } i < k \\[-0.2em] + min (lasth (\alpha_i \sqcap \beta_i), minh(\alpha_i \backslash \beta_i)) &\text{if } i = k \\[-0.2em] + min (\rho_{i-1}, minh(\alpha_i)) &\text{if } i > k + \end{cases} + \end{align*} + + We write $traces(\alpha, \beta)$ to denote $\big( trace (\alpha, \beta), trace (\beta, \alpha) \big)$. + \end{definition} + + \begin{definition}\label{prec1} + (Longest precedence.) + Let $\alpha$, $\beta$ be comparable PE prefixes and + $traces(\alpha, \beta) = \big( (\rho_0, \dots, \rho_n), (\rho'_0, \dots, \rho'_n) \big)$. + Then $\alpha \sqsubset \beta \Leftrightarrow \exists i \leq n: + \big( \rho_i > \rho'_i \big) \wedge + \big( \rho_j = \rho'_j \; \forall j > i \big)$. + If neither $\alpha \sqsubset \beta$, nor $\beta \sqsubset \alpha$, + then $\alpha$, $\beta$ are \emph{longest-equivalent}: $\alpha \sim \beta$ + (note that in this case $\rho_i = \rho'_i \; \forall i = \overline {1, n}$). + \end{definition} + + \begin{definition}\label{prec2} + (Leftmost precedence.) + Let $\alpha$, $\beta$ be comparable PE prefixes, and let + $x = first (\alpha \backslash \beta)$, + $y = first (\beta \backslash \alpha)$. + Then $\alpha \subset \beta \Leftrightarrow x < y$, where + the set of possible values of $x$ and $y$ is ordered as follows: + $\bot < \Xr < \Xl < \Xm$. + \end{definition} + + \begin{definition}\label{pe_order} + (Longest-leftmost precedence.) + Let $\alpha$, $\beta$ be comparable PE prefixes, then + $\alpha < \beta \Leftrightarrow + \big( \alpha \sqsubset \beta \big) \vee + \big( \alpha \sim \beta \wedge \alpha \subset \beta \big)$. + \end{definition} + +\begin{theoremEnd}[restate, no link to proof, no link to theorem, category=theorem_order_on_pe_same_as_on_pt]{theorem} + \label{theorem_order_on_pe_same_as_on_pt} + If $s, t \in \PT(e, w)$ for some IRE $e$ and string $w$, then + $s \prec t \Leftrightarrow \Phi_{h}(s) < \Phi_{h}(t) \; \forall h$. +\end{theoremEnd} +\begin{proofEnd} + Forward implication is given by lemma \ref{lemma_pe_less}. + Backward implication: + suppose, on the contrary, that $\Phi_{h}(s) < \Phi_{h}(t) \; \forall h$, but $s \not\prec t$. + Since $\prec$ is a strict weak order (by theorem \ref{theorem_sorder_on_PTs}), + it must be that either $s \sim t$ + (then $\Phi_{h}(s) = \Phi_{h}(t) \; \forall h$ by lemma \ref{lemma_pe_equiv}), + or $t \prec s$ + (then $\Phi_{h}(t) < \Phi_{h}(s) \; \forall h$ by lemma \ref{lemma_pe_less}). + Both cases contradict $\Phi_{h}(s) < \Phi_{h}(t) \; \forall h$, + therefore assumption $s \not\prec t$ is incorrect. +\end{proofEnd} + +Next, we go from comparison of PEs to comparison of TNFA paths. +% +A \emph{path} in TNFA $(\Sigma, Q, T, \Delta, q_0, q_f)$ +is a sequence of transitions $\{(q_i, a_i, b_i, q_{i + 1})\}_{i=1}^{n-1} \subseteq \Delta$, where $n \in \YN$. +% +Every path induces a string of alphabet symbols +and a mixed string of symbols and tags which corresponds to a fragment of PE: +positive opening tags map to $\Xl$, +positive closing tags map to $\Xr$, +and negative tags map to $\Xm$. +We write $q_1 \overset {s|\alpha} {\rightsquigarrow} q_2$ +to denote the fact that a path from $q_1$ to $q_2$ induces alphabet string $s$ and PE fragment $\alpha$. +% +We extend the notion of order from PEs to paths: given paths +$\pi_1 = q_1 \overset {s|\alpha} {\rightsquigarrow} q_2$ and +$\pi_2 = q_1 \overset {s|\beta} {\rightsquigarrow} q_3$ +we say that $\pi_1 < \pi_2$ if $\alpha < \beta$. +% +For a given IRE $e$ we say that a path in TNFA for $e$ is \emph{minimal} if it induces +$\alpha = \PE(t)$ for some minimal tree $t \in \PT(e)$. +% +Two paths are \emph{ambiguous} if their start and end states coincide and they induce the same alphabet string. +Two paths have a \emph{join point} if they have ambiguous prefixes. +% +In order to justify our TNFA simulation algorithm, +we need to show that PEs induced by TNFA paths can be compared incrementally +(otherwise we would have to keep full-length PEs, which requires the amount of memory proportional to the length of input). +Justification of incremental comparison consists of two parts: +the following lemma \ref{lemma_incr_cmp_frames} justifies comparison between frames, +and lemmas \ref{lemma_closure_minpaths}, \ref{lemma_closure_noloop}, \ref{lemma_closure_rightdist} +in section \ref{section_closure} justify comparison at join points inside of one frame +(this is necessary as the number of paths in closure may be exponential in the number of states). + +\begin{theoremEnd}[restate, no link to proof, no link to theorem, category=lemma_frames]{lemma} +[Frame-by-frame comparison of PEs] + \label{lemma_incr_cmp_frames} + If $\alpha$, $\beta$ are comparable PE prefixes, + $c$ is an alphabet symbol and + $\gamma$ is a single-frame PE fragment, + then $\alpha < \beta$ implies $\alpha c \gamma < \beta c \gamma$. +\end{theoremEnd} +\begin{proofEnd} + Let $\big((\rho_1, \dots, \rho_n), (\rho'_1, \dots, \rho'_n)\big) = traces(\alpha, \beta)$ where $n \geq 1$. + Since $\alpha c \gamma$, $\beta c \gamma$ have one more frame than $\alpha$, $\beta$ + and the first $n$ frames are identical to frames of $\alpha$, $\beta$, + we can represent $traces(\alpha c \gamma, \beta c \gamma)$ + as $\big((\rho_1, \dots, \rho_n, \rho_{n+1}), (\rho'_1, \dots, \rho'_n, \rho'_{n+1})\big)$. + % + \begin{itemize}[itemsep=0.5em, topsep=0.5em] + \item[(1)] + Case $\alpha \sim \beta \wedge \alpha \subset \beta$. + In this case $\rho_i = \rho'_i \;\forall i \leq n$, + therefore $\rho_{n+1} = min(\rho_n, minh(\gamma)) = min(\rho'_n, minh(\gamma)) = \rho'_{n+1}$ + and $\alpha c \gamma \sim \beta c \gamma$. + Furthermore, + $first (\alpha c \gamma \backslash \beta c \gamma) = first (\alpha \backslash \beta)$ and + $first (\beta c \gamma \backslash \alpha c \gamma) = first (\beta \backslash \alpha)$, + therefore $\alpha \subset \beta \implies \alpha c \gamma \subset \beta c \gamma$. + \item[(2)] + Case $\alpha \sqsubset \beta$. + In this case $\exists j \leq n$ such that $\rho_j > \rho'_j$ and $\rho_i = \rho'_i \;\forall j < i \leq n$. + We show that $\exists l \leq n + 1$ such that $\rho_l > \rho'_l$ and $\rho_i = \rho'_i \;\forall l < i \leq n + 1$, + which by definition means that $\alpha c \gamma \sqsubset \beta c \gamma$. + \begin{itemize} + \item[(2a)] + Case $j < n$. + In this case $\rho_n = \rho'_n$ and + $\rho_{n+1} = min(\rho_n, minh(\gamma)) = min(\rho'_n, minh(\gamma)) = \rho'_{n+1}$, + therefore $l = j$. + \item[(2b)] + Case $j = n$ and $minh(\gamma) > \rho'_n$. + In this case $\rho_n > \rho'_n$ and we have + $\rho_{n+1} = min(\rho_n, minh(\gamma)) > \rho'_n$ and + $\rho'_{n+1} = min(\rho'_n, minh(\gamma)) = \rho'_n$, + therefore $\rho_{n+1} > \rho'_{n+1}$ + and $l = n + 1$. + \item[(2c)] + Case $j = n$ and $minh(\gamma) \leq \rho'_n$. + In this case $\rho_n > \rho'_n$ and we have + $\rho_{n+1} = min(\rho_n, minh(\gamma)) = minh(\gamma)$ and + $\rho'_{n+1} = min(\rho'_n, minh(\gamma)) = minh(\gamma)$, + therefore $\rho_{n+1} = \rho'_{n+1}$ + and $l = n$. + \end{itemize} + \end{itemize} + In both cases $\alpha c \gamma < \beta c \gamma$. +\end{proofEnd} + + +\section{closure construction}\label{section_closure} + +The problem of constructing $\epsilon$-closure with POSIX disambiguation +can be formulated as a shortest path problem on directed graph with weighted arcs. +In our case weight is not a number --- it is the PE fragment induced by the path. +% +We give two algorithms for closure construction: GOR1, named after the well-known Goldberg-Radzik algorithm \cite{GR93}, +and GTOP, named after ``global topological order''. +% +Both have the usual structure of shortest-path finding algorithms. +The algorithm starts with a set of initial configurations, empty queue and empty set of resulting configurations. +Initial configurations are enqueued and the algorithm loops until the queue becomes empty. +At each iteration it dequeues configuration $(q, o, u, r)$ and scans $\epsilon$-transitions from state $q$. +For transition $(q, \Xund, \gamma, p)$ it constructs a new configuration $(p, o, v, r)$ +that combines $u$ and $\gamma$ in an extended path $v$. +If the resulting set contains another configuration for state $p$, +then the algorithm chooses the configuration which has a better path from POSIX perspective. +Otherwise it adds the new configuration to the resulting set. +If the resulting set was changed, the new configuration is enqueued for further scanning. +Eventually all states in $\epsilon$-closure are explored, no improvements can be made, and the algorithm terminates. +% +%Lemma \ref{lemma_closure_rightdist} allows us to skip comparison in non-join states (with in-degree 1), because +%any path to such state is formed by concatenation of the unique transition and the shortest known path to the previous state. +\\ + +The difference between GOR1 and GTOP is in the order they inspect configurations. +% +Both algorithms are based on the idea of topological ordering. +Unlike other shortest-path algorithms, their queuing discipline is based on graph structure, not on the distance estimates. +This is crucial, because we do not have any distance estimates: +paths can be compared, but there is no absolute ``POSIX-ness'' value that we can attribute to each path. +% +GOR1 is described in \cite{GR93}. +It uses two stacks and makes a number of passes; +each pass consists of a depth-first search on the admissible subgraph +followed by a linear scan of states that are topologically ordered by depth-first search. +The algorithm is one of the most efficient shortest-path algorithms \cite{CGR96}. +$n$-Pass structure guarantees worst-case complexity $O(n \, m)$ of the Bellman-Ford algorithm, +where $n$ is the number of states and $m$ is the number of transitions in $\epsilon$-closure +(both can be approximated by TNFA size) \cite{CGGTW09}. +% +GTOP is a simple algorithm that maintains one global priority queue (e.g. a binary heap) +ordered by the topological index of states (for graphs with cycles, we assume reverse depth-first post-order). +Since GTOP does not have the $n$-pass structure, its worst-case complexity is not clear. +However, it is much simpler to implement +and in practice it performs almost identically to GOR1 on graphs induced by TNFA $\epsilon$-closures. +% +On acyclic graphs, both GOR1 and GTOP have linear $O(n + m)$ complexity. +\\ + +\begin{algorithm}[] \DontPrintSemicolon \SetKwProg{Fn}{}{}{} \SetAlgoInsideSkip{medskip} +\begin{multicols}{2} + + \newcommand \NOPASS {O\!F\!F} + \newcommand \TOPSORT {T\!O\!P} + \newcommand \LINEAR {L\!I\!N} + \newcommand \INQUEUE {I\!N} + \newcommand \OFFQUEUE {OUT} + \newcommand \Xfalse {f\!al\!se} + + \setstretch{0.85} + + \Fn {$\underline{closure \Xund gor1(N\!=\!(\Sigma, Q, T, \Delta, q_0, q_f), X, U, B, D)} \smallskip$} { + + \Indm + context: $C = (N, U, B, D$ \; + \Indp + $,\, topsort, linear : \text{stacks of states } q \in Q$ \; + $,\, result : Q \rightarrow \YC \cup \{ \varnothing \}$ \; + $,\, status : Q \rightarrow \{ \NOPASS, \TOPSORT, \LINEAR \}$ \; + $,\, indeg : Q \rightarrow \YZ$ \tcp{in-degree of state} + $,\, active : Q \rightarrow \YB$ \tcp{true if state needs rescan} + $,\, etrans : Q \rightarrow 2^{\Delta^\epsilon}$ \tcp{$\epsilon$-transitions ordered by priority} + $,\, next : Q \rightarrow \YZ)$ \tcp{index of current transition} + \Indm + \Indp + + \BlankLine + $result(q) \equiv \varnothing$ \; + $status(q) \equiv \NOPASS$ \; + $active(q) \equiv \Xfalse$ \; + $next(q) \equiv 1$ \; + + \BlankLine + \For {$x = (\Xund, q, \Xund, \Xund) \in X$ sorted by inverted $prec(\,)$} { + $result(q) = x$ \; + $push(topsort, q)$ + } + + \BlankLine + \While {$topsort$ is not empty} { + + \BlankLine + \While {$topsort$ is not empty} { + $q = pop(topsort)$ \; + + \If {$status(q) \neq \LINEAR$} { + + $status(q) = \TOPSORT$ \; + $push(topsort, q)$ \; + + \BlankLine + \If {$\neg scan(q, C, \Xfalse)$} { + $status(q) = \LINEAR$ \; + $pop(topsort)$ \; + $push(linear, q)$ + } + } + } + + \BlankLine + \While {$linear$ is not empty} { + $q = pop(linear)$ \; + + \If {$active(q)$} { + $next(q) = 1$ \; + $active(q) = \Xfalse$ \; + $scan(q, C, true)$ \; + } + + $status(q) = \NOPASS$ \; + } + } + + \BlankLine + \Return $prune(result, N)$ + } + \BlankLine + \BlankLine + + \Fn {$\underline{scan (q, C, all)} \smallskip$} { + $any = \Xfalse$ \; + + \While {$next(q) < n$} { + $(q, \epsilon, \tau, p) = etrans (q)_{next(q)}$ \; + $next(q) = next(q) + 1$ \; + $x = result(p), \; (o, q, u, r) = result(q)$ \; + $y = (o, p, extend \Xund path (H, u, \tau), r)$ \; + + \BlankLine + \If {$x \!=\! \varnothing \vee indeg(p) \!<\! 2 \vee less(y, x, C)$} { + $result(p) = y$ \; + \If {$status(q) = \NOPASS$} { + $any = true$ \; + $next(p) = 1$ \; + $push(topsort, p)$ \; + \lIf {$\neg all$} {$break$} + } + \lElse { + $active(p) = 1$ + } + } + } + + \Return $any$ \; + } + \BlankLine + \BlankLine + +\columnbreak + + \Fn {$\underline{closure \Xund gtop(N\!=\!(\Sigma, Q, T, \Delta, q_0, q_f), X, U, B, D)} \smallskip$} { + + \Indm + context: $C = (N, U, B, D$ \; + \Indp + $,\, queue : \text{priority queue of states } q \in Q$ \; + $,\, result : Q \rightarrow \YC \cup \{ \varnothing \}$ \; + $,\, status : Q \rightarrow \{ \INQUEUE, \OFFQUEUE\}$ \; + $,\, indeg : Q \rightarrow \YZ$ \tcp{in-degree of state} + $,\, topord : Q \rightarrow \YZ$ \tcp{topological index of state} + $,\, etrans : Q \rightarrow 2^{\Delta^\epsilon}$ \tcp{$\epsilon$-transitions} + \Indm + \Indp + + \BlankLine + $result(q) \equiv \varnothing$ \; + $status(q) \equiv \OFFQUEUE$ \; + + \BlankLine + \For {$x = (\Xund, q, \Xund, \Xund) \in X$} { + $y = result(q)$ \; + \If {$y \!=\! \bot \vee less(x, y, C)$} { + $result(q) = x$ \; + \If {$status(q) \neq \INQUEUE$} { + $insert \Xund with \Xund priority(queue, q, topord(q))$ \; + $status(q) = \INQUEUE$ \; + } + } + } + + \BlankLine + \While {$queue$ is not empty} { + + $q = extract \Xund min(queue)$ \; + $status(q) = \OFFQUEUE$ \; + + \BlankLine + \For {$(q, \epsilon, \tau, p) \in etrans (q)$} { + $x = result(p), \; (o, q, u, r) = result(q)$ \; + $y = (o, p, extend \Xund path (H, u, \tau), r)$ \; + + \BlankLine + \If {$x \!=\! \varnothing \vee indeg(p) \!<\! 2 \vee less(y, x, C)$} { + $result(p) = y$ \; + \If {$status(p) \neq \INQUEUE$} { + $insert \Xund with \Xund priority(queue, p, topord(p))$ \; + $status(p) = \INQUEUE$ \; + } + } + } + } + + \BlankLine + \Return $prune(result, N)$ + } + \BlankLine + \BlankLine + + \Fn {$\underline{prune (X, N)} \smallskip$} { + \Return $\big\{ (\Xund, q, \Xund, \Xund) \in X \mid + q \in F \vee \exists (q, \alpha, \Xund, \Xund) \in \Delta^\Sigma \}$ + } + \BlankLine + \BlankLine + + \Fn {$\underline{less (x, y, C)} \smallskip$} { + $(\Xund, \Xund, l) = compare (x, y, U, B, D)$ \; + \Return $l < 0$ + } + \BlankLine + \BlankLine + + \Fn {$\underline{prec (x, y, D)} \smallskip$} { + $(q, \Xund, \Xund, \Xund) = x, \; (p, \Xund, \Xund, \Xund) = y$ \; + \Return $D[q][p] < 0$ + } + \BlankLine + \BlankLine + +\end{multicols} +\vspace{1em} +\caption{ +Closure algorithms GOR1 (on the left) and GTOP (on the right). +Definition of functions of $push()$, $pop()$, $insert \Xund with \Xund priority()$, $extract \Xund min()$, +$indeg()$ and $topord()$ is omitted for brevity. +Definitions of $compare ()$ and $extend \Xund path ()$ are given in sections \ref{section_comparison} and \ref{section_pathtree}. +$\YC$ is the set of all configurations.} +\end{algorithm} + +The general proof of correctness of shortest-path algorithms is out of the scope of this paper. +However, we need to justify the application of these algorithms to our setting. +% +In order to do that, we recall the framework for solving shortest-path algorithms based on \emph{closed semirings} +described in \cite{CLR} (section 26.4) +and show that our problem fits into this framework. +% +A \emph{semiring} is a structure $(\YK, \oplus, \otimes, \Xbar{0}, \Xbar{1})$, where +$\YK$ is a set, +$\oplus \!\!:\!\! \YK \times \YK \rightarrow \YK$ is an associative and commutative operation with identity element $\Xbar{0}$, +$\otimes \!\!:\!\! \YK \times \YK \rightarrow \YK$ is an associative operation with identity element $\Xbar{1}$, +$\otimes$ distributes over $\oplus$ +and $\Xbar{0}$ is annihilator for $\otimes$. +% +Additionally, \emph{closed} semiring requires that +$\oplus$ is idempotent, +any countable $\oplus$-sum of $\YK$ elements is in $\YK$, +and associativity, commutativity, distributivity and idempotence apply to countable $\oplus$-sums. +Mohri generalizes this definition and notes that either left or right distributivity is sufficient \cite{Moh02}. +% +In our case $\YK$ is the set of closure paths without tagged $\epsilon$-loops: +the following lemma \ref{lemma_closure_minpaths} and \ref{lemma_closure_noloop} +show that, on one hand, paths with tagged $\epsilon$-loops are not minimal, +and on the other hand such paths are discarded by the algorithm, +so they can be removed from consideration. +% +Consequently $\YK$ is finite. +We have semiring $(\YK, min, \cdot, \varnothing, \epsilon)$, where +$min$ is POSIX comparison of ambiguous paths, +$\cdot$ is concatenation of paths at the join points +(subject to restriction that paths do not contain tagged $\epsilon$-loops +and remain within TNFA bounds --- concatenation of arbitrary paths is not in $\YK$), +$\varnothing$ corresponds to artificial infinitely long path, +and $\epsilon$ is the empty path. +% +It is easy to show that +$min$ is commutative and associative, +$\varnothing$ is identity for $min$ ($min(\pi, \varnothing) = min(\varnothing, \pi) = \pi$), +$\cdot$ is associative, +$\epsilon$ is identity for $\cdot$ ($\pi \cdot \epsilon = \epsilon \cdot \pi = \pi$), +$\varnothing$ is annihilator for $\cdot$ ($\pi \cdot \varnothing = \varnothing \cdot \pi = \varnothing$), +and right distributivity of $\cdot$ over $min$ for paths with at most one $\epsilon$-loop is given by lemma \ref{lemma_closure_rightdist}. +% +Idempotence holds because $min(\pi, \pi) = \pi$. +% +Since $\YK$ is finite, the properties for $\oplus$-sums over countable subsets are satisfied. + +\begin{theoremEnd}[restate, no link to proof, no link to theorem, category=lemmata_closure]{lemma} + \label{lemma_closure_minpaths} + Minimal paths do not contain tagged $\epsilon$-loops. +\end{theoremEnd} +\begin{proofEnd} + % Proof in terms of REs and correspondence between subexpression and loop + % is a bit hard because of unrolling of repetition in TNFA construction + % (there is no direct correspondence between sub-RE and sub-TNFA). + % + Suppose, on the contrary, that $\pi$ is a minimal path in some TNFA + and that $\pi$ contains at least one tagged $\epsilon$-loop. + We show that it is possible to construct another path $\pi'$ such that $\pi' < \pi$. + % + Path $\pi$ can be represented as + $\pi = \pi_1 \pi_2 \pi_3$, where + $\pi_1 = q_0 \overset {u | \alpha} {\rightsquigarrow} q$, + $\pi_2 = q \overset {\epsilon | \beta} {\rightsquigarrow} q$ is the last tagged $\epsilon$-loop on $\pi$ and + $\pi_3 = q \overset {v | \gamma} {\rightsquigarrow} q_f$. + Let $\pi' = \pi_1 \pi_3$ be the path that is obtained from $\pi$ by removing the loop $\pi_2$. + Paths $\pi$ and $\pi'$ consume the same input string $uv$ + and induce comparable PEs $\alpha \beta \gamma$ and $\alpha \gamma$. + Let $\big( (\rho_1, \hdots, \rho_n), (\rho'_1, \hdots, \rho'_n) \big) = traces (\alpha \beta \gamma, \alpha \gamma)$ + and let $k$ be the index of the fork frame. + % + By construction of TNFA the loop $\pi_2$ must be contained in a sub-TNFA $f$ + for sub-IRE of the form $e = (\Xund, \Xund, e_1^{1,\infty})$, + as this is the only looping TNFA construct --- see algorithm \ref{alg_tnfa}. + Let $f_1$ be the sub-TNFA for $e_1$. + Path $\pi$ enters $f$ and iterates through $f_1$ at least twice before leaving $f$ + (single iteration is not enough to create a loop by TNFA construction). + Let $j$ be the total number of iterations through $f_1$, + and let $i$ be the index of the last $\epsilon$-loop iteration + (note that not all iterations are necessarily $\epsilon$-loops). + Consider two possible cases: + % + \begin{enumerate}[itemsep=0.5em, topsep=0.5em] + \item[(1)] + Case $i = j$. + In this case fork of $\alpha \beta \gamma$ and $\alpha \gamma$ happens immediately after $(i-1)$-th iteration: + % + \begin{alignat*}{10} + \alpha \beta \gamma &= x_0 \Xl_{h-1} \;&&\; \Xl_h x_1 \Xr_h \hdots \Xl_h x_{i-1} \Xr_h \;&&\big|\; \Xl_h x_{i} \Xr_h \;&&\; \Xr_{h-1} x_{j+1} \\[-0.5em] + \alpha \gamma &= x_0 \Xl_{h-1} \;&&\; \Xl_h x_1 \Xr_h \hdots \Xl_h x_{i-1} \Xr_h \;&&\big|\; \;&&\; \Xr_{h-1} x_{j+1} + \end{alignat*} + % + Since $x_i$ is an $\epsilon$-loop, it is contained in the fork frame of $\alpha \beta \gamma$. + We have $minh (\beta) = h$ and $minh (\gamma) \leq h - 1$, therefore $\rho_k = \rho'_k \leq h - 1$. + Subsequent frames $l > k$ (if any) are identical and thus $\rho_l = \rho'_l$. + Furthermore, $first (\gamma) = \Xr < \Xl = first (\beta)$. + Therefore $\alpha \beta \gamma \sim \alpha \gamma$ and $\alpha \gamma \subset \alpha \beta \gamma$. + + \item[(2)] + Case $i < j$. + In this case $(i + 1)$-th iteration cannot be an $\epsilon$-loop + (because we assumed that $i$-th iteration is the last $\epsilon$-loop), + therefore the fork of $\alpha \beta \gamma$ and $\alpha \gamma$ happens + inside of $i$-th iteration of $\alpha \beta \gamma$ + and $(i + 1)$-th iteration of $\alpha \gamma$: + % + \begin{alignat*}{10} + \alpha \beta \gamma &= x_0 \Xl_{h-1} \;&&\; \Xl_h x_1 \Xr_h \hdots \Xl_h x_{i-1} \Xr_h \Xl_h y_1 \;&&\big|\; y_2 \Xr_h \Xl_h x_{i+1} && \Xr_h \Xl_h x_{i+2} \Xr_h \hdots \Xl_h x_j \Xr_h \;&&\; \Xr_{h-1} x_{j+1} \\[-0.5em] + \alpha \gamma &= x_0 \Xl_{h-1} \;&&\; \Xl_h x_1 \Xr_h \hdots \Xl_h x_{i-1} \Xr_h \Xl_h y_1 \;&&\big|\; y_3 && \Xr_h \Xl_h x_{i+2} \Xr_h \hdots \Xl_h x_j \Xr_h \;&&\; \Xr_{h-1} x_{j+1} + \end{alignat*} + % + Here $y_1 y_2 = x_i$ and $y_1 y_3 = x_{i+1}$ ($i$-th iteration is missing from $\alpha \gamma$ by construction of $\pi'$). + Fragment $y_2$ is part of the $\epsilon$-loop, + therefore fork frame of $\alpha \beta \gamma$ contains a parenthesis $\Xr_h$ and we have $\rho_k = h$. + On the other hand, $y_3$ contains alphabet symbols, + because $x_{i+1}$ is not an $\epsilon$-loop and $y_1$ is a part of the $\epsilon$-loop. + Therefore fork frame of $\alpha \gamma$ ends in $y_3$ and we have $\rho'_k > h$. + % + %In this case + %fork frame of $\alpha \beta \gamma$ contains $y_2 \Xr_h \Xl_h$ fragment, because $y_2$ is part of the $\epsilon$-loop. + %But the fork frame of $\alpha \gamma$ ends inside of $y_3$, because $(i+1)$-th repetiton is not an $\epsilon$-loop and must contain alphabet symbols. + %Therefore at the fork frame $k$ we have $\rho_k = h$ and $\rho'_k > h$. + % + All subsequent frames $l > k$ are identical: + if they contain parentheses of height less than $h$, then $\rho_l = \rho'_l < h$; + otherwise $\rho_l \leq h$ and $\rho'_l > h$. + Therefore $\alpha \gamma \sqsubset \alpha \beta \gamma$. + \end{enumerate} + % + In both cases $\alpha \gamma < \alpha \beta \gamma$, + which contradicts the fact that $\pi$ is a minimal path. +\end{proofEnd} +\vspace{-0.5em} + +\begin{theoremEnd}[restate, no link to proof, no link to theorem, category=lemmata_closure]{lemma} + \label{lemma_closure_noloop} + GOR1 and GTOP discard paths with tagged $\epsilon$-loops. +\end{theoremEnd} +\begin{proofEnd} + Suppose that GOR1/GTOP finds path $\pi_1 \pi_2$ + where $\pi_1 = q_0 \overset {s | \alpha} {\rightsquigarrow} q_1$ + and $\pi_2 = q_1 \overset {\epsilon | \gamma} {\rightsquigarrow} q_1$ is a tagged $\epsilon$-loop. + Both algorithms construct new paths by exploring transitions from the end state of existing paths, + so they can only find $\pi_1 \pi_2$ after they find $\pi_1$. + Therefore when GOR1/GTOP finds $\pi_1 \pi_2$, + it already has some shortest-path candidate $\pi'_1 = q_0 \overset {s | \alpha'} {\rightsquigarrow} q_1$ + and must compare ambiguous paths $\pi_1 \pi_2$ and $\pi'_1$. + There are two possibilities: either $\alpha' = \alpha$ + or $\alpha' < \alpha$ (the latter means that the algorithm has found + a shorter path to $q_1$ in between finding $\pi_1$ and $\pi_1 \pi_2$). + Let $\big( (\rho_1, \hdots, \rho_k), (\rho'_1, \hdots, \rho'_k) \big) = traces (\alpha', \alpha \gamma)$. + % + \begin{itemize}[itemsep=0.5em, topsep=0.5em] + \item[(1)] + Case $\alpha' = \alpha$. + Because $\alpha$ is a proper prefix of $\alpha \gamma$, + fork happens at the last frame and we have + $\rho_k = lasth(\alpha)$ and + $\rho'_k = min (lasth(\alpha), minh(\gamma))$. + If $lasth(\alpha) > minh(\gamma)$, then $\rho_k > \rho'_k$ and $\alpha \sqsubset \alpha \gamma$. + Otherwise $\rho_k = \rho'_k$ and $\alpha \sim \alpha \gamma$, + and we have $first(\alpha \backslash \alpha \gamma) = \bot$ and $first(\alpha \gamma \backslash \alpha) \neq \bot$, + therefore $\alpha \subset \alpha \gamma$. + In both cases $\alpha < \alpha \gamma$. + + \item[(2)] + Case $\alpha' < \alpha$. + Let $\big( (\sigma_1, \hdots, \sigma_k), (\sigma'_1, \hdots, \sigma'_k) \big) = traces (\alpha', \alpha)$. + We have $\rho_k = \sigma_k$ and $\rho'_k = min (\sigma'_k, minh(\gamma)) \leq \sigma_k$. + If $minh(\gamma) < \sigma'_k$ then $\rho_k > \rho'_k$ and $\alpha' \sqsubset \alpha \gamma$. + Otherwise $\rho'_k = \sigma'_k$. + If $\alpha' \sqsubset \alpha$ then $\alpha' \sqsubset \alpha \gamma$. + Otherwise $\alpha' \sim \alpha$ and $\alpha' \subset \alpha$. + None of $\alpha$ and $\alpha'$ is a proper prefix of the other + because otherwise the longer path has an $\epsilon$-loop through $q_1$, which contradicts our assumption about $\pi_1$ and $\pi'_1$. + Therefore $first (\alpha' \backslash \alpha) = first (\alpha' \backslash \alpha \gamma)$ + and $first (\alpha \backslash \alpha') = first (\alpha \gamma \backslash \alpha')$. + Consequently $\alpha' \subset \alpha \implies \alpha' \subset \alpha \gamma$. + Thus $\alpha' < \alpha \gamma$. + \end{itemize} + % + In both cases $\alpha' < \alpha \gamma$, therefore path $\pi_1 \pi_2$ is discarded. +\end{proofEnd} +\vspace{-0.5em} + +\begin{theoremEnd}[restate, no link to proof, no link to theorem, category=lemmata_closure]{lemma} +[Right distributivity of comparison over concatenation for paths without tagged $\epsilon$-loops] + \label{lemma_closure_rightdist} + Let + $\pi_\alpha = q_0 \overset {u | \alpha} {\rightsquigarrow} q_1$ and + $\pi_\beta = q_0 \overset {u | \beta} {\rightsquigarrow} q_1$ + be ambiguous paths in TNFA $f$ for IRE $e$, + and let $\pi_\gamma = q_1 \overset {\epsilon | \gamma} {\rightsquigarrow} q_2$ + be their common $\epsilon$-suffix, + such that $\pi_\alpha \pi_\gamma$ and $\pi_\beta \pi_\gamma$ do not contain tagged $\epsilon$-loops. + If $\alpha < \beta$ then $\alpha \gamma < \beta \gamma$. +\end{theoremEnd} +\begin{proofEnd} + Let + $\big( (\rho_1, \hdots, \rho_k),$ $(\rho'_1, \hdots, \rho'_k) \big) = traces (\alpha, \beta)$ and + $\big( (\sigma_1, \hdots, \sigma_k),$ $(\sigma'_1, \hdots, \sigma'_k) \big) = traces (\alpha \gamma, \beta \gamma)$. + Appending $\gamma$ to $\alpha$ and $\beta$ changes only the last frame, therefore + for frames $i < k$ we have $\rho_i = \sigma_i$ and $\rho'_i = \sigma'_i$. + Consider two possible cases. + % + \begin{itemize}[itemsep=0.5em, topsep=0.5em] + \item[(1)] + Case $\alpha \sim \beta \wedge \alpha \subset \beta$. + % + We show that $\alpha \gamma \sim \beta \gamma \wedge \alpha \gamma \subset \beta \gamma$. + % + We have $\rho_i = \rho'_i \; \forall i$ (implied by $\alpha \sim \beta$), therefore + $\sigma_i = \sigma'_i \; \forall i$ and consequently $\alpha \gamma \sim \beta \gamma$. + Let + $x = first (\alpha \backslash \beta)$, + $y = first (\beta \backslash \alpha)$, + $x' = first (\alpha \gamma \backslash \beta \gamma)$ and + $y' = first (\beta \gamma \backslash \alpha \gamma)$. + If one of $\pi_\alpha$ and $\pi_\beta$ is a proper prefix of another, + then the longer path contains tagged $\epsilon$-loop through $q_1$, + which contradicts lemma conditions + (the suffix of the longer path must be an $\epsilon$-path, + because $\alpha$ and $\beta$ have the same number of frames + and the suffix is contained in the last frame). + Therefore none of $\pi_\alpha$ and $\pi_\beta$ is a proper prefix of another. + Consequently $x = x'$ and $y = y'$, and we have + $\alpha \subset \beta$ + $\implies$ + $x < y$ + $\implies$ + $x' < y'$ + $\implies$ + $\alpha \gamma \subset \beta \gamma$. + + \item[(2)] + Case $\alpha \sqsubset \beta$: + by definition this means that $\exists j \leq k$ such that $\rho_j > \rho'_j$ and $\rho_i = \rho'_i \;\forall i > j$. + We show that $\alpha \gamma \sqsubset \beta \gamma$. + % + \begin{itemize} + \item[(2a)] + Case $j < k$. In this case $\rho_k = \rho'_k$ + and appending $\gamma$ does not change relation on the last frame: + $\sigma_k = min (\rho_k, minh (\gamma)) = min (\rho'_k, minh (\gamma)) = \sigma'_k$. + Since $\sigma_i = \rho_i$ and $\sigma'_i = \rho'_i$ for all preceding frames $i < k$, + we have $\alpha \gamma \sqsubset \beta \gamma$. + + \item[(2b)] + Case $j = k$ and $minh (\gamma) > \rho'_k$. + In this case $\rho_k > \rho'_k$ + and again appending $\gamma$ does not change relation on the last frame: + $\sigma_k = min (\rho_k, minh (\gamma)) > \rho'_k$ and + $\sigma'_k = min (\rho'_k, minh (\gamma)) = \rho'_k$, therefore + $\sigma_k > \sigma'_k$. + Therefore $\alpha \gamma \sqsubset \beta \gamma$. + + \item[(2c)] + Case $j = k$ and $minh (\gamma) \leq \rho'_k$ + and $\exists l < k$ such that $\rho_l > \rho'_l$ and $\rho_i = \rho'_i$ for $l < i < k$. + In this case $\gamma$ contains parentheses of low height + and appending it makes height on the last frame equal: + $\sigma_k = \sigma'_k = minh (\gamma)$. + However, the relation on the last preceding differing frame is the same: + $\sigma_l = \rho_l > \rho'_l = \sigma'_l$. + Therefore $\alpha \gamma \sqsubset \beta \gamma$. + + \item[(2d)] + Case $j = k$ and $minh (\gamma) \leq \rho'_k$ + and $\nexists l < k$ such that $\rho_l > \rho'_l$ and $\rho_i = \rho'_i$ for $l < i < k$. + In this case $\gamma$ contains parentheses of low height, + appending it makes height on the last frame equal: + $\sigma_k = \sigma'_k = minh (\gamma)$, + and this may change comparison result + as the relation on the last preceding differing frame may be different. + % + We show that in this case the extended path $\pi_\beta \pi_\gamma$ contains a tagged $\epsilon$-loop. + % + Consider the fragments of paths $\pi_\alpha$ and $\pi_\beta$ from fork to join, + including (if it exists) the common $\epsilon$-transition to the fork state: + $\pi_\alpha'$ and $\pi_\beta'$. + % + Minimal parenthesis height on $\pi_\alpha'$ is $\rho_k$. + By TNFA construction this means that $\pi_\alpha'$ is contained + in a sub-TNFA $f'$ for $e|_p$ at some position $p$ with length $|p| = \rho_k$. + % + As for $\pi_\beta'$, its start state coincides with $\pi_\alpha'$ and thus is in $f'$. + The minimal height of all but the last frames of $\pi_\beta'$ is at least $\rho_k$: + by conditions of (2d) either $k = 1$ and there are no such frames, + or $\rho'_{k-1} \geq \rho_{k-1}$ which implies $\rho'_{k-1} \geq \rho_k$ + (because by definition $\rho_k = min(\rho_{k-1}, minh(\alpha_k)) \leq \rho_{k-1}$). + On the last frame of $\pi_\beta'$ minimal height is $\rho'_k < \rho_k$. + Therefore all but the last frames of $\pi_\beta'$ are contained in $f'$, + but the the last frame is not. + % + Now consider $\pi_\gamma$: by conditions of (2d) its minimal height is less than $\rho_k$, + therefore it is not contained in $f'$, + % + but its start state is the join point of $\pi_\alpha'$ and $\pi_\beta'$ and thus in $f'$. + % + Taken together, above facts imply that the last frame of $\pi_\beta \pi_\gamma$ + starts in $f'$, then leaves $f'$, then returns to $f'$ and joins with $\pi_\alpha \pi_\gamma$, + and then leaves $f'$ second time. + Since the end state of $f'$ is unique (by TNFA construction), + $\pi_\beta \pi_\gamma$ must contain a tagged $\epsilon$-loop through it, + which contradicts lemma conditions. + \end{itemize} + \end{itemize} + % + (Note that in the presence of tagged $\epsilon$-loops right distributivity may not hold: + we may have paths $\pi_1$, $\pi_2$ and $\pi_3$ + such that $\pi_2$ and $\pi_3$ are two different $\epsilon$-loops through the same subautomaton + and $\pi_1 \pi_2 < \pi_1 \pi_3$, + in which case $\pi_1 \pi_2 \pi_3 < \pi_1 \pi_3$, + but $\pi_1 < \pi_1 \pi_2$ because the first is a proper prefix of the second.) + % +\end{proofEnd} + + +\section{Tree representation of paths}\label{section_pathtree} + +In this section we specify the representation of path fragments in configurations +and define path context $U$ and functions $empty \Xund path ()$ and $extend \Xund path ()$ +used in previous sections. +% +An obvious way to represent tagged path is to use a sequence of tags, such as a list or an array: +in that case $empty \Xund path ()$ can be implemented as an empty sequence, +and $extend \Xund path ()$ is just an append operation. +% +However, a more efficient representation is possible +if we consider the structure formed by paths in $\epsilon$-closure. +This structure is a \emph{prefix tree} of tags. +Some care is necessary with TNFA construction in order to ensure prefixness, +but that is easy to accommodate and we give the details in section \ref{section_tnfa}. +Storing paths in a prefix tree achieves two purposes: +first, we save on the duplicated prefixes, +and second, copying paths becomes as simple as copying a pointer to a tree leaf --- no need to copy the full sequence. +This technique was used by many researches, e.g. Laurikari mentions a \emph{functional data structure} \cite{Lau01} +and Karper describes it as the \emph{flyweight pattern} \cite{Kar14}. +\\ + +\begin{algorithm}[H] \DontPrintSemicolon \SetKwProg{Fn}{}{}{} \SetAlgoInsideSkip{medskip} +\begin{multicols}{2} + \setstretch{0.8} + + \Fn {$\underline {empty \Xund path (\,)} \smallskip$} { + \Return $0$ \; + } + \BlankLine + + \Fn {$\underline {extend \Xund path (U, n, \tau)} \smallskip$} { + \If {$\tau \neq \epsilon$} { + $m = |U| + 1$ \; + append $m$ to $succ(U, n)$ \; + append $(n, \emptyset, \tau)$ to $U$ \; + \Return $m$ \; + } + \lElse { + \Return $n$ + } + } + \BlankLine + +\columnbreak + + \Fn {$\underline {unroll \Xund path (U, n)} \smallskip$} { + $u = \epsilon$ \; + \While { $n \neq 0$ } { + $u = u \cdot tag(U, n)$ \; + $n = pred(U, n)$ \; + } + \Return $reverse(u)$ \; + } + \BlankLine + + \vfill + +\end{multicols} +\caption{Operations on tag tree.} +\end{algorithm} +\medskip + +A convenient representation of tag tree is an indexed sequence of nodes. +Each node is a triple $(p, s, t)$ where +$p$ is the index of predecessor node, +$s$ is a set of indices of successor nodes +and $t$ is a tag (positive or negative). +% +Forward links are only necessary if the advanced algorithm for $update \Xund ptables ()$ is used +(section \ref{section_comparison}), otherwise successor component can be omitted. +% +Now we can represent $u$-components of configurations with indices in the $U$-tree: +root index is $0$ (which corresponds to the empty path), +and each $u$-component is a tree index from which we can trace predecessors to the root +(function $unroll \Xund path ()$ demonstrates this). +% +In the implementation, it is important to use numeric indices rather than pointers +because it allows to use the ``two-fingers'' algorithm to find fork of two paths (section \ref{section_comparison}). +% +We assume the existence of functions +$pred(U, n)$ that returns $p$-component of $n$-th node, +$succ(U, n)$ that returns $s$-component of $n$-th node and +$tag(U, n)$ that returns $t$-component of $n$-th node. + + +\section{Representation of match results}\label{section_results} + +In this section we show two ways to construct match results: POSIX offsets and a parse tree. +% +In the first case, $r$-component of configurations is an array of offset pairs $pmatch$. +Offsets are updated incrementally at each step by scanning the corresponding path fragment +and setting negative tags to $-1$ and positive tags to the current step number. +We need the most recent value of each tag, therefore we take care to update tags at most once. +Negative tags are updated using helper functions $low()$ and $upp()$ that map each tag to the range of tags covered by it +(which includes itself, its pair tag and all nested tags). +Helper function $sub()$ maps each tag to the corresponding submatch group. +For a given tag $t$, functions $sub()$, $low()$ and $upp()$ are defined as the 2nd, 3rd and 4th components of $(t, s, l, u) \in T$. +Section \ref{section_tnfa} shows how this mapping is constructed. +\\ + +In the second case, $r$-component of configurations is a tagged string that is accumulated at each step, +and eventually converted to a parse tree at the end of match. +The resulting parse tree is only partially structured: +leaves that correspond to subexpressions with zero implicit submatch index contain ``flattened'' substring of alphabet symbols. +It is possible to construct parse trees incrementally as well, +but this is more complex and the partial trees may require even more space than tagged strings. +\\ + +\begin{algorithm}[H] \DontPrintSemicolon \SetKwProg{Fn}{}{}{} +\begin{multicols}{2} + \setstretch{0.8} + + \Fn {$\underline{initial \Xund result (T)} \smallskip$} { + \Return uninitialized array of pairs $(rm \Xund so, rm \Xund eo)$\; + } + \BlankLine + \BlankLine + + \Fn {$\underline{update \Xund result (T, X, U, k, \Xund)} \smallskip$} { + \Return $\big\{ (q, o, u, apply (T, U, u, r, k)) \mid (q, o, u, r) \in X \big\}$ \; + } + \BlankLine + \BlankLine + + \Fn {$\underline{f\!inal \Xund result (T, U, u, r, k)} \smallskip$} { + $pmatch = apply (T, U, u, r, k)$ \; + $pmatch[0].rm \Xund so = 0, \; pmatch[0].rm \Xund eo = k$ \; + \Return $pmatch$ \; + } + \BlankLine + \BlankLine + + \Fn {$\underline{apply (T, U, n, pmatch, k)} \smallskip$} { + $done(\Xund) \equiv f\!alse$ \; + \While {$n \neq 0$} { + $t = tag(U, n) \; s = sub(T, |t|)$ \; + \If {$t < 0 \wedge \big( s = 0 \vee \neg done(s) \big)$} { + \For {$t' = \overline{low(T, |t|), upp(T, |t|)}$} { + $s' = sub(T, t')$ \; + \If {$s' \neq 0 \wedge \neg done(s')$} { + $done(s') = true$ \; + $set \Xund tag (pmatch, t', s', -1)$ \; + } + } + } + \ElseIf {$s \neq 0 \wedge \neg done(s)$} { + $done(s) = true$ \; + $set \Xund tag (pmatch, t, s, k)$ \; + } + $n = pred(U, n)$ \; + } + \Return $pmatch$ \; + } + \BlankLine + \BlankLine + + \Fn {$\underline{set \Xund tag (pmatch, t, s, pos)} \smallskip$} { + \lIf {$t \, mod \, 2 \equiv 1$} {$pmatch[s].rm \Xund so = pos$} + \lElse {$pmatch[s].rm \Xund eo = pos$} + } + \BlankLine + + \vfill + +\columnbreak + + \Fn {$\underline{initial \Xund result (\Xund)} \smallskip$} { + \Return $\epsilon$ \; + } + \BlankLine + \BlankLine + + \Fn {$\underline{update \Xund result (\Xund, X, U, \Xund, \alpha)} \smallskip$} { + \Return $\big\{ (q, o, u, r \cdot unroll \Xund path (U, u) \cdot \alpha)$ \; + \Indp\Indp\Indp\Indp\Indp\Indp\Indp\Indp $\mid (q, o, u, r) \in X \big\}$ \; \Indm\Indm\Indm\Indm\Indm\Indm\Indm\Indm + } + \BlankLine + \BlankLine + + \Fn {$\underline{f\!inal \Xund result (\Xund, U, u, r, \Xund)} \smallskip$} { + \Return $parse \Xund tree (r \cdot unroll \Xund path (U, u), 1)$ \; + } + \BlankLine + \BlankLine + + \Fn {$\underline{parse \Xund tree (u, i)} \smallskip$} { + \If {$u = (2i \!-\! 1) \cdot (2i)$} { + \Return $T^i(\epsilon)$ + } + \If {$u = (1 \!-\! 2i) \cdot \hdots $} { + \Return $T^i(\varnothing)$ + } + \If {$u = (2i \!-\! 1) \cdot \alpha_1 \hdots \alpha_n \cdot (2i) \wedge \alpha_1, \hdots, \alpha_n \in \Sigma $} { + \Return $T^i(a_1, \hdots, a_n)$ + } + \If {$u = (2i \!-\! 1) \cdot \beta_1 \hdots \beta_m \cdot (2i) \wedge \beta_1 = 2j \!-\! 1 \in T$} { + $n = 0, k = 1$ \; + \While {$k \leq m$} { + $l = k$ \; + \lWhile {$|\beta_{k+1}| > 2j$} { + $k = k + 1$ + } + $n = n + 1$ \; + $t_n = parse \Xund tree (\beta_l \dots \beta_k, j)$ + } + \Return $T^i(t_1, \dots, t_n)$ + } + \Return $\varnothing$ \tcp{ill-formed PE} + } + \BlankLine + + \vfill + +\end{multicols} +\vspace{1.5em} +\caption{Construction of match results: POSIX offsets (on the left) and parse tree (on the right).} +\end{algorithm} +\medskip + + +\section{Disambiguation procedures}\label{section_comparison} + +In this section we define disambiguation procedures $compare ()$ and $update \Xund ptables ()$. +The pseudocode follows definition \ref{pe_order} closely +and relies on the prefix tree representation of paths given in section \ref{section_results}. +% +In order to find fork of two paths in $compare ()$ we use so-called ``two-fingers'' algorithm, +which is based on the observation that parent index is always less than child index. +Given two indices $n_1$ and $n_2$, we continuously set the greater index to its parent until the indices become equal, +at which point we have either found fork or the root of $U$-tree. +We track minimal height of each path along the way +and memorize the pair of indices right after the fork --- they are used to determine the leftmost path in case of equal heights. +% +We assume the existence of helper function $height(T, t)$ that maps each tag to its height. +\\ + +\begin{algorithm}[H] \DontPrintSemicolon \SetKwProg{Fn}{}{}{} \SetAlgoInsideSkip{medskip} +\begin{multicols}{2} + \setstretch{0.8} + + \Fn {$\underline {compare (c_1, c_2, U, B, D)} \smallskip$} { + $(\Xund, o_1, n_1, \Xund) = c_1, \; (\Xund, o_2, n_2, \Xund) = c_2$ \; + + \lIf { $o_1 = o_2 \wedge n_1 = n_2$ } { + \Return $(\infty, \infty, 0)$ + } + + \BlankLine + $f\!ork = o_1 = o_2$ \; + \lIf {$f\!ork$ } { + $h_1 = h_2 = \infty$ + } + \lElse { + $h_1 = B[o_1][o_2], \; h_2 = B[o_2][o_1]$ + } + + \BlankLine + $m_1 = m_2 = \bot$ \; + \While {$n_1 \neq n_2$} { + \If {$n_1 > n_2$} { + $h_1 = min(h_1, height(T, tag(U, n_1)))$ \; + $m_1 = n_1, \; n_1 = pred(U, n_1)$ \; + } + \Else { + $h_2 = min(h_2, height(T, tag(U, n_2)))$ \; + $m_2 = n_2, \; n_2 = pred(U, n_2)$ \; + } + } + \If {$n_1 \neq \bot$} { + $h = height(T, tag(U, n_1))$ \; + $h_1 = min(h_1, h), \; h_2 = min(h_2, h)$ \; + } + + \BlankLine + \lIf {$h_1 > h_2$} {$l = -1$} + \lElseIf {$h_1 < h_2$} {$l = 1$ } + \lElseIf {$\neg f\!ork$} {$l = D[o_1][o_2]$} + \lElse {$l = le\!f\!tprec(m_1, m_2, U)$} + + \BlankLine + \Return $(h_1, h_2, l)$ \; + } + \BlankLine + \BlankLine + + \Fn {$\underline {le\!f\!tprec (n_1, n_2, U)} \smallskip$} { + + \lIf {$n_1 = n_2$} { \Return $0$ } + \lIf {$n_1 = \bot$} { \Return $-1$ } + \lIf {$n_2 = \bot$} { \Return $1$ } + + \BlankLine + $t_1 = tag(U, n_1), \; t_2 = tag(U, n_2)$ \; + + \BlankLine + \lIf {$t_1 < 0$} { \Return $1$ } + \lIf {$t_2 < 0$} { \Return $-1$ } + + \BlankLine + \lIf {$t_1 mod \, 2 \equiv 0$} { \Return $-1$ } + \lIf {$t_2 mod \, 2 \equiv 0$} { \Return $1$ } + + \BlankLine + \Return $0$ + } + \BlankLine + \BlankLine + + \Fn {$\underline {update \Xund ptables (N, X, U, B, D)} \smallskip$} { + \For {$x_1 = (q_1, \Xund, \Xund, \Xund) \in X$} { + \For {$x_2 = (q_2, \Xund, \Xund, \Xund) \in X$} { + $(h_1, h_2, l) = compare (x_1, x_2, U, B, D)$ \; + $B' [q_1] [q_2] = h_1, \; D' [q_1] [q_2] = l$ \; + $B' [q_2] [q_1] = h_2, \; D' [q_2] [q_1] = -l$ + } + } + \BlankLine + \Return $(B', D')$ \; + } + + \vfill + \columnbreak + + \Fn {$\underline {update \Xund ptables (N, X, U, B, D)} \smallskip$} { + $i = 0, \; next(n) \equiv 1, \; \text{empty stack } S, \; \text{empty array } L$ \; + $push(S, 0)$ \; + + \BlankLine + \While {$S$ is not empty} { + $n = pop(S)$ \; + + \BlankLine + \If {$next(n) < k$} { + $push(S, n)$ \; + $push(S, succ(U, n)_{next(n)})$ \; + $next(n) = next(n) + 1$ \; + $continue$ \; + } + + \BlankLine + $h = height(T, tag(U, n)), \; i_1 = i$ \; + + \BlankLine + \For {$(q, o, n_1, \Xund) \in X \mid n_1 = n$} { + $i = i + 1, \; L[i] = (q, o, \bot, h)$ \; + } + \For {$j_1 = \overline{i_1 + 1, i}$} { + \For {$j_2 = \overline{j_1, i}$} { + $(q_1, o_1, \Xund, \Xund) = L[j_1]$ \; + $(q_2, o_2, \Xund, \Xund) = L[j_2]$ \; + + \BlankLine + \If {$n = 0 \wedge o_1 \neq o_2$} { + $h_1 = B[o_1][o_2], \; h_2 = B[o_2][o_1]$ \; + $l = D[o_1][o_2]$ \; + } + \lElse { + $h_1 = h_2 = h, \; l = 0$ + } + + \BlankLine + $B'[q_1][q_2] = h_1, \; D'[q_1][q_2] = l$ \; + $B'[q_2][q_1] = h_2, \; D'[q_2][q_1] = -l$ \; + } + } + + \BlankLine + \For {$m \in succ(U, n)$ in reverse} { + $i_2 = i_1$ \; + \lWhile {$i_2 > 0 \wedge L[i_2].n = m$} { + $i_2 = i_2 - 1$ + } + + \BlankLine + \For {$j_1 = \overline{i_2, i_1}$} { + $L[j_1].h = min(L[j_1].h, h)$; \; + + \BlankLine + \For {$j_2 = \overline{i_1, i}$} { + $(q_1, o_1, n_1, h_1) = L[j_1]$ \; + $(q_2, o_2, n_2, h_2) = L[j_2]$ \; + + \BlankLine + \If {$n = 0 \wedge o_1 \neq o_2$} { + $h_1 = min(h_1, B[o_1][o_2])$ \; + $h_2 = min(h_2, B[o_2][o_1])$ \; + } + + \BlankLine + \lIf {$h_1 > h_2$} {$l = -1$} + \lElseIf {$h_1 < h_2$} {$l = 1$ } + \lElseIf {$o_1 \neq o_2$} {$l = D[o_1][o_2]$} + \lElse {$l = le\!f\!tprec(n_1, n_2, U)$} + } + + \BlankLine + $B'[q_1][q_2] = h_1, \; D'[q_1][q_2] = l$ \; + $B'[q_2][q_1] = h_2, \; D'[q_2][q_1] = -l$ \; + } + + $i_1 = i_2$ \; + } + + \BlankLine + \lFor {$j = \overline{i_1, i}$} { + $L[j].n = n$ + } + } + + \BlankLine + \Return $(B', D')$ \; + } + +\end{multicols} +\caption{Disambiguation procedures.} +\end{algorithm} +\medskip + +We give two alternative algorithms for $update \Xund ptables ()$: +a simple one with $O(m^2 \, t)$ complexity (on the left) and a complex one with $O(m^2)$ complexity (on the right). +Worst case is demonstrated by RE $((a|\epsilon)^{0,k})^{0,\infty}$ where $n \in \YN$, +for which the simple algorithm takes $O(k^3)$ time and the complex algorithm takes $O(k^2)$ time. +% +The idea of complex algorithm is to avoid repeated re-scanning of path prefixes in the $U$-tree. +It makes one pass over the tree, +constructing an array $L$ of \emph{level items} $(q, o, u, h)$, where +$q$ and $o$ are state and origin as in configurations, +$u$ is the current tree index and $h$ is the current minimal height. +One item is added per each closure configuration $(q, o, u, r)$ when traversal reaches the tree node with index $u$. +After a subtree has been traversed, +the algorithm scans level items added during traversal of this subtree (such items are distinguished by their $u$-component), +sets their $h$-component to the minimum of $h$ and the height of tag at the current node, +and computes the new value of $B$ and $D$ matrices for each pair of $q$-states in items from different branches. +After that, $u$-component of all scanned items is downgraded to the tree index of the current node +(erasing the difference between items from different branches). + + +\section{Lazy disambiguation}\label{section_lazy} + +Most of the overhead in our algorithm comes from updating $B$ and $D$ matrices at each step. +It is all the more unfortunate since many comparisons performed by $update \Xund ptables ()$ are useless --- +the compared paths may never meet. +In fact, if the input is unambiguous, all comparisons are useless. +% +A natural idea, therefore, is to compare paths only in case of real ambiguity (when they meet in closure) +and avoid computation of precedence matrices altogether. +% +We can do it with a few modifications to our original algorithm. +% +First, we no longer need $B$ and $D$ matrices and $update \Xund ptables ()$ function. +Instead, we introduce cache $C$ that maps a pair of tree indices $(n_1, n_2)$ to a triple of precedence values $(h_1, h_2, l)$. +Cache stores the ``useful'' part of $B$ and $D$ matrices on multiple preceding steps. +It is populated lazily during disambiguation +and allows us to avoid re-computing the same values multiple times. +% +Second, we need to modify the tree representation of paths in the following way: +forward links are no longer needed (parent links are sufficient), +and tree nodes must be augmented with information about current step and origin state (we assume the existence of helper functions $step()$ and $origin()$). +% +Third, instead of using $empty \Xund path ()$ to initialize path fragments in configurations +we need to set them to path fragments of their parent configurations, +so that paths are accumulated rather than reset at each step. +% +Fourth, we no longer need to call $update \Xund result ()$ at each step --- this can be done once at the end of match. +% +Below is the modified lazy version of $compare()$, the only part of the algorithm that requires non-trivial change. +\\ + +\begin{algorithm}[H] \DontPrintSemicolon \SetKwProg{Fn}{}{}{} \SetAlgoInsideSkip{medskip} +\begin{multicols}{2} + \setstretch{0.8} + + \Fn {$\underline {compare (c_1, c_2, U, C)} \smallskip$} { + $(\Xund, \Xund, n_1, \Xund) = c_1, \; (\Xund, \Xund, n_2, \Xund) = c_2$ \; + + \BlankLine + \Return $compare1 (n_1, n_2, U, C)$ \; + } + \BlankLine + \BlankLine + + \Fn {$\underline {compare1 (n_1, n_2, U, C)} \smallskip$} { + \If {$C(n_1, n_2) = \varnothing $} { + $C(n_1, n_2) = compare2 (n_1, n_2, U, C)$ \; + } + + \BlankLine + \Return $C(n_1, n_2)$ \; + } + \BlankLine + \BlankLine + + \vfill + \columnbreak + + \Fn {$\underline {compare2 (n_1, n_2, U, C)} \smallskip$} { + \lIf { $n_1 = n_2$ } { + \Return $(\infty, \infty, 0)$ + } + + \BlankLine + $h_1 = h_2 = \infty$ \; + $o_1 = origin(U, n_1), \; o_2 = origin(U, n_2)$ \; + $s_1 = step(U, n_1), \; s_2 = step(U, n_2), \; s = max (s_1, s_2)$ \; + $f\!ork = o_1 = o_2 \wedge s_1 = s_2$ \; + + \BlankLine + $m_1 = m_2 = \bot$ \; + \While {$n_1 \neq n_2 \wedge (s_1 \geq s \vee s_2 \geq s)$} { + \If {$s_1 \geq s \wedge (n_1 > n_2 \vee s_2 < s)$} { + $h_1 = min(h_1, height(T, tag(U, n_1)))$ \; + $m_1 = n_1, \; n_1 = pred(U, n_1), \; s_1 = step(U, n_1)$ \; + } + \Else { + $h_2 = min(h_2, height(T, tag(U, n_2)))$ \; + $m_2 = n_2, \; n_2 = pred(U, n_2), \; s_2 = step(U, n_2)$ \; + } + } + + \BlankLine + \If {$\neg f\!ork$ } { + $(h'_1, h'_2, l) = compare1(n_1, n_2, U, C)$ \; + $h_1 = min(h_1, h'_1), \; h_2 = min(h_2, h'_2)$ \; + } + \ElseIf {$n_1 \neq \bot$} { + $h = height(T, tag(U, n_1))$ \; + $h_1 = min(h_1, h), \; h_2 = min(h_2, h)$ \; + } + + \BlankLine + \lIf {$h_1 > h_2$} {$l = -1$} + \lElseIf {$h_1 < h_2$} {$l = 1$ } + \lElseIf {$f\!ork$} {$l = le\!f\!tprec(m_1, m_2, U)$} + + \BlankLine + \Return $(h_1, h_2, l)$ \; + } + \BlankLine + \BlankLine + +\end{multicols} +\vspace{1em} +\caption{Lazy disambiguation procedures (we assume that cache $C$ is modified in-place).} +\end{algorithm} +\medskip + +The problem with this approach is that we need to keep full-length history of each active path: +at the point of ambiguity we may need to look an arbitrary number of steps back +in order to find the fork of ambiguous paths. +% +This may be acceptable for small inputs (and memory footprint may even be smaller due to reduction of precedence matrices), +but it is definitely infeasible for very long or streaming inputs. +% +A possible solution may be a hybrid approach that uses lazy disambiguation, +but every $k$ steps fully calculates precedence matrices and ``forgets'' path prefixes. +Another possible solution is to keep both algorithms and choose between them depending on the length of input. + + +\section{TNFA construction}\label{section_tnfa} + +TNFA construction is given by the function $tn\!f\!a()$ +that accepts IRE $r$ and state $y$ and returns TNFA for $r$ with final state $y$ +(algorithm \ref{alg_tnfa}). +% +This precise construction is not necessary for the algorithms to work, +but it has a number of important properties. +\begin{itemize}[itemsep=0.5em, topsep=0.5em] + \item Non-essential $\epsilon$-transitions are removed, as they make closure algorithms slower. + + \item Bounded repetition $r^{n,m}$ is unrolled in a way + that duplicates $r$ exactly $m$ times + and factors out common path prefixes: + subautomaton for $(k+1)$-th iteration is only reachable from subautomaton for $k$-th iteration. + For example, $a^{2,5}$ is unrolled as $aa(\epsilon | a (\epsilon | a (\epsilon | a)))$, not as $aa(\epsilon|a|aa|aaa)$. + This ensures that the tag tree build by $\epsilon$-closure is a prefix tree. + + \item Priorities are assigned so as to make it more likely + that depth-first traversal of the $\epsilon$-closure finds short paths before long paths. + % + This is an optimization that makes GOR1 much faster in specific cases + with many ambiguous paths that are longest-equivalent and must be compared by the leftmost criterion. + An example of such case is $(((\epsilon)^{0,k})^{0,k})^{0,k})$ for some large $k$. + % + Because GOR1 has a depth-first component, it is sensitive to the order of transitions in TNFA. + If it finds the shortest path early, then all other paths are just canceled at the first join point with the shortest path + (because there is no improvement and further scanning is pointless). + In the opposite case GOR1 finds long paths before short ones, + and whenever it finds an improved (shorter) path, it has to schedule configurations for re-scan on the next pass. + This causes GOR1 to make more passes and scan more configurations on each pass, + which makes it significantly slower. + Arguably this bias is a weakness of GOR1 --- GTOP is more robust in this respect. + + \item When adding negative tags, we add a single transition for the topmost closing tag + (it corresponds to the nil-parenthesis, which has the height of a closing parenthesis). + Then we map this tag to the full range of its nested tags, including itself and the pair opening tag. + An alternative approach is to add all nested negative tags as TNFA transitions and get rid of the mapping, + but this may result in significant increase of TNFA size and major slowdown + (we observed 2x slowdown on large tests with hundreds of submatch groups). + + \item Compact representation of nested tags as ranges in $T$ + is possible because nested tags occupy consecutive numbers. + + \item Passing the final state $y$ in $tn\!f\!a()$ function allows to link subautomata in a simple and efficient way. + It allows to avoid tracking and patching of subautomaton transitions that go to the final state + (when this final state needs to be changed). +\end{itemize} + + +\section{Complexity analysis}\label{section_complexity} + +Our algorithm consists of three steps: conversion of RE to IRE, +construction of TNFA from IRE +and simulation of TNFA on the input string. +We discuss time and space complexity of each step +in term of the following parameters: +$n$ --- the length of input, +$m$ --- the size of RE with counted repetition subexpressions expanded +(each subexpression duplicated the number of times equal to the repetition counter), +and $t$ --- the number of capturing groups and subexpressions that contain them. +\\ + +\begin{algorithm}[] \DontPrintSemicolon \SetKwProg{Fn}{}{}{} +\begin{multicols}{2} +\setstretch{0.85} + + \newcommand \retonfa {tn\!f\!a} + \newcommand \ntag {ntags} + + \Fn {$\underline{\retonfa(r, y)} \smallskip$} { + \If {$r = (0, 0, \epsilon)$} { + \Return $(\Sigma, \{y\}, \emptyset, \emptyset, y, y)$ + } + \BlankLine + \ElseIf {$r = (0, 0, \alpha) \mid_{\alpha \in \Sigma}$} { + \Return $(\Sigma, \{x,y\}, \emptyset, \{(x, \alpha, \epsilon, y)\}, x, y)$ + } + \BlankLine + \ElseIf {$r = (0, 0, r_1 \cdot r_2)$} { + $(\Sigma, Q_2, T_2, \Delta_2, x, y) = \retonfa (r_2, y)$ \; + $(\Sigma, Q_u, T_u, \Delta_2, z, x) = \retonfa (r_1, x)$ \; + \Return $(\Sigma, Q_1 \cup Q_2, T_1 \cup T_2, \Delta_1 \cup \Delta_2, z, y)$ + } + \BlankLine + \ElseIf {$r = (0, 0, r_1 \mid r_2)$} { + $(\Sigma, Q_2, T_2, \Delta_2, x_2, y) = \retonfa (r_2, y)$ \; + $(\Sigma, Q'_2, T_2, \Delta'_2, x'_2, y) = \ntag (T_2, y)$ \; + $(\Sigma, Q_1, T_1, \Delta_1, x_1, x'_2) = \retonfa (r_2, x'_2)$ \; + $(\Sigma, Q'_1, T_1, \Delta'_1, x'_1, x_2) = \ntag (T_1, x_2)$ \; + $Q = Q_1 \cup Q'_1 \cup Q_2 \cup Q'_2 \cup \{x\}$ \; + $\Delta = \Delta_1 \cup \Delta'_1 \cup \Delta_2 \cup \Delta'_2 \cup \big\{ (x,1,\epsilon,x_1), (x,2,\epsilon,x'_1) \big\}$ \; + \Return $(\Sigma, Q, T_1 \cup T_2, \Delta, x, y)$ + } + \BlankLine + \ElseIf {$r = (0, 0, r_1^{n,m}) \mid_{1 < n \leq m \leq \infty}$} { + $(\Sigma, Q_1, T_1, \Delta_1, x, y) = \retonfa ((0, 0, r_1^{n-1,m-1}), y)$ \; + $(\Sigma, Q_2, T_2, \Delta_2, z, x) = \retonfa (r_1, x)$ \; + \Return $(\Sigma, Q_1 \cup Q_2, T_1 \cup T_2, \Delta_1 \cup \Delta_2, z, y)$ + } + \BlankLine + \ElseIf {$r = (0, 0, r_1^{0,m})$} { + $(\Sigma, Q_1, T_1, \Delta_1, x_1, y) = \retonfa ((0, 0, r_1^{1,m}), y)$ \; + $(\Sigma, Q'_1, T_1, \Delta'_1, x'_1, y) = \ntag (T_1, y)$ \; + $Q = Q_1 \cup Q'_1 \cup \{x\}$ \; + $\Delta = \Delta_1 \cup \Delta'_1 \cup \big\{ (x, 1, \epsilon, x_1), (x, 2, \epsilon, x'_1) \big\}$ \; + \Return $(\Sigma, Q, T_1, \Delta, x, y)$ + } + \BlankLine + \ElseIf {$r = (0, 0, r_1^{1,\infty})$} { + $(\Sigma, Q_1, T_1, \Delta_1, z, x) = \retonfa (r_1, \Xund)$ \; + $Q = Q_1 \cup \{y\}$ \; + $\Delta = \Delta_1 \cup \big\{ (x, 1, \epsilon, z), (x, 2, \epsilon, y) \big\}$ \; + \Return $(\Sigma, Q, T_1, \Delta, z, y)$ + } + \BlankLine + \ElseIf {$r = (0, 0, r_1^{1,1})$} { + \Return $\retonfa (r_1, y)$ + } + \BlankLine + \ElseIf {$r = (0, 0, r_1^{1,m}) \mid_{1 < m < \infty}$} { + $(\Sigma, Q_1, T_1, \Delta_1, x, y) = \retonfa ((0, 0, r_1^{1,m-1}), y)$ \; + $(\Sigma, Q_2, T_2, \Delta_2, w, z) = \retonfa (r_1, z)$ \; + $\Delta = \Delta_1 \cup \Delta_2 \cup \big\{ (z, 1, \epsilon, y), (z, 2, \epsilon, x) \big\}$ \; + \Return $(\Sigma, Q_1 \cup Q_2, T_1 \cup T_2, \Delta, w, y)$ + } + \BlankLine + \ElseIf {$r = (i, j, r_1) \mid_{i \neq 0}$} { + $(\Sigma, Q_1, T_1, \Delta_1, z, x) = \retonfa ((0, 0, r_1), x)$ \; + $Q = Q_1 \cup \{w, y\}$ \; + $T = T_1 \cup \big\{ (2i\!-\!1, j, 0, -1), (2i, j, 0, -1) \big\}$ \; + $\Delta = \Delta_1 \cup \big\{ (w, 1, 2i\!-\!1, z), (x, 1, 2i, y) \big\}$ \; + \Return $(\Sigma, Q, T, \Delta, w, y)$ + } + } + \BlankLine + \BlankLine + + \Fn {$\underline{\ntag(T, y)} \smallskip$} { + $(t_{open}, t_{last}) = min \Xund max \big\{ t \mid (t, \Xund, \Xund, \Xund) \in T \big\}$ \; + $(t_{clos}, s, \Xund, \Xund) = (t, \Xund, \Xund, \Xund) \in T \mid t = t_{open} + 1$ \; + $T' = \big\{ (t, \Xund, \Xund, \Xund) \in T \mid t \neq t_{clos} \big\} \cup \big\{ (t_{clos}, s, t_{open}, t_{last}) \big\}$ \; + $\Delta = \big\{ (x, 1, -t_{clos}, y) \big\}$ \; + \Return $(\Sigma, \{x, y\}, T', \Delta, x, y)$ \; + } + + \vfill + +\columnbreak + + \nonl \includegraphics[width=\linewidth]{img/tnfa_construction.pdf} + +\end{multicols} +\vspace{0.5em} +\caption{TNFA construction.}\label{alg_tnfa} +\end{algorithm} + +The first step, conversion of RE to IRE, is given by the functions $mark()$ and $enum()$ from section \ref{section_formalization}. +% +For each sub-RE, $mark()$ constructs a corresponding sub-IRE, +and $enum()$ performs a linear visit of the IRE (which doesn't change its structure), +therefore IRE size is $O(m)$. +% +Each subexpression is processed twice (once by $mark()$ and once by $enum()$) +and processing takes $O(1)$ time, therefore total time is $O(m)$. +\\ + +The second step, TNFA construction, is given by the $tn\!f\!a()$ function (algorithm \ref{alg_tnfa}). +At this step counted repetition is unrolled, so TNFA may be much larger than IRE. +For each subexpressions of the form $(i, j, r^{n,m})$ automaton for $r$ is duplicated exactly $m$ times if $m \neq \infty$, or $max(1, n)$ times otherwise +(at each step of recursion the counter is decremented and one copy of automaton is constructed). +Other $tn\!f\!a()$ clauses are in one-to-one correspondence with sub-IRE. +Each clause adds only a constant number of states and transitions (including calls to $ntags()$ and excluding recursive calls). +Therefore TNFA contains $O(m)$ states and transitions. +The size of mapping $T$ is $O(t)$, which is $O(m)$. +Therefore total TNFA size is $O(m)$. +Time complexity is $O(m)$, because each clause takes $O(1)$ time (excluding recursive calls), and total $O(m)$ clauses are executed. +\\ + +The third step, TNFA simulation, is given by algorithm \ref{alg_match}. +Initialization at lines 2-5 takes $O(1)$ time. +Main loop at lines 6-11 is executed at most $n$ times. +The size of closure is bounded by TNFA size, which is $O(m)$ (typically closure is much smaller than that). +Each iteration of the loop includes the following steps. +% +At line 7 the call to $closure()$ takes $O(m^2 \, t)$ time if GOR1 from section \ref{section_closure} is used, +because GOR1 makes $O(m^2)$ scans (closure contains $O(m)$ states and $O(m)$ transitions), +and at each scan we may need to compare the tag sequences using $compare()$ from section \ref{section_comparison}, +which takes $O(t)$ time +(there is $O(t)$ unique tags and we consider paths with at most one $\epsilon$-loop, +so the number of occurrences of each tag is bounded by the repetition counters, +which amounts to a constant factor). +% +At line 8 the call to $update \Xund result()$ takes $O(m \, t)$ time, +because closure size is $O(m)$, +and the length of the tag sequence is $O(t)$ as argued above. +% +At line 9 the call to $update \Xund ptables ()$ takes $O(m^2)$ time +if the advanced algorithm from section \ref{section_comparison} is used. +% +At line 10 scanning the closure for reachable states takes $O(m)$ time, +because closure size is $O(m)$. +% +The sum of the above steps is $O(m^2 \, t)$, so the total time of loop at lines 6-11 is $O(n \, m^2 \, t)$. +The final call to $closure()$ at line 12 takes $O(m^2 \, t)$, +and $f\!inal \Xund result ()$ at line 14 takes $O(m \, t)$. +The total time taken by $match()$ is therefore $O(n \, m^2 \, t)$. +\\ + +Space complexity of $match()$ is as follows. +% +The size of the closure is $O(m)$. +% +Precedence matrices $B$ and $D$ take $O(m^2)$ space. +% +Match results take $O(m \, t)$ space in case of POSIX-style offsets, +because the number of parallel results is bounded by the closure size, +and each result takes $O(t)$ space. +In case of parse trees, match results take $O(m \, n)$ space, because each result accumulates all loop iterations. +% +The size of the path context $U$ is $O(m^2)$ +because GOR1 makes $O(m^2)$ scans and thus adds no more than $O(m^2)$ tags in the tree. +The total space taken by $match()$ is therefore $O(m^2)$ +for POSIX-style offsets and $O(m (m + n))$ for parse trees. + + +\section{Benchmarks}\label{section_benchmarks} + +In order to present benchmark results in a meaningful way, +we show the time of each algorithm relative to the ``baseline'' leftmost greedy algorithm, +which has no overhead on disambiguation and thus represents best-case matching time. +% +We measure the speed of each algorithm in characters per second +and divide it by the speed of leftmost greedy algorithm. +% +This allows us to show the net overhead on POSIX disambiguation. +% +To relate our implementations to the real world, +we include Google RE2 library (it uses leftmost greedy disambiguation and serves as a reference, not as a competing implementation). +% +All implementations can be found in RE2C source code \cite{RE2C}. +% +Our set of benchmarks consists of three subsets: +\begin{enumerate}[itemsep=0.5em, topsep=0.5em] + \item Real-world benchmarks. + These include very large REs containing thousands of characters and hundreds of capturing groups + (parser for HTTP message headers conforming to RFC-7230, + URI parser conforming to RFC-3986, + IPv6 address parser); + medium-sized REs containing hundreds of characters and dozens of capturing groups + (simplified parsers for HTTP headers and URI, IPv4 address parser, simple date parser); + and small REs with less than a hundred characters and about five capturing groups + (simplified parsers for IPv4 and date). + + \item Artificial benchmarks with high level of ambiguity. + All these REs are restricted to a single alphabet symbol + used with various combinations of RE operators (union, product, iteration and bounded repetition). + + \item A series of pathological examples that demonstrates worst-case behavior of the naive $update \Xund ptables ()$ algorithm. +\end{enumerate} + +We benchmark four variations of our algorithm: +``Okui-Suzuki'' is the main variation (it uses advanced $update \Xund ptables ()$ algorithm and GOR1), +``GTOP Okui-Suzuki'' uses GTOP, +``naive Okui-Suzuki'' uses naive $update \Xund ptables ()$ algorithm, +and ``lazy Okui-Suzuki'' differs from the main variation as described in section \ref{section_lazy}. +% +Besides our algorithm, we also benchmark Kuklewicz and Cox algorithms. +Kuklewicz algorithm is described in detail in \cite{Tro17}. +As for the Cox algorithm, the only description we are aware of is the prototype implementation \cite{Cox09}. +We found a number of flaws in it, as described in the introduction. +Our implementation, therefore, differs from the original: +we add support for bounded repetition, +we use GOR1 for closure construction, +and we use a fast forward pre-processing phase to find the matching string prefix before running the backward phase +(forward phase ignores submatch and merely performs recognition). +% +Benchmark results show the following: +\\[-0.5em] + +\begin{figure} +\pgfplotstableread[col sep = semicolon, trim cells]{bench/data_realworld} \datatable +\begin{tikzpicture} + \begin{axis}[ + width=330, + height=250, + ylabel=slowdown vs leftmost greedy (times), + xmin=1, xmax=11, ymin=0, ymax=30, + xticklabels from table={\datatable}{Alg}, + xtick=data, + xticklabel style={xshift=10pt, yshift=-5pt, font=\footnotesize}, + ylabel style={yshift=-10pt}, + legend cell align={left}, + legend style={fill=none}, + grid=major, + grid style={dashed, gray!20}, + x tick label style={rotate=30, anchor=east} + ] + \addplot[color=black, mark=] table[y = LG] from \datatable ; + \addlegendentry{leftmost greedy} ; + \addplot[color=black, mark=, dash pattern=on 1pt off 1pt] table[y = RE2] from \datatable ; + \addlegendentry{RE2} ; + \addplot[color=black, mark=, dash pattern=on 8pt off 1.5pt] table[y = OS] from \datatable ; + \addlegendentry{Okui-Suzuki} ; + \addplot[color=black, mark=, dash pattern=on 5pt off 1.5pt] table[y = OS_GTOP] from \datatable ; + \addlegendentry{GTOP Okui-Suzuki} ; + \addplot[color=black, mark=, dash pattern=on 3pt off 1pt] table[y = OS_naive] from \datatable ; + \addlegendentry{naive Okui-Suzuki} ; + \addplot[color=black, mark=, dash pattern=on 2.5pt off 2.5pt] table[y = OS_lazy] from \datatable ; + \addlegendentry{lazy Okui-Suzuki} ; + \addplot[color=black, mark=, dash pattern=on 1pt off 1pt on 1pt off 1pt on 1pt off 2pt on 4pt off 2pt] table[y = Kuklewicz] from \datatable ; + \addlegendentry{Kuklewicz} ; + \addplot[color=black, mark=, dash pattern=on 1pt off 2pt on 4pt off 2pt] table[y = Cox] from \datatable ; + \addlegendentry{Cox} ; + \end{axis} +\end{tikzpicture} +\pgfplotstableread[col sep = semicolon, trim cells]{bench/data_pathological} \datatable +\begin{tikzpicture} + \begin{axis}[ + height=250, + width=170, + ylabel=slowdown vs leftmost greedy (times), + xmin=33, xmax=37, ymin=-50, + xticklabels from table={\datatable}{Alg}, + xtick=data, + xticklabel style={xshift=10pt, yshift=-5pt, font=\footnotesize}, + ylabel style={yshift=-5pt}, + legend cell align={left}, + legend style={fill=none}, + grid=major, + grid style={dashed, gray!20}, + x tick label style={rotate=30, anchor=east} + ] + \addplot[color=black, mark=] table[y = LG] from \datatable ; + \addlegendentry{leftmost greedy} ; + \addplot[color=black, mark=, dash pattern=on 1pt off 1pt] table[y = RE2] from \datatable ; + \addlegendentry{RE2} ; + \addplot[color=black, mark=, dash pattern=on 8pt off 1.5pt] table[y = OS] from \datatable ; + \addlegendentry{Okui-Suzuki} ; + \addplot[color=black, mark=, dash pattern=on 5pt off 1.5pt] table[y = OS_GTOP] from \datatable ; + \addlegendentry{GTOP Okui-Suzuki} ; + \addplot[color=black, mark=, dash pattern=on 3pt off 1pt] table[y = OS_naive] from \datatable ; + \addlegendentry{naive Okui-Suzuki} ; + \addplot[color=black, mark=, dash pattern=on 2.5pt off 2.5pt] table[y = OS_lazy] from \datatable ; + \addlegendentry{lazy Okui-Suzuki} ; + \addplot[color=black, mark=, dash pattern=on 1pt off 1pt on 1pt off 1pt on 1pt off 2pt on 4pt off 2pt] table[y = Kuklewicz] from \datatable ; + \addlegendentry{Kuklewicz} ; + \addplot[color=black, mark=, dash pattern=on 1pt off 2pt on 4pt off 2pt] table[y = Cox] from \datatable ; + \addlegendentry{Cox} ; + \end{axis} +\end{tikzpicture} +\pgfplotstableread[col sep = semicolon, trim cells]{bench/data_artificial} \datatable +\begin{tikzpicture} + \begin{axis}[ + height=250, + width=500, + ylabel=slowdown vs leftmost greedy (times), + xmin=12, xmax=32, ymin=0, ymax=30, + xticklabels from table={\datatable}{Alg}, + xtick=data, + xticklabel style={xshift=10pt, yshift=-5pt, font=\footnotesize}, + ylabel style={yshift=-10pt}, + legend cell align={left}, + legend style={fill=none}, + grid=major, + grid style={dashed, gray!20}, + x tick label style={rotate=30, anchor=east} + ] + \addplot[color=black, mark=] table[y = LG] from \datatable ; + \addlegendentry{leftmost greedy} ; + \addplot[color=black, mark=, dash pattern=on 1pt off 1pt] table[y = RE2] from \datatable ; + \addlegendentry{RE2} ; + \addplot[color=black, mark=, dash pattern=on 8pt off 1.5pt] table[y = OS] from \datatable ; + \addlegendentry{Okui-Suzuki} ; + \addplot[color=black, mark=, dash pattern=on 5pt off 1.5pt] table[y = OS_GTOP] from \datatable ; + \addlegendentry{GTOP Okui-Suzuki} ; + \addplot[color=black, mark=, dash pattern=on 3pt off 1pt] table[y = OS_naive] from \datatable ; + \addlegendentry{naive Okui-Suzuki} ; + \addplot[color=black, mark=, dash pattern=on 2.5pt off 2.5pt] table[y = OS_lazy] from \datatable ; + \addlegendentry{lazy Okui-Suzuki} ; + \addplot[color=black, mark=, dash pattern=on 1pt off 1pt on 1pt off 1pt on 1pt off 2pt on 4pt off 2pt] table[y = Kuklewicz] from \datatable ; + \addlegendentry{Kuklewicz} ; + \addplot[color=black, mark=, dash pattern=on 1pt off 2pt on 4pt off 2pt] table[y = Cox] from \datatable ; + \addlegendentry{Cox} ; + \end{axis} +\end{tikzpicture} +\caption{ +Benchmarks.\\ +Real-world tests have labels of the form ``title $m$,$k$'', where $m$ is RE size and $k$ is the number of capturing groups. +}\label{fig:bench} +\end{figure} + +\begin{itemize}[itemsep=0.5em] + \item Okui-Suzuki algorithm degrades with increased closure size. + This is understandable, as the algorithm performs pairwise comparison of closure states to compute precedence matrices. + Naive $update \Xund ptables ()$ algorithm degrades extremely fast, + and the advanced algorithm behaves much better (though it may incur slight overhead in simple cases). + + \item Kuklewicz algorithms degrades with increased closure size and increased number of tags. + This is not surprising, as the algorithm has per-state and per-tag loop used to compute precedence matrix. + On real-world tests with many capturing groups Kuklewicz algorithm is much slower than Okui-Suzuki algorithm. + + \item Cox algorithm degrades with increased number of tags. + The bottleneck of the algorithm is copying of offset arrays + (each array contains a pair of offsets per tag). + Using GOR1 instead of naive depth-first search increases the amount of copying (though asymptotically faster), + because depth-first scan order allows to use a single buffer array that is updated and restored in-place. + However, copying is required elsewhere in the algorithm, + and in general it is not suited for RE with many submatch groups. + On real-world tests the Cox algorithm is so slow that it did not fit into the plot space. + + \item Lazy variation of Okui-Suzuki degrades with increased cache size and the size of path context. + This may happen because of long input strings and because of high level of ambiguity in RE + (in such cases lazy algorithm does all the work of non-lazy algorithm, + but with the additional overhead on cache lookups/insertions and accumulation of data from the previous steps). + On real-world tests lazy variation of Okui-Suzuki is fast. + + \item GOR1 and GTOP performance is similar. + + \item RE2 performance is close to our leftmost greedy implementation. + \\[-0.5em] +\end{itemize} + +One particularly interesting group of tests that show the above points +are RE of the form $(a^{k_1}|\hdots|a^{k_n})^{0,\infty}$ +(artificial tests 1-4) +and their variations with more capturing groups +(artificial tests 5-8). +For example, consider \texttt{(a\{2\}|a\{3\}|a\{5\})*} and \texttt{(((a)\{2\})|((a)\{3\})|((a)\{5\}))*}. +Given input string \texttt{a...a}, +submatch on the last iteration varies with the length of input: +it equals \texttt{aaaaa} for $5n$-character string, +\texttt{aa} for strings of length $5n - 3$ and $5n - 1$, +and \texttt{aaa} for strings of length $5n - 2$ and $5n + 1$ ($n \in \YN$). +Variation continues infinitely with a period of five characters. +% +We can increase variation period and the range of possible submatch results by choosing larger counter values. +% +This causes increased closure size --- +hence the slowdown of Okui-Suzuki algorithm on tests 1 to 4 and 5 to 8 (especially pronounced for the ``naive Okui-Suzuki'' variation), +and the more gentle slowdown of Kuklewicz algorithm on the same ranges. +% +Adding more capturing groups increases the number of tags --- +hence the slowdown of Kuklewicz and Cox algorithms on 5-8 group compared to 1-4 group. +\\ + +In closing, we would like to point out that correctness +of all benchmarked implementations has been tested on a subset of Glenn Fowler test suite \cite{Fow03} +(we removed tests for backreferences and start/end anchors), +extended by Kuklewicz and further extended by ourselves to some 500 tests. +All algorithms except Cox algorithm have passed the tests +(Cox algorithm fails in about 10 cases for the reasons discussed in the introduction). + +\FloatBarrier + + +\section{Conclusions and future work}\label{section_conclusions} + +The main result of our work is a practical POSIX matching algorithm +that can be used on real-world regular expressions, +does not require complex preprocessing +and incurs relatively modest disambiguation overhead compared to other algorithms. +% +We tried to present the algorithm in full, with a few useful variations, +in order to make implementation easy for the reader. +\\ + +We see a certain tradeoff between speed and memory usage: +bounded-memory version of the algorithm performs a lot of redundant work, +and the lazy version avoids redundant work at the expense of potentially unbounded memory usage. +Both approaches seem not ideal; +perhaps in practice a hybrid approach can be used. +\\ + +It is still an open question to us +whether it is possible to combine the elegance of the derivative-based approach to POSIX disambiguation +with the practical efficiency of NFA-based methods. +% +The derivative-based approach constructs match results in such order that longest-leftmost result is always first. +% +We experimented with recursive descent parsers that embrace the same ordering idea +and construsted a prototype implementation. +\\ + +It would be interesting to apply our approach to automata with counters +instead of unrolling bounded repetition. + + +\section*{Acknowledgements} + +I want to thank my parents Vladimir and Elina, +my teachers Tatyana Leonidovna and Demian Vladimirovich +and the Belarusian State University +for the love of mathematics. +This work would not be possible without the help of my husband and dearest friend Sergei Trofimovich. +Finally, many thanks to the RE2C users! +\null\hfill\textit{Ulya Trofimovich} + + +\begin{thebibliography}{99} + +\bibitem{OS13} + Satoshi Okui and Taro Suzuki, + \textit{Disambiguation in Regular Expression Matching via Position Automata with Augmented Transitions}, + International Conference on Implementation and Application of Automata, pp. 231-240, Springer, Berlin, Heidelberg, + 2013. + +\bibitem{Lau01} + Ville Laurikari, + \textit{Efficient submatch addressing for regular expressions}, + Helsinki University of Technology, + 2001. + +\bibitem{Kuk07} + Chris Kuklewicz, + \textit{Regular expressions/bounded space proposal}, + \url{http://wiki.haskell.org/index.php?title=Regular_expressions/Bounded_space_proposal&oldid=11475} + 2007. + +\bibitem{Cox09} + Russ Cox, + backward POSIX matching algorithm (source code), + \url{https://swtch.com/~rsc/regexp/nfa-posix.y.txt} + 2009. + +\bibitem{SL14} + Martin Sulzmann, Kenny Zhuo Ming Lu, + \textit{POSIX Regular Expression Parsing with Derivatives}, + International Symposium on Functional and Logic Programming, pp. 203-220, Springer, Cham, + 2014. + +\bibitem{SL13} + Martin Sulzmann, Kenny Zhuo Ming Lu, + \textit{Correct and Efficient POSIX Submatch Extraction with Regular Expression Derivatives}, + \url{https://www.home.hs-karlsruhe.de/~suma0002/publications/posix-derivatives.pdf}, + 2013. + +\bibitem{Bor15} + Angelo Borsotti1, Luca Breveglieri, Stefano Crespi Reghizzi, Angelo Morzenti, + \textit{From Ambiguous Regular Expressions to Deterministic Parsing Automata}, + International Conference on Implementation and Application of Automata. Springer, Cham, pp.35-48, + 2015. + +\bibitem{ADU16} + Fahad Ausaf, Roy Dyckhoff, Christian Urban, + \textit{POSIX Lexing with Derivatives of Regular Expressions}, + International Conference on Interactive Theorem Proving. Springer, Cham, pp. 69-86, + 2016. + +\bibitem{Tro17} + Ulya Trofimovich, + \textit{Tagged Deterministic Finite Automata with Lookahead}, + \url{http://re2c.org/2017_trofimovich_tagged_deterministic_finite_automata_with_lookahead.pdf}, + 2017. + +\bibitem{CLR} + Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, + \textit{Introduction to algorithms}, + 1st edition, + MIT Press and McGraw-Hill, + ISBN 0-262-03141-8. + +\bibitem{Moh02} + Mehryar Mohri, + \textit{Semiring frameworks and algorithms for shortest-distance problems}, + Journal of Automata, Languages and Combinatorics 7 (2002) 3, 321–350, Otto-von-Guericke-Universitat, Magdeburg, + 2002. + +\bibitem{Kar14} + Aaron Karper, + \textit{Efficient regular expressions that produce parse trees}, + Master's thesis, + University of Bern, + 2014. + +\bibitem{GR93} + Andrew V. Goldberg, Tomasz Radzik, + \textit{A heuristic improvement of the Bellman-Ford algorithm}, + Elsevier, Applied Mathematics Letters, vol. 6, no. 3, pp. 3-6, + 1993. + +\bibitem{CGR96} + Boris V. Cherkassky, Andrew V. Goldberg, Tomasz Radzik, + \textit{Shortest paths algorithms: Theory and experimental evaluation}, + Springer, Mathematical programming, vol. 73, no. 2, pp. 129-174, + 1996. + +\bibitem{CGGTW09} + Boris V. Cherkassky, Loukas Georgiadis, Andrew V. Goldberg, Robert E. Tarjan, and Renato F. Werneck. + \textit{Shortest Path Feasibility Algorithms: An Experimental Evaluation}, + Journal of Experimental Algorithmics (JEA), 14, 7, + 2009. + +\bibitem{Cox09} + Aaron Karper, + \textit{Efficient regular expressions that produce parse trees}, + epubli GmbH, + 2014 + +\bibitem{POSIX} + POSIX standard: \textit{POSIX-1.2008} + a.k.a. \textit{IEEE Std 1003.1-2008} + The IEEE and The Open Group, + 2008. + +\bibitem{Fow03} + Glenn Fowler, + \textit{An Interpretation of the POSIX Regex Standard}, + \url{https://web.archive.org/web/20050408073627/http://www.research.att.com/~gsf/testregex/re-interpretation.html}, + 2003. + +\bibitem{RE2C} + \textit{RE2C}, lexer generator for C/C++. + Website: \url{http://re2c.org}, + source code: \url{http://github.com/skvadrik/re2c}. + +\bibitem{RE2} + \textit{RE2}, regular expression library. + Source code: \url{http://github.com/google/re2}. + +\bibitem{Glibc} + \textit{The GNU C library}, + \url{https://www.gnu.org/software/libc/}. + +\end{thebibliography} + + +\vfill\null +\clearpage + + +\section*{Appendix} + +\subsection*{Proof of theorem \ref{theorem_porder_on_PTs}} + +\begin{theoremEnd}[normal, no link to proof, no link to theorem]{lemma} +[Unique position mapping from all PTs to IRE] + \label{lemma_positions} + If $t, s \in PT(r)$ for some IRE $r$ + and there is a common position $p \in Pos(t) \cap Pos(s)$, + then $p$ corresponds to the same position $p' \in Pos(r)$ for both $t$ and $s$. +\end{theoremEnd} +\begin{proofEnd} + The proof is by induction on the length of $p$. + Induction basis: $p = p' = \Lambda$ (the roots of $t$ and $s$ correspond to the root of $e$). + Induction step: suppose that for any position $p$ of length $|p| < h$ the lemma is true. + We will show that if exists a $k \in \YN$ such that $p.k \in Pos(t) \cap Pos(s)$, + then $p.k$ corresponds to the same position $p'.k'$ in $r$ for both $t$ and $s$ (for some $k' \in \YN$). + If $r|_{p'}$ is an elementary IRE of the form $(i, j, \epsilon)$ or $(i, j, \alpha)$, + or if at least one of $t|_p$ and $s|_p$ is $\varnothing$, + then $k$ doesn't exist. + Otherwise $r|_{p'}$ is a compound IRE and both $t|_p$ and $s|_p$ are not $\varnothing$. + If $r|_{p'}$ is a union $(i, j, (i_1, j_1, r_1)|(i_2, r_2, j_2))$ + or a product $(i, j, (i_1, j_1, r_1)\cdot(i_2, r_2, j_2))$, + then both $t|_p$ and $s|_p$ have exactly two subtrees, + and positions $p.1$ and $p.2$ in $t$ and $s$ correspond to positions $p'.1$ and $p'.2$ in $r$. + Otherwise, $r|_{p'}$ is a repetition $(i, j, r_1^{n,m})$ + and for any $k \geq 1$ position $p.k$ in $t$ and $s$ corresponds to position $p'.1$ in $r$. +\end{proofEnd} + +\printProofs[theorem_porder_on_PTs] + + +\subsection*{Proof of theorem \ref{theorem_sorder_on_PTs}} + +\begin{theoremEnd}[normal, no link to proof, no link to theorem]{lemma} + \label{lemma_incomparability_equivdef} + If $t, s \in \PT(e, w)$ for some IRE $e$ and string $w$, + then $t \sim s \Leftrightarrow \; \forall p : \snorm{t}{p} = \snorm{s}{p}$. +\end{theoremEnd} +\begin{proofEnd} + Forward implication: let $t \sim s$ and suppose, on the contrary, that $\exists p = min \{ q \mid \snorm{t}{q} \neq \snorm{s}{q} \}$, + then either $t \prec_p s$ (if $\snorm{t}{p} > \snorm{s}{p}$) or $s \prec_p t$ (if $\snorm{t}{p} < \snorm{s}{p}$), + both cases contradict $t \sim s$. + % + Backward implication: $\forall p : \snorm{t}{p} = \snorm{s}{p}$ + implies $\nexists p : t \prec_p s$ and $\nexists q : s \prec_q t$, + which implies $t \sim s$. +\end{proofEnd} + +\printProofs[theorem_sorder_on_PTs] + + +\subsection*{Proof of Theorem \ref{theorem_order_compat}} + +\begin{theoremEnd}[normal, no link to proof, no link to theorem]{lemma} +[Comparability of subtrees] + \label{lemma_subtrees} + For a given IRE $e$, string $w$ and position $p$, + if $t, s \in \PT(e, w)$, $p \in Sub(t) \cup Sub(s)$ and $\snorm{t}{q} = \snorm{s}{q} \; \forall q \leq p$, + then $\exists e', w' : t|_p, s|_p \in \PT(e', w')$. +\end{theoremEnd} +\begin{proofEnd} + By induction on the length of $p$. + Induction basis: $p = \Lambda$, let $e' = e$ and $w' = w$. + % + Induction step: suppose that the lemma is true for any position $p$ of length + $|p| < h$, we will show that it is true for any position $p.k$ of length $h$ + ($k \in \YN$). + % + Assume that $p.k \in Sub(t) \cap Sub(s)$ + (otherwise either $p.k \not\in Sub(t) \cup Sub(s)$, + or exactly one of $\snorm{t}{p.k}$, $\snorm{s}{p.k}$ is $\infty$ --- in both + cases lemma conditions are not satisfied). + Then both $t|_p$ and $s|_p$ have at least one subtree: let + $t|_{p} = T(t_1, \dots, t_n)$ and + $s|_{p} = T(s_1, \dots, s_m)$, where $n, m \geq k$. + % + By induction hypothesis $\exists e', w' : t|_p, s|_p \in \PT(e', w')$. + We have $w' = str(t_1) \dots str(t_n) = str(s_1) \dots str(s_m)$. + % + We show that $str(t_k) = str(s_k)$. + Consider positions $p.j$ for $j \leq k$. + By definition the set of submatch positions contains siblings, + therefore $p.j \in Sub(t) \cap Sub(s)$. + By lemma conditions $\snorm{t}{p.j} = \snorm{s}{p.j}$ (because $p.j \leq p.k$), + therefore $|str(t_1) \dots str(t_{k-1})|$ + $= \sum\nolimits_{j=1}^{k-1}\snorm{t}{j}$ + $= \sum\nolimits_{j=1}^{k-1}\snorm{s}{j}$ + $= |str(s_1) \dots str(s_{k-1})|$ and + $|str(t_k)| = |str(s_k)|$. + Consequently, $str(t_k)$ and $str(s_k)$ start and end at the same character in $w'$ and therefore are equal. + % + Finally, have $t|_{p.k}, s|_{p.k} \in \PT(r|_{p.k}, str(t_k))$ and induction step is complete. +\end{proofEnd} + +\printProofs[theorem_order_compat] + + +\subsection*{Proof of Theorem \ref{theorem_order_on_pe_same_as_on_pt}} + +\begin{theoremEnd}[normal, no link to proof, no link to theorem]{lemma} + \label{lemma_pe_equiv} + Let $s, t \in \PT(e, w)$ for some IRE $e$ and string $w$. + If $s \sim t$, then $\Phi_{h}(s) = \Phi_{h}(t) \; \forall h$. +\end{theoremEnd} +\begin{proofEnd} + By induction on the height of $e$. + % + Induction basis: for height $1$ we have + $| \PT(e, w) | \leq 1 \; \forall w$, + therefore $s = t$ and $\Phi_{h}(s) = \Phi_{h}(t)$. + % + Induction step: + height is greater than 1, therefore + $s = T^{d} (s_1, \dots, s_n)$ and + $t = T^{d} (t_1, \dots, t_m)$. + If $d = 0$, then $\Phi_{h}(s) = str(s) = w = str(t) = \Phi_{h}(t)$. + Otherwise $d \neq 0$. + By lemma \ref{lemma_incomparability_equivdef} we have $s \sim t \Rightarrow \snorm{s}{p} = \snorm{t}{p} \;\forall p$. + This implies $n = m$ (otherwise the norm of subtree at position $min(n,m)+1$ is $\infty$ for only one of $s$, $t$). + Therefore + $\Phi_{h}(s) = \Xl_{h+1} \Phi_{h+1}(s_1), \dots, \Phi_{h+1}(s_n) \Xr_h$ and + $\Phi_{h}(t) = \Xl_{h+1} \Phi_{h+1}(t_1), \dots, \Phi_{h+1}(t_n) \Xr_h$. + It suffices to show that $\forall i \leq n: \Phi_{h+1}(s_i) = \Phi_{h+1}(t_i)$. + We have $\snorm{s_i}{p} = \snorm{t_i}{p} \;\forall p$ (implied by $\snorm{s}{p} = \snorm{t}{p} \;\forall p$), + therefore by lemma \ref{lemma_incomparability_equivdef} $s_i \sim t_i$, + and by lemma \ref{lemma_subtrees} $\exists e', w': s_i, t_i \in \PT(e', w')$, + where the height of $e'$ is less than the height of $e$. + By induction hypothesis $\Phi_{h+1}(s_i) = \Phi_{h+1}(t_i)$. +\end{proofEnd} + +\begin{theoremEnd}[normal, no link to proof, no link to theorem]{lemma} + \label{lemma_pe_less_1} + Let $s, t \in \PT(e, w)$ for some IRE $e$ and string $w$. + If $s \prec_p t$ and $|p| = 1$, then $\Phi_{h}(s) < \Phi_{h}(t) \; \forall h$. +\end{theoremEnd} +\begin{proofEnd} + By lemma conditions $|p| = 1$, therefore $p \in \YN$. + At least one of $s|_p$ and $t|_p$ must exist (otherwise $\snorm{s}{p} = \infty = \snorm{t}{p}$ which contradicts $s \prec_p t$), + therefore $e$ is a compound IRE and $s$, $t$ can be represented as + $s = T^{d} (s_1, \dots, s_n)$ and + $t = T^{d} (t_1, \dots, t_m)$ + where $d \neq 0$ because $\Lambda$ is a prefix of decision position $p$. + Let $k$ be the number of frames and let $j$ be the fork, then: + \begin{alignat*}{7} + \Phi_{h}(s) &\;=\; \Xl_{h+1} &&\Phi_{h+1}(s_1) &&\dots &&\Phi_{h+1}(s_n) \Xr_h + &&\;=\; \beta_0 a_1 \dots a_j \beta_j &&\;\big|\; && \gamma_j a_{j + 1} \dots a_k \gamma_k \\[-0.5em] + \Phi_{h}(t) &\;=\; \Xl_{h+1} &&\Phi_{h+1}(t_1) &&\dots &&\Phi_{h+1}(t_m) \Xr_h + &&\;=\; \beta_0 a_1 \dots a_j \beta_j &&\;\big|\; && \delta_j a_{j + 1} \dots a_k \delta_k + \end{alignat*} +% + Consider any $i < p$ ($i \in \YN$). + By lemma conditions $s \prec_p t$, therefore $\snorm{s}{q} = \snorm{t}{q} \;\forall q < p$, and + in particular $\snorm{s_i}{q} = \snorm{t_i}{q} \;\forall q$, therefore + by lemma \ref{lemma_incomparability_equivdef} $s_i \sim t_i$, + therefore by lemma \ref{lemma_pe_equiv} $\Phi_{h+1}(s_i) = \Phi_{h+1}(t_i)$. + Let $traces (\Phi_{h}(s), \Phi_{h}(t)) = \big( (\rho_0, \dots, \rho_k), (\rho'_0, \dots, \rho'_k) \big)$. + + \begin{itemize}[itemsep=0.5em, topsep=0.5em] + \item[(1)] + Case $\infty = \snorm{s}{p} > \snorm{t}{p}$. + In this case $s_p$ does not exist + and fork happens immediately after $\Phi_{h+1}(s_{p-1})$, $\Phi_{h+1}(t_{p-1})$: + \begin{alignat*}{7} + \Phi_{h}(s) &\;=\; \Xl_{h+1} &&\Phi_{h+1}(s_1) &&\dots &&\Phi_{h+1}(s_{p-1}) + &&\;\big|\; \Xr_{h} && && \\[-0.5em] + \Phi_{h}(t) &\;=\; \Xl_{h+1} &&\Phi_{h+1}(t_1) &&\dots &&\Phi_{h+1}(t_{p-1}) + &&\;\big|\; \Phi_{h+1}(t_p) &&\dots &&\Phi_{h+1}(t_m) \Xr_{h} + \end{alignat*} + % + Fork frame is the last one, + therefore both $\gamma_j$ and $\delta_j$ contain the closing parenthesis $\Xr_{h}$ + and we have $\rho_j = \rho'_j = h$. + For all $i < j$ we have $\rho_i = \rho'_i = -1$. + Therefore $\rho_i = \rho'_i \;\forall i$ and $\Phi_{h}(s) \sim \Phi_{h}(t)$. + Since $first(\gamma_j)$ is $\Xr$ and $first(\delta_j)$ is one of $\Xl$ and $\Xm$, + we have $\Phi_{h}(s) \subset \Phi_{h}(t)$. + Therefore $\Phi_{h}(s) < \Phi_{h}(t)$. + + \item[(2)] + Case $\infty > \snorm{s}{p} > \snorm{t}{p} = -1$. + In this case both $s_p$ and $t_p$ exist, + $s_p$ is not $\varnothing$ and $t_p$ is $\varnothing$, + and fork happens immediately after $\Phi_{h+1}(s_{p-1})$, $\Phi_{h+1}(t_{p-1})$: + \begin{alignat*}{8} + \Phi_{h}(s) &\;=\; \Xl_{h+1} &&\Phi_{h+1}(s_1) &&\dots &&\Phi_{h+1}(s_{p-1}) + &&\;\big|\; \Xl_{h+2} \; x \; \Xr_{h+1} \; &&\Phi_{h+1}(s_{p+1}) &&\dots &&\Phi_{h+1}(s_n) \Xr_{h} \\[-0.5em] + \Phi_{h}(t) &\;=\; \Xl_{h+1} &&\Phi_{h+1}(t_1) &&\dots &&\Phi_{h+1}(t_{p-1}) + &&\;\big|\; \Xm_{h+1} \;\;\;\;\;\; &&\Phi_{h+1}(t_{p+1}) &&\dots &&\Phi_{h+1}(t_m) \Xr_{h} + \end{alignat*} + % + \begin{itemize} + \item[(2.1)] + If the fork frame is the last one, + then both $\gamma_j$ and $\delta_j$ contain the closing parenthesis $\Xr_{h}$ + and we have $\rho_j = \rho'_j = h$. + + \item[(2.2)] + Otherwise the fork frame is not the last one. + We have $minh(\gamma_j)$, $minh(\delta_j) \geq h + 1$ + and $lasth (\beta_j) = h + 1$ + (the last parenthesis in $\beta_j$ is either $\Xl_{h+1}$ if $p = 1$ and $s_{p-1}$ does not exist, + or else one of $\Xr_{h+1}$ and $\Xm_{h+1}$), + therefore $\rho_j = \rho'_j = h + 1$. + % + For subsequent frames $i$ such that $j < i < k$ we have $\rho_i = \rho'_i = h + 1$ + (on one hand $\rho_i, \rho'_i \leq h + 1$ because $\rho_j = \rho'_j = h + 1$, + but on the other hand $minh(\gamma_i)$, $minh(\delta_i) \geq h + 1$). + % + For the last pair of frames we have $\rho_k = \rho'_k = h$ (they both contain the closing parenthesis $\Xr_{h}$). + \end{itemize} + + In both cases $\rho_i = \rho'_i \;\forall i \geq j$. + Since $\rho_i = \rho'_i = -1 \;\forall i < j$, + we have $\rho_i = \rho'_i \;\forall i$ and therefore $\Phi_{h}(s) \sim \Phi_{h}(t)$. + % + Since $first (\gamma_j) = \Xl < \Xm = first (\delta_j)$ we have $\Phi_{h}(s) \subset \Phi_{h}(t)$. + Therefore $\Phi_{h}(s) < \Phi_{h}(t)$. + + \item[(3)] + Case $\infty > \snorm{s}{p} > \snorm{t}{p} \geq 0$. + In this case both $s_p$ and $t_p$ exist and none of them is $\varnothing$, + and fork happens somewhere after the opening parenthesis $\Xl_{h+2}$ + and before the closing parenthesis $\Xr_{h+1}$ in $\Phi_{h}(s_p)$, $\Phi_{h}(t_p)$: + \begin{alignat*}{9} + \Phi_{h}(s) &\;=\; \Xl_{h+1} &&\Phi_{h+1}(s_1) &&\dots &&\Phi_{h+1}(s_{p-1}) &&\; \Xl_{h+2} \; x + &&\;\big|\; y \; \Xr_{h+1} \; &&\Phi_{h+1}(s_{p+1}) &&\dots &&\Phi_{h+1}(s_n) \Xr_{h} \\[-0.5em] + \Phi_{h}(t) &\;=\; \Xl_{h+1} &&\Phi_{h+1}(t_1) &&\dots &&\Phi_{h+1}(t_{p-1}) &&\; \Xl_{h+2} \; x + &&\;\big|\; z \; \Xr_{h+1} \; &&\Phi_{h+1}(t_{p+1}) &&\dots &&\Phi_{h+1}(t_m) \Xr_{h} + \end{alignat*} + % + From $\snorm{s}{p} > \snorm{t}{p} \geq 0$ it follows that + $s_p$ contains more alphabet symbols than $t_p$. + Consequently $\Phi_{h+1}(s_p)$ contains more alphabet symbols, and thus spans more frames than $\Phi_{h+1}(t_p)$. + % + Let $l$ be the index of the frame $\delta_l$ that contains the closing parenthesis $\Xr_{h+1}$ of $\Phi_{h+1}(t_p)$. + By the above reasoning $\Phi_{h+1}(s_p)$ does not end in frame $\gamma_l$, + therefore $\gamma_l$ does not contain the closing parenthesis $\Xr_{h+1}$ + and we have $minh (\gamma_l) \geq h+2$ and $minh (\delta_l) = h+1$. + % + Furthermore, note that $minh(x)$, $minh(y)$, $minh(z) \geq h + 2$, + therefore $lasth(\beta_j) \geq h+2$ (including the case when $x$ is empty), + and for all frames $i$ such that $j \leq i < l$ (if any) we have $\rho_i, \rho'_i \geq h+2$. + % + Consequently, for $l$-th frame we have $\rho_l \geq h+2$ and $\rho'_l = h + 1$, thus $\rho_l > \rho'_l$. + % + For subsequent frames $i$ such that $l < i < k$ we have $minh(\gamma_i)$, $minh(\delta_i) \geq h + 1$, + therefore $\rho_i \geq h+1$ and $\rho'_i = h + 1$, thus $\rho_i \geq \rho'_i$. + % + For the last pair of frames we have $\rho_k = \rho'_k = h$, as they both contain the closing parenthesis $\Xr_{h}$. + % + Therefore $\Phi_{h}(s) \sqsubset \Phi_{h}(t)$, + which implies $\Phi_{h}(s) < \Phi_{h}(t)$. + \end{itemize} +\end{proofEnd} + +\begin{theoremEnd}[normal, no link to proof, no link to theorem]{lemma} + \label{lemma_pe_less} + Let $s, t \in \PT(r, w)$ for some IRE $r$ and string $w$. + If $s \prec_p t$, then $\Phi_{h}(s) < \Phi_{h}(t) \; \forall h$. +\end{theoremEnd} +\begin{proofEnd} + The proof is by induction on the length of $p$. + % + Induction basis for $|p| = 1$ is given by lemma \ref{lemma_pe_less_1}. + % + Induction step: suppose that the lemma is correct for all $p$ of length $|p| < h$ and let $|p| = h$ ($h \geq 2$). + % + Let $p = p'.p''$ where $p' \in \YN$. + % + At least one of $s|_p$ and $t|_p$ must exist (otherwise $\snorm{s}{p} = \infty = \snorm{t}{p}$ which contradicts $s \prec_p t$), + therefore both $e$ and $e|_{p'}$ are compound IREs and $s$, $t$ can be represented as + $s = T^{d} (s_1, \dots, s_n)$ and + $t = T^{d} (t_1, \dots, t_m)$ where + $s' = s_{p'} = T^{d'} (s'_1, \dots, s'_{n'})$ and + $t' = t_{p'} = T^{d'} (t'_1, \dots, t'_{m'})$ + and both $d, d' \neq 0$ (because $\Lambda$ and $p'$ are prefixes of decision position $p$). + % + Therefore $\Phi_{h}(s)$, $\Phi_{h}(t)$ can be represented as follows: + \begin{alignat*}{9} + \Phi_{h}(s) + \;&= + \;&& \Xl_{h+1} \Phi_{h+1}(s_1) \dots \Phi_{h+1}(s_{p'-1}) + \;&& \overbrace {\Xl_{h+2} \Phi_{h+2}(s'_1) \dots \Phi_{h+2}(s'_{n'}) \Xr_{h+1}}^{\Phi_{h+1}(s')} + \;&& \Phi_{h+1}(s_{p'+1}) \Phi_{h+1}(s_n) \Xr_{h} + \\ + \Phi_{h}(t) + \;&= + \;&& \Xl_{h+1} \Phi_{h+1}(t_1) \dots \Phi_{h+1}(t_{p'-1}) + \;&& \underbrace {\Xl_{h+2} \Phi_{h+2}(t'_1) \dots \Phi_{h+2}(t'_{m'}) \Xr_{h+1}}_{\Phi_{h+1}(t')} + \;&& \Phi_{h+1}(t_{p'+1}) \Phi_{h+1}(t_m) \Xr_{h} + \end{alignat*} + % + Consider any $i < p'$. + By lemma conditions $s \prec_p t$, therefore $\snorm{s}{q} = \snorm{t}{q} \;\forall q < p$, and + in particular $\snorm{s_i}{q} = \snorm{t_i}{q} \;\forall q$, therefore + by lemma \ref{lemma_incomparability_equivdef} $s_i \sim t_i$, + therefore by lemma \ref{lemma_pe_equiv} $\Phi_{h+1}(s_i) = \Phi_{h+1}(t_i)$. + % + Since $p' < p$ we have $\snorm{s}{q} = \snorm{t}{q} \;\forall q \leq p'$ and + by lemma \ref{lemma_subtrees} $\exists e', w' : s', t' \in \PT(e', w')$. + Since $\snorm{s'}{q} = \snorm{s}{p'.q} \;\forall q$ + and $\snorm{t'}{q} = \snorm{t}{p'.q} \;\forall q$, + we have $s' \prec_{p''} t'$. + Since $|p''| < |p|$ by induction hypothesis we have $\Phi_{h+1}(s') < \Phi_{h+1}(t')$. + % + If $j$ is the fork and $f \leq j \leq k$, then + $\Phi_{h}(s)$, $\Phi_{h}(t)$ can be represented as: + \begin{alignat*}{9} + \Phi_{h}(s) + \;&= + \;&& \beta_0 a_1 \dots a_f \beta_f^1 + \;&& \overbrace {\beta_f^2 a_{f+1} \dots a_j \beta_j \;\big|\; \gamma_j a_{j+1} \dots a_k \gamma_k^1}^{\Phi_{h+1}(s')} + \;&& \gamma_k^2 a_{k+1} \dots a_l \gamma_l + \\[-0.5em] + \Phi_{h}(t) + \;&= + \;&& \beta_0 a_1 \dots a_f \beta_f^1 + \;&& \underbrace {\beta_f^2 a_{f+1} \dots a_j \beta_j \;\big|\; \delta_j a_{j+1} \dots a_k \delta_k^1}_{\Phi_{h+1}(t')} + \;&& \delta_k^2 a_{k+1} \dots a_l \delta_l + \end{alignat*} + % + Let $traces (\Phi_{h}(s), \Phi_{h}(t)) = \big( (\rho_0, \dots, \rho_l), (\rho'_0, \dots, \rho'_l) \big)$ + and $traces (\Phi_{h+1}(s'), \Phi_{h+1}(t')) = \big( (\sigma_h, \dots, \sigma_k), (\sigma'_h, \dots, \sigma'_k) \big)$. + % + We show that for frames $i$ such that $j \leq i < k$ we have + $\rho_i = \sigma_i \wedge \rho'_i = \sigma'_i$ + and for subsequent frames $k \leq i \leq l$ we have $\rho_i = \rho'_i$. + % + \begin{itemize}[itemsep=0.5em, topsep=0.5em] + \item[(1)] + Case $i = j < k \leq l$ (the fork frame). + Since we have shown that $\Phi_{h+1}(s_i) = \Phi_{h+1}(t_i) \;\forall i < p'$, + and since $\Phi_{h+1}(s')$ and $\Phi_{h+1}(t')$ have nonempty common prefix $\Xl_{h+2}$, + it follows that $lasht (\Phi_{h}(s) \sqcap \Phi_{h}(t)) = lasth (\Phi_{h+1}(s') \sqcap \Phi_{h+1}(t'))$. + % + From $j < k$ it follows that $\gamma_j$ and $\delta_j$ end before $a_k$ + and are not changed by appending $\gamma^2_k$ and $\delta^2_k$. + % + Therefore $\rho_j = \sigma_j \wedge \rho'_j = \sigma'_j$. + + \item[(2)] + Case $j < i < k \leq l$. + The computation of $\rho_i$, $\rho'_i$ depends only on + $\rho_j$, $\rho'_j$, + or which we have shown $\rho_j = \sigma_j \wedge \rho'_j = \sigma'_j$ in case (1), + and on $\Phi_{h+1}(s')$, $\Phi_{h+1}(t')$, + which are not changed by appending $\gamma^2_k$ and $\delta^2_k$ since $i < k$. + Therefore $\rho_i = \sigma_i \wedge \rho'_i = \sigma'_i$. + + \item[(3)] + Case $j \leq i = k < l$. We have + $minh (\gamma^1_k) = minh (\delta^1_k) = h + 1$ and + $minh (\gamma^2_k) = minh (\delta^2_k) \geq h + 1$. + None of the preceding frames after the fork contain parentheses with height less than $h + 1$, + therefore $\rho_k = \rho'_k = h + 1$. + + \item[(4)] + Case $j \leq k < i < l$. + We have $\rho_i = \rho'_i = h + 1$, + because $\rho_k = \rho'_k = h + 1$ and $minh(\gamma_i)$, $minh(\delta_i) \geq h + 1$. + + \item[(5)] + Case $j \leq k \leq i = l$. + We have $\rho_l = \rho'_l = h$, + because both $\gamma_l$ and $\delta_l$ contain the closing parenthesis $\Xr_{h}$. + \end{itemize} + % + We have shown that $\rho_i = \sigma_i \wedge \rho'_i = \sigma'_i \;\forall i: j \leq i < k$ + and $\rho_i = \rho'_i \;\forall i: k \leq i \leq l$. + It trivially follows that $\Phi_{h+1}(s') \sqsubset \Phi_{h+1}(t')$ $\Rightarrow \Phi_{h}(s) \sqsubset \Phi_{h}(t)$ + and $\Phi_{h+1}(s') \sim \Phi_{h+1}(t')$ $\Rightarrow \Phi_{h}(s) \sim \Phi_{h}(t)$. + Because none of $\Phi_{h+1}(s')$, $\Phi_{h+1}(t')$ is a proper prefix of another, + $\Phi_{h+1}(s') \subset \Phi_{h+1}(t')$ $\Rightarrow \Phi_{h}(s) \subset \Phi_{h}(t)$. + Therefore $\Phi_{h+1}(s') < \Phi_{h+1}(t') \Rightarrow \Phi_{h}(s) < \Phi_{h}(t)$ + (the premise has been shown). +\end{proofEnd} + +\printProofs[theorem_order_on_pe_same_as_on_pt] + + +\subsection*{Correctness of incremental path comparison} + +\printProofs[lemma_frames] +\printProofs[lemmata_closure] + + +\end{document} + diff --git a/doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/Makefile b/doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/Makefile new file mode 100644 index 00000000..744257d9 --- /dev/null +++ b/doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/Makefile @@ -0,0 +1,7 @@ +%.pdf : %.tex + pdflatex -shell-escape $< $<.log + +all : 2019_borsotti_trofimovich_efficient_posix_submatch_extraction_on_nfa.pdf + +clean: + rm *.log *.aux *.pdf *.pag pratend*.tex diff --git a/doc/tdfa_v2/WileyNJD-v2.cls b/doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/WileyNJD-v2.cls similarity index 100% rename from doc/tdfa_v2/WileyNJD-v2.cls rename to doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/WileyNJD-v2.cls diff --git a/doc/tdfa_v2/img/bench/data_artificial b/doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/bench/data_artificial similarity index 100% rename from doc/tdfa_v2/img/bench/data_artificial rename to doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/bench/data_artificial diff --git a/doc/tdfa_v2/img/bench/data_pathological b/doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/bench/data_pathological similarity index 100% rename from doc/tdfa_v2/img/bench/data_pathological rename to doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/bench/data_pathological diff --git a/doc/tdfa_v2/img/bench/data_realworld b/doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/bench/data_realworld similarity index 100% rename from doc/tdfa_v2/img/bench/data_realworld rename to doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/bench/data_realworld diff --git a/doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/bench/log b/doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/bench/log new file mode 100644 index 00000000..4f075e4d --- /dev/null +++ b/doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/bench/log @@ -0,0 +1,372 @@ + +r: (([-!#$%&'*+.^_`|~0-9a-zA-Z]+)..., s: HTTP/5.9 430 1wSXfgruktPZfhxm +..., n: 100, 6204 chars, 198 groups + re2c-tnfa-leftmost: 1.00 0.426s + re2: 3.93 1.674s + re2c-tnfa-posix-gor1: 3.65 1.557s + re2c-tnfa-posix-gtop: 3.27 1.393s + re2c-tnfa-posix-kukl-gor1: 75.03 31.999s + re2c-tnfa-posix-gor1-slow: 2.80 1.195s + re2c-tnfa-posix-gor1-trie: 2.45 1.045s + re2c-tnfa-posix-back-gor1: - - + +r: ((([-._~%!$&'*+#^`|a-zA-Z0-9]+..., s: HTTP/5.9 430 1wSXfgruktPZfhxm +..., n: 100, 573 chars, 40 groups + re2c-tnfa-leftmost: 1.00 0.149s + re2: 0.43 0.064s + re2c-tnfa-posix-gor1: 2.92 0.436s + re2c-tnfa-posix-gtop: 2.63 0.393s + re2c-tnfa-posix-kukl-gor1: 19.84 2.962s + re2c-tnfa-posix-gor1-slow: 2.36 0.353s + re2c-tnfa-posix-gor1-trie: 1.72 0.257s + re2c-tnfa-posix-back-gor1: - - + +r: ([a-zA-Z][a-zA-Z0-9+.-]*):(//(..., s: http://240.147.163.34:2124/z/d..., n: 100, 3149 chars, 102 groups + re2c-tnfa-leftmost: 1.00 0.795s + re2: 2.55 2.026s + re2c-tnfa-posix-gor1: 3.13 2.488s + re2c-tnfa-posix-gtop: 2.76 2.195s + re2c-tnfa-posix-kukl-gor1: 13.57 10.787s + re2c-tnfa-posix-gor1-slow: 2.90 2.304s + re2c-tnfa-posix-gor1-trie: 1.95 1.553s + re2c-tnfa-posix-back-gor1: - - + +r: ([-+.a-zA-Z0-9]+):(//(([-._~%!..., s: http://240.147.163.34:2124/z/d..., n: 100, 234 chars, 18 groups + re2c-tnfa-leftmost: 1.00 0.484s + re2: 0.45 0.219s + re2c-tnfa-posix-gor1: 3.55 1.716s + re2c-tnfa-posix-gtop: 3.21 1.553s + re2c-tnfa-posix-kukl-gor1: 6.51 3.150s + re2c-tnfa-posix-gor1-slow: 3.09 1.495s + re2c-tnfa-posix-gor1-trie: 2.72 1.317s + re2c-tnfa-posix-back-gor1: 42.93 20.773s + +r: (([0-9a-fA-F]{1,4}:){6}([0-9a-..., s: fee2:586:10aa:fd03:37f:76ee:be..., n: 100, 2343 chars, 61 groups + re2c-tnfa-leftmost: 1.00 0.116s + re2: 1.34 0.155s + re2c-tnfa-posix-gor1: 3.16 0.366s + re2c-tnfa-posix-gtop: 3.53 0.409s + re2c-tnfa-posix-kukl-gor1: 45.37 5.255s + re2c-tnfa-posix-gor1-slow: 3.37 0.391s + re2c-tnfa-posix-gor1-trie: 1.25 0.145s + re2c-tnfa-posix-back-gor1: - - + +r: (([0-9]|[1-9][0-9]|[1][0-9]{2}..., s: 127.0.0.1..., n: 10000, 235 chars, 5 groups + re2c-tnfa-leftmost: 1.00 0.099s + re2: 0.83 0.082s + re2c-tnfa-posix-gor1: 3.53 0.350s + re2c-tnfa-posix-gtop: 3.14 0.311s + re2c-tnfa-posix-kukl-gor1: 5.55 0.550s + re2c-tnfa-posix-gor1-slow: 2.71 0.269s + re2c-tnfa-posix-gor1-trie: 1.86 0.185s + re2c-tnfa-posix-back-gor1: 30.04 2.980s + +r: ([0-9]{1,3})[.]([0-9]{1,3})[.]..., s: 127.0.0.1..., n: 10000, 57 chars, 4 groups + re2c-tnfa-leftmost: 1.00 0.052s + re2: 0.50 0.026s + re2c-tnfa-posix-gor1: 4.89 0.256s + re2c-tnfa-posix-gtop: 4.11 0.215s + re2c-tnfa-posix-kukl-gor1: 6.10 0.319s + re2c-tnfa-posix-gor1-slow: 3.41 0.179s + re2c-tnfa-posix-gor1-trie: 2.49 0.130s + re2c-tnfa-posix-back-gor1: 27.15 1.422s + +r: ([^.]+)[.]([^.]+)[.]([^.]+)[.]..., s: 127.0.0.1..., n: 10000, 37 chars, 4 groups + re2c-tnfa-leftmost: 1.00 0.054s + re2: 0.50 0.027s + re2c-tnfa-posix-gor1: 4.57 0.245s + re2c-tnfa-posix-gtop: 4.08 0.219s + re2c-tnfa-posix-kukl-gor1: 5.98 0.320s + re2c-tnfa-posix-gor1-slow: 3.33 0.178s + re2c-tnfa-posix-gor1-trie: 2.46 0.132s + re2c-tnfa-posix-back-gor1: 17.55 0.940s + +r: (Mon|Tue|Wed|Thu|Fri|Sat|Sun) ..., s: Mon Jan 01 00:24:00 GMT 2019..., n: 10000, 154 chars, 7 groups + re2c-tnfa-leftmost: 1.00 0.183s + re2: 0.74 0.136s + re2c-tnfa-posix-gor1: 3.91 0.717s + re2c-tnfa-posix-gtop: 3.21 0.588s + re2c-tnfa-posix-kukl-gor1: 8.49 1.555s + re2c-tnfa-posix-gor1-slow: 2.80 0.512s + re2c-tnfa-posix-gor1-trie: 1.97 0.361s + re2c-tnfa-posix-back-gor1: 110.86 20.311s + +r: ([a-zA-Z]+) ([a-zA-Z]+) ([0-9]..., s: Mon Jan 01 00:24:00 GMT 2019..., n: 10000, 65 chars, 6 groups + re2c-tnfa-leftmost: 1.00 0.183s + re2: 0.95 0.173s + re2c-tnfa-posix-gor1: 5.00 0.914s + re2c-tnfa-posix-gtop: 4.32 0.790s + re2c-tnfa-posix-kukl-gor1: 8.01 1.465s + re2c-tnfa-posix-gor1-slow: 3.90 0.713s + re2c-tnfa-posix-gor1-trie: 2.64 0.482s + re2c-tnfa-posix-back-gor1: 43.09 7.881s + +r: ([^ ]+) ([^ ]+) ([^ ]+) ([^ ]+..., s: Mon Jan 01 00:24:00 GMT 2019..., n: 10000, 47 chars, 6 groups + re2c-tnfa-leftmost: 1.00 0.176s + re2: 1.32 0.231s + re2c-tnfa-posix-gor1: 5.10 0.896s + re2c-tnfa-posix-gtop: 4.41 0.775s + re2c-tnfa-posix-kukl-gor1: 8.28 1.455s + re2c-tnfa-posix-gor1-slow: 3.98 0.699s + re2c-tnfa-posix-gor1-trie: 2.65 0.466s + re2c-tnfa-posix-back-gor1: 44.92 7.892s + +r: (a{2}|a{3}|a{5})*..., s: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..., n: 10, 17 chars, 1 groups + re2c-tnfa-leftmost: 1.00 0.082s + re2: 1.27 0.104s + re2c-tnfa-posix-gor1: 3.72 0.303s + re2c-tnfa-posix-gtop: 3.49 0.285s + re2c-tnfa-posix-kukl-gor1: 2.60 0.213s + re2c-tnfa-posix-gor1-slow: 4.56 0.372s + re2c-tnfa-posix-gor1-trie: 2.98 0.244s + re2c-tnfa-posix-back-gor1: 3.21 0.262s + +r: (a{7}|a{11}|a{13})*..., s: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..., n: 10, 19 chars, 1 groups + re2c-tnfa-leftmost: 1.00 0.174s + re2: 1.33 0.230s + re2c-tnfa-posix-gor1: 6.34 1.102s + re2c-tnfa-posix-gtop: 6.80 1.181s + re2c-tnfa-posix-kukl-gor1: 3.44 0.597s + re2c-tnfa-posix-gor1-slow: 11.92 2.070s + re2c-tnfa-posix-gor1-trie: 2.78 0.483s + re2c-tnfa-posix-back-gor1: 3.07 0.533s + +r: (a{17}|a{19}|a{23})*..., s: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..., n: 10, 20 chars, 1 groups + re2c-tnfa-leftmost: 1.00 0.288s + re2: 1.44 0.415s + re2c-tnfa-posix-gor1: 10.19 2.940s + re2c-tnfa-posix-gtop: 10.94 3.154s + re2c-tnfa-posix-kukl-gor1: 3.87 1.115s + re2c-tnfa-posix-gor1-slow: 22.45 6.474s + re2c-tnfa-posix-gor1-trie: 2.31 0.665s + re2c-tnfa-posix-back-gor1: 3.01 0.868s + +r: (a{29}|a{31}|a{37})*..., s: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..., n: 10, 20 chars, 1 groups + re2c-tnfa-leftmost: 1.00 0.444s + re2: 1.44 0.639s + re2c-tnfa-posix-gor1: 15.15 6.731s + re2c-tnfa-posix-gtop: 16.01 7.116s + re2c-tnfa-posix-kukl-gor1: 4.17 1.854s + re2c-tnfa-posix-gor1-slow: 36.72 16.318s + re2c-tnfa-posix-gor1-trie: 2.28 1.015s + re2c-tnfa-posix-back-gor1: 2.97 1.321s + +r: (((a){2})|((a){3})|((a){5}))*..., s: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..., n: 10, 29 chars, 7 groups + re2c-tnfa-leftmost: 1.00 0.293s + re2: 1.12 0.329s + re2c-tnfa-posix-gor1: 2.96 0.867s + re2c-tnfa-posix-gtop: 3.28 0.960s + re2c-tnfa-posix-kukl-gor1: 5.68 1.664s + re2c-tnfa-posix-gor1-slow: 3.22 0.943s + re2c-tnfa-posix-gor1-trie: 4.94 1.446s + re2c-tnfa-posix-back-gor1: 4.36 1.277s + +r: (((a){7})|((a){11})|((a){13}))..., s: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..., n: 10, 31 chars, 7 groups + re2c-tnfa-leftmost: 1.00 0.607s + re2: 1.38 0.839s + re2c-tnfa-posix-gor1: 4.47 2.714s + re2c-tnfa-posix-gtop: 5.36 3.252s + re2c-tnfa-posix-kukl-gor1: 7.86 4.771s + re2c-tnfa-posix-gor1-slow: 7.33 4.451s + re2c-tnfa-posix-gor1-trie: 10.65 6.462s + re2c-tnfa-posix-back-gor1: 4.11 2.495s + +r: (((a){17})|((a){19})|((a){23})..., s: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..., n: 10, 32 chars, 7 groups + re2c-tnfa-leftmost: 1.00 1.049s + re2: 1.46 1.534s + re2c-tnfa-posix-gor1: 6.39 6.703s + re2c-tnfa-posix-gtop: 7.43 7.793s + re2c-tnfa-posix-kukl-gor1: 8.61 9.032s + re2c-tnfa-posix-gor1-slow: 13.06 13.693s + re2c-tnfa-posix-gor1-trie: 14.67 15.388s + re2c-tnfa-posix-back-gor1: 3.99 4.185s + +r: (((a){29})|((a){31})|((a){37})..., s: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..., n: 10, 32 chars, 7 groups + re2c-tnfa-leftmost: 1.00 1.699s + re2: 1.44 2.450s + re2c-tnfa-posix-gor1: 8.66 14.703s + re2c-tnfa-posix-gtop: 9.80 16.649s + re2c-tnfa-posix-kukl-gor1: 8.82 14.986s + re2c-tnfa-posix-gor1-slow: 19.78 33.600s + re2c-tnfa-posix-gor1-trie: 18.85 32.022s + re2c-tnfa-posix-back-gor1: 3.92 6.651s + +r: ((((((((((a*)*)*)*)*)*)*)*)*)*..., s: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..., n: 10, 32 chars, 10 groups + re2c-tnfa-leftmost: 1.00 0.208s + re2: 0.78 0.162s + re2c-tnfa-posix-gor1: 1.91 0.397s + re2c-tnfa-posix-gtop: 1.98 0.410s + re2c-tnfa-posix-kukl-gor1: 3.50 0.726s + re2c-tnfa-posix-gor1-slow: 1.86 0.386s + re2c-tnfa-posix-gor1-trie: 5.96 1.238s + re2c-tnfa-posix-back-gor1: 7.22 1.498s + +r: (a*)(a*)(a*)(a*)(a*)(a*)(a*)(a..., s: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..., n: 10, 32 chars, 8 groups + re2c-tnfa-leftmost: 1.00 0.272s + re2: 0.76 0.208s + re2c-tnfa-posix-gor1: 3.53 0.961s + re2c-tnfa-posix-gtop: 3.95 1.077s + re2c-tnfa-posix-kukl-gor1: 13.80 3.759s + re2c-tnfa-posix-gor1-slow: 3.85 1.049s + re2c-tnfa-posix-gor1-trie: 11.95 3.256s + re2c-tnfa-posix-back-gor1: 7.53 2.051s + +r: (((a*)(a*)(a*))*((a*)(a*)(a*))..., s: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..., n: 10, 33 chars, 9 groups + re2c-tnfa-leftmost: 1.00 0.265s + re2: 0.89 0.235s + re2c-tnfa-posix-gor1: 3.16 0.837s + re2c-tnfa-posix-gtop: 3.76 0.994s + re2c-tnfa-posix-kukl-gor1: 15.35 4.061s + re2c-tnfa-posix-gor1-slow: 3.16 0.837s + re2c-tnfa-posix-gor1-trie: 20.59 5.450s + re2c-tnfa-posix-back-gor1: 9.86 2.610s + +r: (((((a*)*)*((a*)*)*((a*)*)*)*)..., s: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..., n: 10, 33 chars, 9 groups + re2c-tnfa-leftmost: 1.00 0.246s + re2: 0.86 0.211s + re2c-tnfa-posix-gor1: 2.92 0.718s + re2c-tnfa-posix-gtop: 3.49 0.860s + re2c-tnfa-posix-kukl-gor1: 17.82 4.390s + re2c-tnfa-posix-gor1-slow: 2.57 0.634s + re2c-tnfa-posix-gor1-trie: 21.64 5.330s + re2c-tnfa-posix-back-gor1: 13.05 3.214s + +r: (((((a*)*(a*))*(a*))*(a*))*(a*..., s: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..., n: 10, 33 chars, 9 groups + re2c-tnfa-leftmost: 1.00 0.255s + re2: 0.79 0.203s + re2c-tnfa-posix-gor1: 2.87 0.732s + re2c-tnfa-posix-gtop: 3.45 0.881s + re2c-tnfa-posix-kukl-gor1: 12.61 3.221s + re2c-tnfa-posix-gor1-slow: 2.72 0.694s + re2c-tnfa-posix-gor1-trie: 24.53 6.267s + re2c-tnfa-posix-back-gor1: 11.54 2.949s + +r: ((a*)((a*)((a*)((a*)(a*)*)*)*)..., s: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..., n: 10, 33 chars, 9 groups + re2c-tnfa-leftmost: 1.00 0.270s + re2: 0.81 0.218s + re2c-tnfa-posix-gor1: 3.07 0.828s + re2c-tnfa-posix-gtop: 3.62 0.977s + re2c-tnfa-posix-kukl-gor1: 14.90 4.021s + re2c-tnfa-posix-gor1-slow: 2.94 0.793s + re2c-tnfa-posix-gor1-trie: 16.27 4.392s + re2c-tnfa-posix-back-gor1: 9.92 2.678s + +r: (a*)|(a*)|(a*)|(a*)|(a*)|(a*)|..., s: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..., n: 10, 34 chars, 7 groups + re2c-tnfa-leftmost: 1.00 0.121s + re2: 0.78 0.094s + re2c-tnfa-posix-gor1: 3.18 0.383s + re2c-tnfa-posix-gtop: 3.92 0.473s + re2c-tnfa-posix-kukl-gor1: 5.99 0.722s + re2c-tnfa-posix-gor1-slow: 3.33 0.401s + re2c-tnfa-posix-gor1-trie: 8.01 0.966s + re2c-tnfa-posix-back-gor1: 8.81 1.063s + +r: ((a*)|(a*)|(a*))((a*)|(a*)|(a*..., s: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..., n: 10, 32 chars, 8 groups + re2c-tnfa-leftmost: 1.00 0.202s + re2: 0.89 0.179s + re2c-tnfa-posix-gor1: 2.99 0.605s + re2c-tnfa-posix-gtop: 3.41 0.689s + re2c-tnfa-posix-kukl-gor1: 7.17 1.448s + re2c-tnfa-posix-gor1-slow: 2.89 0.584s + re2c-tnfa-posix-gor1-trie: 11.49 2.319s + re2c-tnfa-posix-back-gor1: 6.29 1.269s + +r: ((a*)|(a*))((a*)|(a*))((a*)|(a..., s: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..., n: 10, 33 chars, 9 groups + re2c-tnfa-leftmost: 1.00 0.252s + re2: 0.76 0.190s + re2c-tnfa-posix-gor1: 2.75 0.691s + re2c-tnfa-posix-gtop: 3.02 0.760s + re2c-tnfa-posix-kukl-gor1: 7.95 2.002s + re2c-tnfa-posix-gor1-slow: 2.70 0.681s + re2c-tnfa-posix-gor1-trie: 9.96 2.507s + re2c-tnfa-posix-back-gor1: 5.83 1.468s + +r: ((a*)|(a*)|(a*))*|((a*)|(a*)|(..., s: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..., n: 10, 35 chars, 8 groups + re2c-tnfa-leftmost: 1.00 0.250s + re2: 0.93 0.233s + re2c-tnfa-posix-gor1: 2.42 0.605s + re2c-tnfa-posix-gtop: 3.00 0.748s + re2c-tnfa-posix-kukl-gor1: 8.00 1.996s + re2c-tnfa-posix-gor1-slow: 2.44 0.608s + re2c-tnfa-posix-gor1-trie: 19.99 4.989s + re2c-tnfa-posix-back-gor1: 7.73 1.929s + +r: (((((a*)*)*|((a*)*)*|((a*)*)*)..., s: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..., n: 10, 35 chars, 9 groups + re2c-tnfa-leftmost: 1.00 0.280s + re2: 0.87 0.243s + re2c-tnfa-posix-gor1: 3.27 0.913s + re2c-tnfa-posix-gtop: 2.57 0.719s + re2c-tnfa-posix-kukl-gor1: 11.24 3.142s + re2c-tnfa-posix-gor1-slow: 3.22 0.901s + re2c-tnfa-posix-gor1-trie: 24.15 6.754s + re2c-tnfa-posix-back-gor1: 10.08 2.818s + +r: ((a*)|((a*)(a*))|((a*)(a*)(a*)..., s: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..., n: 10, 33 chars, 9 groups + re2c-tnfa-leftmost: 1.00 0.311s + re2: 0.71 0.222s + re2c-tnfa-posix-gor1: 2.50 0.779s + re2c-tnfa-posix-gtop: 2.19 0.682s + re2c-tnfa-posix-kukl-gor1: 6.02 1.874s + re2c-tnfa-posix-gor1-slow: 2.46 0.765s + re2c-tnfa-posix-gor1-trie: 14.57 4.533s + re2c-tnfa-posix-back-gor1: 5.55 1.726s + +r: (((a*)(a*)(a*))|((a*)(a*))|(a*..., s: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..., n: 10, 33 chars, 9 groups + re2c-tnfa-leftmost: 1.00 0.286s + re2: 0.79 0.225s + re2c-tnfa-posix-gor1: 2.51 0.716s + re2c-tnfa-posix-gtop: 2.52 0.720s + re2c-tnfa-posix-kukl-gor1: 6.20 1.771s + re2c-tnfa-posix-gor1-slow: 2.47 0.704s + re2c-tnfa-posix-gor1-trie: 16.15 4.614s + re2c-tnfa-posix-back-gor1: 7.50 2.142s + +r: ((a?){0,125})*..., s: aaaaaaaaaa..., n: 256, 14 chars, 2 groups + re2c-tnfa-leftmost: 1.00 0.197s + re2: 0.46 0.091s + re2c-tnfa-posix-gor1: 5.11 1.007s + re2c-tnfa-posix-gtop: 5.42 1.068s + re2c-tnfa-posix-kukl-gor1: 24.85 4.897s + re2c-tnfa-posix-gor1-slow: 46.84 9.229s + re2c-tnfa-posix-gor1-trie: 5.66 1.116s + re2c-tnfa-posix-back-gor1: 1.13 0.222s + +r: ((a?){0,250})*..., s: aaaaaaaaaa..., n: 16, 14 chars, 2 groups + re2c-tnfa-leftmost: 1.00 0.042s + re2: 0.27 0.012s + re2c-tnfa-posix-gor1: 5.67 0.240s + re2c-tnfa-posix-gtop: 5.85 0.248s + re2c-tnfa-posix-kukl-gor1: 31.69 1.341s + re2c-tnfa-posix-gor1-slow: 101.25 4.285s + re2c-tnfa-posix-gor1-trie: 5.25 0.222s + re2c-tnfa-posix-back-gor1: 0.67 0.028s + +r: ((a?){0,500})*..., s: aaaaaaaaaa..., n: 4, 14 chars, 2 groups + re2c-tnfa-leftmost: 1.00 0.039s + re2: 0.15 0.006s + re2c-tnfa-posix-gor1: 6.02 0.234s + re2c-tnfa-posix-gtop: 6.15 0.240s + re2c-tnfa-posix-kukl-gor1: 40.83 1.590s + re2c-tnfa-posix-gor1-slow: 211.30 8.228s + re2c-tnfa-posix-gor1-trie: 5.08 0.198s + re2c-tnfa-posix-back-gor1: 0.37 0.015s + +r: ((a?){0,1000})*..., s: aaaaaaaaaa..., n: 2, 15 chars, 2 groups + re2c-tnfa-leftmost: 1.00 0.075s + re2: 0.08 0.006s + re2c-tnfa-posix-gor1: 6.48 0.483s + re2c-tnfa-posix-gtop: 6.47 0.482s + re2c-tnfa-posix-kukl-gor1: 45.31 3.377s + re2c-tnfa-posix-gor1-slow: 431.51 32.162s + re2c-tnfa-posix-gor1-trie: 4.92 0.367s + re2c-tnfa-posix-back-gor1: 0.19 0.014s + +r: ((a?){0,2000})*..., s: aaaaaaaaaa..., n: 1, 15 chars, 2 groups + re2c-tnfa-leftmost: 1.00 0.146s + re2: - - + re2c-tnfa-posix-gor1: 6.68 0.976s + re2c-tnfa-posix-gtop: 6.64 0.971s + re2c-tnfa-posix-kukl-gor1: 53.49 7.818s + re2c-tnfa-posix-gor1-slow: 880.72 128.736s + re2c-tnfa-posix-gor1-trie: 4.83 0.705s + re2c-tnfa-posix-back-gor1: 0.11 0.015s diff --git a/doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/bench/log_to_plot_data.sh b/doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/bench/log_to_plot_data.sh new file mode 100755 index 00000000..e7fb1781 --- /dev/null +++ b/doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/bench/log_to_plot_data.sh @@ -0,0 +1,79 @@ +#!/bin/bash + +log="log" + +grep ': ' "$log" | grep -E ' [0-9]+\.[0-9]{2} | - ' -o > "${log}1" + +while read l; do + for i in $(seq 7); do + read l1 + l="$l;$l1" + done + echo $l | sed 's/-/nan/' >> "${log}2" +done < "${log}1" + +heading="test;Alg;LG;RE2;OS;OS_GTOP;Kuklewicz;OS_naive;OS_lazy;Cox" + +column -t "${log}2" > "${log}3" + +realworld=( + "HTTP 6204,198" + "HTTP-small 574,40" + "URI 3149,102" + "URI-small 234,18" + "IPv6 2343,61" + "IPv4 235,5" + "IPv4-small 57,4" + "IPv4-tiny 37,4" + "date 154,7" + "date-small 65,6" + "date-tiny 47,6" +) + +artificial=( + '\texttt{(a\{2\}|a\{3\}|a\{5\})*}' + '\texttt{(a\{7\}|a\{11\}|a\{13\})*}' + '\texttt{(a\{17\}|a\{19\}|a\{23\})*}' + '\texttt{(a\{29\}|a\{31\}|a\{37\})*}' + '\texttt{(((a)\{2\})|((a)\{3\})|((a)\{5\}))*}' + '\texttt{(((a)\{7\})|((a)\{11\})|((a)\{13\}))*}' + '\texttt{(((a)\{17\})|((a)\{19\})|((a)\{23\}))*}' + '\texttt{(((a)\{29\})|((a)\{31\})|((a)\{37\}))*}' + '\texttt{((((((((((a*)*)*)*)*)*)*)*)*)*)*}' + '\texttt{(a*)(a*)(a*)(a*)(a*)(a*)(a*)(a*)}' + '\texttt{(((a*)(a*)(a*))*((a*)(a*)(a*))*)*}' + '\texttt{(((((a*)*)*((a*)*)*((a*)*)*)*)*)*}' + '\texttt{(((((a*)*(a*))*(a*))*(a*))*(a*))*}' + '\texttt{((a*)((a*)((a*)((a*)(a*)*)*)*)*)*}' + '\texttt{(a*)|(a*)|(a*)|(a*)|(a*)|(a*)|(a*)}' + '\texttt{((a*)|(a*)|(a*))((a*)|(a*)|(a*))}' + '\texttt{((a*)|(a*))((a*)|(a*))((a*)|(a*))}' + '\texttt{((a*)|(a*)|(a*))*|((a*)|(a*)|(a*))*}' + '\texttt{(((((a*)*)*|((a*)*)*|((a*)*)*)*)*)*}' + '\texttt{((a*)|((a*)(a*))|((a*)(a*)(a*)))*}' + '\texttt{(((a*)(a*)(a*))|((a*)(a*))|(a*))*}' +) + +pathological=( + '\texttt{((a?)\{0,125\})*}' + '\texttt{((a?)\{0,250\})*}' + '\texttt{((a?)\{0,500\})*}' + '\texttt{((a?)\{0,1000\})*}' + '\texttt{((a?)\{0,2000\})*}' +) + +process() { + local -n tests=$3 + result="$4" + echo $heading > "$result" + for i in $(seq $1 $2); do + echo -n "$i;${tests[$((i-$1))]};" >> "$result" + sed "${i}q;d" "${log}3" >> "$result" + done +} + +process 1 11 realworld data_realworld +process 12 32 artificial data_artificial +process 33 37 pathological data_pathological + +rm "${log}1" "${log}2" "${log}3" diff --git a/doc/tdfa_v2/img/Makefile b/doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/img/Makefile similarity index 57% rename from doc/tdfa_v2/img/Makefile rename to doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/img/Makefile index d4514e9e..c9a08e75 100644 --- a/doc/tdfa_v2/img/Makefile +++ b/doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/img/Makefile @@ -1,7 +1,7 @@ %.pdf : %.tex lualatex -shell-escape $< $<.build_log -all : mark_enum.pdf pe.pdf trees.pdf tnfa_construction.pdf gor1.pdf tnfa_example.pdf +all : mark_and_enum.pdf parenthesized_expressions.pdf tnfa_construction.pdf clean: rm *.log *.build_log *.aux *.pdf *.pag diff --git a/doc/tdfa_v2/img/mark_enum.tex b/doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/img/mark_and_enum.tex similarity index 86% rename from doc/tdfa_v2/img/mark_enum.tex rename to doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/img/mark_and_enum.tex index 100c986a..f38f32d3 100644 --- a/doc/tdfa_v2/img/mark_enum.tex +++ b/doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/img/mark_and_enum.tex @@ -6,9 +6,46 @@ \usepackage[utf8]{inputenc} \usepackage{amsmath, amssymb, amsfonts, accents} \usetikzlibrary{graphdrawing, graphs, arrows, shapes, automata, calc} -\usegdlibrary{trees, layered} \usepackage{stix} +% workaround for https://github.com/u-fischer/luaotfload/issues/6 +\usepackage{luacode} +\begin{luacode} + function pgf_lookup_and_require(name) + local sep = '/' + if string.find(os.getenv('PATH'),';') then + sep = '\string\\' + end + local function lookup(name) + local sub = name:gsub('%.',sep) + local find_func = function (name, suffix) + if resolvers then + local n = resolvers.findfile (name.."."..suffix, suffix) -- changed + return (not (n == '')) and n or nil + else + return kpse.find_file(name,suffix) + end + end + if find_func(sub, 'lua') then + require(name) + elseif find_func(sub, 'clua') then + collectgarbage('stop') + require(name) + collectgarbage('restart') + else + return false + end + return true + end + return + lookup('pgf.gd.' .. name .. '.library') or + lookup('pgf.gd.' .. name) or + lookup(name .. '.library') or + lookup(name) + end +\end{luacode} +\usegdlibrary{trees, layered} + \newcommand{\Xund}{\rule{.4em}{.4pt}} \newcommand{\IRE}{I\!RE} diff --git a/doc/tdfa_v2/img/pe.tex b/doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/img/parenthesized_expressions.tex similarity index 100% rename from doc/tdfa_v2/img/pe.tex rename to doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/img/parenthesized_expressions.tex diff --git a/doc/tdfa_v2/img/tnfa_construction.tex b/doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/img/tnfa_construction.tex similarity index 100% rename from doc/tdfa_v2/img/tnfa_construction.tex rename to doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/img/tnfa_construction.tex diff --git a/doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/proof-at-the-end.sty b/doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/proof-at-the-end.sty new file mode 100644 index 00000000..7bda08f4 --- /dev/null +++ b/doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/proof-at-the-end.sty @@ -0,0 +1,343 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{proof-at-the-end}[2019/05/21 A package to move proofs in appendix] + +\RequirePackage{etoolbox} +\RequirePackage{hyperref} +\RequirePackage{thmtools} +\RequirePackage{thm-restate} +\RequirePackage{catchfile} +\RequirePackage{pgfkeys} +\RequirePackage{xparse} + +\RequirePackage{kvoptions} + +%% https://tex.stackexchange.com/questions/109747/put-all-package-options-into-one-command +%% Forward the options list to the command \pratendOptdefconf +%% in order to use: +%% \usepackage[conf={normal}]{proof-at-the-end} +\SetupKeyvalOptions{ + family=pratendOpt, + prefix=pratendOpt, +} +\DeclareStringOption{conf} +\DeclareLocalOptions{conf}% \pratendOptdefconf contains the proof +\ProcessKeyvalOptions* + +% \DeclareOption*{\PackageWarning{proof-at-the-end}{Unknown}} +% \ProcessOptions\relax + +\newwrite\appendwrite + +% The first argument is the file name +% The second argument is the text to write +\NewDocumentCommand\appendtofile{m+m}{% + \begingroup + \IfFileExists{#1}% + {\CatchFileDef{\filecontent}{#1}{\catcode`\\=12 \endlinechar=`^^J\catcode\endlinechar=12\relax}}% keep existing end-of-lines + {\let\filecontent\empty}% + \immediate\openout\appendwrite=#1\relax + \immediate\write\appendwrite{\detokenize\expandafter{\filecontent}#2}% + \immediate\closeout\appendwrite + \endgroup +} + +%% This functions takes one input: the category (without .tex), +%% If it's the first time we write in this +%% category file, it "blanks" it. +\def\prefixPrAtEndFiles{pratend} +\newcommand*\eraseIfNeeded[1]{% + % A macro 'pratendmacrocat{category}' is created to check + % if it's the first time we write in this category file. + \protected@edef\macroname{pratendmacrocat#1}% + \ifcsdef{\macroname}{% The macro exists, nothing to do + }{ % The macro does not exists, create it, and empty the file + \global\expandafter\def\csname \macroname\endcsname{true}% + \immediate\openout\appendwrite=\prefixPrAtEndFiles#1.tex% + \immediate\write\appendwrite{}% + \immediate\closeout\appendwrite% + }% +} + +\newif\ifproofhere +\newif\ifproofend +\newif\ifrestatethm +\newif\iflinktoproof +\newif\ifboth +\newif\ifallattheend +\newif\ifrestatedbefore +\pgfkeys{ + /prAtEnd/.cd, %% Proof at end will be the main path + %% Category of the proof (if you want to put proofs + %% at several places), can be anything + category/.initial=defaultcategory, + category/.store in=\category, + category/.get=\category, + %% Display the proof in the main part + proof here/.is if=proofhere, + no proof here/.style={proof here=false}, % alias + %% Display the proof when using \printProofs + proof end/.is if=proofend, + no proof end/.style={proof end=false}, + %% Restate the theorem when using \printProofs + restate/.is if=restatethm, + no restate/.style={restate=false}, + %% Put a link to the proof after the theorem + link to proof/.is if=linktoproof, + no link to proof/.style={link to proof=false}, + %% Put the theorem and proof only in appendix + opt all end/.is if=allattheend, + no opt all end/.style={opt all end=false}, + %% Text of link + text link/.code={\def\pratendtextlink{#1}}, + %% Text of proof. Make sure also to "\renewcommand*{\proofname}{Name of the proof}" + %% to make sure the proof for normal theorems are changed + text proof/.code={\def\pratendtextproof{#1}}, + %% Custom restate command + restate command/.code={\protected@edef\pratendcustomrestate{#1}}, + %% (Re)stated before + %% If the theorems has been stated before, then we just need to put the restate command in + %% place of the argument, and we set this value to true: + restated before/.is if=restatedbefore, + no restated before/.style={restated before=false}, + %% In star version, we don't want + %% Put the text (defined only for \textInAppendix) in both the + %% current location and in appendix + both/.is if=both, + no both/.style={both=false}, + %%%% Alias and styles + normal/.style={ + proof here, + no opt all end, + no proof end, + no link to proof, + no restate, + no both, + }, + proof at the end/.style={ + no proof here, + no opt all end, + proof end, + no both, + }, + end/.style={ + proof at the end, + link to proof, + }, + all end/.style={ + end, + opt all end, + }, + debug/.style={ + no opt all end, + proof here + }, + no link to theorem/.style={ % Remove the link to the theorem + text proof={\proofname}, + }, + stared/.style={ % Remove + text proof={\string\mbox{\string\hyperref[thm:prAtEnd\pratendcountercurrent]{\proofname}}}, + }, + no number/.style={ + stared + }, + see full proof/.style={ + text link={See \hyperref[proof:prAtEnd\pratendcountercurrent]{full proof} on page~\pageref{proof:prAtEnd\pratendcountercurrent}.} + }, + one big link/.style={ + text link={\hyperref[proof:prAtEnd\pratendcountercurrent] {#1}} + }, + one big link/.default={% + See proof on page~\pageref*{proof:prAtEnd\pratendcountercurrent}. + }, + one big link translated/.style={ + one big link={#1~\pageref*{proof:prAtEnd\pratendcountercurrent}.} + }, + text link section/.style={% + text link={See \hyperref[proof:prAtEnd\pratendcountercurrent]{proof} in \autoref{proofsection:prAtEnd\pratendcountercurrent}.} + }, + text link section full proof/.style={% + text link={See \hyperref[proof:prAtEnd\pratendcountercurrent]{full proof} in \autoref{proofsection:prAtEnd\pratendcountercurrent}.} + }, + default text link/.style={ + text link={See \hyperref[proof:prAtEnd\pratendcountercurrent]{proof} on page~\pageref{proof:prAtEnd\pratendcountercurrent}.}, + }, + text proof translated/.style={ + text proof={#1 \string\autoref{thm:prAtEnd\pratendcountercurrent}}, + }, + default text proof/.style={ + text proof={Proof of \string\autoref{thm:prAtEnd\pratendcountercurrent}}, + }, + %%%% Defaults + bare defaults/.style={ + end, + link to proof, + no restate, + category=defaultcategory, + default text link, + default text proof, + restate command=pratenddummymacro, + }, + configuration options/.style/.expand once={ + % This styles will contain the configuration + % given as options of the package like: + % \usepackage[conf={normal, no link to proof}]{proof-at-the-end} + % The package options does not accept macros and valued keys + % due to some fundamental issues: + % https://tex.stackexchange.com/questions/489564/use-unexpanded-macro-in-package-options/489570#489570 + % so if you need to write macro/valued key, edit instead the + % style "/prAtEnd/global custom defaults" or + % "local /prAtEnd/custom defaults" for local changes instead. + \pratendOptconf% + }, + global custom defaults/.style={ + %% you can put in this style any global defaults + %% that should overwrite the usual defaults. + }, + local custom defaults/.style={ + %% you can put in this style any overwrite of the defaults + %% that should be "local" and changed over the file, like + % the category for a given section. + }, + all defaults/.style={ + %% Load all the style that sets the default values + bare defaults, + configuration options, + global custom defaults, + local custom defaults, + }, +} + +\newcounter{counterAllProofEnd} +\stepcounter{counterAllProofEnd} + +\NewDocumentEnvironment{theoremEndRestateBefore}{mO{}m+b}{ + \stepcounter{counterAllProofEnd}% + \protected@edef\currcounterval{\roman{counterAllProofEnd}} + \protected@edef\temprest{\noexpand\begin{restatable*}[#2]{#1}{prAtEndRestate\currcounterval}\noexpand\label{thm:prAtEnd\currcounterval}}% + \expandafter\protected@xdef\csname #3\endcsname{\currcounterval}% + \temprest% + #4% + \end{restatable*}% +}{} + +\NewDocumentEnvironment{theoremEnd}{O{}mO{}+b}{ + % The first facultative argument will be the options: type of proof you want, the file to which you want to write... + % The first mandatory option is the type of the theorem (thm,lemma,...) + % The second facultative argument will be the title + % the second mandatory option is the theorem (will \label inside eventually) + % the last mandatory option is the proof + \global\def\pratendlastoptions{#1}% + \pgfkeys{% + /prAtEnd/.cd, + all defaults, + #1 + }% + \stepcounter{counterAllProofEnd}% + %% Pre-expand the restatable environment. Need protected + %% otherwise can't have $\mathtt{G}$ in the title + \protected@edef\temprest{\noexpand\begin{restatable}[#3]{#2}{prAtEndRestate\roman{counterAllProofEnd}}}% + %% Create the file if it's the first time + \eraseIfNeeded{\category}% + %% If the theorem must be written here: + \unless\ifallattheend% + %% Restate the theorem if it was stated before: + \ifrestatedbefore% + \protected@xdef\pratendcountercurrent{\csname #4\endcsname} % Store the current (alpha value of the) counter + \csname prAtEndRestate\pratendcountercurrent\endcsname % Restate the theorem + \fi% + %% Otherwise just state the theorem in a restatable environment + \unless\ifrestatedbefore% + \temprest% + \label{thm:prAtEnd\roman{counterAllProofEnd}}% + #4% + \end{restatable}% + %% Store the current (alpha value of the) counter + %% in \pratendcountercurrent + \protected@xdef\pratendcountercurrent{\roman{counterAllProofEnd}} % + \fi% + %% Create a custom alias to restate the theorem + \expandafter\protected@xdef\csname \pratendcustomrestate\endcsname{\noexpand\csname prAtEndRestate\pratendcountercurrent\endcsname}% + %% Restate the theorem if needed in appendix + \ifrestatethm + \appendtofile{\prefixPrAtEndFiles\category.tex}{\string\prAtEndRestate\pratendcountercurrent*} + \fi% + \fi% + %% If the theorem is not stated in the main text, + %% write it at the end + \ifallattheend% + %% Store the current (alpha value of the) counter + %% in \pratendcountercurrent + \protected@xdef\pratendcountercurrent{\roman{counterAllProofEnd}} + %% Create a custom alias to restate the theorem + \expandafter\protected@xdef\csname \pratendcustomrestate\endcsname{\noexpand\csname prAtEndRestate\pratendcountercurrent\endcsname}% + \appendtofile{\prefixPrAtEndFiles\category.tex}{\string\begin{restatable}[#3]{#2}{prAtEndRestate\pratendcountercurrent}\string\label{thm:prAtEnd\pratendcountercurrent}\detokenize{#4}\string\end{restatable}}% + \fi% +}{} + +\NewDocumentEnvironment{proofEnd}{O{}+b}{ + \pgfkeys{% + /prAtEnd/.cd, + all defaults, + prAtEndTmpStyle/.style/.expand once={\pratendlastoptions}, + prAtEndTmpStyle, + #1 + }% + \unless\ifallattheend + %% Write eventually a link to the proof + \iflinktoproof% + \pratendtextlink{}% + \fi% + %% And eventually the proof + \ifproofhere% + \begin{proof}% + #2% + \end{proof}% + \fi% + \fi% + %% Write the proof at the end + \ifproofend% + \appendtofile{\prefixPrAtEndFiles\category.tex}{\string\label{proofsection:prAtEnd\pratendcountercurrent}\string\begin{proof}[\pratendtextproof]\string\phantomsection\string\label{proof:prAtEnd\pratendcountercurrent}\detokenize{#2}\string\end{proof}}% + \fi% +}{} + + +%%%%% Text in appendix + +\NewDocumentEnvironment{textAtEnd}{O{}+b}{ + % Use it to put normal text in Appendix. + \pgfkeys{ + /prAtEnd/.cd, + all defaults, + #1 + }% + \ifboth% + #2% + \fi% + \eraseIfNeeded{\category}% + \appendtofile{\prefixPrAtEndFiles\category.tex}{\detokenize{#2}}% +}{} + +\NewDocumentCommand\textEnd{O{}+m}{% + \begin{textAtEnd}[#1]% + #2% + \end{textAtEnd}% +} + +\NewDocumentCommand\printProofs{O{defaultcategory}}{ + \input{\prefixPrAtEndFiles#1.tex} +} + + +%%% You can easily modify the defaults: +% \pgfkeys{/prAtEnd/custom defaults/.style={ +% category=greattheorem +% } +% } +%%% Or create new styles to apply: +% \pgfkeys{/prAtEnd/great category/.style={ +% category=greattheorem +% } +% } + + +\endinput diff --git a/doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/xparse.sty b/doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/xparse.sty new file mode 100644 index 00000000..91b35fd7 --- /dev/null +++ b/doc/papers/2019_efficient_posix_submatch_extraction_on_nfa/xparse.sty @@ -0,0 +1,2317 @@ +%% +%% This is file `xparse.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% xparse.dtx (with options: `package') +%% +%% Copyright (C) 2009-2019 The LaTeX3 Project +%% +%% It may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License (LPPL), either version 1.3c of +%% this license or (at your option) any later version. The latest +%% version of this license is in the file: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% This file is part of the "l3packages bundle" (The Work in LPPL) +%% and all files in that bundle must be distributed together. +%% +%% File: xparse.dtx +\RequirePackage{expl3}[2018-04-12] +\@ifpackagelater{expl3}{2018-04-12} + {} + {% + \PackageError{xparse}{Support package l3kernel too old} + {% + Please install an up to date version of l3kernel\MessageBreak + using your TeX package manager or from CTAN.\MessageBreak + \MessageBreak + Loading xparse will abort!% + }% + \endinput + } +\ProvidesExplPackage{xparse}{2019-03-05}{} + {L3 Experimental document command parser} +\tl_new:N \l__xparse_arg_spec_tl +\tl_new:N \l__xparse_args_tl +\tl_new:N \l__xparse_args_i_tl +\tl_new:N \l__xparse_args_ii_tl +\int_new:N \l__xparse_current_arg_int +\bool_new:N \l__xparse_defaults_bool +\tl_new:N \l__xparse_defaults_tl +\bool_new:N \l__xparse_environment_bool +\str_new:N \l__xparse_environment_str +\bool_new:N \l__xparse_expandable_bool +\tl_new:N \l__xparse_expandable_aux_name_tl +\tl_set:Nn \l__xparse_expandable_aux_name_tl + { + \l__xparse_function_tl \c_space_tl + ( arg~ \int_use:N \l__xparse_current_arg_int ) + } +\int_new:N \g__xparse_grabber_int +\tl_new:N \l__xparse_fn_tl +\tl_new:N \l__xparse_fn_code_tl +\tl_new:N \l__xparse_function_tl +\bool_new:N \l__xparse_grab_expandably_bool +\bool_new:N \l__xparse_obey_spaces_bool +\tl_new:N \l__xparse_last_delimiters_tl +\bool_new:N \l__xparse_long_bool +\int_new:N \l__xparse_m_args_int +\bool_new:N \l__xparse_prefixed_bool +\tl_new:N \l__xparse_process_all_tl +\tl_new:N \l__xparse_process_one_tl +\bool_new:N \l__xparse_process_some_bool +\tl_new:N \l__xparse_saved_args_tl +\tl_new:N \l__xparse_signature_tl +\bool_new:N \l__xparse_some_obey_spaces_bool +\bool_new:N \l__xparse_some_long_bool +\bool_new:N \l__xparse_some_short_bool +\prop_new:N \l__xparse_tmp_prop +\tl_new:N \l__xparse_tmpa_tl +\tl_new:N \l__xparse_tmpb_tl +\cs_new_eq:NN \__xparse_tmp:w ? +\cs_new_protected:Npn \__xparse_declare_cmd:Nnn + { + \bool_set_false:N \l__xparse_expandable_bool + \__xparse_declare_cmd_aux:Nnn + } +\cs_new_protected:Npn \__xparse_declare_expandable_cmd:Nnn + { + \bool_set_true:N \l__xparse_expandable_bool + \__xparse_declare_cmd_aux:Nnn + } +\cs_new_protected:Npn \__xparse_declare_cmd_aux:Nnn #1#2#3 + { + \cs_if_exist:NTF #1 + { + \__kernel_msg_info:nnxx { xparse } { redefine-command } + { \token_to_str:N #1 } { \tl_to_str:n {#2} } + } + { + \bool_lazy_or:nnT + { \cs_if_exist_p:c { \cs_to_str:N #1 ~ code } } + { \cs_if_exist_p:c { \cs_to_str:N #1 ~ defaults } } + { + \__kernel_msg_warning:nnx { xparse } { unsupported-let } + { \token_to_str:N #1 } + } + \__kernel_msg_info:nnxx { xparse } { define-command } + { \token_to_str:N #1 } { \tl_to_str:n {#2} } + } + \bool_set_false:N \l__xparse_environment_bool + \__xparse_declare_cmd_internal:Nnnn #1 {#2} {#3} { } + } +\cs_new_protected:Npn \__xparse_declare_cmd_internal:Nnnn #1#2#3#4 + { + \tl_set:Nx \l__xparse_function_tl { \cs_to_str:N #1 } + \tl_set:Nx \l__xparse_fn_tl + { \exp_not:c { \l__xparse_function_tl \c_space_tl } } + \__xparse_normalize_arg_spec:n {#2} + \exp_args:No \__xparse_prepare_signature:n \l__xparse_arg_spec_tl + \__xparse_declare_cmd_code:Nnn #1 {#2} {#3} + #4 + \__xparse_break_point:n {#2} + } +\cs_generate_variant:Nn \__xparse_declare_cmd_internal:Nnnn { cnx } +\cs_new_eq:NN \__xparse_break_point:n \use_none:n +\cs_new_protected:Npn \__xparse_declare_cmd_code:Nnn + { + \bool_if:NTF \l__xparse_grab_expandably_bool + { \__xparse_declare_cmd_code_expandable:Nnn } + { \__xparse_declare_cmd_code_aux:Nnn } + } +\cs_new_protected:Npn \__xparse_declare_cmd_code_aux:Nnn #1#2#3 + { + \cs_generate_from_arg_count:cNnn + { \l__xparse_function_tl \c_space_tl code } + \cs_set_protected:Npn \l__xparse_current_arg_int {#3} + \cs_set_protected_nopar:Npx #1 + { + \bool_if:NTF \l__xparse_environment_bool + { + \__xparse_start_env:nnnnn { \exp_not:n {#2} } + { \l__xparse_environment_str } + } + { + \__xparse_start:nNNnnn { \exp_not:n {#2} } + \exp_not:c { \l__xparse_function_tl \c_space_tl } + \exp_not:c { \l__xparse_function_tl \c_space_tl code } + } + { \exp_not:o \l__xparse_signature_tl } + { + \bool_if:NT \l__xparse_defaults_bool + { \exp_not:o \l__xparse_defaults_tl } + } + { + \bool_if:NT \l__xparse_process_some_bool + { \exp_not:o \l__xparse_process_all_tl } + } + } + } +\cs_new_protected:Npn \__xparse_declare_cmd_code_expandable:Nnn #1#2#3 + { + \exp_args:Ncc \cs_generate_from_arg_count:NNnn + { \l__xparse_function_tl \c_space_tl code } + { cs_set \bool_if:NF \l__xparse_expandable_bool { _protected } :Npn } + \l__xparse_current_arg_int {#3} + \bool_if:NT \l__xparse_defaults_bool + { + \use:x + { + \cs_generate_from_arg_count:cNnn + { \l__xparse_function_tl \c_space_tl defaults } + \cs_set:Npn \l__xparse_current_arg_int + { \exp_not:o \l__xparse_defaults_tl } + } + } + \bool_if:NTF \l__xparse_expandable_bool + { \cs_set_nopar:Npx } { \cs_set_protected_nopar:Npx } #1 + { + \exp_not:N \__xparse_start_expandable:nNNNNn + { \exp_not:n {#2} } + \exp_not:c { \l__xparse_function_tl \c_space_tl } + \exp_not:c + { + \l__xparse_function_tl \c_space_tl + \bool_if:NT \l__xparse_some_short_bool + { \bool_if:NT \l__xparse_some_long_bool { \c_space_tl } } + } + \exp_not:c { \l__xparse_function_tl \c_space_tl code } + \bool_if:NTF \l__xparse_defaults_bool + { \exp_not:c { \l__xparse_function_tl \c_space_tl defaults } } + { ? } + { \exp_not:o \l__xparse_signature_tl } + } + \bool_if:NTF \l__xparse_some_long_bool + { + \bool_if:NT \l__xparse_some_short_bool + { + \cs_set_nopar:cpx { \l__xparse_function_tl \c_space_tl \c_space_tl } + ##1##2 { ##1 {##2} } + } + \cs_set:cpx + } + { \cs_set_nopar:cpx } + { \l__xparse_function_tl \c_space_tl } ##1##2 { ##1 {##2} } + } +\cs_new_protected:Npn \__xparse_declare_env:nnnn #1#2 + { + \str_set:Nx \l__xparse_environment_str {#1} + \str_set:Nx \l__xparse_environment_str + { \tl_trim_spaces:o { \l__xparse_environment_str } } + \cs_if_exist:cTF { \l__xparse_environment_str } + { + \__kernel_msg_info:nnxx { xparse } { redefine-environment } + { \l__xparse_environment_str } { \tl_to_str:n {#2} } + } + { + \__kernel_msg_info:nnxx { xparse } { define-environment } + { \l__xparse_environment_str } { \tl_to_str:n {#2} } + } + \bool_set_false:N \l__xparse_expandable_bool + \bool_set_true:N \l__xparse_environment_bool + \exp_args:NV \__xparse_declare_env_internal:nnnn + \l__xparse_environment_str {#2} + } +\cs_new_protected:Npn \__xparse_declare_env_internal:nnnn #1#2#3#4 + { + \__xparse_declare_cmd_internal:cnxn { environment~ #1 } {#2} + { + \cs_set_nopar:Npx \exp_not:c { environment~ #1 ~end~aux } + { + \exp_not:N \exp_not:N \exp_not:c { environment~ #1~end~aux~ } + \exp_not:n { \exp_not:o \l__xparse_args_tl } + } + \exp_not:n {#3} + } + { + \cs_set_nopar:cpx { environment~ #1 ~end } + { \exp_not:c { environment~ #1 ~end~aux } } + \cs_generate_from_arg_count:cNnn + { environment~ #1 ~end~aux~ } \cs_set:Npn + \l__xparse_current_arg_int {#4} + \cs_set_eq:cc {#1} { environment~ #1 } + \cs_set_eq:cc { end #1 } { environment~ #1 ~end } + } + } +\cs_new_protected:Npn \__xparse_start_env:nnnnn #1#2 + { + \str_set:Nn \l__xparse_environment_str {#2} + \bool_set_true:N \l__xparse_environment_bool + \__xparse_start_aux:ccnnnn + { environment~ \l__xparse_environment_str \c_space_tl } + { environment~ \l__xparse_environment_str \c_space_tl code } + {#1} + } +\cs_new_protected:Npx \__xparse_start:nNNnnn #1#2#3 + { + \exp_not:c { xparse~function~is~not~expandable } + \exp_not:n { \bool_set_false:N \l__xparse_environment_bool } + \exp_not:N \__xparse_start_aux:NNnnnn + #2 #3 {#1} + } +\cs_new_protected:Npn \__xparse_start_aux:NNnnnn #1#2#3#4#5#6 + { + \tl_clear:N \l__xparse_args_tl + \tl_set:Nn \l__xparse_fn_tl {#1} + \tl_set:Nn \l__xparse_fn_code_tl {#2} + \tl_set:Nn \l__xparse_defaults_tl {#5} + \tl_set:Nn \l__xparse_process_all_tl {#6} + #4 \__xparse_run_code: + } +\cs_generate_variant:Nn \__xparse_start_aux:NNnnnn { cc } +\cs_new_protected:Npn \__xparse_run_code: + { + \tl_if_empty:NF \l__xparse_defaults_tl { \__xparse_defaults: } + \tl_if_empty:NF \l__xparse_process_all_tl { \__xparse_args_process: } + \exp_after:wN \l__xparse_fn_code_tl \l__xparse_args_tl + } +\cs_new_protected:Npn \__xparse_defaults: + { + \__xparse_defaults_def: + \tl_set_eq:NN \l__xparse_args_i_tl \l__xparse_args_tl + \__xparse_defaults_aux: \__xparse_defaults_aux: \__xparse_defaults_aux: + \__xparse_defaults_aux: \__xparse_defaults_aux: \__xparse_defaults_aux: + \__xparse_defaults_aux: \__xparse_defaults_aux: \__xparse_defaults_aux: + \__xparse_defaults_error:w + \q_recursion_stop + \tl_set_eq:NN \l__xparse_args_tl \l__xparse_args_i_tl + } +\cs_new_protected:Npn \__xparse_defaults_aux: + { + \tl_set:Nx \l__xparse_args_ii_tl + { \exp_after:wN \__xparse_tmp:w \l__xparse_args_i_tl } + \tl_if_eq:NNT \l__xparse_args_ii_tl \l__xparse_args_i_tl + { \use_none_delimit_by_q_recursion_stop:w } + \tl_set_eq:NN \l__xparse_args_i_tl \l__xparse_args_ii_tl + } +\cs_new_protected:Npn \__xparse_defaults_error:w \q_recursion_stop + { + \__kernel_msg_error:nnx { xparse } { loop-in-defaults } + { \__xparse_environment_or_command: } + } +\cs_new_protected:Npn \__xparse_defaults_def: + { + \tl_clear:N \l__xparse_tmpa_tl + \int_zero:N \l__xparse_current_arg_int + \__xparse_tl_mapthread_function:NNN \l__xparse_args_tl \l__xparse_defaults_tl + \__xparse_defaults_def:nn + \cs_generate_from_arg_count:NNVo \__xparse_tmp:w \cs_set:Npn + \l__xparse_current_arg_int \l__xparse_tmpa_tl + } +\cs_generate_variant:Nn \cs_generate_from_arg_count:NNnn { NNVo } +\cs_new_protected:Npn \__xparse_defaults_def:nn + { + \int_incr:N \l__xparse_current_arg_int + \exp_args:NV \__xparse_defaults_def:nnn \l__xparse_current_arg_int + } +\cs_new_protected:Npn \__xparse_defaults_def:nnn #1#2#3 + { + \tl_put_right:Nx \l__xparse_tmpa_tl + { + { + \exp_not:N \exp_not:n + { + \tl_if_novalue:nTF {#2} + { \exp_not:o {#3} } + { \exp_not:n { ## #1 } } + } + } + } + } +\cs_new_protected:Npn \__xparse_args_process: + { + \tl_clear:N \l__xparse_args_ii_tl + \__xparse_tl_mapthread_function:NNN + \l__xparse_args_tl + \l__xparse_process_all_tl + \__xparse_args_process_loop:nn + \tl_set_eq:NN \l__xparse_args_tl \l__xparse_args_ii_tl + } +\cs_new_protected:Npn \__xparse_args_process_loop:nn #1#2 + { + \tl_set:Nn \ProcessedArgument {#1} + \tl_if_novalue:nF {#1} + { \tl_map_function:nN {#2} \__xparse_args_process_aux:n } + \tl_put_right:No \l__xparse_args_ii_tl + { \exp_after:wN { \ProcessedArgument } } + } +\cs_new_protected:Npn \__xparse_args_process_aux:n + { \exp_args:No \__xparse_args_process_aux:nn { \ProcessedArgument } } +\cs_new_protected:Npn \__xparse_args_process_aux:nn #1#2 { #2 {#1} } +\cs_new:Npn \__xparse_start_expandable:nNNNNn #1#2#3#4#5#6 + { #6 \__xparse_end_expandable:NNw #5 #4 \q__xparse #2#3 } +\cs_new:Npn \__xparse_end_expandable:NNw #1#2 + { \__xparse_end_expandable_aux:w #1#2 \prg_do_nothing: } +\cs_new:Npn \__xparse_end_expandable_aux:w #1#2#3 \q__xparse + { \exp_args:No \__xparse_end_expandable_aux:nNNNN {#3} #1 #2 } +\cs_new:Npn \__xparse_end_expandable_aux:nNNNN #1#2#3#4#5 + { + \token_if_eq_charcode:NNT ? #2 { \exp_after:wN \use_iv:nnnn } + \__xparse_end_expandable_defaults:nnnNNn {#1} { } {#1} #2#3 + { } { } { } { } { } { } { } { } { } { } + { + \__kernel_msg_expandable_error:nnf + { xparse } { loop-in-defaults } + { \exp_args:Nf \tl_trim_spaces:n { \token_to_str:N #4 } } + \use_iv:nnnn + } + \q_stop + } +\cs_new:Npn \__xparse_end_expandable_defaults:nnnNNn #1#2#3#4#5#6 + { + #6 + \str_if_eq:nnTF {#1} {#2} + { \use_i_delimit_by_q_stop:nw { #5 #1 } } + { + \exp_args:No \__xparse_tl_mapthread_function:nnN + { #4 #1 } {#3} + \__xparse_end_expandable_defaults:nnw + \__xparse_end_expandable_defaults:nnnNNn { } {#1} {#3} #4 #5 + } + } +\cs_new:Npn \__xparse_end_expandable_defaults:nnw #1#2 + { + \tl_if_novalue:nTF {#2} + { \exp_args:No \__xparse_end_expandable_defaults:nw {#1} } + { \__xparse_end_expandable_defaults:nw {#2} } + } +\cs_new:Npn \__xparse_end_expandable_defaults:nw + #1#2 \__xparse_end_expandable_defaults:nnnNNn #3 + { #2 \__xparse_end_expandable_defaults:nnnNNn { #3 {#1} } } +\cs_new_protected:Npn \__xparse_normalize_arg_spec:n #1 + { + \int_zero:N \l__xparse_current_arg_int + \tl_clear:N \l__xparse_last_delimiters_tl + \tl_clear:N \l__xparse_arg_spec_tl + \bool_set_true:N \l__xparse_grab_expandably_bool + \bool_set_false:N \l__xparse_obey_spaces_bool + \bool_set_false:N \l__xparse_long_bool + \bool_set_false:N \l__xparse_some_obey_spaces_bool + \bool_set_false:N \l__xparse_some_long_bool + \bool_set_false:N \l__xparse_some_short_bool + \__xparse_normalize_arg_spec_loop:n #1 + \q_recursion_tail \q_recursion_tail \q_recursion_tail \q_recursion_stop + \int_compare:nNnT \l__xparse_current_arg_int > 9 + { + \__kernel_msg_error:nnxx { xparse } { too-many-arguments } + { \__xparse_environment_or_command: } { \tl_to_str:n {#1} } + \__xparse_bad_def:wn + } + \bool_if:NT \l__xparse_expandable_bool + { + \tl_if_empty:NF \l__xparse_last_delimiters_tl + { + \__kernel_msg_error:nnxx { xparse } { expandable-ending-optional } + { \iow_char:N \\ \l__xparse_function_tl } { \tl_to_str:n {#1} } + \__xparse_bad_def:wn + } + } + \bool_if:NT \l__xparse_expandable_bool + { \bool_set_true:N \l__xparse_grab_expandably_bool } + \bool_if:NT \l__xparse_environment_bool + { \bool_set_false:N \l__xparse_grab_expandably_bool } + } +\cs_new_protected:Npn \__xparse_normalize_arg_spec_loop:n #1 + { + \quark_if_recursion_tail_stop:n {#1} + \int_incr:N \l__xparse_current_arg_int + \cs_if_exist_use:cF { __xparse_normalize_type_ \tl_to_str:n {#1} :w } + { + \__kernel_msg_error:nnxx { xparse } { unknown-argument-type } + { \__xparse_environment_or_command: } { \tl_to_str:n {#1} } + \__xparse_bad_def:wn + } + } +\cs_set_protected:Npn \__xparse_tmp:w #1 + { + \cs_new_protected:Npn \__xparse_normalize_type_d:w ##1##2 + { + \quark_if_recursion_tail_stop_do:nn {##2} { \__xparse_bad_arg_spec:wn } + \__xparse_normalize_type_D:w {##1} {##2} {#1} + } + \cs_new_protected:Npn \__xparse_normalize_type_e:w ##1 + { + \quark_if_recursion_tail_stop_do:nn {##1} { \__xparse_bad_arg_spec:wn } + \__xparse_normalize_type_E:w {##1} { } + } + \cs_new_protected:Npn \__xparse_normalize_type_g:w + { \__xparse_normalize_type_G:w {#1} } + \cs_new_protected:Npn \__xparse_normalize_type_o:w + { \__xparse_normalize_type_D:w [ ] {#1} } + \cs_new_protected:Npn \__xparse_normalize_type_O:w + { \__xparse_normalize_type_D:w [ ] } + \cs_new_protected:Npn \__xparse_normalize_type_r:w ##1##2 + { + \quark_if_recursion_tail_stop_do:nn {##2} { \__xparse_bad_arg_spec:wn } + \__xparse_normalize_type_R:w {##1} {##2} {#1} + } + \cs_new_protected:Npn \__xparse_normalize_type_s:w + { \__xparse_normalize_type_t:w * } + } +\exp_args:No \__xparse_tmp:w { \c_novalue_tl } +\cs_new_protected:cpn { __xparse_normalize_type_>:w } #1#2 + { + \quark_if_recursion_tail_stop_do:nn {#2} { \__xparse_bad_arg_spec:wn } + \bool_if:NT \l__xparse_expandable_bool + { + \__kernel_msg_error:nnxx { xparse } { processor-in-expandable } + { \iow_char:N \\ \l__xparse_function_tl } { \tl_to_str:n {#1} } + \__xparse_bad_def:wn + } + \tl_put_right:Nn \l__xparse_arg_spec_tl { > {#1} } + \int_decr:N \l__xparse_current_arg_int + \bool_set_false:N \l__xparse_grab_expandably_bool + \__xparse_normalize_arg_spec_loop:n {#2} + } +\cs_new_protected:cpn { __xparse_normalize_type_+:w } #1 + { + \quark_if_recursion_tail_stop_do:nn {#1} { \__xparse_bad_arg_spec:wn } + \bool_if:NT \l__xparse_long_bool + { + \__kernel_msg_error:nnxx { xparse } { two-markers } + { \__xparse_environment_or_command: } { + } + \__xparse_bad_def:wn + } + \bool_set_true:N \l__xparse_long_bool + \int_decr:N \l__xparse_current_arg_int + \__xparse_normalize_arg_spec_loop:n {#1} + } +\cs_new_protected:cpn { __xparse_normalize_type_!:w } #1 + { + \quark_if_recursion_tail_stop_do:nn {#1} { \__xparse_bad_arg_spec:wn } + \bool_if:NT \l__xparse_obey_spaces_bool + { + \__kernel_msg_error:nnxx { xparse } { two-markers } + { \__xparse_environment_or_command: } { ! } + \__xparse_bad_def:wn + } + \bool_set_true:N \l__xparse_obey_spaces_bool + \bool_set_true:N \l__xparse_some_obey_spaces_bool + \int_decr:N \l__xparse_current_arg_int + \__xparse_normalize_arg_spec_loop:n {#1} + } +\cs_new_protected:Npn \__xparse_normalize_type_D:w #1#2#3 + { + \quark_if_recursion_tail_stop_do:nn {#3} { \__xparse_bad_arg_spec:wn } + \__xparse_single_char_check:n {#1} + \__xparse_single_char_check:n {#2} + \__xparse_add_arg_spec:n { D #1 #2 {#3} } + \tl_put_right:Nn \l__xparse_last_delimiters_tl {#1} + \bool_set_false:N \l__xparse_grab_expandably_bool + \__xparse_normalize_arg_spec_loop:n + } +\cs_new_protected:Npn \__xparse_normalize_type_E:w #1#2 + { + \quark_if_recursion_tail_stop_do:nn {#2} { \__xparse_bad_arg_spec:wn } + \tl_if_blank:nT {#1} { \__xparse_bad_arg_spec:wn } + \tl_map_function:nN {#1} \__xparse_single_char_check:n + \__xparse_normalize_E_unique_check:w #1 \q_nil \q_stop + \int_compare:nNnT { \tl_count:n {#2} } > { \tl_count:n {#1} } + { \__xparse_bad_arg_spec:wn } + \__xparse_add_arg_spec:n { E {#1} {#2} } + \tl_put_right:Nn \l__xparse_last_delimiters_tl {#1} + \bool_set_false:N \l__xparse_grab_expandably_bool + \int_add:Nn \l__xparse_current_arg_int { \tl_count:n {#1} - 1 } + \__xparse_normalize_arg_spec_loop:n + } +\cs_new_protected:Npn \__xparse_normalize_E_unique_check:w #1#2 \q_stop + { + \quark_if_nil:NF #1 + { + \tl_if_in:nnT {#2} {#1} { \__xparse_bad_arg_spec:wn } + \__xparse_normalize_E_unique_check:w #2 \q_stop + } + } +\cs_new_protected:Npn \__xparse_normalize_type_G:w #1 + { + \quark_if_recursion_tail_stop_do:nn {#1} { \__xparse_bad_arg_spec:wn } + \__xparse_normalize_check_gv:N G + \__xparse_add_arg_spec:n { G {#1} } + \tl_put_right:Nn \l__xparse_last_delimiters_tl { { } } + \__xparse_normalize_arg_spec_loop:n + } +\cs_new_protected:Npn \__xparse_normalize_type_t:w #1 + { + \quark_if_recursion_tail_stop_do:Nn #1 { \__xparse_bad_arg_spec:wn } + \__xparse_single_char_check:n {#1} + \tl_put_right:Nx \l__xparse_arg_spec_tl + { + \bool_if:NT \l__xparse_obey_spaces_bool { ! } + t \exp_not:n {#1} + } + \tl_put_right:Nn \l__xparse_last_delimiters_tl {#1} + \bool_set_false:N \l__xparse_grab_expandably_bool + \bool_set_false:N \l__xparse_obey_spaces_bool + \bool_set_false:N \l__xparse_long_bool + \__xparse_normalize_arg_spec_loop:n + } +\cs_new_protected:Npn \__xparse_normalize_type_l:w + { + \__xparse_normalize_check_lu:N l + \__xparse_add_arg_spec_mandatory:n { l } + \__xparse_normalize_arg_spec_loop:n + } +\cs_new_protected:Npn \__xparse_normalize_type_m:w + { + \__xparse_delimiter_check:nnn { } { m } { \iow_char:N \{ } + \__xparse_add_arg_spec_mandatory:n { m } + \__xparse_normalize_arg_spec_loop:n + } +\cs_new_protected:Npn \__xparse_normalize_type_R:w #1#2#3 + { + \quark_if_recursion_tail_stop_do:nn {#3} { \__xparse_bad_arg_spec:wn } + \__xparse_single_char_check:n {#1} + \__xparse_single_char_check:n {#2} + \__xparse_delimiter_check:nnn {#1} { R/r } { \tl_to_str:n {#1} } + \bool_set_false:N \l__xparse_grab_expandably_bool + \__xparse_add_arg_spec_mandatory:n { R #1 #2 {#3} } + \__xparse_normalize_arg_spec_loop:n + } +\cs_new_protected:Npn \__xparse_normalize_type_u:w #1 + { + \quark_if_recursion_tail_stop_do:nn {#1} { \__xparse_bad_arg_spec:wn } + \__xparse_normalize_check_lu:N u + \__xparse_add_arg_spec_mandatory:n { u {#1} } + \__xparse_normalize_arg_spec_loop:n + } +\cs_new_protected:Npn \__xparse_normalize_type_v:w + { + \__xparse_normalize_check_gv:N v + \__xparse_add_arg_spec_mandatory:n { v } + \__xparse_normalize_arg_spec_loop:n + } +\cs_new_protected:Npn \__xparse_normalize_type_b:w #1 + { + \bool_if:NF \l__xparse_environment_bool + { + \__kernel_msg_error:nnxx + { xparse } { invalid-command-arg } + { \__xparse_environment_or_command: } { b } + \__xparse_bad_def:wn + } + \tl_clear:N \l__xparse_last_delimiters_tl + \__xparse_add_arg_spec:n { b } + \quark_if_recursion_tail_stop:n {#1} + \__kernel_msg_error:nnxx { xparse } { arg-after-body } + { \__xparse_environment_or_command: } + { \tl_to_str:n {#1} } + \__xparse_bad_def:wn + } +\cs_new_protected:Npn \__xparse_single_char_check:n #1 + { + \tl_trim_spaces_apply:nN {#1} \tl_if_single_token:nTF + { + \group_begin: + \tex_escapechar:D = 92 \scan_stop: + \exp_args:Nx \tl_if_single_token:nF + { \exp_args:No \tl_to_str:n { \use:nn #1 { } } } + { + \__kernel_msg_warning:nnxx { xparse } { not-single-char } + { \__xparse_environment_or_command: } { \tl_to_str:n {#1} } + } + \group_end: + } + { + \__kernel_msg_error:nnxx { xparse } { not-single-char } + { \__xparse_environment_or_command: } { \tl_to_str:n {#1} } + \__xparse_bad_def:wn + } + } +\cs_new_protected:Npn \__xparse_normalize_check_gv:N #1 + { + \bool_if:NT \l__xparse_expandable_bool + { + \__kernel_msg_error:nnxx + { xparse } { invalid-expandable-argument-type } + { \iow_char:N \\ \l__xparse_function_tl } { \tl_to_str:n {#1} } + \__xparse_bad_def:wn + } + \bool_set_false:N \l__xparse_grab_expandably_bool + } +\cs_new_protected:Npn \__xparse_normalize_check_lu:N #1 + { + \bool_if:NT \l__xparse_expandable_bool + { + \tl_if_empty:NF \l__xparse_last_delimiters_tl + { + \__kernel_msg_error:nnxx + { xparse } { invalid-after-optional-expandably } + { \iow_char:N \\ \l__xparse_function_tl } { \tl_to_str:n {#1} } + \__xparse_bad_def:wn + } + } + } +\cs_new_protected:Npn \__xparse_delimiter_check:nnn #1#2#3 + { + \tl_map_inline:Nn \l__xparse_last_delimiters_tl + { + \tl_if_eq:nnT {##1} {#1} + { + \__kernel_msg_warning:nnxx { xparse } { optional-mandatory } + {#2} {#3} + } + } + } +\cs_new_protected:Npn \__xparse_bad_arg_spec:wn #1 \__xparse_break_point:n #2 + { + \__kernel_msg_error:nnxx { xparse } { bad-arg-spec } + { \__xparse_environment_or_command: } { \tl_to_str:n {#2} } + } +\cs_new_protected:Npn \__xparse_bad_def:wn #1 \__xparse_break_point:n #2 { } +\cs_new_protected:Npn \__xparse_add_arg_spec:n #1 + { + \bool_lazy_and:nnT + { ! \l__xparse_long_bool } + { \l__xparse_some_long_bool } + { + \bool_if:NT \l__xparse_expandable_bool + { + \__kernel_msg_error:nnx { xparse } { inconsistent-long } + { \iow_char:N \\ \l__xparse_function_tl } + \__xparse_bad_def:wn + } + \bool_set_false:N \l__xparse_grab_expandably_bool + } + \bool_if:NTF \l__xparse_long_bool + { \bool_set_true:N \l__xparse_some_long_bool } + { \bool_set_true:N \l__xparse_some_short_bool } + \tl_put_right:Nx \l__xparse_arg_spec_tl + { + \bool_if:NT \l__xparse_long_bool { + } + \bool_if:NT \l__xparse_obey_spaces_bool { ! } + \exp_not:n {#1} + } + \bool_set_false:N \l__xparse_long_bool + \bool_set_false:N \l__xparse_obey_spaces_bool + } +\cs_new_protected:Npn \__xparse_add_arg_spec_mandatory:n #1 + { + \bool_if:NT \l__xparse_some_obey_spaces_bool + { + \__kernel_msg_error:nnxx { xparse } { non-trailing-obey-spaces } + { \__xparse_environment_or_command: } { \tl_to_str:n {#1} } + \__xparse_bad_def:wn + } + \tl_clear:N \l__xparse_last_delimiters_tl + \__xparse_add_arg_spec:n {#1} + } +\cs_new_protected:Npn \__xparse_prepare_signature:n #1 + { + \int_zero:N \l__xparse_current_arg_int + \bool_set_false:N \l__xparse_long_bool + \bool_set_false:N \l__xparse_obey_spaces_bool + \int_zero:N \l__xparse_m_args_int + \bool_set_false:N \l__xparse_defaults_bool + \tl_clear:N \l__xparse_defaults_tl + \tl_clear:N \l__xparse_process_all_tl + \tl_clear:N \l__xparse_process_one_tl + \bool_set_false:N \l__xparse_process_some_bool + \tl_clear:N \l__xparse_signature_tl + \__xparse_prepare_signature:N #1 \q_recursion_tail \q_recursion_stop + \bool_if:NF \l__xparse_expandable_bool { \__xparse_flush_m_args: } + } +\cs_new_protected:Npn \__xparse_prepare_signature:N + { + \bool_set_false:N \l__xparse_prefixed_bool + \__xparse_prepare_signature_bypass:N + } +\cs_new_protected:Npn \__xparse_prepare_signature_bypass:N #1 + { + \quark_if_recursion_tail_stop:N #1 + \use:c + { + __xparse_add + \bool_if:NT \l__xparse_grab_expandably_bool { _expandable } + _type_ \token_to_str:N #1 :w + } + } +\cs_new_protected:cpn { __xparse_add_type_+:w } + { + \__xparse_flush_m_args: + \bool_set_true:N \l__xparse_long_bool + \bool_set_true:N \l__xparse_prefixed_bool + \__xparse_prepare_signature_bypass:N + } +\cs_new_protected:cpn { __xparse_add_type_!:w } + { + \__xparse_flush_m_args: + \bool_set_true:N \l__xparse_obey_spaces_bool + \bool_set_true:N \l__xparse_prefixed_bool + \__xparse_prepare_signature_bypass:N + } +\cs_new_protected:cpn { __xparse_add_type_>:w } #1 + { + \__xparse_flush_m_args: + \bool_set_true:N \l__xparse_prefixed_bool + \bool_set_true:N \l__xparse_process_some_bool + \tl_put_left:Nn \l__xparse_process_one_tl { {#1} } + \__xparse_prepare_signature_bypass:N + } +\cs_new_protected:Npn \__xparse_add_type_b:w + { + \__xparse_flush_m_args: + \__xparse_add_default: + \__xparse_add_grabber:N b + \__xparse_prepare_signature:N + } +\cs_new_protected:Npn \__xparse_add_type_D:w #1#2#3 + { + \__xparse_flush_m_args: + \__xparse_add_default:n {#3} + \__xparse_add_grabber:N D + \tl_put_right:Nn \l__xparse_signature_tl { #1 #2 } + \__xparse_prepare_signature:N + } +\cs_new_protected:Npn \__xparse_add_type_E:w #1#2 + { + \__xparse_flush_m_args: + \__xparse_add_default_E:nn {#1} {#2} + \__xparse_add_grabber:N E + \tl_put_right:Nn \l__xparse_signature_tl { {#1} } + \__xparse_prepare_signature:N + } +\cs_new_protected:Npn \__xparse_add_type_G:w #1 + { + \__xparse_flush_m_args: + \__xparse_add_default:n {#1} + \__xparse_add_grabber:N G + \__xparse_prepare_signature:N + } +\cs_new_protected:Npn \__xparse_add_type_l:w + { + \__xparse_flush_m_args: + \__xparse_add_default: + \__xparse_add_grabber:N l + \__xparse_prepare_signature:N + } +\cs_new_protected:Npn \__xparse_add_type_m:w + { + \__xparse_add_default: + \bool_if:NTF \l__xparse_prefixed_bool + { \__xparse_add_grabber:N m } + { \int_incr:N \l__xparse_m_args_int } + \__xparse_prepare_signature:N + } +\cs_new_protected:Npn \__xparse_add_type_R:w #1#2#3 + { + \__xparse_flush_m_args: + \__xparse_add_default:n {#3} + \__xparse_add_grabber:N R + \tl_put_right:Nn \l__xparse_signature_tl { #1 #2 } + \__xparse_prepare_signature:N + } +\cs_new_protected:Npn \__xparse_add_type_t:w #1 + { + \__xparse_flush_m_args: + \__xparse_add_default: + \__xparse_add_grabber:N t + \tl_put_right:Nn \l__xparse_signature_tl {#1} + \__xparse_prepare_signature:N + } +\cs_new_protected:Npn \__xparse_add_type_u:w #1 + { + \__xparse_flush_m_args: + \__xparse_add_default: + \__xparse_add_grabber:N u + \tl_put_right:Nn \l__xparse_signature_tl { {#1} } + \__xparse_prepare_signature:N + } +\cs_new_protected:Npn \__xparse_add_type_v:w + { + \__xparse_flush_m_args: + \exp_args:No \__xparse_add_default:n \c_novalue_tl + \__xparse_add_grabber:N v + \__xparse_prepare_signature:N + } +\cs_new_protected:Npn \__xparse_flush_m_args: + { + \int_compare:nNnT \l__xparse_m_args_int > 0 + { + \tl_put_right:Nx \l__xparse_signature_tl + { \exp_not:c { __xparse_grab_m_ \int_use:N \l__xparse_m_args_int :w } } + \tl_put_right:Nx \l__xparse_process_all_tl + { \prg_replicate:nn { \l__xparse_m_args_int } { { } } } + } + \int_zero:N \l__xparse_m_args_int + } +\cs_new_protected:Npn \__xparse_add_grabber:N #1 + { + \tl_put_right:Nx \l__xparse_signature_tl + { + \exp_not:c + { + __xparse_grab_ #1 + \bool_if:NT \l__xparse_long_bool { _long } + \bool_if:NT \l__xparse_obey_spaces_bool { _obey_spaces } + :w + } + } + \bool_set_false:N \l__xparse_long_bool + \bool_set_false:N \l__xparse_obey_spaces_bool + \tl_put_right:Nx \l__xparse_process_all_tl + { { \exp_not:o \l__xparse_process_one_tl } } + \tl_clear:N \l__xparse_process_one_tl + } +\cs_new_protected:Npn \__xparse_add_default:n #1 + { + \tl_if_novalue:nTF {#1} + { \__xparse_add_default: } + { + \int_incr:N \l__xparse_current_arg_int + \bool_set_true:N \l__xparse_defaults_bool + \tl_put_right:Nn \l__xparse_defaults_tl { { \prg_do_nothing: #1 } } + } + } +\cs_new_protected:Npn \__xparse_add_default: + { + \int_incr:N \l__xparse_current_arg_int + \tl_put_right:Nn \l__xparse_defaults_tl { \c_novalue_tl } + } +\cs_new_protected:Npn \__xparse_add_default_E:nn #1#2 + { + \tl_map_function:nN {#2} \__xparse_add_default:n + \prg_replicate:nn + { \tl_count:n {#1} - \tl_count:n {#2} } + { \__xparse_add_default: } + } +\cs_new_protected:cpn { __xparse_add_expandable_type_+:w } + { + \bool_set_true:N \l__xparse_long_bool + \__xparse_prepare_signature:N + } +\cs_new_protected:Npn \__xparse_add_expandable_type_D:w + { \__xparse_add_expandable_type_D_aux:NNNn D } +\cs_new_protected:Npn \__xparse_add_expandable_type_D_aux:NNNn #1#2#3#4 + { + \__xparse_add_default:n {#4} + \tl_if_eq:nnTF {#2} {#3} + { \__xparse_add_expandable_type_D_aux:NN #1 #2 } + { \__xparse_add_expandable_type_D_aux:NNN #1 #2 #3 } + \__xparse_prepare_signature:N + } +\cs_new_protected:Npn \__xparse_add_expandable_type_D_aux:NNN #1#2#3 + { + \bool_if:NTF \l__xparse_long_bool + { \cs_set:cpx } + { \cs_set_nopar:cpx } + { \l__xparse_expandable_aux_name_tl } ##1 ##2 #2 ##3 \q__xparse ##4 #3 + { ##1 {##2} {##3} {##4} } + \__xparse_add_expandable_grabber:nn {#1} + { + \exp_not:c { \l__xparse_expandable_aux_name_tl } + \exp_not:n { #2 #3 } + } + } +\cs_new_protected:Npn \__xparse_add_expandable_type_D_aux:NN #1#2 + { + \bool_if:NTF \l__xparse_long_bool + { \cs_set:cpx } + { \cs_set_nopar:cpx } + { \l__xparse_expandable_aux_name_tl } ##1 #2 ##2 #2 + { ##1 {##2} } + \__xparse_add_expandable_grabber:nn { #1_alt } + { + \exp_not:c { \l__xparse_expandable_aux_name_tl } + \exp_not:n {#2} + } + } +\cs_new_protected:Npn \__xparse_add_expandable_type_E:w #1#2 + { + \__xparse_add_default_E:nn {#1} {#2} + \tl_clear:N \l__xparse_tmpb_tl + \tl_map_function:nN {#1} \__xparse_add_expandable_type_E_aux:n + \__xparse_add_expandable_grabber:nn + { E \bool_if:NT \l__xparse_long_bool { _long } } + { + { \exp_not:o \l__xparse_tmpb_tl } + { + \prg_replicate:nn { \tl_count:n {#1} } + { { \c_novalue_tl } } + } + } + \__xparse_prepare_signature:N + } +\cs_new_protected:Npn \__xparse_add_expandable_type_E_aux:n #1 + { + \__xparse_get_grabber:NN #1 \l__xparse_tmpa_tl + \tl_put_right:Nx \l__xparse_tmpb_tl + { \exp_not:o \l__xparse_tmpa_tl \exp_not:N #1 } + } +\cs_new_protected:Npn \__xparse_add_expandable_type_l:w + { \__xparse_add_expandable_type_u:w ## } +\cs_new_protected:Npn \__xparse_add_expandable_type_m:w + { + \__xparse_add_default: + \__xparse_add_expandable_grabber:nn + { m \bool_if:NT \l__xparse_long_bool { _long } } { } + \__xparse_prepare_signature:N + } +\cs_new_protected:Npn \__xparse_add_expandable_type_R:w + { \__xparse_add_expandable_type_D_aux:NNNn R } +\cs_new_protected:Npn \__xparse_add_expandable_type_t:w #1 + { + \__xparse_add_default: + \__xparse_get_grabber:NN #1 \l__xparse_tmpa_tl + \__xparse_add_expandable_grabber:nn { t } + { + \exp_not:o \l__xparse_tmpa_tl + \exp_not:N #1 + } + \__xparse_prepare_signature:N + } +\cs_new_protected:Npn \__xparse_add_expandable_type_u:w #1 + { + \__xparse_add_default: + \bool_if:NTF \l__xparse_long_bool + { \cs_set:cpn } + { \cs_set_nopar:cpn } + { \l__xparse_expandable_aux_name_tl } ##1 \q__xparse ##2 ##3 ##4 #1 + { ##1 {##4} \q__xparse ##2 ##3 } + \__xparse_add_expandable_grabber:nn { u } + { \exp_not:c { \l__xparse_expandable_aux_name_tl } } + \__xparse_prepare_signature:N + } +\cs_new_protected:Npn \__xparse_add_expandable_grabber:nn #1#2 + { + \tl_put_right:Nx \l__xparse_signature_tl + { \exp_not:c { __xparse_expandable_grab_ #1 :w } #2 } + } +\cs_new_protected:Npn \__xparse_get_grabber:NN #1#2 + { + \cs_set:Npn \__xparse_tmp:w ##1 #1 {##1} + \exp_args:Nc \__xparse_get_grabber_auxi:NN + { __xparse_grabber_ \token_to_str:N #1 :w } #2 + } +\cs_new_protected:Npn \__xparse_get_grabber_auxi:NN #1#2 + { + \cs_if_eq:NNTF \__xparse_tmp:w #1 + { \tl_set:Nn #2 {#1} } + { + \cs_if_exist:NTF #1 + { + \int_gincr:N \g__xparse_grabber_int + \exp_args:Nc \__xparse_get_grabber_auxi:NN + { + __xparse_grabber_ + - \int_use:N \g__xparse_grabber_int :w + } + #2 + } + { \__xparse_get_grabber_auxii:NN #1 #2 } + } + } +\cs_new_protected:Npn \__xparse_get_grabber_auxii:NN #1#2 + { + \cs_set_eq:NN #1 \__xparse_tmp:w + \tl_set:Nn #2 {#1} + } +\cs_new_protected:Npn \__xparse_grab_b:w + { \__xparse_grab_b_aux:NNw \cs_set_protected_nopar:Npn \tl_trim_spaces:n } +\cs_new_protected:Npn \__xparse_grab_b_long:w + { \__xparse_grab_b_aux:NNw \cs_set_protected:Npn \tl_trim_spaces:n } +\cs_new_protected:Npn \__xparse_grab_b_obey_spaces:w + { \__xparse_grab_b_aux:NNw \cs_set_protected_nopar:Npn \exp_not:n } +\cs_new_protected:Npn \__xparse_grab_b_long_obey_spaces:w + { \__xparse_grab_b_aux:NNw \cs_set_protected:Npn \exp_not:n } +\cs_new_protected:Npn \__xparse_grab_b_aux:NNw #1#2#3 \__xparse_run_code: + { + \__xparse_grab_D_aux:NNnN \begin \end {#3} #1 + \tl_put_left:Nn \l__xparse_signature_tl { \__xparse_grab_b_end:Nw #2 } + \tl_set_eq:NN \l__xparse_saved_args_tl \l__xparse_args_tl + \tl_clear:N \l__xparse_args_tl + \exp_args:Nc \l__xparse_fn_tl { begin ~ } + } +\cs_new_protected:Npn \__xparse_grab_b_end:Nw #1#2 \__xparse_run_code: + { + \tl_set:Nx \l__xparse_args_tl + { + \exp_not:V \l__xparse_saved_args_tl + { \exp_after:wN #1 \l__xparse_args_tl } + } + #2 + \__xparse_run_code: + \end + } +\cs_new_protected:Npn \__xparse_grab_D:w #1#2#3 \__xparse_run_code: + { + \__xparse_grab_D_aux:NNnNN #1 #2 {#3} \cs_set_protected_nopar:Npn + \__xparse_peek_nonspace_remove:NTF + } +\cs_new_protected:Npn \__xparse_grab_D_long:w #1#2#3 \__xparse_run_code: + { + \__xparse_grab_D_aux:NNnNN #1 #2 {#3} \cs_set_protected:Npn + \__xparse_peek_nonspace_remove:NTF + } +\cs_new_protected:Npn \__xparse_grab_D_obey_spaces:w #1#2#3 \__xparse_run_code: + { + \__xparse_grab_D_aux:NNnNN #1 #2 {#3} \cs_set_protected_nopar:Npn + \peek_meaning_remove:NTF + } +\cs_new_protected:Npn \__xparse_grab_D_long_obey_spaces:w #1#2#3 \__xparse_run_code: + { + \__xparse_grab_D_aux:NNnNN #1 #2 {#3} \cs_set_protected:Npn + \peek_meaning_remove:NTF + } +\cs_new_protected:Npn \__xparse_grab_D_aux:NNnNN #1#2#3#4#5 + { + \__xparse_grab_D_aux:NNnN #1#2 {#3} #4 + #5 #1 + { \__xparse_grab_D_call:Nw #1 } + { \__xparse_add_arg:o \c_novalue_tl } + } +\cs_new_protected:Npn \__xparse_grab_D_aux:NNnN #1#2#3#4 + { + \tl_set:Nn \l__xparse_signature_tl {#3} + \exp_after:wN #4 \l__xparse_fn_tl ##1 #2 + { + \tl_if_in:nnTF {##1} {#1} + { \__xparse_grab_D_nested:NNnN #1 #2 {##1} #4 } + { + \tl_if_blank:oTF { \use_none:n ##1 } + { \__xparse_add_arg:o { \use_none:n ##1 } } + { + \str_if_eq:eeTF + { \exp_not:o { \use_none:n ##1 } } + { { \exp_not:o { \use_ii:nnn ##1 \q_nil } } } + { \__xparse_add_arg:o { \use_ii:nn ##1 } } + { \__xparse_add_arg:o { \use_none:n ##1 } } + } + } + } + } +\tl_new:N \l__xparse_nesting_a_tl +\tl_new:N \l__xparse_nesting_b_tl +\quark_new:N \q__xparse +\cs_new_protected:Npn \__xparse_grab_D_nested:NNnN #1#2#3#4 + { + \tl_clear:N \l__xparse_nesting_a_tl + \tl_clear:N \l__xparse_nesting_b_tl + \exp_after:wN #4 \l__xparse_fn_tl ##1 #1 ##2 \q__xparse ##3 #2 + { + \tl_put_right:No \l__xparse_nesting_a_tl { \use_none:n ##1 #1 } + \tl_put_right:No \l__xparse_nesting_b_tl { \use_i:nn #2 ##3 } + \tl_if_in:nnTF {##2} {#1} + { + \l__xparse_fn_tl + \q_nil ##2 \q__xparse \ERROR + } + { + \tl_put_right:Nx \l__xparse_nesting_a_tl + { \__xparse_grab_D_nested:w \q_nil ##2 \q_stop } + \tl_if_in:NnTF \l__xparse_nesting_b_tl {#1} + { + \tl_set_eq:NN \l__xparse_tmpa_tl \l__xparse_nesting_b_tl + \tl_clear:N \l__xparse_nesting_b_tl + \exp_after:wN \l__xparse_fn_tl \exp_after:wN + \q_nil \l__xparse_tmpa_tl \q_nil \q__xparse \ERROR + } + { + \tl_put_right:No \l__xparse_nesting_a_tl + \l__xparse_nesting_b_tl + \__xparse_add_arg:V \l__xparse_nesting_a_tl + } + } + } + \l__xparse_fn_tl #3 \q_nil \q__xparse \ERROR + } +\cs_new:Npn \__xparse_grab_D_nested:w #1 \q_nil \q_stop + { \exp_not:o { \use_none:n #1 } } +\cs_set_protected_nopar:Npn \__xparse_grab_D_call:Nw #1 + { + \token_if_eq_catcode:NNTF + #1 + { + \exp_after:wN \exp_after:wN \exp_after:wN + \l__xparse_fn_tl \char_generate:nn { `#1 } { 11 } + } + { + \exp_after:wN \l__xparse_fn_tl + \token_to_str:N #1 + } + } +\cs_new_protected:Npn \__xparse_grab_E:w #1#2 \__xparse_run_code: + { + \__xparse_grab_E:nnNN {#1} {#2} + \cs_set_protected_nopar:Npn + \__xparse_peek_nonspace_remove:NTF + } +\cs_new_protected:Npn \__xparse_grab_E_long:w #1#2 \__xparse_run_code: + { + \__xparse_grab_E:nnNN {#1} {#2} + \cs_set_protected:Npn + \__xparse_peek_nonspace_remove:NTF + } +\cs_new_protected:Npn \__xparse_grab_E_obey_spaces:w #1#2 \__xparse_run_code: + { + \__xparse_grab_E:nnNN {#1} {#2} + \cs_set_protected_nopar:Npn + \peek_meaning_remove:NTF + } +\cs_new_protected:Npn \__xparse_grab_E_long_obey_spaces:w #1#2 \__xparse_run_code: + { + \__xparse_grab_E:nnNN {#1} {#2} + \cs_set_protected:Npn + \peek_meaning_remove:NTF + } +\cs_new_protected:Npn \__xparse_grab_E:nnNN #1#2#3#4 + { + \exp_after:wN #3 \l__xparse_fn_tl ##1##2##3 + { + \prop_put:Nnn \l__xparse_tmp_prop {##1} {##3} + \__xparse_grab_E_loop:NnN #4 { } ##2 \q_recursion_stop + } + \prop_clear:N \l__xparse_tmp_prop + \tl_set:Nn \l__xparse_signature_tl {#2} + \cs_set_protected:Npn \__xparse_grab_E_finalise: + { + \tl_map_inline:nn {#1} + { + \prop_get:NnNF \l__xparse_tmp_prop {####1} \l__xparse_tmpb_tl + { \tl_set_eq:NN \l__xparse_tmpb_tl \c_novalue_tl } + \tl_put_right:Nx \l__xparse_args_tl + { { \exp_not:V \l__xparse_tmpb_tl } } + } + \l__xparse_signature_tl \__xparse_run_code: + } + \__xparse_grab_E_loop:NnN #4 { } #1 \q_recursion_tail \q_recursion_stop + } +\cs_new_protected:Npn \__xparse_grab_E_loop:NnN #1#2#3#4 \q_recursion_stop + { + \cs_if_eq:NNTF #3 \q_recursion_tail + { \__xparse_grab_E_finalise: } + { + #1 #3 + { \l__xparse_fn_tl #3 {#2#4} } + { \__xparse_grab_E_loop:NnN #1 {#2#3} #4 \q_recursion_stop } + } + } +\cs_new_protected:Npn \__xparse_grab_E_finalise: { } +\cs_new_protected:Npn \__xparse_grab_G:w #1 \__xparse_run_code: + { + \__xparse_grab_G_aux:nNN {#1} \cs_set_protected_nopar:Npn + \__xparse_peek_nonspace:NTF + } +\cs_new_protected:Npn \__xparse_grab_G_long:w #1 \__xparse_run_code: + { + \__xparse_grab_G_aux:nNN {#1} \cs_set_protected:Npn + \__xparse_peek_nonspace:NTF + } +\cs_new_protected:Npn \__xparse_grab_G_obey_spaces:w #1 \__xparse_run_code: + { + \__xparse_grab_G_aux:nNN {#1} \cs_set_protected_nopar:Npn + \peek_meaning:NTF + } +\cs_new_protected:Npn \__xparse_grab_G_long_obey_spaces:w #1 \__xparse_run_code: + { + \__xparse_grab_G_aux:nNN {#1} \cs_set_protected:Npn + \peek_meaning:NTF + } +\cs_new_protected:Npn \__xparse_grab_G_aux:nNN #1#2#3 + { + \tl_set:Nn \l__xparse_signature_tl {#1} + \exp_after:wN #2 \l__xparse_fn_tl ##1 + { \__xparse_add_arg:n {##1} } + #3 \c_group_begin_token + { \l__xparse_fn_tl } + { \__xparse_add_arg:o \c_novalue_tl } + } +\cs_new_protected:Npn \__xparse_grab_l:w #1 \__xparse_run_code: + { \__xparse_grab_l_aux:nN {#1} \cs_set_protected_nopar:Npn } +\cs_new_protected:Npn \__xparse_grab_l_long:w #1 \__xparse_run_code: + { \__xparse_grab_l_aux:nN {#1} \cs_set_protected:Npn } +\cs_new_protected:Npn \__xparse_grab_l_aux:nN #1#2 + { + \tl_set:Nn \l__xparse_signature_tl {#1} + \exp_after:wN #2 \l__xparse_fn_tl ##1## + { \__xparse_add_arg:n {##1} } + \l__xparse_fn_tl + } +\cs_new_protected:Npn \__xparse_grab_m:w #1 \__xparse_run_code: + { + \tl_set:Nn \l__xparse_signature_tl {#1} + \exp_after:wN \cs_set_protected_nopar:Npn \l__xparse_fn_tl ##1 + { \__xparse_add_arg:n {##1} } + \l__xparse_fn_tl + } +\cs_new_protected:Npn \__xparse_grab_m_long:w #1 \__xparse_run_code: + { + \tl_set:Nn \l__xparse_signature_tl {#1} + \exp_after:wN \cs_set_protected:Npn \l__xparse_fn_tl ##1 + { \__xparse_add_arg:n {##1} } + \l__xparse_fn_tl + } +\cs_new_protected_nopar:Npn \__xparse_grab_m_aux:Nnnnnnnnn #1#2#3#4#5#6#7#8#9 + { + \tl_put_right:No \l__xparse_args_tl + { #1 {#2} {#3} {#4} {#5} {#6} {#7} {#8} {#9} } + \l__xparse_signature_tl \__xparse_run_code: + } +\cs_new_protected:cpn { __xparse_grab_m_1:w } #1 \__xparse_run_code: + { + \tl_set:Nn \l__xparse_signature_tl {#1} + \exp_after:wN \cs_set_eq:NN \l__xparse_fn_tl \__xparse_grab_m_aux:Nnnnnnnnn + \l__xparse_fn_tl \use_none:nnnnnnn { } { } { } { } { } { } { } + } +\cs_new_protected:cpn { __xparse_grab_m_2:w } #1 \__xparse_run_code: + { + \tl_set:Nn \l__xparse_signature_tl {#1} + \exp_after:wN \cs_set_eq:NN \l__xparse_fn_tl \__xparse_grab_m_aux:Nnnnnnnnn + \l__xparse_fn_tl \use_none:nnnnnn { } { } { } { } { } { } + } +\cs_new_protected:cpn { __xparse_grab_m_3:w } #1 \__xparse_run_code: + { + \tl_set:Nn \l__xparse_signature_tl {#1} + \exp_after:wN \cs_set_eq:NN \l__xparse_fn_tl \__xparse_grab_m_aux:Nnnnnnnnn + \l__xparse_fn_tl \use_none:nnnnn { } { } { } { } { } + } +\cs_new_protected:cpn { __xparse_grab_m_4:w } #1 \__xparse_run_code: + { + \tl_set:Nn \l__xparse_signature_tl {#1} + \exp_after:wN \cs_set_eq:NN \l__xparse_fn_tl \__xparse_grab_m_aux:Nnnnnnnnn + \l__xparse_fn_tl \use_none:nnnn { } { } { } { } + } +\cs_new_protected:cpn { __xparse_grab_m_5:w } #1 \__xparse_run_code: + { + \tl_set:Nn \l__xparse_signature_tl {#1} + \exp_after:wN \cs_set_eq:NN \l__xparse_fn_tl \__xparse_grab_m_aux:Nnnnnnnnn + \l__xparse_fn_tl \use_none:nnn { } { } { } + } +\cs_new_protected:cpn { __xparse_grab_m_6:w } #1 \__xparse_run_code: + { + \tl_set:Nn \l__xparse_signature_tl {#1} + \exp_after:wN \cs_set_eq:NN \l__xparse_fn_tl \__xparse_grab_m_aux:Nnnnnnnnn + \l__xparse_fn_tl \use_none:nn { } { } + } +\cs_new_protected:cpn { __xparse_grab_m_7:w } #1 \__xparse_run_code: + { + \tl_set:Nn \l__xparse_signature_tl {#1} + \exp_after:wN \cs_set_eq:NN \l__xparse_fn_tl \__xparse_grab_m_aux:Nnnnnnnnn + \l__xparse_fn_tl \use_none:n { } + } +\cs_new_protected:cpn { __xparse_grab_m_8:w } #1 \__xparse_run_code: + { + \tl_set:Nn \l__xparse_signature_tl {#1} + \exp_after:wN \cs_set_eq:NN \l__xparse_fn_tl \__xparse_grab_m_aux:Nnnnnnnnn + \l__xparse_fn_tl \prg_do_nothing: + } +\cs_new_protected:cpx { __xparse_grab_m_9:w } + { + \exp_not:c { __xparse_grab_m_5:w } + \exp_not:c { __xparse_grab_m_4:w } + } +\cs_new_protected:Npn \__xparse_grab_R:w #1#2#3 \__xparse_run_code: + { \__xparse_grab_R_aux:NNnN #1 #2 {#3} \cs_set_protected_nopar:Npn } +\cs_new_protected:Npn \__xparse_grab_R_long:w #1#2#3 \__xparse_run_code: + { \__xparse_grab_R_aux:NNnN #1 #2 {#3} \cs_set_protected:Npn } +\cs_new_protected:Npn \__xparse_grab_R_aux:NNnN #1#2#3#4 + { + \__xparse_grab_D_aux:NNnN #1 #2 {#3} #4 + \__xparse_peek_nonspace_remove:NTF #1 + { \__xparse_grab_D_call:Nw #1 } + { + \__kernel_msg_error:nnxx { xparse } { missing-required } + { \__xparse_environment_or_command: } + { \token_to_str:N #1 } + \__xparse_add_arg:o \c_novalue_tl + } + } +\cs_new_protected:Npn \__xparse_grab_t:w + { \__xparse_grab_t_aux:NNw \__xparse_peek_nonspace_remove:NTF } +\cs_new_protected:Npn \__xparse_grab_t_obey_spaces:w + { \__xparse_grab_t_aux:NNw \peek_meaning_remove:NTF } +\cs_new_protected:Npn \__xparse_grab_t_aux:NNw #1#2#3 \__xparse_run_code: + { + \tl_set:Nn \l__xparse_signature_tl {#3} + \exp_after:wN \cs_set_protected:Npn \l__xparse_fn_tl + { + #1 #2 + { \__xparse_add_arg:n { \BooleanTrue } } + { \__xparse_add_arg:n { \BooleanFalse } } + } + \l__xparse_fn_tl + } +\cs_new_protected:Npn \__xparse_grab_u:w #1#2 \__xparse_run_code: + { \__xparse_grab_u_aux:nnN {#1} {#2} \cs_set_protected_nopar:Npn } +\cs_new_protected:Npn \__xparse_grab_u_long:w #1#2 \__xparse_run_code: + { \__xparse_grab_u_aux:nnN {#1} {#2} \cs_set_protected:Npn } +\cs_new_protected:Npn \__xparse_grab_u_aux:nnN #1#2#3 + { + \tl_set:Nn \l__xparse_signature_tl {#2} + \exp_after:wN #3 \l__xparse_fn_tl ##1 #1 + { \__xparse_add_arg:n {##1} } + \l__xparse_fn_tl + } +\tl_new:N \l__xparse_v_arg_tl +\cs_new_protected:Npn \__xparse_grab_v:w + { + \bool_set_false:N \l__xparse_long_bool + \__xparse_grab_v_aux:w + } +\cs_new_protected:Npn \__xparse_grab_v_long:w + { + \bool_set_true:N \l__xparse_long_bool + \__xparse_grab_v_aux:w + } +\cs_new_protected:Npn \__xparse_grab_v_aux:w #1 \__xparse_run_code: + { + \tl_set:Nn \l__xparse_signature_tl {#1} + \group_begin: + \group_align_safe_begin: + \tex_escapechar:D = 92 \scan_stop: + \tl_clear:N \l__xparse_v_arg_tl + \peek_remove_spaces:n + { + \peek_meaning_remove:NTF \c_group_begin_token + { + \group_align_safe_end: + \__xparse_grab_v_bgroup: + } + { + \peek_N_type:TF + { \__xparse_grab_v_aux_test:N } + { \__xparse_grab_v_aux_abort:n { } } + } + } + } +\cs_new_protected:Npn \__xparse_grab_v_group_end: + { + \group_align_safe_end: + \exp_args:NNNo + \group_end: + \tl_set:Nn \l__xparse_v_arg_tl { \l__xparse_v_arg_tl } + } +\cs_new_protected:Npn \__xparse_grab_v_aux_test:N #1 + { + \__xparse_grab_v_token_if_char:NTF #1 + { + \__xparse_grab_v_aux_put:N #1 + \__xparse_grab_v_aux_catcodes: + \__xparse_grab_v_aux_loop:N #1 + } + { \__xparse_grab_v_aux_abort:n {#1} #1 } + } +\cs_new_protected:Npn \__xparse_grab_v_aux_loop:N #1 + { + \peek_N_type:TF + { \__xparse_grab_v_aux_loop:NN #1 } + { \__xparse_grab_v_aux_abort:n { } } + } +\cs_new_protected:Npn \__xparse_grab_v_aux_loop:NN #1#2 + { + \__xparse_grab_v_token_if_char:NTF #2 + { + \token_if_eq_charcode:NNTF #1 #2 + { \__xparse_grab_v_aux_loop_end: } + { + \__xparse_grab_v_aux_put:N #2 + \__xparse_grab_v_aux_loop:N #1 + } + } + { \__xparse_grab_v_aux_abort:n {#2} #2 } + } +\cs_new_protected:Npn \__xparse_grab_v_aux_loop_end: + { + \__xparse_grab_v_group_end: + \__xparse_add_arg:x { \tl_tail:N \l__xparse_v_arg_tl } + } +\int_new:N \l__xparse_v_nesting_int +\cs_new_protected:Npx \__xparse_grab_v_bgroup: + { + \exp_not:N \__xparse_grab_v_aux_catcodes: + \exp_not:n { \int_set:Nn \l__xparse_v_nesting_int { 1 } } + \exp_not:N \__xparse_grab_v_aux_put:N \iow_char:N \{ + \exp_not:N \__xparse_grab_v_bgroup_loop: + } +\cs_new_protected:Npn \__xparse_grab_v_bgroup_loop: + { + \peek_N_type:TF + { \__xparse_grab_v_bgroup_loop:N } + { \__xparse_grab_v_aux_abort:n { } } + } +\cs_new_protected:Npn \__xparse_grab_v_bgroup_loop:N #1 + { + \__xparse_grab_v_token_if_char:NTF #1 + { + \token_if_eq_charcode:NNTF \c_group_end_token #1 + { + \int_decr:N \l__xparse_v_nesting_int + \int_compare:nNnTF \l__xparse_v_nesting_int > 0 + { + \__xparse_grab_v_aux_put:N #1 + \__xparse_grab_v_bgroup_loop: + } + { \__xparse_grab_v_aux_loop_end: } + } + { + \token_if_eq_charcode:NNT \c_group_begin_token #1 + { \int_incr:N \l__xparse_v_nesting_int } + \__xparse_grab_v_aux_put:N #1 + \__xparse_grab_v_bgroup_loop: + } + } + { \__xparse_grab_v_aux_abort:n {#1} #1 } + } +\cs_new_protected:Npn \__xparse_grab_v_aux_catcodes: + { + \cs_set_eq:NN \do \char_set_catcode_other:N + \dospecials + \tex_endlinechar:D = `\^^M \scan_stop: + \bool_if:NTF \l__xparse_long_bool + { \char_set_catcode_other:n { \tex_endlinechar:D } } + { \char_set_catcode_parameter:n { \tex_endlinechar:D } } + } +\cs_new_protected:Npn \__xparse_grab_v_aux_abort:n #1 + { + \__xparse_grab_v_group_end: + \exp_after:wN \exp_after:wN \exp_after:wN + \peek_meaning_remove:NTF \char_generate:nn { \tex_endlinechar:D } { 6 } + { + \__kernel_msg_error:nnxxx { xparse } { verbatim-newline } + { \__xparse_environment_or_command: } + { \tl_to_str:N \l__xparse_v_arg_tl } + { \tl_to_str:n {#1} } + \__xparse_add_arg:o \c_novalue_tl + } + { + \__kernel_msg_error:nnxxx { xparse } { verbatim-tokenized } + { \__xparse_environment_or_command: } + { \tl_to_str:N \l__xparse_v_arg_tl } + { \tl_to_str:n {#1} } + \__xparse_add_arg:o \c_novalue_tl + } + } +\cs_new_protected:Npn \__xparse_grab_v_aux_put:N #1 + { + \tl_put_right:Nx \l__xparse_v_arg_tl + { + \token_if_active:NTF #1 + { \exp_not:N #1 } { \token_to_str:N #1 } + } + } +\cs_new_protected:Npn \__xparse_grab_v_token_if_char:NTF #1 + { \str_if_eq:eeTF { } { \str_tail:n {#1} } } +\cs_new_protected:Npn \__xparse_add_arg:n #1 + { + \tl_put_right:Nn \l__xparse_args_tl { {#1} } + \l__xparse_signature_tl \__xparse_run_code: + } +\cs_generate_variant:Nn \__xparse_add_arg:n { V , o , x } +\cs_new:Npn \__xparse_expandable_grab_D:w #1 \q__xparse #2#3 + { #2 { \__xparse_expandable_grab_D:NNNwNNn #1 \q__xparse #2 #3 } } +\cs_set_protected:Npn \__xparse_tmp:w #1 + { + \cs_new:Npn \__xparse_expandable_grab_D:NNNwNNn ##1##2##3##4 \q__xparse ##5##6##7 + { + \str_if_eq:nnTF {##2} {##7} + { + \str_if_eq:onTF + { ##1 { } { } ##7 ##2 \q__xparse ##3 } + { { } {##2} { } } + } + { \use_ii:nn } + { + ##1 + { \__xparse_expandable_grab_D:NNNwNNnnn ##1##2##3##4 \q__xparse ##5##6 } + \q_nil { } ##2 \ERROR \q__xparse \ERROR + } + { ##4 {#1} \q__xparse ##5 ##6 {##7} } + } + } +\exp_args:No \__xparse_tmp:w { \c_novalue_tl } +\cs_new:Npn \__xparse_expandable_grab_D:NNNwNNnnn #1#2#3#4 \q__xparse #5#6#7#8#9 + { + \exp_args:Nof \__xparse_expandable_grab_D:nnNNNwNN + { \use_ii:nn #7 #2 } + { \__xparse_expandable_grab_D:Nw #3 \exp_stop_f: #8 #9 } + #1#2#3 #4 \q__xparse #5 #6 + } +\cs_new:Npn \__xparse_expandable_grab_D:Nw #1#2 \ERROR \ERROR { #2 #1 } +\cs_new:Npn \__xparse_expandable_grab_D:nnNNNwNN #1#2#3#4#5#6 \q__xparse #7#8 + { + \exp_args:No \tl_if_empty:oTF + { #3 { \use_none:nnn } #2 \q__xparse #5 #4 \q__xparse #5 } + { + \tl_if_blank:oTF { \use_none:nn #1#2 } + { \__xparse_put_arg_expandable:ow { \use_none:nn #1#2 } } + { + \str_if_eq:eeTF + { \exp_not:o { \use_none:nn #1#2 } } + { { \exp_not:o { \use_iii:nnnn #1#2 \q_nil } } } + { \__xparse_put_arg_expandable:ow { \use_iii:nnn #1#2 } } + { \__xparse_put_arg_expandable:ow { \use_none:nn #1#2 } } + } + #6 \q__xparse #7 #8 + } + { + #3 + { \__xparse_expandable_grab_D:NNNwNNnnn #3#4#5#6 \q__xparse #7 #8 } + \q_nil {#1} #2 \ERROR \q__xparse \ERROR + } + } +\cs_new:Npn \__xparse_expandable_grab_D_alt:w #1 \q__xparse #2#3 + { #2 { \__xparse_expandable_grab_D_alt:NNwNNn #1 \q__xparse #2 #3 } } +\cs_set_protected:Npn \__xparse_tmp:w #1 + { + \cs_new:Npn \__xparse_expandable_grab_D_alt:NNwNNn ##1##2##3 \q__xparse ##4##5##6 + { + \str_if_eq:nnTF {##6} {##2} + { + \str_if_eq:onTF + { ##1 { } ##6 ##2 ##2 } + { { } ##2 } + } + { \use_ii:nn } + { + ##1 + { \__xparse_expandable_grab_D_alt:NNwn ##4 ##5 ##3 \q__xparse } + ##6 \ERROR + } + { ##3 {#1} \q__xparse ##4 ##5 {##6} } + } + } +\exp_args:No \__xparse_tmp:w { \c_novalue_tl } +\cs_new:Npn \__xparse_expandable_grab_D_alt:NNwn #1#2#3 \q__xparse #4 + { + \tl_if_blank:oTF { \use_none:n #4 } + { \__xparse_put_arg_expandable:ow { \use_none:n #4 } } + { + \str_if_eq:eeTF + { \exp_not:o { \use_none:n #4 } } + { { \exp_not:o { \use_ii:nnn #4 \q_nil } } } + { \__xparse_put_arg_expandable:ow { \use_ii:nn #4 } } + { \__xparse_put_arg_expandable:ow { \use_none:n #4 } } + } + #3 \q__xparse #1 #2 + } +\cs_new:Npn \__xparse_expandable_grab_E:w #1 \q__xparse #2#3 + { \__xparse_expandable_grab_E_aux:w #1 \q__xparse #2 #3 #3 } +\cs_new:Npn \__xparse_expandable_grab_E_long:w #1 \q__xparse #2#3 + { \__xparse_expandable_grab_E_aux:w #1 \q__xparse #2 #3 #2 } +\cs_new:Npn \__xparse_expandable_grab_E_aux:w #1 \q__xparse #2#3#4 + { #2 { \__xparse_expandable_grab_E_test:nnw #1 \q__xparse #2 #3 #4 } } +\cs_new:Npn \__xparse_expandable_grab_E_test:nnw #1#2#3 \q__xparse #4#5#6#7 + { + \__xparse_expandable_grab_E_loop:nnnNNw {#7} { } { } + #1 \q_nil \q_nil \q_nil \q_mark #2 \q_nil + #3 \q__xparse #4 #5 #6 + } +\cs_new:Npn \__xparse_expandable_grab_E_loop:nnnNNw + #1#2#3#4#5#6 \q_nil #7 \q_mark #8 + { + \quark_if_nil:NTF #4 + { \__xparse_expandable_grab_E_end:nnw {#1} {#3} } + { + \tl_if_novalue:nTF {#8} + { \str_if_eq:onTF { #4 { } #1 #5 } {#5} } + { \use_ii:nn } + { \__xparse_expandable_grab_E_find:w { #2 #4 #5 #6 } {#3} ~ } + { + \__xparse_expandable_grab_E_loop:nnnNNw + {#1} { #2 #4 #5 } { #3 {#8} } + #6 \q_nil #7 \q_mark + } + } + } +\cs_new:Npn \__xparse_expandable_grab_E_find:w #1 \q__xparse #2#3#4 + { #4 { \__xparse_expandable_grab_E_find:nnw #1 \q__xparse #2 #3 #4 } } +\cs_new:Npn \__xparse_expandable_grab_E_find:nnw #1#2#3 \q_nil #4 \q__xparse #5#6#7#8 + { \__xparse_expandable_grab_E_aux:w {#1} { #2 {#8} #3 } #4 \q__xparse #5 #6 #7 } +\cs_new:Npn \__xparse_expandable_grab_E_end:nnw #1#2#3 \q__xparse #4#5#6 + { #3 #2 \q__xparse #4 #5 {#1} } +\cs_new:Npn \__xparse_expandable_grab_m:w #1 \q__xparse #2#3 + { #3 { \__xparse_expandable_grab_m_aux:wNn #1 \q__xparse #2 #3 } } +\cs_new:Npn \__xparse_expandable_grab_m_long:w #1 \q__xparse #2#3 + { #2 { \__xparse_expandable_grab_m_aux:wNn #1 \q__xparse #2 #3 } } +\cs_new:Npn \__xparse_expandable_grab_m_aux:wNn #1 \q__xparse #2#3#4 + { #1 {#4} \q__xparse #2 #3 } +\cs_new:Npn \__xparse_expandable_grab_R:w #1 \q__xparse #2#3 + { #2 { \__xparse_expandable_grab_R_aux:NNNwNNn #1 \q__xparse #2#3 } } +\cs_set_protected:Npn \__xparse_tmp:w #1 + { + \cs_new:Npn \__xparse_expandable_grab_R_aux:NNNwNNn ##1##2##3##4 \q__xparse ##5##6##7 + { + \str_if_eq:nnTF {##7} {##2} + { + \str_if_eq:onTF + { ##1 { } { } ##7 ##2 \q__xparse ##3 } + { { } {##2} { } } + } + { \use_ii:nn } + { + ##1 + { \__xparse_expandable_grab_D:NNNwNNnnn ##1##2##3##4 \q__xparse ##5##6 } + \q_nil { } ##2 \ERROR \q__xparse \ERROR + } + { + \__kernel_msg_expandable_error:nnff + { xparse } { missing-required } + { \exp_args:Nf \tl_trim_spaces:n { \token_to_str:N ##5 } } + { \tl_to_str:n {##2} } + ##4 {#1} \q__xparse ##5 ##6 {##7} + } + } + } +\exp_args:No \__xparse_tmp:w { \c_novalue_tl } +\cs_new:Npn \__xparse_expandable_grab_R_alt:w #1 \q__xparse #2#3 + { #2 { \__xparse_expandable_grab_R_alt_aux:NNnwNn #1 \q__xparse #2#3 } } +\cs_set_protected:Npn \__xparse_tmp:w #1 + { + \cs_new:Npn \__xparse_expandable_grab_R_alt_aux:NNwNn ##1##2##3 \q__xparse ##4##5##6 + { + \str_if_eq:nnTF {##6} {##2} + { + \str_if_eq:onTF + { ##1 { } ##6 ##2 ##2 } + { { } ##2 } + } + { \use_ii:nn } + { + ##1 + { \__xparse_expandable_grab_D_alt:NNwn ##4 ##5 ##3 \q__xparse } + ##6 \ERROR + } + { + \__kernel_msg_expandable_error:nnff + { xparse } { missing-required } + { \exp_args:Nf \tl_trim_spaces:n { \token_to_str:N ##4 } } + { \tl_to_str:n {##2} } + ##3 {#1} \q__xparse ##4 ##5 {##6} + } + } + } +\exp_args:No \__xparse_tmp:w { \c_novalue_tl } +\cs_new:Npn \__xparse_expandable_grab_t:w #1 \q__xparse #2#3 + { #2 { \__xparse_expandable_grab_t_aux:NNwn #1 \q__xparse #2 #3 } } +\cs_new:Npn \__xparse_expandable_grab_t_aux:NNwn #1#2#3 \q__xparse #4#5#6 + { + \str_if_eq:onTF { #1 { } #6 #2 } {#2} + { #3 { \BooleanTrue } \q__xparse #4 #5 } + { #3 { \BooleanFalse } \q__xparse #4 #5 {#6} } + } +\cs_new_eq:NN \__xparse_expandable_grab_u:w \prg_do_nothing: +\cs_new:Npn \__xparse_put_arg_expandable:nw #1#2 \q__xparse { #2 {#1} \q__xparse } +\cs_generate_variant:Nn \__xparse_put_arg_expandable:nw { o } +\cs_new_protected:Npn \__xparse_bool_reverse:N #1 + { + \bool_if:NTF #1 + { \tl_set:Nn \ProcessedArgument { \c_false_bool } } + { \tl_set:Nn \ProcessedArgument { \c_true_bool } } + } +\seq_new:N \l__xparse_split_list_seq +\tl_new:N \l__xparse_split_list_tl +\cs_new_protected:Npn \__xparse_split_list:nn #1#2 + { + \tl_if_single:nTF {#1} + { + \token_if_cs:NTF #1 + { \__xparse_split_list_multi:nn {#1} {#2} } + { \__xparse_split_list_single:Nn #1 {#2} } + } + { \__xparse_split_list_multi:nn {#1} {#2} } + } +\cs_new_protected:Npn \__xparse_split_list_multi:nn #1#2 + { + \seq_set_split:Nnn \l__xparse_split_list_seq {#1} {#2} + \tl_clear:N \ProcessedArgument + \seq_map_inline:Nn \l__xparse_split_list_seq + { \tl_put_right:Nn \ProcessedArgument { {##1} } } + } +\cs_generate_variant:Nn \__xparse_split_list_multi:nn { nV } +\group_begin: +\char_set_catcode_active:N \^^@ +\cs_new_protected:Npn \__xparse_split_list_single:Nn #1#2 + { + \tl_set:Nn \l__xparse_split_list_tl {#2} + \group_begin: + \char_set_lccode:nn { `\^^@ } { `#1 } + \tex_lowercase:D + { + \group_end: + \tl_replace_all:Nnn \l__xparse_split_list_tl { ^^@ } + } {#1} + \__xparse_split_list_multi:nV {#1} \l__xparse_split_list_tl + } +\group_end: +\cs_new_protected:Npn \__xparse_split_argument:nnn #1#2#3 + { + \__xparse_split_list:nn {#2} {#3} + \exp_args:Nf \__xparse_split_argument_aux:nnnn + { \tl_count:N \ProcessedArgument } + {#1} {#2} {#3} + } +\cs_new_protected:Npn \__xparse_split_argument_aux:nnnn #1#2#3#4 + { + \int_compare:nNnF {#1} = { #2 + 1 } + { + \int_compare:nNnTF {#1} > { #2 + 1 } + { + \tl_set:Nx \ProcessedArgument + { + \exp_last_unbraced:NnNo + \__xparse_split_argument_aux:n + { #2 + 1 } + \use_none_delimit_by_q_stop:w + \ProcessedArgument + \q_stop + } + \__kernel_msg_error:nnxxx { xparse } { split-excess-tokens } + { \tl_to_str:n {#3} } { \int_eval:n { #2 + 1 } } + { \tl_to_str:n {#4} } + } + { + \tl_put_right:Nx \ProcessedArgument + { + \prg_replicate:nn { #2 + 1 - (#1) } + { { \exp_not:V \c_novalue_tl } } + } + } + } + } +\cs_new:Npn \__xparse_split_argument_aux:n #1 + { \prg_replicate:nn {#1} { \__xparse_split_argument_aux:wn } } +\cs_new:Npn \__xparse_split_argument_aux:wn #1 \use_none_delimit_by_q_stop:w #2 + { + \exp_not:n { {#2} } + #1 + \use_none_delimit_by_q_stop:w + } +\cs_new_protected:Npn \__xparse_trim_spaces:n #1 + { \tl_set:Nx \ProcessedArgument { \tl_trim_spaces:n {#1} } } +\cs_new_protected:Npn \__xparse_get_arg_spec_error:N #1 + { + \bool_set_false:N \l__xparse_environment_bool + \tl_set:Nn \l__xparse_fn_tl {#1} + \__xparse_get_arg_spec_error_aux:n { \cs_if_exist:NTF #1 } + } +\cs_new_protected:Npn \__xparse_get_arg_spec_error:n #1 + { + \bool_set_true:N \l__xparse_environment_bool + \str_set:Nx \l__xparse_environment_str {#1} + \__xparse_get_arg_spec_error_aux:n + { \cs_if_exist:cTF { \l__xparse_environment_str } } + } +\cs_new_protected:Npn \__xparse_get_arg_spec_error_aux:n #1 + { + #1 + { + \__kernel_msg_error:nnx { xparse } { non-xparse } + { \__xparse_environment_or_command: } + } + { + \__kernel_msg_error:nnx { xparse } { unknown } + { \__xparse_environment_or_command: } + } + } +\cs_new_protected:Npn \__xparse_get_arg_spec:NTF #1#2#3 + { + \__xparse_cmd_if_xparse:NTF #1 + { + \tl_set:Nx \ArgumentSpecification { \tl_item:Nn #1 { 2 } } + #2 + } + {#3} + } +\cs_new_protected:Npn \__xparse_get_arg_spec:N #1 + { + \__xparse_get_arg_spec:NTF #1 { } + { \__xparse_get_arg_spec_error:N #1 } + } +\cs_new_protected:Npn \__xparse_get_arg_spec:n #1 + { + \exp_args:Nc \__xparse_get_arg_spec:NTF + { environment~ \tl_to_str:n {#1} } + { } + { \__xparse_get_arg_spec_error:n {#1} } + } +\tl_new:N \ArgumentSpecification +\cs_new_protected:Npn \__xparse_show_arg_spec:N #1 + { + \__xparse_get_arg_spec:NTF #1 + { \tl_show:N \ArgumentSpecification } + { \__xparse_get_arg_spec_error:N #1 } + } +\cs_new_protected:Npn \__xparse_show_arg_spec:n #1 + { + \exp_args:Nc \__xparse_get_arg_spec:NTF + { environment~ \tl_to_str:n {#1} } + { \tl_show:N \ArgumentSpecification } + { \__xparse_get_arg_spec_error:n {#1} } + } +\cs_new_protected:Npn \__xparse_check_definable:nNT #1 + { \tl_trim_spaces_apply:nN {#1} \__xparse_check_definable_aux:nN } +\group_begin: + \char_set_catcode_active:n { `? } + \cs_new_protected:Npn \__xparse_check_definable_aux:nN #1#2 + { + \group_begin: + \tl_if_single_token:nTF {#1} + { + \int_set:Nn \tex_escapechar:D { 92 } + \exp_args:Nx \tl_if_empty:nTF + { \exp_args:No \str_tail:n { \token_to_str:N #1 } } + { + \exp_args:Nx \char_set_lccode:nn + { ` \str_head:n {#1} } { `? } + \tex_lowercase:D { \tl_if_eq:nnTF {#1} } { ? } + { \group_end: \use_iii:nnn } + { \group_end: \use_i:nnn } + } + { \group_end: \use_iii:nnn } + } + { \group_end: \use_ii:nnn } + { + \__kernel_msg_error:nnxx { xparse } { not-definable } + { \tl_to_str:n {#1} } { \token_to_str:N #2 } + } + { + \__kernel_msg_error:nnxx { xparse } { not-one-token } + { \tl_to_str:n {#1} } { \token_to_str:N #2 } + } + } +\group_end: +\cs_new:Npn \__xparse_tl_mapthread_function:NNN #1#2#3 + { + \exp_after:wN \exp_after:wN + \exp_after:wN \__xparse_tl_mapthread_loop:w + \exp_after:wN \exp_after:wN + \exp_after:wN #3 + \exp_after:wN #1 + \exp_after:wN \q_recursion_tail + \exp_after:wN \q_mark + #2 + \q_recursion_tail + \q_recursion_stop + } +\cs_new:Npn \__xparse_tl_mapthread_function:nnN #1#2#3 + { + \__xparse_tl_mapthread_loop:w #3 + #1 \q_recursion_tail \q_mark + #2 \q_recursion_tail \q_recursion_stop + } +\cs_new:Npn \__xparse_tl_mapthread_loop:w #1#2#3 \q_mark #4 + { + \quark_if_recursion_tail_stop:n {#2} + \quark_if_recursion_tail_stop:n {#4} + #1 {#2} {#4} + \__xparse_tl_mapthread_loop:w #1#3 \q_mark + } +\cs_new_protected:Npn \__xparse_cmd_if_xparse:NTF #1 + { + \exp_args:Nf \str_case_e:nnTF + { + \exp_args:Nf \tl_if_empty:nT { \cs_argument_spec:N #1 } + { + \exp_last_unbraced:Nf \__xparse_cmd_if_xparse_aux:w + { \cs_replacement_spec:N #1 } ~ \q_stop + } + } + { + { \token_to_str:N \__xparse_start:nNNnnn } { } + { \token_to_str:N \__xparse_start_expandable:nNNNNn } { } + { \token_to_str:N \__xparse_start_env:nnnnn } { } + } + } +\cs_new:Npn \__xparse_cmd_if_xparse_aux:w #1 ~ #2 \q_stop {#1} +\cs_new_protected:Npn \__xparse_peek_nonspace:NTF + { \__xparse_peek_nonspace_aux:nNNTF { } \peek_meaning:NTF } +\cs_new_protected:Npn \__xparse_peek_nonspace_remove:NTF + { \__xparse_peek_nonspace_aux:nNNTF { } \peek_meaning_remove:NTF } +\cs_new_protected:Npn \__xparse_peek_nonspace_aux:nNNTF #1#2#3#4#5 + { + \peek_meaning_remove:NTF \c_space_token + { \__xparse_peek_nonspace_aux:nNNTF { #1 ~ } #2 #3 {#4} {#5} } + { #2 #3 { #4 } { #5 #1 } } + } +\cs_new:Npn \__xparse_environment_or_command: + { + \bool_if:NTF \l__xparse_environment_bool + { environment ~ ' \l__xparse_environment_str ' } + { + command ~ ' + \exp_args:Nf \tl_trim_spaces:n + { \exp_after:wN \token_to_str:N \l__xparse_fn_tl } + ' + } + } +\tl_const:Nn \c__xparse_ignore_def_tl + { \\ \\ LaTeX~will~ignore~this~entire~definition. } +\__kernel_msg_new:nnnn { xparse } { arg-after-body } + { In~the~definition~of~#1,~b~(body)~argument~must~be~last. } + { + The~'body'~argument~type~is~followed~by~'#2'~in~the~argument~ + specification~of~the~#1.~This~is~not~allowed. + \c__xparse_ignore_def_tl + } +\__kernel_msg_new:nnnn { xparse } { bad-arg-spec } + { Bad~argument~specification~'#2'~for~#1. } + { + The~argument~specification~provided~was~not~valid:~ + one~or~more~mandatory~pieces~of~information~were~missing. + \c__xparse_ignore_def_tl + } +\__kernel_msg_new:nnnn { xparse } { command-already-defined } + { Command~'#1'~already~defined! } + { + You~have~used~#2~ + with~a~command~that~already~has~a~definition. \\ \\ + The~existing~definition~of~'#1'~will~not~be~altered. + } +\__kernel_msg_new:nnnn { xparse } { command-not-yet-defined } + { Command ~'#1'~not~yet~defined! } + { + You~have~used~#2~ + with~a~command~that~was~never~defined. + \c__xparse_ignore_def_tl + } +\__kernel_msg_new:nnnn { xparse } { environment-already-defined } + { Environment~'#1'~already~defined! } + { + You~have~used~\NewDocumentEnvironment + with~an~environment~that~already~has~a~definition. \\ \\ + The~existing~definition~of~'#1'~will~not~be~altered. + } +\__kernel_msg_new:nnnn { xparse } { environment-not-yet-defined } + { Environment~'#1'~not~yet~defined! } + { + You~have~used~\RenewDocumentEnvironment + with~an~environment~that~was~never~defined. + \c__xparse_ignore_def_tl + } +\__kernel_msg_new:nnnn { xparse } { expandable-ending-optional } + { + Argument~specification~'#2'~for~expandable~command~'#1'~ + ends~with~optional~argument. + } + { + Expandable~commands~must~have~a~final~mandatory~argument~ + (or~no~arguments~at~all).~You~cannot~have~a~terminal~optional~ + argument~with~expandable~commands. + } +\__kernel_msg_new:nnnn { xparse } { inconsistent-long } + { Inconsistent~long~arguments~for~expandable~command~'#1'. } + { + The~arguments~for~an~expandable~command~must~not~involve~short~ + arguments~after~long~arguments.~You~have~tried~to~mix~the~two~types. + } +\__kernel_msg_new:nnnn { xparse } { invalid-command-arg } + { Argument~type~'#2'~not~available~for~#1. } + { + The~letter~'#2'~can~only~be~used~in~environment~argument~ + specifications,~not~for~commands. + \\ \\ + LaTeX~will~ignore~this~entire~definition. + } +\__kernel_msg_new:nnnn { xparse } { invalid-expandable-argument-type } + { Argument~type~'#2'~not~available~for~expandable~command~'#1'. } + { + The~letter~'#2'~specifies~an~argument~type~which~cannot~be~used~ + in~an~expandable~command. + \c__xparse_ignore_def_tl + } +\__kernel_msg_new:nnnn { xparse } { invalid-after-optional-expandably } + { + Argument~type~'#2'~not~available~after~optional~argument~ + for~expandable~command~'#1'. + } + { + The~letter~'#2'~specifies~an~argument~type~which~cannot~be~used~ + in~an~expandable~command~after~an~optional~argument. + \c__xparse_ignore_def_tl + } +\__kernel_msg_new:nnnn { xparse } { non-trailing-obey-spaces } + { Prefix~'!'~used~before~mandatory~argument~'#2'~of~#1. } + { + The~prefix~'!'~can~only~apply~to~trailing~optional~arguments. + \c__xparse_ignore_def_tl + } +\__kernel_msg_new:nnnn { xparse } { not-definable } + { First~argument~of~'#2'~must~be~a~command. } + { + The~first~argument~of~'#2'~should~be~the~document~command~that~will~ + be~defined.~The~provided~argument~'#1'~is~a~character.~Perhaps~a~ + backslash~is~missing? + \c__xparse_ignore_def_tl + } +\__kernel_msg_new:nnnn { xparse } { not-one-token } + { First~argument~of~'#2'~must~be~a~command. } + { + The~first~argument~of~'#2'~should~be~the~document~command~that~will~ + be~defined.~The~provided~argument~'#1'~contains~more~than~one~ + token.~Perhaps~a~backslash~is~missing? + \c__xparse_ignore_def_tl + } +\__kernel_msg_new:nnnn { xparse } { not-single-char } + { + Argument~delimiter~'#2'~for~the~#1~should~be~ + a~single~character. + } + { + The~argument~specification~provided~was~not~valid:~in~a~place~ + where~a~single~character~is~required,~LaTeX~found~'#2'. + \c__xparse_ignore_def_tl + } +\__kernel_msg_new:nnnn { xparse } { processor-in-expandable } + { Argument~processor~'>{#2}'~cannot~be~used~for~the~expandable~command~'#1'. } + { + The~argument~specification~for~#1~contains~a~processor~function:~ + this~is~only~supported~for~standard~robust~commands. + \c__xparse_ignore_def_tl + } +\__kernel_msg_new:nnnn { xparse } { too-many-arguments } + { Too~many~arguments~in~argument~specification~'#2'~of~#1. } + { + The~argument~specification~provided~has~more~than~9~arguments.~ + This~cannot~be~implemented. + \c__xparse_ignore_def_tl + } +\__kernel_msg_new:nnnn { xparse } { two-markers } + { Two~'#2'~apply~to~the~same~argument~in~argument~specification~of~#1. } + { + The~argument~specification~provided~has~two~markers~'#2'~applying~ + to~the~same~argument;~these~are~redundant. + } +\__kernel_msg_new:nnnn { xparse } { unknown-argument-type } + { Unknown~argument~type~'#2'~for~the~#1. } + { + The~letter~'#2'~does~not~specify~a~known~argument~type. + \c__xparse_ignore_def_tl + } +\__kernel_msg_new:nnn { xparse } { if-boolean } + { Invalid~use~\iow_char:N\\IfBooleanTF~{#1} } +\__kernel_msg_new:nnnn { xparse } { loop-in-defaults } + { Defaults~of~#1~have~circular~dependency. } + { + The~default~values~of~two~or~more~arguments~of~the~#1~ + depend~on~each~other~in~a~way~that~cannot~be~resolved. + } +\__kernel_msg_new:nnnn { xparse } { missing-required } + { Missing~required~argument~for~#1. } + { + The~current~#1~expects~an~argument~starting~with~'#2'.~ + LaTeX~did~not~find~it,~and~will~insert~a~default~value~to~be~processed. + } +\__kernel_msg_new:nnnn { xparse } { non-xparse } + { \str_upper_case:n #1~not~defined~using~xparse. } + { + You~have~asked~for~the~argument~specification~for~the~#1,~ + but~this~was~not~defined~using~xparse. + } +\__kernel_msg_new:nnnn { xparse } { split-excess-tokens } + { Too~many~'#1'~tokens~when~trying~to~split~argument. } + { + LaTeX~was~asked~to~split~the~input~'#3'~ + at~each~occurrence~of~the~token~'#1',~up~to~a~maximum~of~#2~parts.~ + There~were~too~many~'#1'~tokens. + } +\__kernel_msg_new:nnnn { xparse } { unknown } + { Unknown~document~#1. } + { + You~have~asked~for~the~argument~specification~for~the~#1,~ + but~it~is~not~defined. + } +\__kernel_msg_new:nnnn { xparse } { verbatim-newline } + { Verbatim~argument~of~#1~ended~by~end~of~line. } + { + The~verbatim~argument~of~the~#1~cannot~contain~more~than~one~line,~ + but~the~end~ + of~the~current~line~has~been~reached.~You~may~have~forgotten~the~ + closing~delimiter. + \\ \\ + LaTeX~will~ignore~'#2'. + } +\__kernel_msg_new:nnnn { xparse } { verbatim-tokenized } + { The~verbatim~#1~cannot~be~used~inside~an~argument. } + { + The~#1~takes~a~verbatim~argument.~ + It~may~not~appear~within~the~argument~of~another~function.~ + It~received~an~illegal~token \tl_if_empty:nF {#3} { ~'#3' } . + \\ \\ + LaTeX~will~ignore~'#2'. + } +\__kernel_msg_new:nnn { xparse } { define-command } + { + Defining~command~#1~ + with~sig.~'#2'~\msg_line_context:. + } +\__kernel_msg_new:nnn { xparse } { define-environment } + { + Defining~environment~'#1'~ + with~sig.~'#2'~\msg_line_context:. + } +\__kernel_msg_new:nnn { xparse } { redefine-command } + { + Redefining~command~#1~ + with~sig.~'#2'~\msg_line_context:. + } +\__kernel_msg_new:nnn { xparse } { redefine-environment } + { + Redefining~environment~'#1'~ + with~sig.~'#2'~\msg_line_context:. + } +\__kernel_msg_new:nnn { xparse } { optional-mandatory } + { + Since~the~mandatory~argument~'#1'~has~the~same~delimiter~'#2'~ + as~a~previous~optional~argument,~it~will~not~be~possible~to~ + omit~all~optional~arguments~when~calling~this~command. + } +\__kernel_msg_new:nnn { xparse } { unsupported-let } + { + The~command~'#1'~was~undefined~but~not~the~associated~commands~ + '#1~code'~and/or~'#1~defaults'.~Maybe~you~tried~using~ + \iow_char:N\\let.~This~may~lead~to~an~infinite~loop. + } +\cs_new_eq:NN \BooleanFalse \c_false_bool +\cs_new_eq:NN \BooleanTrue \c_true_bool +\cs_new_protected:Npn \NewDocumentCommand #1#2#3 + { + \__xparse_check_definable:nNT {#1} \NewDocumentCommand + { + \cs_if_exist:NTF #1 + { + \__kernel_msg_error:nnxx { xparse } { command-already-defined } + { \use:nnn \token_to_str:N #1 { } } + { \token_to_str:N \NewDocumentCommand } + } + { \__xparse_declare_cmd:Nnn #1 {#2} {#3} } + } + } +\cs_new_protected:Npn \RenewDocumentCommand #1#2#3 + { + \__xparse_check_definable:nNT {#1} \RenewDocumentCommand + { + \cs_if_exist:NTF #1 + { \__xparse_declare_cmd:Nnn #1 {#2} {#3} } + { + \__kernel_msg_error:nnxx { xparse } { command-not-yet-defined } + { \use:nnn \token_to_str:N #1 { } } + { \token_to_str:N \RenewDocumentCommand } + } + } + } +\cs_new_protected:Npn \ProvideDocumentCommand #1#2#3 + { + \__xparse_check_definable:nNT {#1} \ProvideDocumentCommand + { \cs_if_exist:NF #1 { \__xparse_declare_cmd:Nnn #1 {#2} {#3} } } + } +\cs_new_protected:Npn \DeclareDocumentCommand #1#2#3 + { + \__xparse_check_definable:nNT {#1} \DeclareDocumentCommand + { \__xparse_declare_cmd:Nnn #1 {#2} {#3} } + } +\cs_new_protected:Npn \NewDocumentEnvironment #1#2#3#4 + { + \cs_if_exist:cTF {#1} + { \__kernel_msg_error:nnx { xparse } { environment-already-defined } {#1} } + { \__xparse_declare_env:nnnn {#1} {#2} {#3} {#4} } + } +\cs_new_protected:Npn \RenewDocumentEnvironment #1#2#3#4 + { + \cs_if_exist:cTF {#1} + { \__xparse_declare_env:nnnn {#1} {#2} {#3} {#4} } + { \__kernel_msg_error:nnx { xparse } { environment-not-yet-defined } {#1} } + } +\cs_new_protected:Npn \ProvideDocumentEnvironment #1#2#3#4 + { \cs_if_exist:cF {#1} { \__xparse_declare_env:nnnn {#1} {#2} {#3} {#4} } } +\cs_new_protected:Npn \DeclareDocumentEnvironment #1#2#3#4 + { \__xparse_declare_env:nnnn {#1} {#2} {#3} {#4} } +\cs_new_protected:Npn \NewExpandableDocumentCommand #1#2#3 + { + \__xparse_check_definable:nNT {#1} \NewExpandableDocumentCommand + { + \cs_if_exist:NTF #1 + { + \__kernel_msg_error:nnxx { xparse } { command-already-defined } + { \use:nnn \token_to_str:N #1 { } } + { \token_to_str:N \NewExpandableDocumentCommand } + } + { \__xparse_declare_expandable_cmd:Nnn #1 {#2} {#3} } + } + } +\cs_new_protected:Npn \RenewExpandableDocumentCommand #1#2#3 + { + \__xparse_check_definable:nNT {#1} \RenewExpandableDocumentCommand + { + \cs_if_exist:NTF #1 + { \__xparse_declare_expandable_cmd:Nnn #1 {#2} {#3} } + { + \__kernel_msg_error:nnxx { xparse } { command-not-yet-defined } + { \use:nnn \token_to_str:N #1 { } } + { \token_to_str:N \RenewExpandableDocumentCommand } + } + } + } +\cs_new_protected:Npn \ProvideExpandableDocumentCommand #1#2#3 + { + \__xparse_check_definable:nNT {#1} \ProvideExpandableDocumentCommand + { + \cs_if_exist:NF #1 + { \__xparse_declare_expandable_cmd:Nnn #1 {#2} {#3} } + } + } +\cs_new_protected:Npn \DeclareExpandableDocumentCommand #1#2#3 + { + \__xparse_check_definable:nNT {#1} \DeclareExpandableDocumentCommand + { \__xparse_declare_expandable_cmd:Nnn #1 {#2} {#3} } + } +\cs_new:Npn \IfBooleanTF #1 + { + \tl_if_single:nF {#1} + { \prg_break:n { \use:n } } + \tl_if_single_token:nF #1 + { \prg_break:n { \use:n } } + \token_if_eq_meaning:NNT #1 \c_true_bool + { \prg_break:n { \use_ii:nnn } } + \token_if_eq_meaning:NNT #1 \c_false_bool + { \prg_break:n { \use_iii:nnn } } + \prg_break:n { \use:n } + \prg_break_point: + { + \__kernel_msg_expandable_error:nnn { xparse } { if-boolean } {#1} + \use_ii:nn + } + } +\cs_new:Npn \IfBooleanT #1#2 { \IfBooleanTF {#1} {#2} { } } +\cs_new:Npn \IfBooleanF #1 { \IfBooleanTF {#1} { } } +\cs_new_eq:NN \IfNoValueF \tl_if_novalue:nF +\cs_new_eq:NN \IfNoValueT \tl_if_novalue:nT +\cs_new_eq:NN \IfNoValueTF \tl_if_novalue:nTF +\cs_new:Npn \IfValueF { \tl_if_novalue:nT } +\cs_new:Npn \IfValueT { \tl_if_novalue:nF } +\cs_new:Npn \IfValueTF #1#2#3 { \tl_if_novalue:nTF {#1} {#3} {#2} } +\tl_new:N \ProcessedArgument +\cs_new_eq:NN \ReverseBoolean \__xparse_bool_reverse:N +\cs_new_eq:NN \SplitArgument \__xparse_split_argument:nnn +\cs_new_eq:NN \SplitList \__xparse_split_list:nn +\cs_new_eq:NN \TrimSpaces \__xparse_trim_spaces:n +\cs_new_eq:NN \ProcessList \tl_map_function:nN +\cs_new_protected:Npn \GetDocumentCommandArgSpec #1 + { + \__xparse_check_definable:nNT {#1} \GetDocumentCommandArgSpec + { \__xparse_get_arg_spec:N #1 } + } +\cs_new_eq:NN \GetDocumentEnvironmentArgSpec \__xparse_get_arg_spec:n +\cs_new_protected:Npn \ShowDocumentCommandArgSpec #1 + { + \__xparse_check_definable:nNT {#1} \ShowDocumentCommandArgSpec + { \__xparse_show_arg_spec:N #1 } + } +\cs_new_eq:NN \ShowDocumentEnvironmentArgSpec \__xparse_show_arg_spec:n +\clist_new:N \l__xparse_options_clist +\DeclareOption* { \clist_put_right:NV \l__xparse_options_clist \CurrentOption } +\ProcessOptions \relax +\keys_define:nn { xparse } + { + log-declarations .bool_set:N = \l__xparse_log_bool , + log-declarations .initial:n = false + } +\keys_set:nV { xparse } \l__xparse_options_clist +\bool_if:NF \l__xparse_log_bool + { + \msg_redirect_module:nnn { LaTeX / xparse } { info } { none } + \msg_redirect_module:nnn { LaTeX / xparse } { warning } { none } + } +%% +%% +%% End of file `xparse.sty'. diff --git a/doc/sample.bib b/doc/sample.bib deleted file mode 100644 index 1f34ab13..00000000 --- a/doc/sample.bib +++ /dev/null @@ -1,48 +0,0 @@ -@Article{Bumbulis94, - author = {Peter Bumbulis and Donald D. Cowan}, - title = {RE2C -- A More Versatile Scanner Generator}, - journal = "ACM Letters on Programming Languages and Systems", - volume = 2, - number = "1--4", - year = 1994, - abstract = { - It is usually claimed that lexical analysis routines are still coded by - hand, despite the widespread availability of scanner generators, for - efficiency reasons. While efficiency is a consideration, there exist - freely available scanner generators such as GLA \cite{Gray88} that can - generate scanners that are faster than most hand-coded ones. However, - most generated scanners are tailored for a particular environment, and - retargetting these scanners to other environments, if possible, is - usually complex enough to make a hand-coded scanner more appealing. In - this paper we describe RE2C, a scanner generator that not only generates - scanners which are faster (and usually smaller) than those produced by - any other scanner generator known to the authors, including GLA, but - also adapt easily to any environment. - } -} -@Article{Gray88, - author = {Robert W. Gray}, - title = {{$\gamma$-GLA} - {A} Generator for Lexical Analyzers That - Programmers Can Use}, - journal = {USENIX Conference Proceedings}, - year = {1988}, - month = {June}, - pages = {147-160}, - abstract = {Writing an efficient lexical analyzer for even a simple - language is not a trivial task, and should not be done by hand. We - describe GLA, a tool that generates very efficient scanners. These - scanners do not use the conventional transition matrix, but instead - use a few 128 element vectors. Scanning time is only slightly - greater than the absolute minimum --- the time it takes to look at - each character in a file. The GLA language allows simple, concise - specification of scanners. Augmenting regular expressions with - auxiliary scanners easily handles nasty problems such as C comments - and C literal constants. We formalize the connection between token - scanning and token processing by associating a processor with - appropriate patterns. A library of canned descriptions simplifies the - specification of commonly used language pieces --- such as, - C\_IDENTIFIERS, C\_STRINGS, PASCAL\_COMMENTS, etc. Finally, carefully - tuned lexical analysis support modules are provided for error - handling, input buffering, storing identifiers in hash tables and - manipulating denotations.} -} diff --git a/doc/tdfa/img/__montage_big.sh b/doc/tdfa/img/__montage_big.sh deleted file mode 100755 index 8af66534..00000000 --- a/doc/tdfa/img/__montage_big.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/bash - -w1=`identify -format '%[fx:w]\n' tdfa0_raw.png` -w2=`identify -format '%[fx:w]\n' tdfa1_raw.png` - -w=$(( w1 > w2 ? w1 : w2 )) - -h=`identify -format '%[fx:h]\n' tnfa.png` -convert -extent ${w}x${h} -gravity center tnfa.png _tnfa.png - -h=`identify -format '%[fx:h]\n' tdfa0.png` -convert -extent ${w}x${h} -gravity center tdfa0.png _tdfa0.png - -h=`identify -format '%[fx:h]\n' tdfa0.png` -convert -extent ${w}x${h} -gravity center tdfa1.png _tdfa1.png - -h=`identify -format '%[fx:h]\n' tdfa0_raw.png` -convert -extent ${w}x${h} -gravity center tdfa0_raw.png _tdfa0_raw.png - -h=`identify -format '%[fx:h]\n' tdfa0_raw.png` -convert -extent ${w}x${h} -gravity center tdfa1_raw.png _tdfa1_raw.png - -montage -label "(a)" -font "Courier" -pointsize 16 _tnfa.png -geometry +0+0 __tnfa.png -montage -label "(b)" -font "Courier" -pointsize 16 _tdfa0_raw.png -geometry +0+0 __tdfa0_raw.png -montage -label "(c)" -font "Courier" -pointsize 16 _tdfa0.png -geometry +0+0 __tdfa0.png -montage -label "(d)" -font "Courier" -pointsize 16 _tdfa1_raw.png -geometry +0+0 __tdfa1_raw.png -montage -label "(e)" -font "Courier" -pointsize 16 _tdfa1.png -geometry +0+0 __tdfa1.png - -montage __tnfa.png \ - __tdfa0_raw.png __tdfa0.png \ - __tdfa1_raw.png __tdfa1.png \ - -tile 1x5 -geometry +0+5 all.png - -rm _*.png - diff --git a/doc/tdfa/img/__montage_small.sh b/doc/tdfa/img/__montage_small.sh deleted file mode 100755 index 55205717..00000000 --- a/doc/tdfa/img/__montage_small.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash - - -w1=`identify -format '%[fx:w]\n' tdfa0_raw.png` -w2=`identify -format '%[fx:w]\n' tdfa1_raw.png` - -h1=`identify -format '%[fx:h]\n' tdfa0_raw.png` -h2=`identify -format '%[fx:h]\n' tdfa1_raw.png` -h=$(( h1 > h2 ? h1 : h2 )) - -convert -extent ${w1}x${h} -gravity center tdfa0_raw.png _tdfa0_raw.png -convert -extent ${w2}x${h} -gravity center tdfa1_raw.png _tdfa1_raw.png - -h1=`identify -format '%[fx:h]\n' tdfa0.png` -h2=`identify -format '%[fx:h]\n' tdfa1.png` -h=$(( h1 > h2 ? h1 : h2 )) - -convert -extent ${w1}x${h} -gravity center tdfa0.png _tdfa0.png -convert -extent ${w2}x${h} -gravity center tdfa1.png _tdfa1.png - -montage -label "(a)" -font "Courier" -pointsize 16 tnfa.png -geometry +0+0 _tnfa.png -montage -label "(b)" -font "Courier" -pointsize 16 _tdfa0_raw.png -geometry +0+0 __tdfa0_raw.png -montage -label "(c)" -font "Courier" -pointsize 16 _tdfa0.png -geometry +0+0 __tdfa0.png -montage -label "(d)" -font "Courier" -pointsize 16 _tdfa1_raw.png -geometry +0+0 __tdfa1_raw.png -montage -label "(e)" -font "Courier" -pointsize 16 _tdfa1.png -geometry +0+0 __tdfa1.png - -montage __tdfa0_raw.png __tdfa0.png -tile 1x2 -geometry +0+5 ___tdfa0.png -montage __tdfa1_raw.png __tdfa1.png -tile 1x2 -geometry +0+5 ___tdfa1.png -montage ___tdfa0.png ___tdfa1.png -tile 2x1 -geometry +0+0 _tdfa.png - -w=`identify -format '%[fx:w]\n' _tdfa.png` -h=`identify -format '%[fx:h]\n' _tnfa.png` -convert -extent ${w}x${h} -gravity center _tnfa.png __tnfa.png - -montage __tnfa.png _tdfa.png -tile 1x2 -geometry +0+5 all.png - -rm _*.png - diff --git a/doc/tdfa/img/example1/tdfa0.png b/doc/tdfa/img/example1/tdfa0.png deleted file mode 100644 index bb64ca8af809997eb72e3da69be619b07fc880da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3255 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 AXaE2J diff --git a/doc/tdfa/img/example1/tdfa1_raw.png b/doc/tdfa/img/example1/tdfa1_raw.png deleted file mode 100644 index 7700bdf5ae97447d21e0c9c131e210cec3b9c025..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11029 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 bI=Q(7|Gxt=zwo=>1pqWubyXUb>>~dM!Rn-b diff --git a/doc/tdfa/img/example2/tdfa0.png b/doc/tdfa/img/example2/tdfa0.png deleted file mode 100644 index fd2fb0e2f34128c77fde1634f5a5f9fbafe3f27e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3429 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 I72BwP0g6U#YybcN diff --git a/doc/tdfa/img/example2/tdfa0_raw.png b/doc/tdfa/img/example2/tdfa0_raw.png deleted file mode 100644 index deb64ee13aaae867d8a109747f8fafb3550ed1d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18440 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 A2mk;8 diff --git a/doc/tdfa/img/example2/tnfa.png b/doc/tdfa/img/example2/tnfa.png deleted file mode 100644 index a62eb297d2689d108f695e5071594794fa951743..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6547 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 D?6i4n diff --git a/doc/tdfa/img/example3/tdfa0.png b/doc/tdfa/img/example3/tdfa0.png deleted file mode 100644 index 1bba9b7a3b562ac13e57a31d1c55dea4a44a2db8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4291 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 diff --git a/doc/tdfa/img/example3/tdfa1.png b/doc/tdfa/img/example3/tdfa1.png deleted file mode 100644 index f14b92724278e64400f31cc0b17da9ba55445916..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3997 zcmcInXH=8R){Yb@f;5p91W`eygaBgbARQ5<8X(lrOF()kf;8!&Nbv}WN>fm(^bUa| z^+*pSlmH36cTnzozWe9i^{u1URC%HT0##tHoZC+7HF%f z7zIpi5YWljmUz2&w$?Z2^tqW?RH(Zssa5pZRCLwbuQ02Oia2!%e~i%=d1I{K8)lPu zxvcBf-HHSgqu#9IWY8r>4Yo3ofUvNFaIXMr>T5E7esZDf;ys&Sf`|W8f2JYF3+v?- zf6}jm{WD!YNd;)%BekyjhPb>SegXZ0V`diBI3^Zo{(m-%*nMc!dbJr!+V-(}?>K#$FOYGYF13E<8?l zs~@qc8Jk;wQ~n%)b|>v>_TAf8zwnC%`iD=lvFINuJ3>>FPqt4T{xRqUvpdn)2lO^Y|q< zcfX-aU{xy(&u6hg*G9_vVMKIDZ^`FF$_$PB z+bif79W&F_Z|EZLyVs>Y#zD3ajQwOf2QR6k?S)|<-JP4PC|9n*GkiyY87?b`ZlWs8 z%thztcUj&uX1WS?hP($J-Z29wK@yo~b-DKPX5l%U*wI74l9}U4W{C@)(UnTA zyUn4ec))L=n~l5LNjc|JXxL{Jy!AdQBqnl{4bjoMf}A`xu(XqDJi)cgx&vMV%CwXE z7Xiwmv!3sVLX3iAB8R<8y?lS?Qz8Q<$yX@vDyltNG1VhlNBDK3@1oZPOm@GN{a;)% zRz8~Zd+DOt49y(vA?efTKH6=!DHA9ov)RA|*m2a0b6N%yXwA0f%%n^?A)b5@IP(|) zO&bCNJB;o!+(&2LYtxzIx0ZC=kvo-a+q1k6e9MWlJX61~X8)24I>NYXxkL6;;vH-x zWVrw+L1Ycf!yDP1v24iOk5}4gz@2Ap1K?Fv$Uy}(g*h;3-p!ulQ;jeTT>O!}u_9_i zYByRf5Y{XsPib31vTPh#x9Jjq$QVpl|EBIL=?x;Pprric)n3ZzTx13j3PPF*E@r6fG*yrt z@R5ftqw8{i*QnQ7*jMn1M^ShZh70kS21QyAzgPc8Gaxzl95+_xgykp4rMUWPKXoe+v;MC)!XM>^e4*9c6{>jr^(Xp}tY977^x=4XEw-5mo zHM!~!j%C+l1hlkCI3eA?H_2qC+O&Yao1C zGAWdpJUlngY71(zsm6op#S}@!{y3x0nYRBe)tF4PiLLw%4qT?EHUMfh1{wQa~eMZEp9_9MI{N1DNr zP_f7-XG)MeJ_>9+xK>g(m`8Yt(EaMzC)yfDT+ojG3tPOzDZS(W^pv@)QI~VA#vt@} z&I?*3L4R9FPwKo|=fP}XHJ*M4s;FqAog2h@o>s-c_x)Cg>D=Q`Bv&oI)X8ecA%FEy zXLR*&^}w&>FPN!QaL8~7>yLSn{#@$ zrArQ1=QPHrzBC@&^zD|)otD*_16eO%JVIOc=S$=Zuf7FkC&kq+Et*llLn~4df2URou5Xc@=gSv+Zf= zUvIRLi-XZg%jdcDBo_2j=jGmasmoU2%6hO++fUsvBI&v+kpU_i7Ia+=mM#|}q-`lQ zdO}0<;;0VVC`g>Y15Kt(BAEEo2L%tc3U`gqqhSZP!(^kc!x$VqIMb~N&QTQmjn5`F z#=93MX#D2|Zum;+1+s^@wH6SOPh1SbC*aDp4io6#2`+OP4m&#{X<@bRusu{WA9%B_V_}v2p03pOc@R zLTPBL-T_SGj(Z*Lq@i!^Gq;J2WazjTI*d9~hZ0#wm+I?J5*y!*&y!>CZRjJ{VR�`I>6o+Qz4(bcV$T zhfBAaAm2_IBhYCY#M`h$x@;r6-}~v;KQ6G${)f{Kc#zX~}GT+>+M60-8jn_qZ2Pdt}%zR5WSsNn@np{S`WHr;R>#6-dFS^Wp z_%>H&vbYQGM92Pa_b~;6QcFmp4wa3aCJ^YiYki`1!e7fsn&2KQ-jHs)d%ucFDb}*3 z4aWW;lRecy&-b4QkxX3JKMh1`^Tg5_asrZ0&fg5wm^Tgn01r^A_`-n&K|VyZCAq_eoqxXq4@=ixV4fc z$t_(T9o0|b5llzbQ~zSafxNQ@@!_r7KVwr8kQaG!UjY1Jr0pOQI|4=HY3ZD4&Pk-4 zGgl;zWXBhZTEL3kW}}Rb290aYZPY3mC?)$o?Y@vaJAm6qtV*$gSt^KEu_cS zXEHEu-?Mrm0k)Li&f7eAH=Lb5HhAJ4z`}_G-XN?LD<9l(G0|BO?wDYV8yOu3P)H@{ z?ewm?vU5!|Np}j(LZ`LKskP-|S1GZ1ba;Y)1}HtPoeh>NRs7qE@_(<9jOfH|GW);8 zcVM>v8h@?DANTt8uaRnpArdvP+q+VH#3*8cCm4<%YJTSPMG_Fksjf0UNIR6r;*H4_ zi|dYL=QyRxdqC_DQ|ZD<*G!KV+t=33xSXFK3{xbGM8HirdH`0;P2eHL2?)*qk@1E2 zHm{LiAZ35&;*#@+)3x7OBQJqB>>VF|Us4NsF r3wMExz&p|jB!INl_0+ySvJU?ThbWU) diff --git a/doc/tdfa/img/example3/tdfa1_raw.png b/doc/tdfa/img/example3/tdfa1_raw.png deleted file mode 100644 index f95328ee4011b54744abe5197ef26da203512833..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18614 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

+d6OsyA|9kT(|`by$mqmL#weh}3H5V_9L*9!%*C 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 diff --git a/doc/tdfa/img/example4/tdfa1.png b/doc/tdfa/img/example4/tdfa1.png deleted file mode 100644 index 8e73bbb5d4bc7ada7a59f6357f1e4eb217f515ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5062 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 J)oR#9{R=%(eUktH diff --git a/doc/tdfa/img/example4/tdfa1_raw.png b/doc/tdfa/img/example4/tdfa1_raw.png deleted file mode 100644 index ace19e89507c61317a8c6128b5e7d8358fdc2179..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25566 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ℭ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 UqRQbhUICz~rmI@3Y#Z@^0H@xm$p8QV diff --git a/doc/tdfa/img/example5/tdfa0.png b/doc/tdfa/img/example5/tdfa0.png deleted file mode 100644 index 78e57d84c1cc521396d71c0dbd584b181c00679d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6623 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 L8Ed{(cTV^(s5?uG diff --git a/doc/tdfa/img/example5/tdfa0_raw.png b/doc/tdfa/img/example5/tdfa0_raw.png deleted file mode 100644 index b29c2da5b76fd7310762c69bae2cccab9fdfad66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22811 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 diff --git a/doc/tdfa/img/example5/tdfa1.png b/doc/tdfa/img/example5/tdfa1.png deleted file mode 100644 index 6a19be361e0726e2a2103e5bce4d06ec76b316c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6097 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 diff --git a/doc/tdfa/img/example5/tnfa.png b/doc/tdfa/img/example5/tnfa.png deleted file mode 100644 index 3cb007621b486be101a911ce0cc81d79a7d5464b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5802 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 W{|%gS7w;0T&1jO(Ek9Q>m=y_ diff --git a/doc/tdfa/img/example6/tdfa0.png b/doc/tdfa/img/example6/tdfa0.png deleted file mode 100644 index 0f083672177977580fb5d59239226aaf3c887aa7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2964 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 Z`68nKcY=D+t}vMZFxI!wYtp%w_%E$S_x%6> diff --git a/doc/tdfa/img/example6/tdfa1_raw.png b/doc/tdfa/img/example6/tdfa1_raw.png deleted file mode 100644 index 020d980fc8b2d524d9ad02168bdb83250225ddd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7506 zcma)hRZyHkv-XQa(1Z{qI0TZQi@OAOSb{C?u(-QhaDr>l#U*$MPH+e;ump#Ypo<1~ z4&TN9SDmVJs!rEb_w=+}JT)^H{Y0y)%Hcnwcm@CfzJk0o7ywYAPx}SzCj~TnOKChA zbZbc!NdTx%#Jw}cc=Bn@<-sZd;L8L6!QlXK^K=xv0{|YJ0Dv?B0HI6(Aa&0Dt|9Ui zKs8g6lLj86634rrJS=ww6&b8`EL;*?LMo+P9RQ$&C`e0w^juc<0Gp85`{vH4uolq|GYUNG^#=6y|3LQ71MjFc@U$p?nRq@@1O z(udLwIeBX|!tGfrSqlp*ZTypagkMA^_qiuUZdbRnwr~77DT%N_>I#N{v zDE4Owu+%5?WQq@rNeCkPkdjCu97f)7dD;p(Y1IFh0+%-g!Vw!(QNvqORktO+=AA z4-qLT^9z?&g5myGwHaE!q{UjC#wjf)?>{3_(G0D3uPlZl9@>K2)G}W>rr|bvb5`Pk zltPxY-=iQUs$NrZv?9n9`FW1&b(~@vL~BhlK#`haR5Ky2B+1zydN}bo@%|RlK;2t1 zp1FJXeUim>jRW!AGq`XUbkjtp)YZG8#|goqeJRyZYNube3@=${q%KJQ*wtn2ns)^k zqQQ3cYm6yEWMzeu|5hsnmpU8fhAy=_u6@tX(jq9RIna5%d~YX_^2j3ukgR&66i@3G z>5&f@Yhy2jt+l77x?j_M!-&G-wSPJPwUGbwarrhCRXP58eisZUkH|c(cqiB@(=N@T zQL7lG8Ok0lwtH3)K(p#dpwlm1wbw}R8188fv`PqJ|9Z7fJT0LGuXAMy9cCy8##C+OA5S!&@ zSm$K8$=N3r^DRi<$u-Q;fcWPMD!ZwHw*x6t?F=yXNRr~W_sqUJngRoRzfz@tV!L1b zjgsnr%{bgSD>Gl@@37NQ-ZZPqf}fZ9VLoC#BQvg*^yc()8mFglb<(04dY=NGUthBZ zIVHEC`^wcLMz8=q^wk2p99FK<_cuF+DutB!9zOHQ+a>G~3r#K)z^_p1 z{eTByQx}OmXdK;EtD^G&%@<^WWoxn<1jPQ{2*>Uz7(OeLID#tv89Wv{Pw86Muq||1 zKK)9{$h(;&%*%D&U!M*p{h)2_cC5Xml7-!sHi28lJxta3MqI6te!U z*@rZa&xU_w=$(d*F0I>f4Jgeer73hZjPp%6H%zFI*S$r;WjR`i*C)_nwc*xTGv(7U z{Oi|2RtCLlqyWeXO^%UQuaS@M&R&lCG)Lp?uY)?d1o1p8Ju6T3J59Uj8L}2v?57@j zBC(6t3(O*ydAnnLVFW-A{#?jh`tX(ni2qqhcbx34_j4SISHl@{q6F00KQHwmGx)nx zhY+9~j-s4+9e?19_apb>+zcl<+umoH`{?cweVCtC=oJ>AZr5cz>yZ8zL2yQ zhR7EY5MDtrXX)fiD61UDkWVMB8V^cv9fwV8+^ZWLI7Rt~OrsmL_g62+Oa!NTGfgN{@p5 zk1eF-Cmg|FTpOo%i;dP>uOjC&&l_R2QW8|<`yw{) zt{U0@2?c_wz>8s`3^KVgb!KyC-*noxQ2}6++3Rp7ewCDNz?}29Zw*D~H03D0o#zbQ zP`?vK5E=iyxe=FdgNN>ljuUI!BU_!~YrpWNZ9_F^({BQDv>o?pub{O8OF`|aI4Rsx z7c8q&HI}pbqj3Y2T#x}|TF?Z%aB_A!b+-r#XebUfCjd{<;iBl?tKEmiH*EpXgB@;x zguhqS7h8DMT=fBHU*k%(FEEnVk~M2qf_~rqu2}2Pz(U3^X!djxyrZl$?qfrn^V6vc z{UKkl8_`OjrG2OiTD98Ht!1sBls(Xp8MQM#ehyndGg7(a?c+{L%@8cMZRu-2PH z@9*y99v^a&E|C^F!W{NR-6?lRZA!3aA&;X4jX{;DJ%#uy75#li^mf9`-7g}(XN)UJ z4#Pu_Z^7gM@B_;-3udKdxS_8;p#kQRuh{EPs1id3(xUuSoVsm8(Y9K~N ztASnnHJX8t#hNOey0j{Nci(!=aL%KZg;wJ~%nam@&vL`9FovkJcAbpWR60|#O@Z>= zBV#E|r2`EM0H}c`(~Y@5KP8;`*Q@{lHl$U*y!~FHzTA^AMwh|Jiij9^6EWBi5fkeY zdy*~)2cef!P2DeCprELvq^Lk(+r`t<3L++95^JQX-+b)+{k!XQz6UL(V=nt8T{ZP) zZZLLV9sG7pf?Zs;)u2wxjdEq6pCzMCOcN_IG6ECpil4`~(cl#t0GaL21R9B7$5m_= zDZsL(ifw1XQZ`B-)xid-8OG}B>Pb&3vy9`tpOsIDT<6U>5)&N@1EWp&e7J1{Kf3W? zW=;YV6it?S4Gsmlm*Q6E+v6GeQmkg?XNb?)%~Jl=>)V~#R)V(f^1)QX2d0LvaZ#F( z<@1Cm9~(If_L6H4s)Jgu;${n6azOFR9-QSvXAMqD1|nxv&B5YJpW!!&@+q6- z(+!^zHGLLT&eIlaR{UyxFCYHQ4)WMuMeX%+`=-+fCVb_xqN7;0k-{j86P91>19in2 z9b++tgV^{gD-aDWM~YBRdj}m%H&l(B04tUHlNS;!q@@RD0*1Pdp~P9px4bJy`UzJL zYoi%imm)9O9($CK;AfKSh%^z;9|Yk0lJqtgH_!aMFb7}6@*5Ajh{FA5eYYe;KmGcc z@t(4OYcygYDH7aTTsXbb2~og*4A@=p+#3=QU#oCNQl_08&dNh?3|;0hnU0%AL!C3B z4aWEdX8N%%y`%)RFa=p&+u4{F)=Bbzegcx>CE8y-o7cl^@pB*iSB*?Z-&79Z zjZ|QQSs?9;oDP+Br{w6XRP5?g9T-Nq^cwH3N8V+uEoe0O*p66?y(vWwA5b%w1O_<& z)2^{_Gx)cmCZMYSaG$0=aQZOXCMuC|3X2NohRPcFqC-w(j+g)Kx)?AICsJ-_q7eJ& zH+-`;qd6}T-#F~6fs722z%;E8n{;JKqJ62H8gKD6vsf1M$XxU)(gNG7k5_cJNpQw8ti;pfS}jDW7=8J2*!wK{zJ03- zy;L)p>^wKF#;sRh)Pj~bLyzqnPlv~}S8Lg`3Z7gu*v}GBiUtdamX&@=miu47aY^4o zpA4k=Dk7-c-6XgmJ*|zR^G^-7>awUl0b7ic{K3YZW`L^aHd}im0|g&04grqsuq&19 zq2>S>qLsAl(0DfteP+Zb?2J+&ntN`Z;VqW8*+kZ{D*^Z8Q=<>WL6;@96%O~o7#H%z>yvBAJdwmNt7$2JW_oZ8LYIkn=2=3Rl;zLZoI?QaM z*4x-vN+B0^5%Q}k#739@HY7;l*B>D$UO^G+$Ag1Y@q;8&YvK@N4x|LSj?6*5?OZ1E zudbk~6(I4C0p2)iEZi*r=^&z6?BN~J5Fo*Ol^R?OS*t%H{&m`Oi^RGJAh+5cl(yRn zHda^AXhC?M?K@w~pq#L+au0Spy)gke@2x-B3Sc%Fza5Lzl#2eyN zeo)kGL1-sr-Q^HrNjmb=q&@dLWs8@DEgna-MLHu%6{Y{38Rm?CVx*bUAg%!XKoRjV(RQ*34`1!1%X9=&W#`$ zrpPbYj@y?r{rI$U$-RraJeHxY^{e*z#S|92qVEs;IbvJ24=!3>h}lK;7k2Ob-DcBe z{xsc!Pw7jKcO3n#^djqFxzR1x$BXo|k_Wy`{?>)C^h&MEbbDLHf$XPmG{Z4(>KngT z>lsNf_xebib3RGOR!yqdzXDzO1?1~`0qM>J&3Z`I`+E<5?{AZ7t7;XW?Kp!~{oMJ) zFtt$%9@epA0(5dN&TB!+wgv{14?>=c+kpDj^D_aCHiznty;xP^-qOdZWgxJ-}fpRa-z~DP|*3&O9|JW(>{T4`23;nl6 z)8Sr2k?nl-wL{Ld%4_{x5lQli0c-Nk_MbmLbV#`6s>{W$@Xg37gV7Z;%FW{rD_(@DGb;k6hDnE&QUyAyjH(}_;hd> zhN`E3I`JN_8oi3O&J`4JE)dkU^y=Ru1A6A`fp>K_?gdk=Il@U7Wi}umtLDo&oGC$$ z=8amhVmXhk`iA|D({ido{rDLw7r>Xv~^-3!6)*YoS+#QI(x| z&bgP8_jQ5Wi$B;CgeC;OXgs+du~%a}*$rth(H!IQIo&u3Tyvf}F$)&*0|enx$}9J( zj17Ow;p~l5_xd4GiLlO#x*EdJA2<^hR#;y2C_K7D_<{nC>Dg>`Gfngs=Rzv!kcVu{ z=5DUv_PPrA`#$h}Rg`y>$Pd4i_Z5hJ;P_u3NM%?tGDZ^ML1hwezK|JqZ?}NyW7gwj zv?y@NCOVE-9y9*MZ^dSuI|H&6C!cr9YF)RKoD0QIb!9jD)9h6l}$&rq41qoL@OlJ+{vshC9d+UmW24uD8!}o^ zpTGn@p34w>n$gg^T8LbbznT&{bRjDZ?HUnC&{y`<)!=;!XMfK}son! zh~OoTD?%Pfli+J)>`6>a40UN)TFCpRgAzUmjHYp77ncb|Em-M}_&qGPORftpT01GK z=9h|zx7U&NGr^ts&^FHp-8UhhYH_qHZUbKV`R#YFqrvuR}ZvIlKN_LS5 z#@eCZntr$?syRr5xbJxP3|Pj7_0HhxuNnRnwaY!5mQ64%m16dJ8*c<97pIKX*->@& zQMZ0LYDrv2h1W-4Xa~ zO`rOdSzhx}*SOgKRua9b;vC}ydT5(vvZ^{u*fXbbR6qIj{GPWx%O{sUPv`f$XU00= zS;7QOR=(@!!UHme;3wxn{GSqd
DqO2J!3^JRqQc@c|Z*z25_e#X3zC6`oeX~}a+J18hfHrNhB?C8q)c6B3Fa0!VY z)5mVjAD;=iY+-Aq%Wbbh>nnZS#oqGdNTujBNft@lEjhpC??2DlxaX`i|8JleyVoP+ ziaR%=PzjD9khg@qSGQZvj**eTmh$pzTyY+89)5&SMxHrW4?orf{D!_mOtHIZj|Rd2 zx8ABRebNSCoV>_(c)8c zvDOl?k$UJ0+Gw~zXQz1 zAQmt%b#c8TB?J&W4X#vwnQ5jI%=uuGnUZkZO^K%N+Y4FtN1O^sCZ4RZ zT?|sh2O>*AJ*~eO>;I#Ms_#8#lq?3?EaxBUKf>&uMZ*9~L^Wp{7Wflx2e$G_AtDlCoW}=vlaxQclA8!gJbCTq_J-~Z@~bXdcLmq* z7H|_UP@@I2Z|(^>S^sc-Rjx2#*rP`(vsM-)fm09b?4z4XAv_jrQ4(7&q;R$Z?X=gy z=UQbj)(N2*CAlyG8+kqVkgWJgy5X1$dqhqWj|#1u!nAERZIw}Td6Ovvj?{~$Zyo5G zx|Xz?5h22f1&lu8j4-!kDr5=dp(ze!r$PYySr7(9cLv6Q#IdDHle5O8Y2b$DrQF(W z1Ap~V2GieU$~HWqb0ollPjh@z_ig#G#4k7!*b4JgGRdkDz48cA_;8Fn63^~%@XRcq zR^7ag8($Tpj5R3MNX-f$-L_Bv=JbF+VSv9R>3s zMhGXnzMYg=OTmMiSTI_|D7*OS69OXQ zkLAmPUCcLoIN(Dkx-=$jGqZk6`h-GjLomwr!kpt4*FlZ#Z9wzNi`gWBO@j^+k)Wyh z4vx2vi856FlBXO0MhQ;9u)S!eTdofwC0zNg)_6Yr#QqRYiAM1x`uBx;%HOFYH3mfz zTLxf^Dl@&1LC&M1>f84np{^$g=?%Jh*ms zT*XNCBH#)qP5cRNe33it3 z3#G%FK!=NM4VK{nh&5q_eC3bA2&U|&FF-w#2L5Mi=tf=9GUEUFvrv{T_p4S|s#x$e zdu4eh7{Kevxax~srW>G@jSrMg746y>k;OKezsnBeFj={R=9n;vA+JX)`ydiL!c{|= zb?zC>j1NRf{#O`GDXd|+Pk5N9qlMh?Ku7^VF3X?(1bdLYp)01B#>TH85&yXA1ivV+ z^=_zWr~m60!BuHw31-?)!9tZj*s(V<*uCm72*Et;!o#GA30WeP4aB#|*GsI4BZVfc zM-2@p&5zP*)<*vy1i7=^*mh(Nu)Vzv4VMeXK*E88)O979kFk(~tdgj6*n}ER#%<6= zO=M{Vhs!(0eSx>1W|;{8a|~Ns8S63t3tC}_X1T^zVgI`U8{!4|i;D}_I?hS;#GGEy z_G;X!zq0Rabi=lX6_oyJ!aWq6t}7B4i0j^7kHgK~!B_K9flPKE)%VVqvbQ|F6o!_x z#5_Uyz0Jel{72Rus%_DW#Yc!J{$&OeZ86GUOyW^6l2z8A#%XY3?Ddl~kq>R-*Z_j@ zD%OV1M`?Hv*bPt+5|tk8_HN2rk}X6rQ^mfF)|oJ^LAs&IcMlod zuNC@gesUTjn&xTARBWMOn3JY^gW_ENQL58`#o0Ze^@qP1zHnm$H~rJ36ib2~zI&T} zzr=$Bymj+qo9dvnq@0Vbi4bRZ9nV*ZtIhs%6D1|1VyyG=)d)-l)}d*=?a|Or z-ygJL5%dHuHmBUNX4gL>S>Kye8f$_-(L-^7g}jQ1#;gy26wCeL&k^hmlUg|doZ=Xm zY~B@oS5wNZY`g@_DJ7ZTPAD&&LLk{@r6p@%rJ=9Kim@hah-7HB35|58eQCdR94h=MN z*Ue_8g_V1KywOCk#0l0RO9!{=BJ`n`2?_5bbDmoNj?|J?lnTNgrXJQMEbT>yhX=^v zL0^=1ZHy6MbAb?6iI|9JH;7snfnxCo3_ z=uC5w0O_9asH!sY#v~Vos4AU4`(`Cc*^$6S5|pb+gZ=24ZvX& zGC8IwNx{bLzkf7AK`*3!sVr$b3tb8ryYkP8JZ`58YhNdsPj6@MPain$;^N20#~*2W z2U);gmTNq~-og30H^Bx_*Qvj#bcEsWEFp;SaLklzxvkY*p6gp9TgT(dHviODkrb;x zPq(-Gl0h#47462E8v=Q$zLK&CP4XY`v|fmnX+S1V6XrmIGM!4~NSbRb3Q^n`hyS|E za^n9`fW)2Iew}MzC$DDyr@vRqnDpl?Q@Ymy;tsfot2AS?S8yTcVCU< zMU$UyG;SAr@}K9-nq{t=^lsqEZj?Y=YPiaMaz53D$X};fdRgZRZ{fxP0Q2k=FV9QhBO)NE`mp z^Yp?fnMu8jyR$@sauR6;>lIRxpv`fET_7pVy=BkWs$VPEYt7qb4Yyc7uG~@K_$pSn z71!ho$v-SOb=r#e8P)b=aYVf?ISB~1l;)3C^6(LFb5DT&xNpO2uBx&} zG8}+c(ui9<*7v5bSAvepxv$XE@Te6e*9nivky8F;!W^+~2|Pw8a8abW=ZeYQPfll;Q$YhBWTD`#%% z?oQ3Oo_M~}&Tj0hy$2j}#*_yEIPdAsi0(>Srm z$PQ`&VRB<|3b~Q#5!D2J&YNJ?^W>MNVeJaCUsOpkr$RGmS-tKf=3K0G7hHE{sE`Ypk4#ug^Hd-5;Iq@pL) zKK?^&zhH!pj8s!`$-TgZ5|Nc%<$@*Z_+e2dg4`?BriyD4}H>>CcfzQlQA%q5yT-vl3jC7yrtau`0kJl zEE*`N#JX`f-yW$2#n$t>^!*(1iy9F!6FBm?(0N(BK{g-?^^R-_Z5`dJKExFL9#?QHjeLvk>=9Lt{z{-3E>Fvxd6_;xfM(wAeSz*5g2 zis~9k?{#Sz=Hg=vryKq@SS{|`Xnc+~{n&wTwBv_iM*+sPkZe5@NTu|;U+eoC62Hn%BxSI$FgMtIHada+Hr(h-g7v3cOaaA}_#dyT~r5=Yi^CoFsm z*1~7ai-JDQ5D(;es(Nqhat_?cXLw}f=}2;VB=Bw-oDQxGYm|)`_dGN7r|72wMn*=PB0TSJRoBaUhLS}3y}WrqR=z2biz8;t zAaOcX%^X1dHO}Sr{OzRkq?>`K#gah#eb;XrXb_qi-Sv92i^%o&U=4#QlXQz|*;aS)A>LA%cMW6h8hy7lNa(hgh zy6Oou>GS5V?zyDD8zE{jcmKK<0tU^L09=uvg2pYPbMWpdO0Nm}#Yj%#qj-h{}b z{^HgZmdI>U(1t=Nq-tkPwA>y`R8nJ(D76G-SaLIK?2l8$avpXA{E7uerXVvZrX~~* z@QDfZi{9$*pS5b?L2EkCVs2$DJ{y3TmDi%Ex?ja1>&iRYtwW8@xHF( zO)O|4AY1grgpuzUpFqB49^MrWP6p*@HMq!GEx zE_o@wSRlce?3xSwQ0Kc)&j&j^00^?QDhJ`9%IC7yWHxPa^gx(qYT=4HmR1dw%xb zLpSUinF>Z&Cd-F`E zfd_Dl<|os|aj%VrM@@b7Zu!#-Q{U^R&A+j%TbOibj)3SV(b+^9<9a5Be!IZk-Se zsf=y$mWKqRNZcOJ;Kdz%qwB8_g~!aCoq-ERg0`r)_wT(3D;$AD_gcv!Vb`;1`S3Xh z?jbcec%qJ<|I59x6L)Q+053es}hEO$=}3k6qWijQ8bb_wu8U8rj;M51seAfia3|>88;Wy7a zKVNg|x2H|Ch%(vVd*$6fDCH(U`7FwW~)CB#eu**r6NS%wb;IM{af721sozdic zLFm$@^&+THa2^wefvZc-`pICN)K_l4W4sgF7J(|h&bg$2nX{7+dYRnABr{{*`K@8* z^oXC5zaL9F&gn*W`JxxzfRj%{9$?imT&o(Wf@-}E`0H1Uv)We<&a{grd$Wi6*9plt zXvwNQYQ{ZJZj+%p)Faj>dxG%4`7kw4@XF}XD1*N1gi{()GuyJ&s(xU=WWP3^z?a5O zakSeIW7xy0Xi9>*+AV&g0d(@8ibmVt{kgxfo@MH6Em?|)u$MW8KPr~6nl$n12d22e zC&m7S%Xa%w%!3}(wwo^cn8)AMI^M(U=aa`u+m@F9cfy;HA(21j$()kxVlJm|&F=20 zIKuV0k7>d+|2^8K7L>JHOxVcB&ONv&^bvk+oS2-v(%A3-8xvy*)}kUb@sNQ?_gf@b ztB{{j-aJ3~0zUBc-X6Z*4JL|1>&KlfIsAUs9Ek}E*l5(uWzT*4RX}HX*FDVCwMAGl zs#S@pJ&VrTjMCV(^#cP4v^i!<$^Er-rsVP8VN}(>mj{=M$%EBUvc>=vv8c}|=rTNa z(c&=mi|9SU+*DBywe7B=vV;qErNP3sYj#dXg8nyzEXoNkYhwl*A)UF0YQOmdy$$dA~Hh>h8oV!LY%RSteT; zwRgIXlEV?cd_q&D&xX^bhGto>EteHwT~=ra^_SLD+y2`!uU`*C_HJ?ON>KE0KD_Bu zU>umIO}AFpcr3F0;?VPj;^D=qY;G&HqkYHMw|e#Lcpx+ChbWdPn{_IFOWX{&Xqu_6 z7sATSU2*uik^l%XS0gAY-B5+%`&;ShXxi3zVptyl(t0P$&Od=ZRdY8x%vR&d3F{^_+LjgIxJBaHrt3rF44x(jqT#wAc2`>uWRvnl6_Px(F!CLLh`y46MaD za!pc5s>J1sr^D^5!83&*c=rS{ar*(X@cr~CIPML4J0zXSpv=y4wYTdObGU;*dAQfI zl@y|#!=9eaw%h$Rs_; zAD6{R73KP)bpYQhZu#H`3X8zo+?J}CKP-51NQ#|jniKj@7m5C4*4@7#l4PVGXV*Xp zey3L_?w2wiAV_la$hdcan30dYhvR%&$7P1Zp+y&$U7sMc+K6&esl0P#2o(jEnlSyvuPSUz0^g^b^kn7e6Nlr4Q!2vXYCxJ{&%$-G$ERmY9 z5My60zQAp2pAd}E>G0_*?mKER#tWG*XScasLRN0omgPrv*S_B`Ul{hDB<%!;K~HVJ zkx1B{lYZORcS+=2&~BBpvg^7E*rq7e58A?fN`~fImZP->B9(_N(|ns>m9QA={f>P} z58lB;+oK82tQz>T0?K)76ERieV%y3eQN84s!taNQ@PH7*Z^D+`1V9y8-!inL43W)~ z6S^|{?&>*@@zB1*MzT))--`wU9GSUcjT9LlL)_ouzUz~m`R6H3YYUJCTilE}=qNb* z(FB{pn7kW0_jf{jlL9s~zty*Ss-`(q%B5^2FDS4hpeRQK=@?qC-X|>ZEsbY3@~1|N zo}(Uw45lC^WXeFHLpOuN-)&*=olBD$u$HVme&tUEuEmaM&hNa)Ky6vc-Lpi$CrctH z5Et7fjU{i^ck@m%C9d&tkPaRaoQTIsM#9I6=uy}AQ`BUr^> z8`f{;QZHp*TEc@Pyg!yi8);s*DIEr!Ed57qAKbdMene@V++yUqqr?YK!f<-*_B9O& zhp{k-Jq;NGy`DDJ)Fb4y?R_GKlsl;%cU4m9Z#b4!rOIRjw@V6tp`{k=gX1Gf9_jX? zQ{FmN?=v~NOEWxHB?x(sg=DpL1#EM{N<_q$IDnlP4GVXx({Fab78{?4;`=wa!6|hO z-boZJcQ#;sD1PdW&{9|HL0ea$P=yb2y|BW{7=)c`siNf>I(ds3;?m^sm@L~h_3L~@ zXK-ZU%-17r0x4C0Sk`}7QmMe(UQAO!NqxV9N)T-Ed&zDQQsK{ED7MdVIZ(Z7lt51A z)$#(nh|GD8?6s(f z`6g|HQyN?Fu9orz6Cm2=gKOnQEujKn3#M7FCJhD`@6x|>e{>fvJnBx#@}=AHtHPzar!m9Mszy)j9rn4Kvmj& z4rG_}kMp92o;-3e*|xSIPAVEkRZ=q;tpQF&)?`(Vb)1iha-WSaJdKUNXR^EWa&eyj zs$6(ly8zZ5lipeDeOMz5s(&^%e*@Nt`F`E7BBifiyzvv&OWn&^>CM*tAMiD;{-Hj= z!pg3Xn@|7IOfSbFj)P{UOuJbfzX`pkQwy3||>3IcQdTeSm zUWf1ASktUaQpfx0D4wx_dc|0bYrK()Hs(Y((r*VE-E^;id2Q3Q7#!*s{oP(<;E=CM zN&2jB-_Nc(M0%`m^8@|Q7^eEm<<*`O6;-Bmxo5w6{|sYF4xq-^B?ZfBcGFjOm4eaT z2>TO)2m>C*LT zw0T@&US9KefKPJC(qiF1^U}X|E)4faf%%pvbshykYC3CLC)eC87>ECkH($2k> z_MKzHm$I2pxUTj{2sRue&J4iZF3q5&2pp5#;@+pv))A@>drsXB74L;Kn>3|_&}e_O zKCPcErI;Jq98_btqw$*Z7@5qT6YEf^+oXao@pZY>Xd+T|H>_#hI1tVPpe}NY^;Oth z@M7T$DOHs~khK}zNasfa-=T!2j|@nY9u-@EeBOA)3}Bxyyq8>`G#j?hjq4P^b>$LV zL2)mpq^5Q5OXH0DioHpW&mPB@)6cCKan{^htGo0KY( zt(jbf8B$|6JjqNMn1t)3Yr9#XP?^i{g~ zcrek^(Gud5W*nWd&Lh#Z|-zyR#|CCBJf~k`@aoeNIS!l0WJ4?xZN`chJ(4|Juz>#=kPl z(0FoT~4>D9RvI$?m z`mt@1*;Y$ue$+?AbGj+x!hI?y(~FguhXV>HmA#VVjqVT~K!Y*!FM3;4XEbluTD0ar zE7z-b3r()*zdOOOdPN*bdGa%1nhpTz zj3aj@t`^xZc);4`9Lf5(@NbxdY`K1UZMS@6i`n=cvqr$lrpO|~C;^#dGd^%ba{sjW ziD^*4|C(S}wW4;%PV3cRL32g5KSC#^UWcYV;;?`);)qf#BHfH-hDm{rr)#s|#+l*| zo|L%c1p@bsy_u8(jzC{Yg=eN{PWF$4r)mPAKIC%*);t~9hRVvljF9@; zpUpjf0I$MZ9o!1D4dI~3nd*&?_(0qYhg}d9ztGoa+9pdd?CEowhV3Q4B!g$r zhtYD$h#TWoN?S2Cha9CXW$2S2UN;(2l=&TAA0%{?!UYH#5Q`qwWHlrt(|S>I4>xUL z09g{L@6;1#C< z8%(x}rGV<@%&E_)cmc(Yl>*ndyUtYavF>KsJM z=InW7pph38O9ISy{W~%ks4XVFOt_A)udggtZ~y)|8DYl<(xK8Sm?LxJFrleJ<-y%d z)glspwYC;}i;k2UR=fg=p0GdR1vcU{Ena!-dMpG?2WuSTu&Ph_Z;Zi3er_JuVJEqv zOS9Hg=Ff%RxD}jjA%4*SoUJ_QkB~QsM3E^`KNDyRd2I?ogS)2lq|4K}kovO-y$IW1 zxGOBiOF?MjwCH)AI=Ge841MTshfJGJGl>1=2igeC(SSQVV2bTiHL;tK|4ex7v6vhn z7zbFeB4aPK_Pa7t$ocp#Y81CXQSD8K=jX8xfGz{=VW%7e$WVHM8Gj{XsfV zWE_KAckx$hiw@$pV=E!naF>=wLT0`ePyI;w0dZ?>Els_S$1F(q`pwGp>&JJ1U>&9N z4P$5|*f>FFU*=0*opG{qW=e~m^zk8{rj0S9a_J@A(p+ic&&V_LY&nIkMGnyg{fx49 zChUa;##fhtVjLj)`J0Tgr=YyiT6KjC=%`#{CY-a?$rXJG*Q= z2t@h)>mMf#jMHye$6lMR!)HzO4K^^Ce;ay3D@C35&$OJ0v$S$6jy6iC=r0ZRiLA6p zDRKZ1@l z#$aenc-jW1$ZBNVQ3yxL6DBPJVCe@<&i@ft z$*)3&0rt@_@OB;$Z%B;nUko#>+e}puK`=g z2I1e`HQbg|I87^6L)*IP^f)U=yUX5`5762C|V=e-~kT@m~tfS4d?dw05}ptY)6M zJpC6S7D-WRCFaAME0Hf{8!3yk^!4L1L4FVH79S}IgnZXHWT8Zjdo}CJmd5j(9W>%Y zYEA)PS6v5~hGSw$M3}ese*a?ge5gLZCVOALzCr0?pvDLipRY1pnA`j|_tDAel+WMa zfA0Qt^;O~TNaP*#x9GB{xHn&y{@MFT-^Z*<<&=lYN#q_Hw2IS&7S%C)+cZ8swXEz5 zetA}`=zt6Eu|&n6kf&)PZ!ZHn!_i=uInmau;ni+8S;Pt_l={1R1t3)K$4ad$GPwtYY? z(;rGW5fKqy)Ve825QL7uLvom|g5p+a3yX*tpPilUE&Lu)_GNPLc^@!f*Ll0tN&1BJ zCL}lz^IZ!r2?^OHEmuBQa*wKGZQ37-fDKTEi!MDc&2-NR@YbtG_D z@q29Y5Dob!%PlTGW$6Gt`(|M#s{UTA=RcUGY*1WLm=?}bEMawA;6$MYkT0S5hQDb| zQRl=0!KSpdvZ}LuaUpQK3zY4A5w>Et(>^YflBF|Q|7bEcFx8Rz2)g*ubW2^WE#u?n zp#2GDbVSJ4OF8>>mgLpYH&`X&$#=I;H+`{$SLT}JJ?-`Lq*DeJh@cTj3L2Rlmc2L( z9Jaj*TN8@z_~VOtzIU?PJt7gPOeWMcdqN%}Ob_2qa>}zX@E_K1tFegizMoua9!=~b zJEJposBdOp$LzeSf7qJwdysbQO&OCD2@*DaJmMw5{frCja;z8od`}$3fg?Wvk@L#X zP-GLg@K(V~<}f$+lZo1&5WR|MzKuGW3uSoP6xEe7sIZ;^?(FRB&dzN9N$$O`-1p77=RNm5=XuU>Jy42)8@+-#1ks zd1VZ%&^3=efBZ6q@@dVwf360f z*M?~LR$mCs>A!g` zke){=usJUiV@m75F@5@CKR*cG{Ma^}#5@n9O87LzCn%63F>=lE-UEFkYyBKsG|Z>i zd3`|@Z(@E3$l`_10y#wBAknzyN5<-3j8!KozE6?X24Bz7-ii3(-9Lm)@ z9k;dm&)f_CDqCBdW6n;)Y?w1d_}x~ZcJeu&FWE*WD`GL-t%;Pc=LU2sy9XR1yV%~; zFAat_A6_GNQ=R3;!g)V=JH7Fu7{HO+-Pl(pn=k6w949WbQ6!Z0$>{uyf> z=Ugc9z~|KM%!J@cP6DaUZPTyRTVuJa8{r|OjwC#5RwUikmR+U!T>$QV%gk2$U+9P0 zRzmg-hlBQ7#v_})h2yE;$Y$HR@eziNWw4~}FLK;uFd^60GjND|lBCf7H&$*rgZSlR zUVKl~OJh*C;qKACwtL@x97Ouev3XR-Gj`B+ zjUK z+=*1cm?=x>1wx3Oie+cqg&Y)HHrQd*wc8NK8R|@oQ|vqOBmFP!C?Z}*riop|nx+9s zvVucN^0jSI(ykHgQ^+@3viZ+q;)*lbAEZZ&@uLVKx17uZy=S<>X>Z2RYXu28ZKJ>F zS92U>;`HwS7(O3WnO!oD)0z=JBMXdqk4A%rk=uWUq!+*-HsF5Vs00fv^@G$GRczDi zI)t3JhbX+sFI2AArIrJJ_+yv$2ZN7AjKz2J{b(s3=}y#i&h_u#QTJonE`-5&P!F_o zCXkfY)AnG8Xq4DibUpqAEyy)?>hII5NaQ++g>}nl5-o{ySCv^W(0SkZ`ClnoBsdQ@ zcT)4gK(BQlfnjeH-~PnIMd7(+50$Q>_AebYll0@)xO`8o{KCr(VZn70t|4;-j}e3k ztyy#-a|hexJv+?Rxqz zaf6lc^6>$ds~urWZjK4dVQ3~MNc{>ExIzUsM-m^*iSNAOHjL`e;7 z(MEWkJyV?G(9dHoA=@?KFX87W{MQ=5QOpTJ^vnz1ekxS_5Gsih!89uo$}Xcrf=jJC zI!fcKY5(Nb(WT3GqJpJ~Z3;j4!X0dS27gUY_aWgfEI+nW+ysZHhJ}XeW5s+Q_*15z z@vh_SQB341AO9?nCwmiR~tju*ycudB~wLcFZ4sjw5i_YP{a%R~P6eIB$d6(gVFwN?$@5~$|n z!V=WQEhPGeJ$cswRB4ZQR!js%xn4!Z#OK1spRmTy1|2l6`5t`ly(d9((w>FgRm}acxY@9Ae?( zUJ98rU`@HK7f5pnkpro+zZmRAzbsAzihj1F#o3~d8~>S97AH34vbPvOjbwiF!PBrK zXeD!cn#jX|kC}Naz}Ngm_FZ_RW^S_0nwOsB;yk z<5zx{em7?p;#gGAV>(KtH+%5a6WLFVjUMf@ScNF7{Hei&Xd7{6;bQOnw^?zZuMEIG zXY=TVlyY&|wwUX^_d~;z!a0R5$JOc@3!;>mjfgl0A4-iAPNe&nQB|9_d+=x3q_0AI zg(o;9O+K%8Aw}Yzkc^h*$`ong{rn^FfkSD0km+?PiPQ#~k7t%&NHXQWx3vCnl~;rw z?Y_N)i>&iEq5d6JW0?dvpL(rVQSoEYEY}X+#Z}DDXO^uD&I|k{ z2=s_>(2q{u6~Wx%`5d_!r`E7KSAGBRG(`EavC)g4BQsCT;aSo(c-PgTKe zNE;e3hEbCpAH$__qpeN1&+k~Uf3unU35^_MT2+G08*}D zDGPTV#%Vg)Z9oY(A!ARgVfxSXdcVWjEOKX2r^MrJi9Aags%Zb`(T)vN#cc|A+2B!g zTiyE6;-$O(KEw83KdsAgTpaiB zWr7lE#+_+=?1w&(FsT|0hc=b($u3qSL(pSlERo&1+KJ$N<)S5`)4UTlV?^2E$<9El zDQ`P(6y8vwCs0{{N=I&_6TqAjLtBA_MV-|-?^1ThXmB~iN<0u@z(XQGPa<}3`GDN> zl^!E^igl%~*B#+7w;eQctJzql>KI%tKO-7!zCMbI9OId+IGQAC6GB9%X^k3+)Yche zQTxQ)Ptrt>ww%smSnetMEKoMN3G#un)^-dXtFPVqGmPz?GnBGyWkZ!0kQdS#m<9hF zyGh%@HLdoa#@|sZNOVtGZO5|k6H}SWz{8vTG_qV z!gQ|)uT{+w$~a-S&f=&46G7v}ny2|Ouwi@OZ$)kNKcht41#TKrH9t1~;UWJijz?%O z@#odpMulmNG`r5t6YR$sNB^1ltFQ7s4Fs(x^VekVE9+4!SKg17Q%Rq41JF-C*tGJF z@6%{_VByc@c@z`GM9wGo@O~hxkcU*Y+E7fU@G%#lov9P^D0q?bNo@(O5*=y3(NK05 zV-aLe-5DA_#l>z3XQ+@r{5q&1?qr0S#HaE|y)p<%efb@NTYVrA^V3sR^}XNhJ;T|g z9i}d&jLR%*Y~;L4=u|u92^IOBc__EJafwTj z!aqCr>qfo0YDpzp%=_7Lk=`MwH3r&VU61hSP9$xZISf34?NQP#9tb?wVD#kvmd!oq zHvTBRH5*wDDFtr0WC^VeaMyE^Xp0}3**=C`+}VFGM!dVZaZfU5n$Q-1j9(g`fYvwn zh&8@C&s|{77H$}b4Hw;xJE||mSd0+^TN{a6FWIqo9|#;Wu7n=io|oAD{t%%zc*kW^?HD}{acZ~PEH zA*pdltApBm^FM|hufzm)k!W?kCm(h#wlbcEOs@C;<| zW#Ljo*pcjRXY`%?FH9^F4{X?_Eyh*xp+8-+W?O9J5v%3A{;0u50CqsLbERb*gGLb@ zllfp*#ZNglRgU)tQU%HwTZ)W4T(KmG`)o8`S#5WXAPa1=y7{Te=;Q5;Wp9IRd~^6a zkj4CK&SF<;A7LxGAmjCHWL`+X8~w^@rg{hN%5Dnc)h8`xjBS;o~iCS-goa5 ztAp2a`1<rI#^y{ze9K&X~?9 z(DVcc75=5=5TbMo41-9wqs^d;!^$E;c>X5mGkiR%>y*NH6EKXU2n&{&O3SFDj0BU=n3kA*5Qi>~jzLuCXjmaFgJ&C{~4- z%J-r0?+5_RKpHoMTM&GpxAG2aRz=j60etXahPGrZ7)40)`S%Wwa1iK+arh+~3LM#@ zJ(UpS)#=>5AYjowz{69e)^&<#=?jKbDDlx({L1wo9|{orww!wsI0yi+E0Y6{FT1XI zUg5Q5>0}P*>Jhbon+F&Ao}Jy!a3{pjkSViw+pwKyC6-E}&}{8-Y#bd;iYuET-h>^2 z-jw*A67S0;L7#TG)<;}|074RlNK)(mOf+7QupO4f=}P>e9HVKdyK9HLxgS}(KpU~% ze0=-6`Imi2Ko*AF_6fKO9>Y5L@UmN1Jz~B_mj`*5)rJW)8>5NJ4S_Ls~tPp}T`2JcpcB zvdgZP)r-E!9%cigAeU{ST(NRCjIC$|Sm5j@zB>vH;y+XOV2_plYzt}V_ciA|*?=wf z0oWLig2Y{AapgfRxKU?t28ELC!%A(LoY(KsDPc6vSTc5vW)O|jfpCiOyp@DWn9XrRS8xg473q;DNI!iiJr_2!i+k0Y2XkCXGvY)|KnCn|?~s8k1B78AdYWZ6Ya zZF|Nj8G!OYXdvYG2RL#t96S-t7e%O{?S*N!$a}WU{S2w$<#P93*$-=;jt?~N&IB|G z@!A~S5N}?NB;EvLNacfqm9U9|LPC>r>2qL=F|rgwbH}b{M7fVP4jJ|lT{hz|aovib{Rn(RqZL)(mKKY2ILB&1 zFcXMBCbBbSg!bu)*dF5-!lbK}sueh}y8VV?RGBTI+LtTY5e?F5 zqbeN&$G~J?QLe2tl$H+kM-jf;xQlbH){r+EyC3;TJk@J&GfZ0??Mi{Xy6%p;rl@5J zQjfP84PH>_t+d?-BJF5NHl_DLRNOfMSd>$&2Cv3M`Xi^~FQ3+AQ~(h9RS-7<<%UDv9mib9q*#vVmTiz0en*7wSwj1oLpdCuv2_ z`TB5#|02QJU()Ld))Z6(!v*L+#)3!OCdu05O$L9(+NP?L=o_x+fSl%F8N?;yua>e+ z@IFRREgxXfDmBsja;-wAmCW;V_c{v#P5r15U!n77xmtIr@lla?z-|O0`VV?FOyrX{ z!`c`2to=Pz5=TnS#OxGzMC13r1l_R%T7cbq{=#o1?k#CIZ$~yO{JM1C`r;*xOlD}A zt;X~}1W`rsZ}m%Am$dMo&)j4d-D(ThCvDg^guEGnc>F8VL3eSym}5P@KJ_fr(cieL zynZk=l;w_QY;8;8igppQuugqO@%;J5E{-a~?oEr6a&2-Oui8@5m50$9mjL{JVoLJ? zazVSsUXM;f!!GTEpjP<5=Z%iQT%b_E=|{^gzkl@N`;SaxBSBD(TXN;u8vaX=BnH7? zae8Yj_!AM7b^5Um9l?UoEv(4~V(if6@^jz*km<834MiZ=xty6V8cryk#JRl!1yt8& z)V~rTaN>P4gNHvKW~{u}%ln^88fE??p604VycNeUj_AUOprHRLB?G!pfa_M=`&dC2 z7rfv8M;@~N)o7t}l_`{pq9eITceR$Z;=hxpYsHi0yZ$7f<@o=^ z3Uc@I9}PGDHiCwG=p#85nO~IwJNAuZoTZhoeMXaR>s_p;x zOlSX>>>cY`QtVmhx`AN{njI~Xg2>hM)u_z(;iZTD9D30vOFaWWKWQC(!==wo6cFUrtzG@+EJ^Xa#F|=@7 z;Jqd!D=I1}!=mFFKao9}+DTFuMQc%1k3SZoQtCX?nOd96dHc=imUTYi?P|-`q3u~Z zb+Tn?qZm4M9}Lw_k;)go>0hBt0OicDKx_0nA=(awxXILk?ISXlJ+{Q)G~aM~73LdI zRel0l+2kz-djjpl8n+uM#)c;T(i&YCbmVoN(|1g}wyL$7uKa4tz--=LNEN$H5wnQ` zW-eL8RGgcfV2^=E9>0g82qGK1*JP9^ zS?dSo`frzW^UX3YlDbD(b(4bSY`eb?EM-L`yJhgBz}yw5hRK@qc*(D^d=kuTL+>RW zU$0CSUNx&na4t{yV<*P8l{XiF7U`qvL}xL($U3F6csbOe% zw2`c+L8Fplh3~FlFL};6Xmuj~@8K&YJ=p$8|GUnCm4+U*7B;W@20DYiaJC_K{^-{# zO}26PE2k-mp}G}gGq@~InOR8@DKy1F$%WJIe!2cgA>fQZ1tO55OYJ-tqyE&w-O}Hw z+o`{`>Aq`uuTqpK9MDm3ztgc(`4x?r1Qi>mg!D49#GiVdRG{L-n_@Yg4SXNemB|VX zNtoD|@_2we+Mrpcxb}nDOKBR1Sq&mvXK2wNF zt@rsF$N9~R*(M0@rt_or+iI3)XU&xa*>N^g1LCN6;Ej=h)V3E0kS31I^Tf4TSFa4H zQM~rHEfvV$gI*fB zc~KOR>(MJ2iX5cD^HI@MHh8pR`BV`MM#`%FPHjz+X;24a19|62u{hVS{ zTDYszIc!=Z%hWzpCMi$@Sr2ch%6S+K5-2G)jk15UT3INFS&@F{y$$2EjMOaB%dK|FIidNLb@Yh`sKv|?H`}<$>>*}*ji^niqQ|= zY8L~76o^~~fWy8z-7rB#I_>8{l9SRtrjYG}H3eypI*Rn7VY8~Y4fL`7-q878#Gn6i`a>N(TQrkF(4&sR|=A6C2YPTVF1?+3;1?hChK(JeVIb@#N-yVG8I zYK{bszkwQjGu$^%T`oGj_+}l@a8w9|AE1!M@4o9Y;on)p1NeNAJV!aWzssjr@sX_s z56w;2c+?dkAC2FGRwJvPgv*}EY$|o7p_jE8`+G6|92QSw4T|;#j(aT=ZhsE8tKxQb ztr4S;+z_%@CU2|f4VPb&lQ} z()tT|HrFYR2LVG?vi6qMH#ufcc5)xxT!3jZN{Uy z%MP4a_qf2;5e<<#+eY_$IUtOw{Wc?q`H55jI8Cs>Aw{Y4`XQ2FIYA|S=9_R2^I6=UFtbK4MVH{zsXJiZdn@O`U!ODI0+Dms$1E2N-3UafbS|6PhG zyB@y_r`!}rR{Io@^y=XuzHlUqCGHHp6+e3Ry%wEb1n_*-0Xg%t*3tI*+LsPgz;;Y} z#gx%GL-EAA&Qg9e&B=XP+LfRJ95F{vzjOvF-kHAK<_Fm2--qlTNAydg{8)B2?bk*c z>D`*K`aRg~@y*TZZepo}Wg|1N9qq9M+hL#}X58*xIDVI!|am7s4o#a&yj{u<@|!k^u8T=j~| zsk>*&<6XWI zZ^hy+E#fY&hpd+S=T>Y6D7f!6Lv>V$U328IDahE!n!)o+55LGdL3Zl6DxlSMO5Cf4 zekx&St-1AO&Y>jMdqO)!WvN!@W=>RxS5t4u)G|u6&3=tCyf;W`l(;T`iPj{fx8?NSBZv! z=JW>q%?>vIf=MX9lm9zen;5H#ta9L{q|762Z&!YL%)Pjw{`RvbK*gZ#>3sw0 z5B>4Hbe%zD9(gH;&iB>yfZyAq=F|c9N&@jkg1FpiA$o=F2k4*9fl4Q7191+ zHhC~XNBlX|N!ohAb}6=aendlJ^Q`JK22uwmZxB~ZE~@iu0)YX@lAWo5H`%I1bZ>)5 z{;RJNoGvtJf`%y4#hDpwjEeZN;Q|*Z<_=;*`oGw{|L=!^YE($%uNp$xf`(Gw0FjMz zW&~JD-;Z+B(}&n4tyX3;($CjqBUIq^dGD{x+eeXF;?LjCP@MCUjfc+d6ak*Cw};!I zN*|3ZDB_#2k@Qj-^^iNKNY;-qe*|_R)Nh3^(+lu5-(Zg{_%Ex#!#`q_$%TyCK&NBL zYIFVudO#TZdmo(8?@!lctj70CVD$I@>k8Un_)qU|6L@_F>k+au-}H0K>%|;Qx=l@H`hh)FvGpWTy6grt8 z)h=l;+fW5U!}*lC-Krb^_h|h8_?a`4Zo1x;PN;qh5c3o|)cDc1If?WB6@W^J2sUmo z#fc6=0=&UmyUZ8mT_u@v=m~Gsinb9A1_A&Qf5j{EMXgXASkhYl0EZa8yIBE%pHBID z6M5hIfiJ7RuzTM6Ps7Ln9MY1g-u;~6Nnn|qF%ckeyy?YtBCkp{#i`-`H=<70MD@o` z{}P8pi3Gw{+4@#@0T`mv2kN2dXMJ*R+dmP0($VbF-OPxR39I5In*X-vj0pgN03C0` zhl}5D=28EDoR0serf|^ceiR@IG!CkLS=5u$4!U$_s>Pm02N*LM$eavvGk^}s{zTkp zSx`n00xCD#9GmIUQI0XQx=jVBY09}a9FerIVmu?#6a0RF08J4f1R5@4>JA>*JrntJ ze`-_=1_1Q+3<_~qr=l0$Mn@EC3I1!PhEK+U;rbN2A~-An{b~5-k&ce!EA(eZJeDFE z2{s9PQXxJPT$at{*N|6%EMI|TdKwHEy`;613;hB#@q`|b^2u6_-|<|MU2JO0v6SL4 zfTJB8;-F9a*FU+J=5vLLG_&}!V>mM872q>C@~`H#&bzh@QXCSl+iGv8l@ie-0rHMm zbs$QfZmLb^+25Z<*)~6bfTmDTinWA1VVopv5QL(P7ZfV_Fr(Pt5-XtVJ|v1~{z^@V zy7xzVjXM&z31$yEU=D{xBo^Ial&*i?`C`;X_A2J|Y59-O!Y)dW{ z1MTc3>8>m%W@oHDaUP8>eZm#O0tC_~)T2kNuhRZPpTS@YECK+qjJw9gRv&n79(TU5 zq5&M=_=Q*Ow4DT*&A$T}t78MoV1|2;o_YKfY4W>scML&v z7RRqaruZ351Z8b0nUiLt%AeqyF57>sFtc<1=BFXvbNE5-%4WrCTVuxWWoXXVF6YPJ z#xoElW842mU3Oy)XW(GjJWy+0)^rcLU;dbVK64Zn4M#C`kic?a43R~ zuV;aJ?{hG1^Qs0HHVDx9aVfoWqB@v%;Qp|R03i(pLW@Xbe8DV=VdmZcNeO4;J`M%} zLJacy<#15}qQ`dMFb~I=Uqn750~p|C3L*W~!7C&p&a~eFf%3M`?}fb)Dj=EqP*catb0fB5#89FeOya7Dxw9Qb0|9Bg7kY(MMC`10pMtU;qNm@+xM|47HuE6#Xqgu zHzOewL&_iMMaG2pkI~@PI{P<8n_JZR`v7pvrN{ScgE>NIz8WFoA*JF1XFXGaJ``?s zq5=3+U|Z-BgzOYgRg(&cSqq9Fga!sdI?6$xEtZiwpA~@LL0LcQ1-}*dyvxx_I%XuU z!UR;xPrC)#09`RC@Bm^=ASUFFPP6~S)vag$djLl+J)q&|k3AzC7MsW!dv(>}O02*b zKIP!Aqb`{6!Mipb2Lb>O4J?ktXmDu2+f%e6;sKk3a(7EdUk0}p830ar?7unb>(^&G z9&{{ll3Eavk=YwPEOr-*@b5Mzb@}C^0tHq z<&;%gNyy8VDcoq8xRd$`RGPK7;c--m=O2m=+{u}LbC;6kK}mX+eNJInNY}?KTorN9 zn0O+(lTAji&E)q5+dvvdvCf9nIkB}87ndx{xWa2UxA`Bud>H1j^0DC~uIKT4SF+gKaJUqSdaBDV=>tT#kjf&0LtavUFPO zO56UD{^cwqP!6nQl8Z|+Qua08ICN4NQDB*cMcBa4JTy2d%xy@qFHE&I?jmfgzM1z% zg@fQ`)#Fc@%elG0(L|xvPo38OgjwK(_5=|DC^~Xg+26|Ktm`>SpdU+bE%!XVhhxXjwW;r>#jfMZQVG6Txkl9wOyb*3j zEJ4|#7UptL))<|fB5+Vvr$_s7rgEa7t)K;?jJ|wBw^G_2T-rb7QCC4kn|r*;H$|mJ z-=c-8CkpK6F|@{`*4|srWdXGBu^y#rxL;HD(kd68{2&ym@v3IaiR4>0lDlDLs!DHs z5#|Inq==H4e$sCVhx!#-Pn0IqHQ-6#07l?_tZAZK_b5|r@QIOAgW~7qdQ?dnr!;I{ zI%3z}osi{8jcKpVaz|QDoF9ipLkxzYneNWUF`<%yHJM^RbHx?&y5!ihSGS*26^cp) zy8o#$=`%L`JwDi(4YUm>EtPavl1gk_Tt6A0O{`HAEf;2K7|g0HC^G6z60FhuHU_r5j==IvuQx9HCM8=jQigh*=;t}ygC{zLO)H9LPu zj}*kZrCp2-g!X{~r2q%BO8q0aW$o*O^1Xp;>E)d6%Yk{Xbw98|ndIEHpA;|Y1j!ih z+gUgdYqr3z@H_|1s+y2}=G*CWyQ8_40J%=VpggoOBb@uB!?@~zxbX0P{ew?5Df--N zj){%nv-5he&)Prh6p4-?%@UNj1~6e^t&PTN3f*fx3WSAYbbOdCoS(y(fIwr1`{D=% zZ2zjcAcSEXkaDniYOI$Aiah(1`;y&jX~?Im!V|yrzFcl0_)gD0w&{{Nk%twab&=Fs z%jJL_oKRPu zN=WFA*MZav9%3xD3B_9q+>=oG2?6@#ba{WF0V%IXf*y8!A10uKx>U5+=)VRCYd4F4 z0)zq$JW|J1r#LJq5b~V$)Bbooc2|vsPd=lclBtX-k1Hst&Q7u4@;2hRwp66kO@GZO zXK7)A^d57NEW{A-;6X1V7(EGxX->*0m7Wyt&+>?Uh1xqhqJAdrK3(2mrsKZfel9=G zFELz8uzSX(vBvMd6jc+-VvwDC2-IR~wOLLj9=4H3(+G}@b%SHclRi5FuV9)AS zLgALdN&EO1U+q+qpPO~vc96|8iTUJUO(UTp&-U|elMqwXnrkIH`II#geSj&Fo&9U= zO1_Qng#MuVRW?gPD61Ed;af6i3te(+KC3wO4kmy3*X6{%m}n^GA0nyZNL?mj0s4q? zp$DFfwtX`?%B6dULqa#P*%N_##Gp5|K{TJR3ArC87;1U=%fN(E#hVq?mM#VX_K znmr{{wty*H5`BXoYEm&oZnsl1K}d{*hynf?v%()$Ek7hWjoV{i`gUet58CSV-_E`j z8{j;!BkFe5fd6tDY7H?d2YfmY2nfn#=WyZZUea7Sc!?ldJXcywMvs}@T{^xUWdeCw zs9>5NU8=9V%A^IVP!2sng@%hS!2Io;3w^lg@T$T zJe#ZPGJ4G{SO4#mhl_MGAME@0c(PSs=#}&Ww|8~%c#*;(cnVd@O?R-NsF`CE-7hEE zqinX>qxYF(J|9Obm0uXHl_HN_A%p=l6ET~626TwUFA<(LGsm#*JNw}aR3|0h)~?L% zl6bI|rB>awC%43f2d+?WP}6xCYO`SyV25sSs$89TgMxz6|L>~c-xsaBF@TJIvRlI5 zRK)-2Qdr)Yz`TRx8U-xp%_n*7`R9c;-~p0C-9e&3K(L)E&YdP=V-hG6>gGZv8nt}! zw-sCV`m0X2A~{jwE!XAI`tI&r_u5*(k6iE-Y31WCP$L>>^a+k9C30Zg5#ylT+U@-J zj=W{w#6Pson)0Vy%cp2zJdCzgGgikTsQR-uZhf{>O`tSPZntz66F1BEr!6D}&!pl| z)gun}mSV9z>O7N~JHY8*A^+MF>pMXwCZ3r7N2jte`Dkd6^QiR?s&gGO7+Ph5A-wX>9D&@=$^9Vh*=Y&9t+^AxD{yOi`Toq@=NAXT*U$u{{KH{NAK0lnw~iL0PB2 z1kh5Jxy{65z0YkoIc)fP@mtN<0Wl4iNJj|~vUyWg`RF`(^+@phtjL--l=M#)5*XdlD|fYlbd3mePlWjAq?C!8-#hs+=^*^qtp`oM8dGLg>+Mea~83}2&HvKoPZ z5u}xzirz5^+hL>^rKOeiTngebSkp>p20cQ9WW%FK*;tP?NcQOQrcU$C@p}eqaK6k5 zgN<;GpEz1+gasd9F>73i1{?5?Jl}>#&}yW!rrEf1Do_*{db6gLym1g5$6}0hw@PzS zE{fuNA{RlrUS`WF9pZ7L1v%T{aSLd*4jaK(F>qbR$c%yFO)cdmO%iLsvxWc&VujHD zS53}NeNr~_aj~)=JH<9RK=3)bq_;aRt!Z^Efe*|XkdtI##-lWd%^uk%V?RW&S^riF zW-&L|xXXR%{aSkI>b=lBku2Mrck$C0?drca-Mry-8;kWl%yv(JvWLK{42f2rjR;_L zSzo(F(?Jypxw(j4bpDa^7Rb>2DI^!${?FxdIq(Ea*Qj_m`duW@8?GVzUnlag(J6UT z-6CS6LJkvk&3>hUp166CXrxCbD&NhQ?XpiV8sFWp)A6sJG_47S`5`mF9)&V3dv_2s z{YYpob*jLD(WNCOddwa07ev~-VwB-~MpS{REtFDF^`8Jg+J0g8u5yKEwZvTwlHv4z z(v-}#%Uk&1%60j)-ya9;BY(SHa|zi>M1IF~`#P*rLH;sBVv?jjCEz_SWZT*`-L`^u z1n7K^7+n1x1hPkQF2;oA284zT=n9YJ}UD!V;}% zs~zfR1FCETScCA<(-mz{|I~*F|3KlPa9I@v$%58ld}y2?=_&(zn2Yj+z|#r*0|qmM zQAUTaiOc3eu)eHsUb%Qgb@%(;U&UtLY%fOT`7^Gcku#a-9$wKY{ssT#t2H1r_4(60 z_vgwzq1I0x3tofowK~LBCRs_oMZJGswAZc3v5M0Kdev&-IqmNma{us+TopeTd=~>u zX9qEiovHU2CELM4R#l0$e#%&5gN7gS4|e>y?K3(Mx!!a%yf_y?9xpzzZOFU$(15)r z^`c3#ZJKAS@lDDq zvg^1{SuB1cL(KER=3LHl?8rBm^n^im2j_Ar0fZSk4VtCPS{0L3?`!I)busna(cSux zZ|^S{$k)$Com3+qccju3^~!F;bm-@8@GHSFWqa}ZoT_PcLZOrpT>Xq>SX zDiFwj0G}DQ@p1&q`O6$-1WpATelq~RE_4_Xc)xJC7@9!?(u0Abuuk8x(`C=Y?ay}c z!|p^+<`x@&s@kp1`ma2p6#G9cP4Kx`e6fBuKU*8t!%cWQm%`l@p)?|9F}t6Yo%ZJJ zvI7>#_L@V`1Swl1?L@4s<>0lJ8uLufxed!V=88++9jlaY5I2YW>+r)lhH(P8E~I`j zVg?;A&hFk~Q>;U`d|1}-YUv>k{gKbp{ZH_C5p`_{K2bWe( z8F3Mc?0?j)W@wM@vv4O&$~FfKiZx3w2s>MHSv>ttCWSrA&~a2;i*Qj^cGruD)oK{pf9Oy9SL_w|!MWjqTEz-l1^8d6J6V z14PUqUmzsSaBHn(tmC7i2`F?>JTh*4vfMci(OKjE`!Vk90Inu}AY~(GN%oQgLb(SI zSD@(XV)~wblEk=cZT}+up9MzKAO%DBw>fN+_R&*0Oi+#v4s$E3a4i(d-6Ol5sgnJB zSI<&%X!N-b;nABRxf9X(1=+dPL+gaw*Zb!o$0H{(dILxe9pK?~>CD=mYtL*z8Vs z1m{wZwJX|A(rx%c>i?+O^&#SF{$vl!X-&8=d0{zl8L^a_ZE0c2;gTKho~Voej@KJW zZNFlM`YgoiD-uzoFj5S?mgOi zvnxE^qM+kxZeLWY@#KP-#irg;M-euPQSdYM>Qn93BE{2WNZCtYYX$K&Q*V^XeIMDe zWf6`-)O?Kr@udH;d{yXD{w3j|Uy4=hay8b|zlx?J;+{Vqx%&MJAeFRa;f(i?o_xcD zT7}-IONusi?d8sB3+E6H553xZ`Y}-+xJFF<{tqvUU!t-(0#=&;9xavu5p`RC^xy(Z0(=RBnhobf8{aBt~aO3(UzUZ-aVMqB>8Y~Szc zaxelZ@A9it)%GO~(pnB3sAq$v4lAhOHRj=55gL%f<&TMIMTcuKkz#ZUi;z7F(Znf1 zs%Iu(BFoJrWhwBXfq$lry)`d$;2FgyqEer2nix8bx3+I0V-eYr@^ddMDTg}wXqFHf zaiwU{zNU+RbBJiYXNZK?aF>=A={1MDSwnhCdD7=d=4tEcc4$E7t$ZGvVaLNI+k@6W z2Y;}*-A5S-VT}G8*i5cD9Q?()<9FM!3$5tGnOb?9;^Unaa7Bhd|~XLQodG0{z!8)aq=M{K+$khPkO*qfljG%k0OsX{RmW!#&Eb)c0V=N zrm|#69^Ip$;k6ezS&oSf-`tMMq6g_CUAJD&bJ`TU{}|N7KYT%7%hJ@*CIL3G}W0sE>YN6Bu@r_0N!)3?yc31ydvj8n0VR!C8k zu6gK4uyh7>%6{0s2dnZAJI~1#tGZqtOt;%D|F{+NLPrku#y=!B8Gp} zqwuq7x@dBAvnV+I$SB6PsP*-YrFY!(X~3ET=DRrg+T3o(o5xt`6W1~&!?vBAsZUGCHT`oXUIrbAqT!j^gsO9}ywu~rU6o3Wn7&JB-`M{mQ4vW@Kv0Ku2^tmS-j%{nzf zZ>{>0$+Awuh`=lklhGKaD%^-BdLFB7+mm$?|2CKX?UC9IZXr(B$BpSLVUp#NsE!+L z_jj6F{v6BxCcXsiLr#42`IP)Kx)*I*(D@}dNt#|=^ruyU!ytJHlWND$Gt}_GXe|+Y z_9C&Yl4Bb1!#}OiJ$~u#J4H?WypTwPFf>3AyW*b_U;QPzxq8df@`^5%*!OSml?YQd zoAVumLH4p61Ip;K&1}0H!PF_LSz8RyDxw_~p>GyqoWr_5mibaJNnN^V03L zT5X!}X4S~=M+@fNYSn3G!1KLGgL|$;;Zyk>NpfUDK9i+xQ*-*Ri+jaUJ-g6kt`l`| ziSoT=b<>F(-f>Ozbw!}RhE&>b1~ohTK#YZuTLq#GJ z9^rXkdmO}$^|sldW}4YDH9=UeHft{}bxyDivJFI-J$;vQ<ep-hMPtZo_=p@mj>a zHy>!W2NR+!F2w$@HS*E?hMpzIfBCAbaeNVI#7sSlj@e53K+E5hWb7Ss%!_Bh+sFeQ zbT>mteQ6L@Iei@cpGV-z;CQHsP zet=c-1fCumP;d0KvUOyY7Uh~dlT^&xnJB%>IFt0?irRm>Cq*6WWpo zN1~CFts^`rU-#48!kN8HlX?i0E}V7<)!aVzMv-Z2OW{=Q6E0*?`m{^u`bLjARK;4T zo9sglthG7HfUcA0p}JopKYdHESA^3@EH>(lk!8lvy9NDLzSBPW|b4k)Jp|t?;$%9gN?F} z**zc~h`M@3(B5h0lo>!Cg(J|gN40UmMLwxE?Nm)y^C>zsNj@P|_^}tG&ZYbA+NKFZ zncf(aVPJDt2_1Mz{tkEvF@SRP%dnr%q2&tsE(T)61d1mZU628yubT#9EcLUrl(2)r z>msBU27~wP4~Q86O1tF;8`$CTS-EZE01IQ3AB#|xFc{RUf*Z0K^u<9~T%V6fBUq@K7L$_%$y3wnpKLZmT~hghuW{bdH)FHeGm@z%iDihibVxC2@Q@F| zj1v91;B3wbPj~^_{e^`giiZ{!5YTW*27sA$TvkIxcxuhInGQxCWOVyh*ItsHBEP1m zK{Nekwhi`sp3MTdyskZsZZgeE%AVWFm@&3<<}(Wbr~JPxj*LB}>U_vXQA{VIi%+>~cBBPRHw%M~cG*}>%BmL)|=Q<}|l zCmky9xRx!wgPSVJxB1LZ`1fXG+2-HDkz~|qW}r@C0E>Cn$?INHi(ZT*&!W@n=53cH zz)2=;At})Q;91{d#U5k@VpV!8;i|wENL;N>t(suiSvOc_oQHiXvi&q}+lee~I`76ycgM4T zL-6N{6#Tp9VB`J#Ws%tHxeFFO2`z7_`N5%U%pGRQ+H_t~*sIk9E9TiurSxp%?TsDA zF>`!zDVE+bQbTR>f~dDR41o0{Iq8K(dKi4+LN4O|WE>8pW=QjI&T`<;%cFk^fm#z= z4hXH6;97UKpa7Mxr`m%RbqbrId!H6L8B-FeGC9x_eu@^efn5{WNN%;ENe-?p%~@^s zF$@Dob4vbZSWlullo__(#5ZbJ&{uq*?4vOdo6xdfxH%IgloaG)n*vI63+5Jfa^p=F zPFroG)1pVEx_<2)hdkn&U~8Nv@y%f0PNIf^;jhB( z+lqfTfj2p*O)uZR73x)q!2FC>*IYVfe`vV!Fl^0W_Wco}jn7&eyw-Gm!9*Rkc*u&_ zsMmwKge%En-~oP@Yut> zr;aFIHl7}nCr9Txa}8R14eb|AtJD&uL#AnYN$Kh7$;rvNxmbY|)MwFEwHlHdxsM?W zaH{|k)Q^7_gNr{lz18YBmvPh9tVvj2Zzt{Z6ybl=Tp~rM?Q#}um_VS^v7Z#&?6_55 z`-p(l(|X*lHg_LzuyTKD@*3fBbi&jaIXAoh)p(0D_`fSCPb z!@EmsxD}9vPu^T1Lk+CXo~f(-epsN#Ru9R>6h8I&d^Il;ohlq6`LYTfMrUdc2$v_+ zfWCDl-c*jV?Cz-2sJ3;EqC<57rNS`_JZHa2!%p=1#9OX!Vu7!!=N7^HI!0$r7KG9L zxAZsz8y@YVi3{zh?7?w&PU8? z4f!;`&(vgp2hvV@JF%P&bCs633ke?vhv9##zmlFPNp{t4nX>M0Zf+$Q{bsuN8(wP} zrY3jrp$0bHWR_k@>ndcn3XnZcrp${#>a6s;-PwuT3gnD9&6*+ zjR^tYZjME~)ulA0{eu5N#BIO^jtAwNu73M8VoH7h4>vct;G4=yK$hZ*$H`n`B7Vcq zpFe4Y^@u2Ne7`d_W7AE-qhp@?nylnnz^>51efiRftvxBzN8gS2x0#&N4QS`9y>k8U z-+7(qd^LxHjD_hzlu(XVgx|x5)hA#v4ff{m+ZHNKBW#4E7FF36H&951&`cJDa(*V$ zw|}?Jlgc%~;4EjIpm;*B{`9mJC+qFTuGK%pX^{a{LF+OFS1FM%WzU(%jrV{PnE<$c zz=@smlL~0Ho-!L94 zaYFf&;vBM&$wmuGvFdn*HM}JamQ{h>qGSuX{byCM>V8Q%_TteE4-LJxtw6>BS3_ z&(Lp3s2L-})aB*4!oU1Wn}V{{G_}aC_$t%E6ODC9?pLfc)$vYQMn7}y zxtdT!cKcHV-cP_dGSIVUsk_O4<5_V@eYU*Y(YGh#B`!dO_s9K_&3tl_NQMi?6;%}_!_CXo`r}{A!!vGzqvIdu8(rAn$PyyIE6yA_V>>=c6g3Kg z#ONzAVm89B1kH6yXagOC^+3Et@Y~N}r!6RfJmWHg>~n^&@@2{S4do09a)S#7>7|Q! zCO(<-sVCIScI9O;X~jq6#70x{$_Y$Wum#A7h_4C{TH16Y1GThN8+T|^OIGKA<8PDz z5;vZg#W&F1LFkGtdQ}aIRUk-XtZ7OOo{XmXu$JrhAC%*_jA+Y|7siwDertP8@$eIt z$h1|{d&#>90~RwwgLil4MAm)+UOh-bYD4n~*AFEfW@F%7^rR%2eojhRLXTMarA_&O zTg>6qxfZp1$FOG<^4FCb!woFb)JrrV`{Yfh4V=-E(yqKISBpo{el64g@h=P?RplFj zdBot&pb;Gr8+*F}WF0+O?K|3ffvdSv1_tn!DlVrtmZS#iHUIayFYAB$JX74fx@W%Q zW+%EjHO|caC);!8C#1TcI<>Fo!yeoVlhUxoVj4Fe&uSydp2^~&E#FK_i(CV93S7@_ zYp4Jzx`;b#!(Ro(4vinI6m}HA->_~UZU3lOEXyjgZ&BoE5o=fU(DYg-0}yzyFWdW1 zU%#)~AA;ablxOMY<3u0O)%uJ{IX51a1dL=%^4cn{+oH7(mp><$jxVONXAZ(6{xGml z*1|eeY#*^XJxx#O;t)v{?ex+7D1+~$o2RO*&sBM*j@nkt4390& zQY*jARN>XScXH)5E@cYvH0>d%bH)b9jcx2_k3Hr>GAMPA$oDY^FWdcCpSu?%I&vh` z+i=Z`iPCgWBm>Z^oj^D$mDk%&=I7`Zo$#sLJJMVs{^v_jKObf=@7w#nY5c`q zz<-vrxk<%F1DfWwPHWA}*~ZPTQX@Cys4CU8XVB+|Yx4;ybh_H<^K_rtP&1tDINFS; zM5aZHWD(_C%;~UluT$c(c&Z73a4YxdG@$eHya;FBUvfA{4(&YD-h>9nk?M4H@@lg{ zv;bVnD$z?-Q~G>yYflgU9`pGDWyj+X?wmt>6L9w|3!hZP$i>)Z!Kq&YG&xkJrP_?o zTF;I~Q7ijKsU9?zVvB-$#N9JqxQ#l7Ez)Jk+w~gYq(mle;KVE@L*G$@1ul@sXxEbZ zU0O_Gu*%8rQY=uAZzgf&mUcwwHuoUu!cwwOhG@0XLf)f&h?T2$79whQ3I|hs`%TQ2%|PWIb3FjZ`G6EW53>6TTaL+JIsr9 zY)IPOQ+ROcx^1F7UikD+xNE|jcD!X9&;!89_$g+9z2(0-w`RIZraL8!qZV5Ev%P@P zCm~mz=+<08APo$h&m_=%;CpwE+$Hdum#w)*d=eX?E$Iwb4FcmvVYe!0bFuJ_Q z_|k9b!c^10v}Ei0!l;0TN3*{Z!9@SjZqj2=lcFg=&8bl4%eRKjzLER-86`g!^yN-- zt%l8jS=%lH#|!dGq^UJE8?g>h>NdA!mpeuBd(3vTK}E-Fs|tr?#&jVb4(`Edc_h zwmdx+_x^b9U8BI=w`8;^)>|F8SC|a^1FEX6;`KkhS*})N&z!G4TZH^olJdHJ)!MZ$ zI7;>-`GsK-cbHn2YvXc#)%!+O&}AdAvF! z{d^g3FKGR)^$Fi+6!;2XB5%o*2D{0uhm7?@_`KMrkRH?hqUm3WiC#~RfcKq(JrFp( zH}8B9+w@7j;@G|zA)I#Ja!Vp)ebjQ^{OQZLo5XKItXBd@!jlHRG46~lcgw6gs!@d2 z4YPp!xaOsSTr=J269&3dG?WuBTd8lyV?tHvnt$IOLbl_FfR6O?Y13;;>}09}7F45t zOQ0b;p3Sz0nW}_{#%ppHM-Gp%T_l;#OY`vce+r2s4Fp#H6yl(jemibHHv}%gsjH%}Eud~LFHVHc zZnZTX={X*;i%zy~Z}QPP;nz-3Sf@0mJ4s4^CgKFJWIYJ?(hW{dQmxEG6JE9AeJbPT zSv{?MNXH{q#-yR$S0#=tMp@8gGeD|R)69&sAlJ2Zs`H4ELETgNioB@o>VqJ`*k$C$5`M5HQ|cDxm9E!%ndSvZ%Fai*dznn?C)JOnP!@MI?nEHgiA|?al-7< zH@eAI5qr8ME&@ki5s${&Rp0r_I<)XRgik4pETMQ@Xcjs|6o4tAuF;E*W-p8B&-?wYhX zI8!9ol(Qy)$<12;wvE7h;`N&1(inEhS<)cONdlJZ_k&zhE+5(i`s*ujoBQb)heBDX zpZcjF3rvRZ)$HunBbI4<7aq?8R^{T(0|I@!9+U5u@~$^0!e-@SkEGW-EwwFJDV{wn zs9Bp4i+n>iCsu~r{>7<&W%J@E*sOz=h8g!m<4$ns`=;))b|c|!58~skSdX^?Gpq;m zms8$^A8nbb`S~9zs+m6Tcir0nMZ$&gpC_kU!Wl!_SW~Xw>&`x5w`-3{kgMbZChX>5 z5M6%@hfeZD%cfA*)Y>iMdPDM-kZ%=|Lk__Lov+d6V8{If&@xEaKIJ| z2)VE5tolj3f6A?$j$8-zvSB|bCRC97F({6(lr`K6b>UfXJrSaWeYzYU78Z7yHr78q zq~q))$I(Yq@#DOd)hpK8Gpntrw)I9Y0(8MKA}B%Sa;QMS_myVu4Z@E)^Ac~=uJu8! zW%C=54xCYvLurdjtwosVE8%Ck`;x}qe0@G3o#j{JneP6}r$EOOZ_r#vE+A)dKPNhU;ZP#NIv3u-(TJp>Q*)o1$k5DOV3zSs^HoqrS+()C#SN7V}ky?=7`>(b;%^EYqdT5Y+%~ z#qIMf1F?mvpN7RAJ()tqcYoK5^VwL*jd$1Eafo-;a)%dac`?$zQ0XJN)$-9S<~kmQ z0jj%*9k7kf^D>4aXa$8!QJS9F$3r9rzfcOq^!;%UM)f?>sAl~eJ?5AUYU4a9V*N{M zW{N;u(z_zFl=-`RXB19Z{q-}C&(?ejtOqztq(-_CerRWfAHH6C|L+lChB0VfhHZ)MY9RfK~6=Jrnl<)on)z|G4Je=JPwpGzTNPeFu57ilR@O0%=Oc(-AU z4de3Z^GFs_@df|p&!k-?S-4#%weEBJo0As$Y=7J7KIL=ukwfeLu8$F~P;nD^89gE{ z2D|v4R2$^XhWW%8cOYcaV=j_#y(uGwpmXUSd1TtYoS^`Se37X6Ajsp(`SjNFd)G0K-@jpRJxN%aKN!gA_iBX)!aspb!#9Bar^$BduRA}f_5!tP*)z8HnzG?x z9Jf96aPoogxL|EghRF_^Zywz~$ZiPa3FlFH^<6`=Qo#^gu6T~dI&6q&ZBU{cDGHko zT-|S@--ArZo2hB|a3zuG%*AMzV|RH=sb+&s0j|j|Q>V=WX@(C)ujFwlh?f6xnILr7 zN3-!{ymsqlqnSo!b^%t5)lW81N2c}JkX>()n8HkwT3&kL_4PGoA0^IPJZQCRVvIR0 z9>@$qXX)62D-betWCXvl#q^3=KoAXYWVfO4o>$`xs^p%e)l3q&A;5U- zS}@z~;9(5*tbhJ02cpkEIwGNcnU>AS<}mp(@~5_TQ&~r4)z^oJ5jA(AA)5nU+6f8V z#+ce_R#~G`1Z(E53P2go1`VM|HS=hXQav{TQ6qwtzzTtys?6;mv1RpIFXlJ&+o+TQ z@FH>jmExZ$-yxH;zaqY)7Q$K_r#>8|LG>IqLqD3Jii6w-F86Pib^HPAp0QpiOJzk& zx&PAg83X^?A#iHOO`tneR)FsD6hjEEzo9KHF&1Tni8`EaD^G_9<;(f4%)y)NJ-y5H zu(T(=dLTidG&R`MV(69ctCV65@qd!LBWck-4_@!nPahqR!LyiA_c7r0C*GcSkTcF%y+D zJQ{;6sLU{hg8IPN@_^tST?xh=Y93rVxmr2ZBLnmxSsfwvyLa(DZ@=9QLYrk$|O<+666@@&q7brRk*;w`HsQG zm3uWZc3+){^SJZ;AZ;;F&}HO<&#tF-AAukqHGEy*A^))V+A1rY!0*^buB)qXY>@cw z@?Ov@D>Ov&ah`)Znnz2dMAP}Y-&#!np9xk@+ABMFqN71A$C&(G>J)wrthd4Da<91{ ze*4j-9{)T(nbrDKmmj^mIh)dG0NBFRTjbX(Px)#!UcdI80{Uit>vfKebNK^oTAnHf zAD~V$G=|oeD0!bQJ_IuSt&Hs;{eYZJxVd~{f6+Y5NEc(i&HD2{mthRKEQflUGTXE* z`gnNKQPDMZ#c`xB<3Ma9H-eF>UyOVn?Z!Hb{O9%z*AsZ?QTPQr+UkSyf!NMd0Evy~ z12#GiG{d-mqWjbgbMIwP4dK8sm}o4)mT&k*AZNZX>@Oj&d@w8`A(GriY312g?tmdfpJ$U`_~Fl=0juV zP9T%`Xa+rYf|%Z}rWN?P&dS;J6sr>L^T-DYuSF(-^`hYg46KeZ}9wyiOlObE7Bw;Xh@j$<0J;z7teGg?2x0NzdG2%V2sD zP^2WzY7HlSzPL(G-k8z5y}n)P5hZ)PEzd+${HW6G)z3;ICXd+63O+W`gaAo2Q(tr^ zRlP&I(k3tWtcMguf0LeB_ahZNGE@cQi|!U|Wm>@P`CLBJ|7tL*C;9Q$SNmL&BOwGW zwso9$c-`+sa#Kt+(apub-;D)P?-d6n;FiR{B`V+I4o@3;K2aZuei3DTduXEuvo5r@ zH}wpw6AK6k1O6qr=a|=v^rINci)X__gevwEvb=)~-~7*tk?_7ika_{!E6c|mKA$&4 zOi)w$8iyfP@`RbBff?i>8BznpZ=(HQA&5qcEN!hZ5^A5Eh|6@3aDV~kYAv>Y87o0S zmuEvtkm9Q-bx_Px8@ODKUJnzsjzL0q=<#^?n<%2sJG%m4;x2BW{i9l_1ylALBt*#J z!sH`YaQ62F`L5KaM@4!?Xb7|_hxaId-0Qm ztHz%Il?WoEnDtGh&F9)wWry#6&sSJ;K>4oj+JayT*`OUfX-f){Db6T`qvF4aqHUNBtZ|uA(`;QfE;A}QR%Dx)t5Sl&bZEq=9ayQ130hH$ zrDUuKVDPEeyD_}nX4^cJy-`bO-dYKC?X%F+)`-|06&=7A)O@zTbuE zfThkQCaOX2SB3gghE92V5U+0k`$6$&ONBKytHBC`{Rl&K=58!xAOyr08J`HKOY97z zpQ;cLP(Mz+FJ}-bj4}To)BFEB5S&uCds_!d)%kcoD~{Vac4Dq>$j~jmn~?;dX`TnBIRk3)bfqCe*@h${_ml|!6y*qEswWY>tW)Rl8m-=K z;|ISRY~2U?Ci#qZjqRrtxL(z_gGDcc@Q12Mx;aa;I4q$#CLgM>_(-HQ%?G7snsfKF zx})SyM%=)YNyYJ|5tAL>Q%!^U}0(-RItG3*$b}BrnqOiHe(MfIBQqhZ?1CLnw zg=!X+sWY~$iBrm@-08{fPyGTZLm`rtnOgQ);|H&s;N!cvdZ2kz3N5y1q#x7jVEc#a zXVo$vkn@*%Ptn|GRH^Ae-Pq9&&&nRX>0y$^*Q3>H6xo+}P5hKZ==?V*KuPYY>LLF) z3>xuk<`uG?_nSVDrc<1iDj2s0Emoq01GCd}Y;|>yZ6M%YG!KTpnlM=+|4k8E8s2gK z23{T(jX*g&fwlFrY(zX|BA;~VEY_-S1C3*|n1~7>b@rFF&SwskAXf6W-;E{({WZ>r z-idQ(=3#7C^+C3Uxq=m|&Lvg*{*gnQ@h~GhzNJMw=|dh)`w+J!5J~UQ|B5ITnUwVf z>3GFU@2&j0UIw8k=6~S5A+`U&d;UYwSRrV@45K5~ak6O|)FA&>I+j~9q~*Il9a60hbIs%H0km|z*I0^F7@F_&noWM`rtTXgOic(LYg*iuFl+~pzQQrur&tQ! zUC)PyW5-A|re`&yi~%>k?ss|? z*DwI0X&}daf22}zh$(<%4daL8?*&Rz87hA~;oHw3n8I8{(w~W91g;w1A4jlfm91Vy zD|#4pwHh@)mMM-2P^xw{E^I_dUTK8eCO3t;@Sx#1Mt=GE@iegm8iU;_Z zhS`w*#`KLL$my)edU3^?#XTEhiDIt8T~}?u|0RV~4zB8$mh0LRFnOIdYQXTc^KEqSZFW!>1y* z`p;Zr_|(ko@&gI(gYqM^V49r-AWCZCFIf+dN2~08f3t4Ec|RL4vOG;Lsg=5Mr^TE7VOlg@GOeyb^pOtM zhJ_@_Cqa1LFCyitzsHO zvvB7j0a{S9F=m3+(M?(o62(&b_RmE!>SL?SHS8DOQzdRGZygsfNgbc{6OHK;^#0H)YC*jf?U@aeGj3tNg0e&$JY(i=Vs+BR zE;ZrJMF?Fjp&d>x85_`IaTP}$0vg%+hnUQDRU(+?&|hOc+ltjJPjVHoW~9b>LtwslBV-nhJj7yP9x1TI_6~CQ%D1-UyMX(4JAx>(bXj-Pck26g^Fu~|BeQOPltM~PkS6EgxV8Y#_Ygs`cBQA5P}fmt?L z){rh^d31W}-~Tso-$h>1^X^||f#_eGJ;Hj%Cu6S#CLH5sHk(ONh+mUS7T1Vo^|Ef` zUJDhM+eZ4mCwm88@XLJ^x*0l_PtV-%$L~`pKF<&379;$8=lT_IAErig+jv?VLUjZF z;VwgfN;Gq-mpR7U=&)feiZviiFdh-+Jtf?-HWVr?Ex7(=U+FTL3Y`1KJzeh{&i&Pd z10Z`imSJYg=?}kbZlr9ZREp&bSzdC8tahH#fu^Y4kMEct|`UGrV_mdM17) zinKp>@#o(ns!#_RuX418Ok*(=v~RSgj3^W=cFUAapqB9}EH8Dh#!6Oi8xWc}=x{TI zHD!qi5<=;*D*_*Rws)To;7$df+Y6|R1tG+4|Mkbu!LOm{droaH{YUfL*uSDtQxp-s zc{tq^s&pyP=}@mG1#HlPl&D{yl9z2#))D7D%XY`0A+WrUyGfQ~D^^<%M~Jg%0G(>! zp31w6_bL4HmAapf@jv$AAtB`39v^Z2s}fu9pRj43P-!^n!nhnw0}ED1a_HT%>QDLe z5h1`-6P@2ZsB&waZ8vzey&ZCNAn(LL^ZgMP@08Y|*0l23WeA8~rAaUuq|cZDIlqZ1 zn_?58?{~aE1yM*8 zotB--Q6H9KXum5)Sv6b#`cJMw>&;_F%}$(uVx>dI(`@G3D#NSw>c$wPkS>5_oXX%T zY<6DjZ)c)SfD56_Ul0fp?Up> z?!y4m2*Kl{FA$MmRhZVj#1oiUkwS!!W*60k$=A{2eV6qHLvgDjvaJkDGxU)gk$)xbE(!~PB#gteGmW+MpkRAV zULEKc%)_#;>?g@@%iC?GNDRAVaOeBmqFLoLRFW2G60YK4r=(XlsImyI#@}Fp zjch(xJ;mPsv%YYiZvDuih<7OoBBmIBnw{c4#a7L>bA0Sjd zu}tf_R+CkaH-oS>*7f3QR&%I}LJ?ueQ_XE%369LVx|rcMp^qH1Lot}JzOw3+B3CiF zFPq!yd>jVRiG-?50=#|`6zhMMw__m;<^lonJ&#gL_P|DmnS~clAk8Abuh1SG;G^V_cUcEwd;Ia+E4E2F|+cKC-lysNrIA2?!XYP4wXH81LDw!kb! zgBqjjSW^Q8n7!|SpJV{RO55OhaKlt8jbPx$ z%$9)E436beD9KxQEpMQevfDDH;yRGE#^iIvW^RA9JV2uJiU-26QX=BuS+Ti;gCn?0+x-(6d4K6v3L&8>VrJUwjNdX7O2 z#K{;Dkp-Xip>nBE9SI5|uqc{4Sh`t}a&oY-k^b+4z#?sJ=VtCg$|7xN;$|*sZsz#I96?wZ z;s03iT07L$N!TAo57;(h8^sKZwR#vbL#6~vpX-B@NVi~a(2j#CR52Q`Diar`zX$lA z*(4|H+6r(dMi>XFZi8xS_JL;~FYiE>t;{{K)s+bd}Xf{G8vJLgsHeLVV3Q^UcwUYn6Cem;mj{R;TzL zL85lo27_v)d?{sM)AT<=ZTtz;yP#OJo4hu1pTNX;_3gaK@p$~kp`+X^^}QZk;^oU$vvqX% zl`oz4TJ&rCon(?o4O`N@RsE`>K`aj|=EeSt0RL6Ny=cMT=jLinmElDf=SN|L(&YF@ z|8RgNZy0COy;Xw7qTjpp(URH8{O=`-iHL;Je#Ay~e*yx3Qu&VQCxbGj5W`ZMi@Th# z>z3-b9v8cbhY@JGvVJbkNMK{hrj4{=MtzBY{0#|K-yMi!e47Ah$4=1*x0_TH5a915 zki{6nI*0`qab=g4T<5r?_I0UX3&vcwS+2@y+{5yZ{tBVUbd0`qyf!fHX*VMy9Xh?RpZF{N5Qr`Uwelgq-)$k$;L%1 z_A2YloQ{l-b4&w4l8iw@0tvqLS&%Tn22B!iw)@sN%xl4r7abH@+9!p-Q)m0@V?&C| z+9S8(Hl4?bvM7pf zup|41cZfFW=0bx%r1BHW)8}6xS02njkOLuRVuWQ5f zTu{q0Sgy!HvZT-el*2JXCHWcxB^oS2yR1pZ1bqU4-Aa)rGTQL>-$DNhDgPMJ za@THn(Xu$X6{W9~v_7Ch^VHJ~U|iw<_W33l5YJ#7VDz(s!f^@ip_0`yXpGhzzp-c2 znGj838bft&Dg!;^eh!iQuCuNG$6t&TK8i>J#7=J;`bW}U=JM~2AC%;Ce2&DnUUyHv z!ICY4FkQC2+ezw;FtTG=#>CgBdyU2;Fqug$9WsU|f2PVj0j$OHcW!;Y6hyRW$JGP0 zUJ@rmWB@UZsYAWVq+|sWuv{(}H{i!e591Z94evi51Ge>7(xc~>SPqCHAre7G*p`74 zI9*3MZF2D&v;2cpSj&Ge}c!IMHBbR2k7$*_#Z3eUgMV0B?@#1@-fM0XjKw9HI#i!ir+*4FU_EI7R4} zb5a&j#4ol#2n8|rWPCL4i28PR4G}|VZsD@2C}^cSB}ZB`@^De|F}77u+pcvS(}Ad1 zQle)MFii%nlMQP{h z^BwO0E`6bd&!7{cqT~Jz$s+h;e5Oz%#4H*UShJ%M1CYI;Kzkswu$u^HNWsumtiKDI zf5&afjj79>>Dx|7CODmD?-O_`Br$vA@L7(?VpOB~7qf1om0Z_1-aovL2OIIHoA0rq zypOm58WhM0lgKGJAYv){lvcHd4XN@Mwox6HhmnnZ4qJ)e%0oztL9+k1hX)@ z%AFuHM$_Au=o=<7TjU97$xHj9_)vbze41u(~XOf;5mmwBaz0Y9oi(M{vEZds=1 zlFtS)h*j{P;tf|d>zG5ZQ5X{FKyY63*#b01(b*>EHpdHq9Do*;F62s}eOJSJuD8)afp zX2tDed?@c18AW2$(0i_k96ucwmVuC!!fN3-{dQvko<)hE^{_aO7B>}<5qen2w|>*$ zqh;}#RQLYzRHvcw#WW&rbmJ1a{r)(Hj1js~zwG{6^|vf=#c``xTnpQ;)zo%(G)y+E zS-{`c-@R|Ub*YdepvK03MJh&81CZ_u1By`YQ3{>f04%%Q#?9TPFd)+z2CCkFZu z#%b3_qE#76f+%kht=;YVGnx5hWX3)R!kuBa5;aGmnlfxKf@-{Oi4_<4LRFu?;3d< z)4rCn5hK0+F8gX0tcj1{c}K((W+$)~GR7}tFU~uDh{&=>F;36>w_}OO z80vCbj+AN`yMaj2ra8N%5j007hDQ7q zV6(}{t4sUY){nlCawaIMsnXwxo5E;v*Q!h85xYQwnfX*)xKl;W1&rHiRH3qtO-L55 zjW}gl8h9%|Gx5<=7(-2Pmuy^d3NnCnWJIY~x%&ujX{}H(p8E)K z@FD`z0N!4-TW-~R01(#1YNEeJ|DU3IcgHX=0=mL6--9%5Uku!p! z?8m2mVi`7#TPxyqqWnWpbVE>~kI?KTWEwfh`uLJZr%lLR(~KK}JBcyH-yJaDzZH{@ z>?^wbM1R8HTudvDp3Hd41SX#I*i~M0Q+v7g$qLC88|WxRF@I%s9YZy<2=y5XV~lIy z%k@K$dgkX+p#F2iGpf85;~yazP0iIg}D(!|Ae_p)v5u5*z}zo zgC^ZJ&yU$~sm{ZOZaG-V1~bQ0K3=^yRdSnCb9H|JUBNjdp9GKe+rb_>e8UZYq==o5 z`w)Go8D-QkB1$H)NDbEZiqjwHZ{dLll{CN6yC>|n{E6NJ=Q|9Z>?ey&{N)H+ zUWkj-?a2SJ5r=(j_Quq6XiINb9A^^jTB8D1DiAG9t#mq$&-YemB!08JpwyWn4`Z4? z+z9yA9t!{Dr^sNZIwzUZsk)wom@+&HQl@ z_je0v?R{8ETEAD{Eg3Q1&&-Xhk6&phuGEX{>&MuZd-7_%ijHLDxN%4xf`;%~>yWe& zkiSm;^6;RvBVDNqs#177w6&`vq|Yv}G~AU&2Dsk{8{MR^);VY;`2G%V6)&}ZU2-fi zqMCX}ywJw8LScS(&0skmma*t{vjn_!uB5q%PM9xvT?=_YWG+-@N-weI=W zF6PfL*4W2tIT`w>#QwCDNx7o6x$m{ zj*Z3NOmLC_CN z55w4KgNKl!do6NgV42pwmn|UwtT;@#l9E#FW4JPoZ4CKum9AweK#P#WzlSEMEJLxcS zvExY^(+AF-7F2bu^yTRr?;^EFA0aE*@;H((td-{)7kaEIkK~ouaajq$I8j-ZI_M$; zI?}w6VvUH7Gd)?@C-&c~FteSXiaTGwwgK0^F}gATF_92GTBs_UULEE6>WZ#0VpH)u z9vQ)-OYAEp>^2MQ1NqXJ7z2Wjp*{cYm)NbbUqeIICn) z3ChO!A75&dCG|D?$RYB5lqK=L!UKEdej1oQ9L!Y^V3Q8lOZ^aly%IJf$~DO)LMdkP z!qFHf&u+@EVo{E*JyHzo8%FzpvU8CmkDglT0}Vo#XTFP3aX*!Mt`Npif(voJ4jOC;KiY<`!xMt6@MF#Xy7v{OYNcY~-1fYoAP#PzTz0kjn(few zS^8S;NA&eyr{b(VVwVs=X*g`;^YyCN&ZQ9l;p6HuB zEb)rEMEt;-0iIm3(E=2M+!7i{y`I3un$bw-qu?S}f;DS|P;4T17wDl@pN-sGS)qq# zp&D7Q6ELizuD1z2TlGwMK87k?US+5W#ijNuya(S<*tqZKp6~8145WH?0e(?7ZL>JXFcX0^{8wxi{u-y;3fQ z!9bTfzE<%9co$CjHt_(W%$Km&tm*_N#k6m|FybR!5h1pp-u9yJ<9f-0yI@3x@CQrh zuNkY%_i8$%IW6|7toweK1l!#@QhQhZ*jcACgtAK^ueBI$M(>h7g<@*@aWoW-%okR~ z3{-kOTFlt3c$07nuhYC~fe8l8H_n>#7ECptmDGM8z%0U~>ExmyQkmjuO?V5p&VXcT zT)Hd9orlbnW~um$O?X+K`=VfB4} zCr_xy?0326Ej8ol-)RJz9tQnnGp{qi4QK3}}*l!c|dCCI;)RoYW zve?x{2w+08^ZL7Bj({DEtki-tutBiYyi@?)Vb};}55h zg+{jtA(2bvchp8Pmm<_c%>B~D@na*)P55}-0e~$D-UorD(wBTyd{+w>5r4OIw4r6` zlpC1alJ&Jvb_u-*)Ne!2wO`-na8gCo!+#WSJPX3NG-7yet%MpU{)@u2v%Lpq+vGXF zt)<(t1Y4|9t0pOXpr~?OIg$1yq23fQ|BzsyV(NRiJyl@8r%;FFvavzYc#WE(#@vDh zgM9)XW6Pwt2V>&~w`w>^C|c8H!~Ih}vqG&C_YJ$9x5YJ%_#_k@YDCC|NNi_-_0j}9 zB7C1_s=T2&A|k)4#v@213x4mE}A3mC4}D-z+)6Z%ZeQRa`w)wO#My5 zFd|6THA?%WzRcY;uI0zTGrDw`SrZm})4a_Y7*%lU28OFKNZ5<=*~3DnB#-Xh%vn>) za`BS|uU+2}I1kQJevj0{NLR zQSg~f5C z$zr~fKb%A;8Xp8&85r-7Q8Ln54`Km~Va!@KA|%f1HDuqD=Wk^-{b*{#Fhg?Y+<(+x zTgI3hkza|4^tiXsMIY(k*HTIohiVM76LdU>&fe7C|0Z=0gwpw0y;@J({DG%<4y--i zoUJ*67FbyJj3`G>G^LF6iC((zexX=b8*ZLuYX=Nys*d;6)Vw_I>h9c*fI1&Y1g!&# zDd}dcljnrXf7z#f|3P;MllvFjdUY)~okN4u%ypxJ9WdbzPhg}@4Fn*_s&c5TN)~iE zY|}ZS;Oq8pZ!l3l{OvPJJL`zGTAqe@YDu;vo~-sX=yUj806C2@f|!zH86i`BUIF${ z9DoA2LlJa%Q_y_1b$s7&qy5b$|2EWR=;D2Cd~fCsm|NC7;XFNWauf)Y<-+i}@o-$c zeTN#IZWT9$dp(cp(h@MGAzt}3Nx2@=$jY!jpky5tGR~Vtte*Zm9mOus)J-HSs3vaa z_eieuwP2uJ0)+r&uVk#=mUjp4DsMP3*3CdIAVNR}auXAyFkPfu@F&7d@f+vZKVnkI z169mW{#jvyk5U~(F2fbMe*EB0hV|8nseX!1sN;y(7vzJwQt+V!sQ_>(t2(CegVN9W zbhhgH5AqRsYuGP?$Hlf`gdn1?*oV7mclJlK>BUZ5bvQTYu}S)FpB3HW*SQh(DA)b^ zpfyIX=ix$WP!K!R8hZh~)kAimTDM*9zCIT) z$oWqWgrxenuhN?(6fw0LGo?A)2e9+krm{}?0@Gb9uf=VMs~Bi9?TgNea_@%)mbt6u zmR-qBc4O%LhObhLKLvai3HXF7n2&!`OnJrdlMFr~dQ%#yJV|_F7bftGCZ2uc?K&<# z_=)-^5>IZtmQ)HHG5<{2pi+U?U|*6N#cgrFFZ^0^(whxHK8m@La6t|Ud7#LlnfL&AHX<}@JcUW#x6CUQ!ZmwojbGB*%3R^TjU&}9`L>fN)h zoBU!$rXkuUIxMa~Zz3rUKmESDu{nBI$-Xs0w?kp^8oEG#cH_cOv1;p>Fbu45?2(dTyyGqCvG zWvb;F$+gIe8;IEYdn8kNG$KnHUZQ_P2l%-eq7a?&byS~-c$)U^^y?=x=5`s0<+%h` z+%o0h;NWZb(eLZc`0RQrQoz$dX`Jx%QnVJ*7x~byScA{gt{iw`oOW=o^#Ec5+yasX z)-3*e5nfk?YzEEA>BrDxsb zKu7NlbARr@p$L47;Cp02XXvUzV}nkRdD3!MxFY3}yhcH`Xl|SmbJ6MFaPR+qu|lHi z%s{#QVazlUMcDC?kUiaAaEx9-RrrqHxW#!Oz1@dl2EQ~iw+WbSs!IBXq#lO0K;|nL zBBbJuzr*(KS+_uHH=#tShflbEfSht|4Bd1LL#}-6dlvJ^9JN5;J5VF4eE}ot(P|7K zR35S7?HTgKk~d2EW4#&dg2HH&LSXGH0uLA&{DnIOx?>~3w?f+=|lH zh9hY64)kVh7S3&4tVClL#tnh#@qazS+!ajw3YC6Q^^=b+-GEU=8Gqv5Rb;^COhs0j zQD{W|^WRP7-MkNdjK1%}_EWmEEhFE|8<;WvnF>HKRR&=5VJip7$^azECT^Q8mb`RT z+I5F&mc1qBAe+(M(R4G8AUF1l99YGxvA}?K_bx%=ZU$q%z5i}gC;6slX82Ed8a$E4TpFzzZT{v3MoP7~O)Jzf zO4XQTQOk_1(+pZji_q5T84!Nyszm9KC6PEuj2*VW|IhdX6^Al*bUO7+D zYRtETP|_a6Q_fzeX&W<~U+$HXRv)1iwCf;!^w z^Q#!7mLa%vqdMYjeYo_jjfjCG@LIUzUOX1$|0*TQ)Jrh`RX`@5-a&Nv_=NcN%em+s z9<`4Laew6gYk0s=6t_Qely2OUyuTQ1EL9VzDl``!#>w8V-v#h!m@!fbA(>Ly)(( z64(a0u391=IT9UihY?6BD|Rf1!<}a7k*olR!OB(gLXmZbwY;9NtmKN+XpXg+%F~0j zO-uw0fkNg#;wbATKy9Kng|w*TVkZGTuDrPA<-5HJA)+TIy`7`RJ8DAw9gx4xKa1FN zVbosGmh27&d0A$r2xk4saN565J@wtO623^WhjBUyQF}8Tf zSo-7Hm*Wx_Z$i-6hJl^;E09U*3OVnNU^A)tlYKW>I91A)Q=(qt^nOoA-o1h|5++XZ>AKP2?5 zFatj+u&UXwY)QG;QZ+}nCoR6b+O(OVB9y(6^e%}wG%V-#gh|w}K1IDhUR#Of+_B-{ zEEK$>pOK%gEoaL92J@FGzeB%$963p+B%r~O-evB=PrNShKesSZ&i&HLQe{_)v+sY_ zD^9=n!B4-3(Fg%@i4BqOH}fAYVG0cT1}1r1MF)7^-zv<1La*>E-66bo3cDWYiXrOC zsCZ`YVWEt%HJTH)eT?D58bYxa_H;ExQ#XwXUQBuplx33ba|wl$?Kf9&8=HQIt^I2D zJy%>STPl1EHEdIJCUSJ!kmMYCRjy~fV(J9PlfZdU<#7{gDx#vj&X_M{mM2gv{{6vd;kLctzAzM{mO$UX&rt&`l|1V>p@s$*EY1036J z-3U+ows5IP-IEVuWU**S-(S>!osaC(Szzu#jvr5D`gM~LnSaE^!fwZL_}n$@vK}Gd z1MjybCb-DZ(FYEZP;RHw^x3Puthd*0lSoM z0_MB@-s!1us{&R=-L76vn=7*KpVXi)wsuG&r5q)=%c~k>P;zm4ih+V&Mf2U>@Cqyi z71J*)s`XiX-Z;+In@+F7bivH;n@sIf|2iU|8xkFsK?rA?ZQUnNP_WxK)Vq}WP0QZe zDqzS1vWTUfo+Z<;l+pH-E`g;#4`7>FZDPPyg|*`j@8gxqCJDB+uJ-7;o*k$2wPEsj>vQRmBW>7iWK4Rk0YPMyq z<-jO;7jIP|8uCD!i^sWVG_Y9gZ09Xq!gJiCr!qU5gL`2Z@Th8?A}ZO%cS5#^^>klD zEN%W^{Ky7XLISnV^JYt7$H+f1p9ydh$Lts_^cY!DKKhEk zZA!8Og}{PsXDMc*&t~B=a78}b8#bA?Ycjk#^&a2!aMA8;PW^PrfQx8aUIBV_t-Y3% zKJ8~{u}Ymyq5^U-WOqc#Ty0b(I_1BF00(fh3X^T)(zCi^_T>(YPQz$hYbnnA%KZTd zW}^w{<+^GeK}9DnaLx>GA$R!*o){FovabDk@1A*F*^{;$?k#E@=7$q?gleUV9rdfG zpqMN+sf@`7a*uEIh||>1P%wn$KF;<>ddXgVc>VYY%}=haU5936Zy%a|<+Zy3FWIBa z-5PGU#pP43X7>CqTY<1>L=Yo$2HT(b@|||GQU%My4mYYQDbI77!$Wkdb-&Lo1n}yo2lV1*GL*5mfDt^e**eBCu<$0MDxp|&_l7a|8 zl^olB&(i5`4l$dc`Z7Z+(6^XBm~ObNU#_vg&6)jU8*yJ=aaE+MeibN>1cHd8dEzBK z>gW~#)#8r-Tp-RmnPyj~8|8jEMCHOMySjQ5SgcT2KVKt8kXJCdiYJ2)+t7u`gO+T%gws<5-j#7 zpZJ11=p4n|5<~X-Q~k@*?o!_)(jWSiT848u?ra)|h?=AzWQ9Uvsl2MFyLEp?cRzl5 z>9+vgBlr#R%gTlyz;mp)0_jHIT-7)4g=U#sZ+y;u8z*P1ZBu}iC1Y{sG5zl(JsTBb zF_1iW*_U>jfpO!$0N-W9pn5G$$ZsrY_CQYpDf{hisK)vd_+g(nh>+iX{fzePo`XNa zqeo4D0`cs2ehi`8TovuG*B+}rox@d`BXnxv_{T=~4Zecw^54w0HQuDhuxDFkb2+*2 zTq5}l7Fv3HsSq*tF1)aTi+oI9ooQC4lRgVP%>EmS>ZXBrraJ5ASpJ&rPRqrP2gmx< z=0#N_cm9VGbL^VMD_TCU&;klY_d*w`ul$Eu<@zlsrJTai`#X1ay)M!Ob9C>@JXAeG zmO08!Y}cUt6Reyj1`?;uxoTW&zpd^9!%^qRuDPi|SxtqoZh`ZH&ULB3L_Ab&AB&mM(g~$9x!Ez6?S+N*YEpn>1%G2(YyjMT2 zZ&z>uZrb8!aN@}a{LtW3cx~K+eZ7H@4zB&&i~ACz{&1be*XiQX92cRzTSPgDXZg{F z{whG)fojTBQK8NCfL6@FtrzmrM;P~!u)fyRM8Ko2b=TIc*kD{{^`sIB>*Sel6DRH@ zs|lmohYSx7pE59hl|oHlOk>_%%H-j0E-m3oc#L`Ry)}`!!D+!u>78XwY@_~tHSk46 zA485-KfbY6odDMc{K2gQ6Z;=8Spr*W!zf-LoVNR&l1cYA8+{}`YtH=gt?_RGR{nT$ zH6UlwUJWlV3!cQgMw**Seau0_vxI_uCBi-{#cyU{U1IJpFjc-Hnxf@h3CRBrzULST zh(J_^RRJJ;f~Rh9@%jUp!BBI;Z6(cLkYpi9AV6=HbLoA;wD3RQe*6HSY<{!04SR~)*J8zGq8fg>MvkfJI*^e^nw4Q`Ts{T z1GafVo=sVFh%afejQ~FsMAOb4ZdZHg8&73V38uQauLkV}nX<8J?Sln@3E&nQ7LNVhQvAbTzb@u9I@00a8cV zt!EfjZDT~2zpD?#=99zxFB|%A{q1dj5T^o_PX9BZ$M(N1^f$ zfi*lmE{P%zsw5nTmS}8Mm0q@>JV-eht?c?on?9zQgK;g-s>%_+4ByO#v9Y?*N`A2% zw`HhG##&0L;-{XBb~!ndYfa!D6kMvbs6T~0DXcWi!AF-u_rVtS)@0lFhWAz5_`Jn` z*btTr9;NGxi#`l z<75C9OZ#NJkG&pbh_*o|Jf{M8tfoU~Waw2v797u_g9;Y)f=5TWz9`WX*I0T>^Vzcs zv%+=?sNe8!6Z4f>7Njl5^Z-^dyXW|SrMU-~ik%mT_Q++#R~)T7wPE7oWrU{T2NH;! zlk*OL`p70Kjw}SicR4Q-qy<@Gc$ugiXCRu0oDOOtjB$W?ZGlKCA=O~-2*sxi2F=i#>#sf=-~L>ir? z(g1Yk5io`UvCCjje+IJY@o~-_*anbMhQf>7mTAQ@xJu1zJ;u0x?Q~XMH-?6@W?W&s zq4jvaHcK|dz7Pjl;|oS7x(V@#&7tv#mWh61WW`IpGu3-uvU{ zbDoaKKF-%c!p5Hg2SfO#pgp+6pFt>aD)*$fPr6|}MBZwgb&=9m*W;$ino|3rs-Sii$5BF?y=H2%AUUQMk89_Jf1&c@?lx3WXT>ueBaC&~pR+Av*@Cw1t|It2VJTk?2K#2tm#~U-tA3)^H3k`b zy1}adiK0JXHZ^ue`KgvHDK=fy2!_rd_Wj!=;L3D-U+2Wc#;TGKTkWT3HGk+%)M2;I zGFawnNu{Lgo6%-u5kAKK18Z}brqp94%6&x3x{M`Bux!%vS+@;xJv&8}OVFO2>t?er zR?bVcWT%!neeIg96eG4X59^&SHrd@AdAOb&aV%!=VhwK z$I`YogA(MJr4j+=iC9>wa@l?>!uFHMLjws)TSP|mBzHZ9HXu$$t#Sba zc}j;BlC2EVZKlpuVZMgX>faO=KU;b7W}iruw*#&D&!D^}>Xz^10S39YtO+~X$rVk# zbi|zK$9-Q_n^7rvwgKH{8qVdAf1xBQMUff)EpCc7lYI$6043}D30~HCp&njBOGlxr zf%T(^F#Ut7@~U@k4H#)yPFnSWm>6hC`iTPc*pyePg(FwN2^rWBEHsJup~G2be$rH| zY=ToWv_Za!SiWqj-Zy^@nJmSv{1}npvh?J%0sbQ{2%08gE3+Plx)8kAI%%PDsC_dz z=VBAXKjuexFoRlUw}3a1TS%uPSD~xBboUgnx6G-6-#YUxnKL3!NJY0^$*9|GPi(@A zhai(lhDHVn*L?YZ*a{jAP~>?Z*`2=@*_{z11J7_WR{Ih*At+Q^!o(nWJvkUci3#*a zJoOu`+o?VEnn$o%?SIKZ+#pW@UoiT8*#BO-^?)b!;&!a<3giYS!^Qr zNAhcX30&XwrgDEe`WK;+S0%#C=>N_WS9dzqi|HTWnui!mYlD(G>`Ul*QB5NKGMLMr zG#YuDja4FGc+9tXuc@4=i)J#|;y~ zOf#UHE`zV?z>F#gt%O*TD1H1E%7>Qghxt{*9|`-{5cz+bp74Qb;dM)|Y-ID+_)M{BUv;Z#7< z3uO|46Kq@|&Y;&-zYV`aqRLMt9gIQj8Ys?zd2QXU`xK6j@yw1q3Kx24y%FTA6l~{* z3@TVtT%15*T!~^$;UpvOG2L)6*P*U!Sofg}FHb3Yg_cQ*8cii;ju@_=l-gWDUp_%+HRf>JARCQkj}wiT>QOKCb7xqP;vz zgQp}V#uz_W5QR?eavrTYm$CH7W>}4Kh6gpS{O_}kNz_)R<>Di7E$iV&%iVS9S}Pju z#qH&UVaseMhzWnL2SBUUw;&$g7R?MGCf@NQEv4?Oi;z?jnh`vwZL%3HYd*^fL#Nlx z<|2jlBstcIHBImz(lr9BH@sHB)Cf1!iX+Ht$p%r;%6Pg}1k2fpHEp4%H&RP-x~D=m zJ&WtuRooZ<9l%u-H9v5$)ufQU7U`93wvn&1TATfg@h(%ST9rs0*#QzbK%2HIsX*BZ zah?WtQ}f*7omFY#IJ_hPV$WO&*8|P)l{h);D#L$6%SzoVa$#=o?0^X?WH`cb``XuLB*FQc z{lLy#Z_y%>5?H|EYP%i1=?vWh3PZ?YZhjdRS()Y5NHORZu`#N~^z#fe|C8(zT0!sA znUTI8v!n9?&2xEqR%Oc>4A;z!t2V2%z0(Bk-;+Q;3G05RmaO9F&hAnkAFuiocPPfd zu~2jWOjTF#=5c}>_-0LbW&ZXPyL>8Hi{r)jNliQC;?VExMAX1Eb(uE8V}6xOcQj9E zY#*hr^KK9pv_~k~Ir6Jrd~Fgs{3iGmUjevxv`T&Kr+t5$x`oPLWxYjewD(uQyh@v) zC6+Twl607l|M*3%-BQ1?#9Z#CYwsZ^jV9gA)A_x%JmpyuY&FcwOP|y4#aWj`^qr#Q zT2SK%ZmiYEoAr9OC{xd1S{fjaQ3wwP z?G{7a?Jz%k?)sjg65ir83b#sxxsw>(BtZyXcBR4^{j(z0U<**w%7-z!-2R$g`Jg_` z%0$?f(eP!^ZvbazS%kJ_vd~zxO-S2%J+dPFJ%@b0Z?|>?aj+B!)cBTsLGnA9^PxDs7lfAlPfcCM0Hgq+Y{ZAR}_vZKh^>RLe!Q|8CDByn>Z9zU@5^94&OJUaDD&oh zJ!K^5CGP-6R`4E6AmluIb_osWytpZ8#Hz^1@6r!0sxqh9F1@yPLVv}G zCcupHqE2|x`yA`RYWLzjFR0aK`aK%Opw)?&&_bX7%pKP#}t8xaKy}o8i7bX<$F94xs$g* zrhNR@h^KDf4K)ko-~p!-CGFMO%qJ@+=*xgOn%f{F%pVaLFZ~o8(4xHzGcsbeJ7zew z%=w%saCUe8FRC}ps3`&n(E*BgT-Y!~Iq-2o&B8RVSu^&Urrm#vg)L4>gs`ES3n)?W zo-~LgLy!f;EKUcY3~Pk>NE$2Wy~qWTXOLhR6$1VF;3xfAYEfEWNU(IEpNx=Kt$kPzaH@q2X^(Jm5I-eF7KVQgdqH-+iS|{56_@J7_ihKdk&B7-f zeWWq@?rUrlvU@+vKOc4PGAD>Evz>WyU33d|y`K4c9;2B%dq2OpXrzi`zGf{-7)JxW zH#R?Oy|yo=eSN#tWvc2gEa!$jHkiE#010Gaab6}8H1GkG z4te3UeVC-5CcA+r83l9KsWsL@>9V3Mt?aTtqdV`rT%3D7``co3O~gwWRAy`-?1>W?KG4Ynm< zn(V)9FqpUSd#8>~7eofC!$C%w$5-i>UyeXC$qq1m&9%9u>uCjOB=yK+dObe&Fy`De z<}WJ}z5&;EK{1f%!eS)X=JF0rfoq%&P~c1^HgUz_K*=jXLNL{0$X)Yb#1-9pPC;k( z%0Ea{ML`h^VKK0F;}hI4+}Aqsg=G#z;lX(jg-99iAE#|p2Z70NEI-REU!99pEO;I_ zyJ}*P>)M1i;U8%cp=a2hHNx`t=RD)wCp`lEvPpM6rb>cmCEECi_@sOS(iRYOx44-D zKm)3(Z)qq`6sr%uwxi{Gha;QMMqh)Mk)GGs%HS(W#CCsK@bzhNz<2JUgL1vTx9FC> zEcmOOsX&Tr!bjQO+)pe04L|}Gt{>Y9Qz8-H1nz)m%R#dAV#UKz%H|!}RD!A-ic1u# z$No!DVqX*ked-ON8XJ3@HV+KgU@b0HwIjl7{)b(0{K(N>zDjqS&hjuz$NZP?b+5oj z^Ef97@83MXOQ6>`Lm2ODBh4~nQ`fP9S6e)Fzv#~BZW1~CYuzeNL4eXYjVAubQ(!n7 zMSpVAd|sbQX3c&yX^TheVgrZwq=NmDqi%$6}v>N7`ra2LI|;A*4?y(pTF6grB>+bRcz(qz?Rv5@th zd_mC07Hg`^wj1&Ml;!mUoq>SJ0M#zT@jm7no!cJSI+8^&Nzi4k1fOh3U#YC^RyL@8 zg-kh;4LW!#Ts2l7Zy;;2Kv@w-^q`xTM=6M5O@Eya{7gEfv@t6M9J=hasi4amk>|1S zW6u3f-(@7j;!a8&N(gyujN;)xYu~y80^u1%B!;MaPYcmBIOmQpHBSBSc@fUzJ zLT>)le%>@j(F{Rgn)kbPo<*+Z8RKDa%ylST7f@Vg1b}f~YexG_6~bI=;SvlHEx=Gb z4fth%|7y=Y;VcN($f74X4=R1t?3eAK{`utQ5B?rfcn7Yt*?+uW7uwsh5%x4L){~X? zM)?qvMe6D{NT65;_e^>T;i^gY2nOH#(g$Y|NWN*v2+lbXPPiOy^)Y08;$9k>Ct1o$ z5=>pndN@I(IOHe=AfsX=W2QwrdEB1YLt?i&Qy=O88>|zs!92Y@u3Y7fedNcm$`VL71r72-f3G65Z0$ z1Z9e-71ESQpeQUn&d7o*EIs1{Ye)KMIcD6aL9qv2;vjfGmJyt_-(OO4I24jcQ+I~h zwWe1?}uBOAa})UwPXe>5mrpm_=1ZBt_>pD2a1;9SH}3V@RwD1 z9Gd3}bD~tyOh+4x4-1W22fHZhYmHb%yu{7y!5M(oWa1Ik7O zLCw2ue8dNzp_krE?JdHc3djA7)l1=09%oxu!=brBOY5k+E2gElfku!1Gk+NB%zx71 zyv{E=Y!L`}E_m2N&VcFTM-x-ach&T#g&HOh=lGAH-Ww)neLsebUB1R6clb9E&k`vc@U2p{%tkrgZm!Pq^8DS+O9X3>6$^p{=kd)RakA8 zbdcB|twUAfMyXGU^>0w?)>Aaf@~|nLd(}XJyLLRDsGSV|S;0!f_s?x7AMSW^wc0pU=>fxmd;}gv;X444v-S zZ(vNZy6GZl$bAB%eAt-e-Y(K~?dAB6Po^Qqzw8st_u^Aur3MHYW8QX%g>vUcpejk) z+{GWi0uR2l#<9%DLu5Cm_R)bfybS)3Xjnjpc`j6Vb}?-(H%%|}lLTr&|JdUHwyRHPE&cY_Oc zvLSm#E)SBN#j=$VY^c*sM&~}tVuB4g%`}BpS z8exVKMp-0r?)>S<`&gh-_6T^Om*edD4Zv4kUs zk=6&$5oh5+H1QY$q+8{bKWATYW(geQIOUD&H!>f^cL@iM#*k2GS~Q!0PcKK&*fwltxgJ`$v|fg!YR&o$@A@st{)y3(#co z5%1`Q7%hJ~?tY7%^Rzfko`_-1 zLcxb{Mhv{R?;sMR97VnAayYoC>U z)U3FZRYGi~!&LYFQ{*w>@+EY!5rKh63R`E*)X!M^pzDj<=aR3-GbU}vqR5+6_@jG* zOSmKgHjPVj>P19`77L8q5VEpVtVu!u%=!X!7%dWPU#;kDzjHv>l7!-=wT%I|HTVlO z!WGq`oNo~Aw@lV2(O*x`;imp=SR6pzZoYKdh2Yt|7z;4@|Z@Aw%-+C|G-up}i;LxLvd?vl?N^TPfmqaK0Iy zwLT#I+ua&tc~_IhFNC2?CecNk9Gpf^pnQ`hQZIK%^zRH1YUJa~(eP6W59#loJZyRe(?gge3-}CGUEdXFOCA$h`K!08mpnxORv^F7 z5+luEU*3;SzWGB#2~kO_rkY=9^482-;`2r~kosHz5nf}qtq}Sq5($nY@6NS49vtmk z5+Sl%#S$O4JSF*Wa7x#mh@z`Gj-3sHIT-lMNhZ1|^)S>E{q&pPfsbAL3erijMIWx8 z@q6|?k`A%MsaR%zo!Ic-&TW2Sw5Iw<$9k3zqE*QmU7PtDi{{J8nD{Nrc|ufz;DA1u zWdY>oc|`k1b;U!XDsmlu8$>CA=q~uww=n!ZHS(Pt&YWMp(Tc~}$J%dUeWqJcYhXG6 zc@}Bbt%bu+ok3h(9mX+8@idP9I^H(1xn7pSUw!*AO;}2qni@y7_AB3{RLYFgmhC#f z4XRF>U~{DcU|ZuL(&lAbQ`^io`7I>gjuAVRD4WiCilqn=f+jWubV!~W+f;3mUbdPT=K{ZcA(M%_X@)Ka=+0=?O%-`>V86OrX;JdRQF; z_giGe4f@^8(MFfxg))_~UD9&G(~*=Fj*2&Q&V|2@g}(^thX5`{8+(Px=JhD=uQJV) znb^%kKK56n+PjTiIle2=TLv4`fa0LP4tV)oFVBB9MglH3`q+TIEd(KvZ}FB<=*?yhe&9UU)9nR816R z6%G+sI&zptmw=<@ci3Cy+JI6%T(ng*8CS^ENvFH@GSNaq{0$LFp2rnhCSP#^^w;ya zPOLR&$$-dO*l&YGw31MJmp84_j%fg)i=3uLhrGft=R=n0rAbnaKh zt;l1Y!vh07ly3$dvLq57EHG3{=@tqh0wKdg;x_SA1cfQbVl1~EJ%pY2O&DzFtKbg; z5~Ja*ZLe+}t844iUPaYb+~B0sJ4x8TH^cDY-G$6ItIwnjZF2S=M>?TZgd$F!_a$;3 zi4wIUzxLKo$hr^}xhmUP@OhG;qz_tUCM*i~LIYU`Rgc5%8M{*{eR*3RU{s=l zO?nG2c=#{WyF%PY$|2;5q+MM_<28RQETV^n^)J2!FsXaP)$tVa({%rYCJ`K~GVbe+#n~A3N;#2 zpVY}nLY9{2?KQ%W0*q6M4DO>1y?P(g+2zF?`Oc((=%KN=#{L5e0-X^@IG2UsC#f?5 zMJ^8L*PFBxLOXj#Ty@+5%9kO^VER40Z(sgz5+=Ljkm3G{h%-+S<0OhYxOmOKz0&B4=WqLdKL(HNlyRFx)ulX#^C*{k55_9gG;2Pb9^)k!E4?Atgow zm-gz4>}bmZFVv$Hnev<(F=W;+t!E-ba6%>4!eQ6JPtq%!dDWH`Z?O z_M(w?jH|f#ST$c(Hya#T%;F>AvRr`(PaNT!Xmf9Ffl6fW3#y^U4#4#{RVB9CQEzHE z1Tb{-`2I!CRN$;4oi4az2Js)_m%6d^4gxPwoKLkOp=TtRM#_Iq%>y$2RpCFDE>J)wVhT7; z$TU>-?5MoXzb{AhrLfz8XNGs!YVH{wG39*FW|)jDYMsT~{)DQ-XkF(L+)1D~75WMG zC$NFPv<^&a08Wv5uFmius$p1)Oz#m}q!29XorX?GKc+96rX!>SM2F04X_W;&+ zKgyZ>pCosjSW-WhVWoyaL4%=%Pg;w-vs0Yu%tOv-fZ*cX%xb-K)5NVQB&8X&r|-^m z)ZTmhLW&R7=$ivoJ^Ofec-xOjjfLqVb(xP1m9akwT6XU7h}8J#7A5lURX)d#(+WQS zPiA4S$@7+E%KBQi z;i&{BY!{roGk)=D@(ichdy1T(&?9Qjyt2qLs~=tO6~|l>p-@`q_f{V8`&$u zW&T*iUjm|T_av*SC{K=K)I2y>y>eagA=}l9Dta@xx0i}1wf}>+cL)+K>b5o0wr$(C z?aY%pY1_8#leTT!wr$%+<-M=!MK%7Yy49)9irv`}b2XO69N(PIAjh!e{IYj=y`K4p zocFH&=c8@@SR6_3306ne1pi9Tr#Bovn%E8dU<@Rxoh`BDFI2o+GakbJataSy>mY~? zTd&v-jrYMjTVK8|7dI;B$zH>LLuoqV)w%u`v@pbIWVor}0p2)Ha9Y-QnQ7(~)0peq1*ttHIK%}t&qA>M_thS}r@y_?435GXrZ0K-&MLDC6Hub$)`P3Se`uML8>C4Q%*)aR* z9>W~0s^?5Eb7WXf1YG|zU7s^-9=4pYo|FC;TmWsH{)QZ^AUj$Vk}UQQhnd^Ky-QsR z?1yJGUQ7u`-Q>gtsk1~Pn*&#DhdhDSJTXpXWt0Q&HN5in$OxwaW_}R$#F@RubqAk_ z>-X5_o!-X{s@(wEAdqsk__&wPsnfX0*rpMNXXfcfvss_rfWVBEa!dQfR&N zSPEnxugmOh!({1A?wVs4+8}JKM^HJm*<=-KDSG$_L?V2o$3#XJt=v;+H?`=UTC63{ zp*Z!IS_q0(wWaNv;Wxsk$oBslt6(-d@+6 z=mC-6a_krUS9*#2_u9le#=lM&W2ysWdsx1AIRe>`$05Dcr?%8%lMRMaBxB9XSEbT? zmDj3VW~Fubkk8~y-UR&(5yvK;C_-KyO6|@Z@b2gu`M2&5`IATFIjg6V@!=BVkA2u_ zqqEXuw0snt=Bz;rQn#qHMvG!snF_NE6y6~-O@*tBT#2=-;hV~=JA05f2lERax2R)N zS6M&n4yLqQJN1buDJU@JWCHp~GIzNfxb$2aD4NQXH0fJe1VdO$%K0!cd<2lY4y_f7 zD?M#`L7Rh>CAR8$TX~;8AnJyN#xO6#rJU^DFglV4FbJG#R}=pgo^+RW^j@@Bw>NH# zZJWlsgJ2=M>S|c;LpNnj=O3>&X;pNtk`-JZ+dYsp2(Lp*+sm)$Je`))0!9oXkkzHd zy)KqVAD*U95uhf;s8hhFK|m#Xhy>~-P48esm6Im$kiVsLV}Ga(2MOXyP0q(Dk+n?|>xE87|Y$H@F7++AUgN@UBR30jL=jF^Mf*8)XCRp`q z1*~tOQu#wfrVYyWpdQnwu@Xg0zGnj?sc39;m(`Ep09(HF)+QGx2H(*6P{mAc`@>JU zS%>B&Vpw`zBC5^7zhqE4g*DJb6}y|$-Mi!3z{UPR7WCD zInQDT)I_Be&Ler%Depi%us08lTIy@G;5Esf@PE|DOoD(eZU>~-^2a1rWKz@OS5PikwakKCihsHd2% z)k>3%|ArQX4VWXc)~mCi+RiP=|L@QO2c@`CD{$L~KIa62y){-({&(^V|I#<6y*HIV zmJB_p1$oz+!KU-JtQ*R5WAg2UK2!UE>?=wbe1__dP_OGL9D80Fy#%!6l4~R(T-P3( z6#+yJZ0%O0U+gTVjqqQFFy3Ba84-53c+O^q)|AiK8MqK_2T5$P)f)*HvdLt#{ zs*@6CGW6ZM{9(?-@*muptv;|v6`WHPvQ{$mxpla~)rWtLH(uK?8+SlVDqEua%y_@l z!nC|Zi)xnXU`%<3gmTnKhQ6Y6ily&^8#7J$b$&TE=h5JEyQS*+=QfOV?5l$F3l+A4 z)Bl?xLp$RKSYb-_=s&#gnEvmy!vAH)U}56;pT54lH8m19BpiOt7n;;V@3_8?dk3AF-#Vt@%A{ruZ+#wPxHu1z|l?F!;*c)BLby7)e?6C;Hl z$fBWC6Z`D&BkUSJqZNm;h^C<=vO7GDwtS#HY2Dc!^c^HnlQuah8n;7uE*~^7f$wuM zUrZgxf3rcHdoVga4)%0^?(4jiam#t88SP(9@Kr-wDU7FcVmrLkP5QjH?{$oLux7#vSWN;a{kyOpp7@t+^DIEaWM z>(u;8;$m>RZo4@S9eb1Co$$qBZ+Lh$D)<)#c4NEl`XBZ;w4PKCgsJ3spg<5K$X6{n zDeGl>gSuv#*c1<&S+C?frxWQJr$QS(xG&*X4`Se9$@OlztxMyc_*Tj>=~)2ZXRApX zQ3=xTnkHqy*4;)JzR~PQVYN-3z$?vyhRFjFAwWC=&=;k7o{wFv$cl(pgIZjx7zH5N z-`woKX{p>Zdq6|X)ezUXXCcU`ERu{iEaK`K#|gB?j*XA!xn&wYdo(8VTibIma6aj& zDw?KnRoqqpRudQ$5gCPbDns1G?->KrV~X{sK631zYZV;aa`xn*#O}{4;m>R-N^BBp z(ws~s$Eu$y&gDTuC3~rU&)YOq9<=ep^Rpb53=|s_&?adGY!|G*PfuLYO@>m9t$6h? zVp7)ZX(r2efq&2hM>^Zmc3Q^+4@S|Ys9HO;J&B`NAhEtdq+^w)*znuQN#lr6`Wf

lR-iBGF{}g|Vnx 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

S2=z~b7YsF7dfr$Zo(;df( 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

<<2>DslxL;}x7gWUb9;Re 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�H*+j^^uG)UU? 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�NC;E)Rt* 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®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

cviu7Sg_5*TH;a>1hB!UO?aWJ7)FrsB--WhW z8^HnKw^V`-wCi#2X6vuP#f~&?6W*zAD0Dr7y;=v6ZA~z-vh2$o){T+NBu&iVHDC(> z;0FM1Te?c6v+gfD8Ba1QG9GO70uj3tXP;>X(d&9KktowT-Z@he_@3)&6dQDg2H0@B zg}+EdwozgPR=%_I9^Qrq)tz$by#)X>UAQb7uqb36b|{#ykvL7A%vsFG4lR@^a*TGj+fv7Xi^k$MS9*VxVpn{RnB9 zEqMEFw#UCB_DASSJF0V~U`JbQ;Wot#y=eA+QmXJ|=w{#x_#ssiDMe?%$b0A%&nKtT z2Zk|u{iSkFVS17l93}Sf=H&M2{S3&DcbEB)p_-UJJpE9!VPPPvQ8iGWKb)%?r?O#pprT-cHnwL_2Kg!(W4h+67hDJ@l{80^-g<( zabyg-{4QR&$}M+_BJe^kCe}$r-LX4vwY~ z#G%{O3iOM93QC|C0f+C`DM7nS3M<;Q0VGur+T@Yh`P+d|Se!R{(EATY>**Nd_gO(N)C8 z(5jas-it=9qM80P%YxI%dP z&R|~yf7n6aTP^5I`Cn!=2MZ}yXY*8W`tVTx3R~Kb(_D+0nLo(;M0(4O80~Pqs|bFW z7RDKwcG_pY8h>!t&b-&d0gH^%lYO0Et}T7r$;aO1bL32;pk#7joy>El?z?#s`^T=> z^^#UWMOcqxLw`RE?0;|){b75yQoUQ|ZH=pr&{39?z0hSsfKK*hHG>PN(7Pf_fr^+X z(T_bHueMX*4t5lK@GaT-K`t1=O<_Ncel6 zvyB%e6}ujJu_sjV%JogNZA0&G?J1Mxev=z_3cdQeBrPR_MlRPG?78IY6$-+j9DO4k zsb}s$_9*FKVv(?fY8r*%X{0mEiZ>?r%e35*<7)NN zkl*XM+^A}$lMwbPvj<{V<2f7b9)bn{BX5q#?&mEr-t=<`+CGA(@X5qIImn~UIt<`p zHK7}*D@4dRlmCZ=ThFe-z$Op>-rtX$P z=B}1c2H@fZ@w0LAvw=V#xj;gor^U;{2@>Mulpoc|{ci;hP8POSKL2}xV8$-(QvskL Mqbgnd!6fv*0L=V%Pyhe` diff --git a/doc/tdfa/img/example6/tnfa.png b/doc/tdfa/img/example6/tnfa.png deleted file mode 100644 index 5853c26495e9f1f6ca5db0784582a0d29c49ef33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5449 zcmZ`-Wmwd~xBk&ccXx^80@95%>@FcGy@V(wEGZ==4H8mkgoFZaWJo;h>ootgKY^Wl6rXJYgq8pH$)1ONaKYiX()000K!VV#fvFaa(MODYcz z+esO$3;>8E!dqLM2h0Z3GynrY01p6!MgYL|!&c}P0CTkz0nip?()fdEs zHSm%-kYtYWXs-sLx31-JCa~_d)gCilLUrbzI7Ap&M-hPrgGtbEQ{g>NN0`35`Ll3?hDebA?zk_4stb-a#xxzk}{i4f3971oCTp zWMaqYw?HcPc*inx%3~p-uA(@Io8$l7ZXt_cN9h|i6Crv^jry>j0im^_)3)qAX$X%p zJ#2i#0f4R21pgniaW~88t0o0M&Ye z>I_*D#chakNh3ov);wU71?-Iyi6TsXO9A5I_C&m z-L5(Te~0-fiAdp=$rQzfSwix{z{Glo;*&#+&J#OxU(Z^<%4l|=3)BT7()~K1tTlGpI*rF|UQ42mobN&Jh&nI2eQ?h4nW*UCHg2CSpTF zI@?2bW=FCPKj1h@2 zQwvzl=D&n+3+tig1e1lkKXnPR`vn=gW-oZ~*)J01K6#SMV*qrhP1Q}gAso{?k&8K% zz^+kb^C_%%8vo)^hI?o2#v)an#hf{h4+uS++|}Sn{{4oVvwtoZpZyniDD8D#@X*l~ zle|{3iy)=3&U@MlR6~#d-4XE78+qYJbs%!aiMJ2YGXL;eC{O+|WA_w-qr*}qF(%q- zJn9^k-6722=tZRkIp3VElxo}QNcZBmm}dwZnZx@ixba5Tyz~V z@rv5LGV?S1N{J%!iTb8h&gIdnb*6D8DL(hWd}E18-jf`qH|5T1o39S%mxjK126Mvc z#5R&-5QjTGU6dzX3nz*pPx+R6zJ=X|Z9C3cr^Qn_`C{i0J(_Pi<_Y=vE%uIGb!RrI zUbN)-L41*5kaMuw306LWgpwkDPGDo@+lF#0Nv}i%0CS@eb2SY_SE1KP>X#H8+Ht^T z{dFKv&4=<>G$~ znZ^r*vm97et zV?l7xT@Fi08^?X#8Kv8s%*MK*5-*Ge(qnXD|VeK@~Lmf_aBiXz*uYxEF=582c zr3M~p>O!Y+smcdps8rTx4%t-6d_QMlIl2M>eesU-0@5?l-wgL0&a*gs*yY1v{?uoDn#2}~ z<40m?3TFkBXNd=1ils5^#1_8)Ruqd4@4#g0ChykjUxUHt#DeO85G&Ev9YamPWGjQV zFbpQP%uV`TYOR4BTI)R4FFBu

$;z6f|mRb>6B{VyV76SN38?r#%9aK{~$$Hyazr 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 diff --git a/doc/tdfa/img/plot_acyc_neg.png b/doc/tdfa/img/plot_acyc_neg.png deleted file mode 100644 index bf8a782e361699d7a9f94bad7b30f0bfeae819e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8641 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 ND9ETvmrI%l{SWl=*0%rv diff --git a/doc/tdfa/mk.sh b/doc/tdfa/mk.sh deleted file mode 100755 index 9f16740c..00000000 --- a/doc/tdfa/mk.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -e - -pdflatex -shell-escape tdfa.tex tdfa.build_log -bibtex tdfa -pdflatex -shell-escape tdfa.tex tdfa.build_log -pdflatex -shell-escape tdfa.tex tdfa.build_log diff --git a/doc/tdfa/tdfa.pdf b/doc/tdfa/tdfa.pdf deleted file mode 100644 index 1622016c2625fc8bb64fbb9667f0752d5b9ffac3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 836087 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⁢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 z z4qnH4`_;CoG)8qT#~AoDHg$tB(CCU`bL9O6#TSM754<;$OBvYfu<~T72Uk$6Mf%4w z56^mI>qA7>LY}R{Rb|`*e19eZvUl_nlT*|%$X{Y`HRWUPI-Cw9;1D_!42P<(pnWi0 z4GX3X`T%pG-T;DSx5#&e{a2TtHZ00@Zqw8zqNtM{SQ2=X&`uP>YE2De@U})Q5~Pg(HguD>1JnM*|vI*erK>pmR{++7M8I%7{sN~mgCkBLxQ^=pS| zqU^_gf_UTR-3RO|sA$~yl}0*HGO3YN!%eCF_YUx}I=9)n;v6~`3|vLcS(YeQvw|tN zhwmdNHFCbAS=dIU7}*9^`U>5Os(q8)xV_U^Y+H^h27_+wx02(RpOW}`>#yJI6%xOh zmXDJ!`^L|G{jYhS4`?>};M*A)^_1oQ1#{kubTdECoXy9VB)2)PG%;nSD{)n>-IGQM ztsK#*oA0YS9HGh7Bnqww1*aPAX4I&S$v?U8SeVLSHI~rs_&_6+log44x?tg?5n3zm*izXr9<}`~!x*BDMw4=4Wdz(buuRnapqXiaw-MMMxqU51* zjx;lj)t)FDlRa*0o*X=U4cq&p->jKBmpCEw`lV4MXE~7lLTO*M zvP7sO!0Sxc7Z{f2!o*L%qUE_Xg$^SKj9tMQAgsY=nFD$$pOAOd-v8fL!~e&%b5m<6 zso<#4`xAjjA}tsm0bqZ)&*IQzj3uX&%{xB#B15SVDY2U8rJ5`0ngkhTx)#iMclw~x z(d8^6v~a21NW^1$2CP8{&Ru-uNNFej^ktsCZHB?ldKD{e-Bx-+v~W>%5)nwVK|Fj} zI4og@uYxZ<#`${7%N0npd+eU+1ai@7t6%7Jy?y3rjjJ?V?lbJ$UnLK}r2k_ilI=Pt z=3aj>-l+NJ!!!W%{1lY=9Wf7+(DDgj$e=@lp5J0sLl}m9N#dlSufp+ZZKY_Vi6#ca zOxg~4?5QO+B*k(GdzQtlQ`GqfXsMU1!v`@02lX>99`0sm$+GE~C57d>*mFUJPVF0_ zm@Qs+h4b@XrhYF{7QrWA!QsTcYE6%y%}Hb4jxs)>KEICYJX>nQ2Y_J>rqpR< z>I7OoNu5MtETlm61se%rO|CO^rk7mzK&G?Z{WAn=%13^6**Qcx`+N^7A8;f*=fHA? z`K9w#C4A3=#1s*>N$Aqzytdun$XY@%o2;8_Hg|HmceH`u(~l{AVS?Lx{(|-)$#OPX z(RLv}r02Ts^~`PZ-BEIr%MedlspZ1$=dLjZGf`>7Ajp$rE7ehjaQwL(9bjME>W+3v zXxc!TyRD@}U3c=osdWE(Bc#g|)cXBg?K23{U*=+YSiP{?a)7T-pd2 zYk1#R9i$QT+Y}gmv~i?SH9}3cL*1-YWNllxfrpb=sY`PFU^d28^HQ-m4^M!i9)xDp;pF8_6K`!YTiMSJr zSRXB#lyx$ z`uFqyJ{Dk%e5Z16nDS2sXCiB!)RB1}DU}zkguIyVT;gd$sBGS}Lg72wpC>?L<}D zjwnR)^(erh8TVUn|7`S5QDXuCUxrkf}X>fQCAsSJUma;Coo*e}t^g@?UAa zCOT_%sqzBxZb$LlS)KJ&tnJ%fBX?NUKE0#XA#zARfpT4+8PY~!nQp11w*@jNjAYk> zm-6<2gF9}g`)weavf6#4B}ST>nv1vQ#U)wJ3>j+`{Q~agS~@Qb(M_%MSnbZjalb;+ zf=%WQZ#}#2QgSstlsR#l_8s2b1Za z)iM}utz4lwU%J~>%$gfnHwuLsg0e(ROd5=z6^d>dI26qK-quQ1pKBhX5ULgWLZMQW zp+>gaWx6bS%a!ZhH#VurkR~EKH#*y=^)`gWadgc11USKLn9yvECN7&;j$Cs;RbM6gIU6E?KR32;6Vhu|u>xajewmz*m zFSx^{0~@0a*6&)`eIkPts2q)(&L49j+2*cDjoe%5J@SoA;&MM&8*24-H5`mL?0U5;t826k67{z3O$8Qgf!!UA~j7-0GdLxuSGKgWt7ab!b znV<=B$TqN1fH_Ao#TD9T-%#gCl#ybjC(Al_1@w3yI6TGjERJ=$ZISU?PKIBG?@0W- zL=Po{0VoGCY=#O5MG=t7^8;TdSXIx88&F4i0-)zH%L^Lpmpt>vz7h&6^;Wimw}Be6(+NlTVVw|gAdT|yc&kCkNb_+1}b85 zO9Y#mwGgQmSR#pF!~v`8M%pVu%NxSsLyxM%rCdtmUgHra0MAAo1?|4VPBpO)Uk>BC z3$xHlE39H!n9v}dE5BqKKkEwceA(|*Nw#eF$nd=GE&>z2GastyNO6qZ0+a6wd99Ze z{iJf?@{qUrtIujLejNLutemBNY1q5h&sXy@;!vsh(N-ZiDuU==P`NxdO?0z47t;jG z6qyjs#3gJ}w`JUCaM#4bP&7Z})ziHk(orXD#NM+O{Wn1({5C=WmoodEGi}&t6JM~Dud&`A^=`EpBct1huZl?0tkxOi< zrF%m^jzxta=e@2TcB_QqyLsO+6(qjAfg#-p4vkA3qyrOHabTH(PIIGj&gVRs9+(?; zvk{_Lt|1=C=5=fv8t)?~l#bdY(qY3B@n&3Pj9qx!Z-$;tOebXS(7dKEek8oC%*qUP z%j7WP{vRPxXtHhFTz=>H?pZJK1#>3L2N+xx)?OW-S8c2!T=u_(27B}~B-nX4FexUg zpG->7&-O>DHt(%6noX?nLrmJajUkSc@@7OvotJ6=GpM-_32M^K6>ro1tb-+~G=5mo zyrp?UW~hlVV>gF>tVMaokq$J%u8DMfxU(~H(jW#x3*#(t6pbSj^7DK7DnL@Sz|NvQ zzD#C6_I#bY%#1#4$Y(XgokE(Yr{auR(7cK0J!7e$-T0o$8b75!9@`P6tun>$Z zstAG&izK$KfgkRn&^og#64 zXdP-lWglq}e#5ndGoR6SkKx^oq2>Q#|FL@8w+L1+Ms%d~66$)Li;mqFSvf%AH)fNu z^kTh%4q_71BOx@OVc_~|3D^5-xuOZzkPIS@uoW^wvp(S#4U|PrVT& z9eaK=Jd{YuL0I%o;i&%;6RO6dL|2#dS;phgg$Vn!H904V)sLyV24Njq0E*3^fbvtA z9i)u-0k2VeC}7Fu1gEN z#vS?@$l8u5UBta@cKiHs|MgW<$AQd=f1Lsu*$n6mdp9+3nfR_ttz5 zsMYZ$)jP07*cyy#HsT9ezo;@HH#&t}1z=fPGvDvtU=+vw>Q$BGx3D_ZN9axpA5(tq z*xDd@Tix$@6^Dc%A!N<;o*JTwFF*ABywXbQNUG+q$G7i)Y5pbF01ByQ0U~=}+(8%) ztLiOktEC6I08@dyh%+tbLUD3+Ob_c~L;(Y7@@)CFiG?TKnQUMq?A~qfhKsOTOsexx zX95a}wkFW`rFNsba-&v$Bq@iTGgp)sA1l9B4qG@z-Q$NE*T=?J*6vn(@#Guh8a;_= zH(LnCd0Rvpzd#MtEmi$~*-Ki_c<~f9I?ZDh0}fnVzrt<%?eui#{IfBm!I3Tt>RRd> zhtp=up_>NA%WvE|Rx#T@OMW(^!fE8cpzg-}7?Wyq!8!iTFV!w!y(-UfRQD0l!7GW< z@wHuO!xFvVYIENQUxe1Yoo8u^y69bkzFL(CXlwzLWI}Azy7p-NGar*P~ zonYVxxI`E(cRDPa!CW2NwOUM+)3w%j zaefSn{Y`jeRFrB*k z2!zB)vdVZ+7w9jBFSxS!`1qY-Zopk8ZcF>-bA6K}pW;dD4JYyWVf$+mUQ#{3_I5uu znAqk$QVm_Lvh&UTZ$QT*LU^A%f4j6XIoWAsEZ!^qMNtEpOM_hr)LatTk-@As6*G6{ zcdnEsHUuZV=NfN<*=dK4vy|3D)6{cbCqsN}{JxmhH!-|o=Xi%yZJ!T-1)mlOKyPJ4 z$~8}PivGGJIYGbGC!U&L2;#Zlnm(Z9jG(Hdhe5-Ro1LdakNCz+$q~zl+N_GUhshl? ziNEm1aW_Tdad-Vz=jfjK5=sU6zEJ{TA@-WFIeVPECCq4-U1SMjc-A8y9YQejb-Vs( zxyxV48!CeFoc|gWK#F1#@Ug<(xiJjFy#g5yVsRY*y`Ss(IjwKrPDxsy4Dq|qG8o(+ zH$O1nn8bY_^^5=+SN0=%ir6}}BPR5h$myV-yr=lQ=Qo{M@($GYF+!#<0i*nJgpJ$m zRMCAz(S4$OX0|}RJE{j=KDdb!YQcPJv#mU9XD!GA*9r3kvi*dOKq`?n!Ej17oDL%> z=dm|74miDRj)2L>0w>wj>15FK%(RGyvxz+!=)wm~RxSxreKrxm>q|8I$xcEq&h|z| zN2D7Ku4%(6oLr)fDa^!w=4OY$7SUZ`1$Ud&>CEgsN(Xbg?F+%lYO^0DDBzwd`EHyl zjE*^FkWJ2aDElKV4f{t3V!@QM+Z0Kh)TbpJDm{(y@gxiuovx5tTu3Q(BhvnS&A$5p zlZwGzx0&fcM3dK0Tu0%aPnx_@G+Vrh#vIAvFDYS$IQ{l$1X1ejO^#5-g8o&+_eMsn z6eet&50$$y!as&){iOx9yrr(VKA`5igwib2G$~M$e-0C*xua?@=F#Fl0E0q zleZtXMkf(A$~NG3FKEAkr05rec4e(2nRA4zj6D0?i6Ng&x^E_mKH+(NsEZrhx2Qee z%eo;E2=zJk%p^v38)>wXZ_q6A0rz29_Ii0veKETwOp8Ri1eM!m?(knxCbNgNF`w|E z628Pnx99VJOh-2TQLhLkVqNO3-G>gj>)^Lc)>%5AfNwvyjL1X~kC1SMswYV3VDb?S z8m`ZGhQ9w;`iGr?fT-2S8ZK&C^h)!tQ(R-G7xQ-t}G1( zt1VniM=iYF+XzEMHVkmUzYHglcudI2cOco4K#VGVN=BRyW~F43p!&@Jg?5O$+W|Xd zB$|JrC$SZLGE&}Rik-^osE)P^aoc#Hm}Ry9!c8uW%GtSwY5KhgD#nLjvI`vf>crnL z1^5U1#Mn_G%U$emNfSknoT!a=;gnCs686*IilEas8Ymq$>miR}vlxh|y0f&8h#bNj z5ylHbpsVDIvhc^SyM@R3Q_ni=G=menDl;S^eavrPtpr*)a$Ym^8<-ZLlvVD}G!C`h zJn10=NVP2H+E5nX|16yCwDi4rqC+4#*rRvd{`z*6Kb$cpwyB+cfo7+Hg1aZCWoC|yQTu!bl;*jkXKQ7&`?Y7sHWXeHGhIOL<3sNkJ91A!XGQy;41&M z)j-U@lO3>@*l{WpU-=PP3%HK;emkJ5*nhvx19xuqsfZ(G^POF3falN~@Fy)2Zu&Zx z*$ormE+43_zbwt1ld2jg_W>Wb_S)-H&!(}#+(!+X4c-%aVM%k3M8;BkKTq#Z{?LsX zrFyc}Bf`_4r3Gx+@9HTZH1Vmrp|nEd8>u8M-lf9#4btXp1XDIC2vwQ9lM_ndgsPJ) z%+lYvb|(M~>8bHHuD|mPW`QV&BO9v{8c5)!dWAlOJ{0LUz;=8Ss9_LGQPJ;nNA>y@ zzqD0Zhk=z!l_|AzH2s>4YDp(gc{VL$En?H~N|w!_0w0u(Z1?kdcEui=N%gSuw0>WA zDGaCdlq!CvC#?Jt=`|;FWKndnx>_wk-^)k1XYPLWj7SpU!TR-^5xK0yuh*VL=WHzf zUIZ&qid`)BBRV(wI(c5eI|^Ex?*%u-XsojfvTWawnmS)9&6=mzm!KgqU&Rt2J264O zk1Uc&*f(RTMkeFyNZ&of6*Jdmp;w4O<=>DnRzxa()td@QlQ{;}`QNdHP!d%mch%mI zKs$|n%oG!Tyr3DcEGf7Uxnm9C+#=w>J8D%5{jT#}O*wd(I?Lnk_y~cVKGvD)T9t#i z365Zivb|@Sbpmf{D;a{z(C#`G)n9;`Ri2bQw)6%iABqqGuJIZHf5R8!E&qy3jzo86 z%AO20`^dUx!0(t8aZh6Izm|Au7 zgvi8qSwdY-#35VqchJsR^e?fwBBPTlQ_KjeBG3Yvpy(-D?qh!qX$r1+kM)rK_&f^) z{q7d_%njh>@o>mS;QklGZ^3~{-+&D{AHT%u)cSTaO7|P&F<`~}_*-%bROn{T>pm4$ zZfOG%Fa>&Bc~=mwnX;|*%UUK5<4atFqH*N8W7=lWk4*X0!(vSLf9iTA^YM16_l#DB z;V+#)M~aq*$teXpDPo-Sv`inpWc4FfOmFu~lnJvztaQ*>j6 zjqPUg4P49szOYDA3jxSzm%h#)Xk0{Oc;r6VlXAIE;=gwyc|^k*ozhSB7=Q46%2hIJ z%RAy*HLtip1JPYc@lzVe7SaarQ&cC~St$(Dl$h=KLu)BMeX@);B!RGtgibwS(f%y+ zty=d)@Oy1TejmuV5F_u1cjw0i2aaDf;y1Y6L3B4;b7#v2-yG57v}f_Dx8sr6Us+%L!$bd16;kA^G`t1e81b?(_i$oJ5-Hq#|&6u^&OVR#HBw)u*@;^6}0vOCYe>y zF_IruO=lJ3@P$%_`W{)g=jOmMnGlB#9o@0|w6B+X@;5K74#apNTw#tj?2o{)SG(cQ zG+$AI4SsvIc3kYgHCvruO0j-+yp_ABr<9IsAe4`<`r7Hh zjSQCw&H5o>^-60E^Wo=k;mS(PmuXHHhE#F%lM6u1IP`U>zuz_`_tsg!Y#|NQBthXd z1J0c5lYr6|O1dA>_RaIgx~>de(MFJm!n(4hN9sa)1Nl7R%<7eL5|-nUyeG%n*YI3~ zA!I=m+8>&;EUJ*xcH4rs=c1Zwx9pm*=;S&z%g7x-{2~xcSoNx!cpZKb-2h`1dpDz! zgn%mpixzs)D5pjy^>jp&*W$_@QQSZ&9kT7ftjX~9ZpAL1XpjUv@<}eZj{E4uPv&c- z9QwHORYptZKroQqI$A4kzVPFk8pf7-#@fB+xT)#``Z=USK8X?(bZ?jw{=O~*o3@1r zgx0hA?=x;jn0YNs1(k{sg(oU$91{m@RwS2Y z#GBLkKhhrM-YXPHmpeg-huM1wlbs4GfbE9cFhJ@DA9HjHa7mZ1gdc?8E#g6ZgU>$K zB1|M_hf6c6HsZ+m$cHbQo8G5yRMF` ztrFb&biElv?NJf3;aTv}`1YCp5TXrS{pSsI){HwH!!CGisvu(Mf|SODN!D_!w%Mw1 zEPuRXE{Z;# zz18O1m|#K(oxYvbP@G9t+Us91FRzz8#`s~}TH>+7+7u~F*Am|nrGc8(0(|bvajA`O zvVtV9FDCw*&k8#Gym?3Jj*+zMVs=zH_17Y#?{Rv=XO;UrlyI`)cYeP#8Z(5x;wt`h zv?=q#%dm}ZH)7cfhej4f!JlnOZjKE!h1iw6nM?4E*Ya}GLXJ~3YoaZ@PhfAD%kVD0ndK$y_ct# z$kl}J#J4*3j@HKDgVq9RnW&U_4983`^#Y-&9O)|e zbgmL+dEY0d!dPsQ?XMN8^z%k8rN6sNiKtH4Wzn-_iudzZIC3DjgGi9Sn~5@119^`? zUnSiT${jb+p%Fx*LvRO}#ht1fl=PE*=f{X$BGG8RCp&f7UsJLSak!P#`Ca4%cg7qK zF@Sh~U6al`;on#>*uEsv{Cpve2(?I2b-68WRKqY=gv9=F`U$!|f>vpfrCAQ!gkbMb z{)qPc&atufA&fQ7yTuN?1+Rot+`GpXet`OBF5ZgR;HxRUM)2< zppGQ4k|Eh*;`4_Y$Of~A0==J+Mv+N8;@Rw{x{eX>;|}UPF?M)ci&|u+JNH6DGfa9b zyTYBSJ86)Kg=WTIh3%!fp~{69uA)MxNHj?0rXoHINL>2TiGny)+7;CMi|4ay00djy z-;o8TG=Ge^$;M|x?+mnY&+E)89&f4ZXQ&x9Q4AtJ)`X>$^2)pjbQ_H1mf06o12`Xw zbAY_`slT{HPjRnq*&=}=aQ4Ns_Ua2;wn&Xu1~ai+PndPJjkGZST(xCP!O zQKnYm;oR7P!Y7u;3b!V`M8{kHRL+xe=%*NrA4d?FS-=v;wksJ+*@Mg}F+qN$iX&we z7%BYA+e6ia@IzJn=)^{3Q>!2DDhuvG18Fc3HP=ZuOALKSh4k0T8QzW-&pM+Il9?@b z{wX0ePw|hl7^8i;CA~G&OE;=J&lByfD7tC%0~pTW7`Sx3)bV`82VqFf5qjCM($%kr zX8EOG&8dm0c^8asvpMSCt^yR>0h4$w!Uv3*nKza?l^5y~D@WdrJcvd8~5bsRH=ZM9tI=%ycH5$IIE zzp{p)KGHniEzjbmj2t$P9A$%+SG3^T_gOh+V?%xAT!X}MIgT1693^`hvCgwv|u9h-mYzriN>#x=dv&bdO~N^mq<1q+XKu|11Nno*(TQ zH(!J`R-S#&uZ5-?c#15vF=H#_UkV9j_560G1~VvDDUl;&km%HMN=boT(#;;iH(LtP zT{c1xrn0#11geHf4`^9+?{vAPLFym)Uycxv zB$Qcx7Pylt-x3c8_Ju+tdakDF^e#oH#XJT^)%*{}&Z#*UrtP+|ZQikM+qP}nwrx8r zwr$&7v2CnyKj-^B_gwbAn@U$A}BKnXh(N&d3N&aVU;U6_SW{zZ#wU*6p%nOM?G z$_?`>K3ryA!NI<*qP5QL;{63sbqcf_x56|E%DkNR=w029xWrhY{%yY(lCxh zc@bRgc#Wjm3+NMPbSd`=j+?hSJs@tn5+^wz+Oc81ui>KM-2v2GRM*}cL| z#{48EcAcTu(JA`7^kBexy)rPQA`4@BqC0&nBX+z*QxosV;t}jJDH+utgmvMB*ieh-CM!Wjv#SY(<`N5n8y%gQGs_1gn)c#REnE zAW$85+Nk$vi+6?q7=8<(vdEP4|AeFk zWF@3GKtB00063trqA=IAmTs@Zxbmp)lqH(V?vXKXyyEoZ`4s>G_U&0)Q)9(yrp#h~ zLG8GQWrA^IATCg*LJ!7wbuz8&F&8X2W1K!D*MVjVG2dmB^AL;#aB>T}bdkw*?B^VavKd{jT~48VOHH%95=h*567ds0A7Q^=`L{p;z*gHa8ve zM)AZbygkZz>;rV|NW;4zgep%PF->tD+9m%so?XO1VC(`NYoqM&XaOMF%)863?ZQzz z`H>&sS4L+XprIGcpgL)!+ea-B2xHaWkhfHf=f?(O<^@Q4t@MzyF+h6cb*|Cq$$T(Zd^ z+iT!;k2|#MIbk<}bV|dWMoaW4Gg68NPw6}6q6OhHVYMTwAr zU7dcBIH5KE1;{-#kY=KC%fg|W-jug2k7}ff`JO&;<(<)rywC~guvJ+#IDODRS_egg zzuR?_AhW?NrZ*_Wtc98w8!B~fD$>zGvX-1u$v(r= z&avtAH%2n>m14pOrTqIo7uSOxf)#p7o;7jI0-AO<|BOQ1V%2ADqGEDLe$+JmVq$V` z1V;`|wrm%MhnvO6*qoo~o9nL2_Klr2x0 zrS(OHq>f#t9Ib;nJcV2`7Qu#)_f5z30Z9oMHhgN;FrJ!MPBMos%CMw*%`Vck9m+ki zzp91=!%f-4J{(&W2lDs^A!^HFu)GL z9Ew!MW~AQU-eXTR0QzqsU2!FjE^t`EA71G z`Dno>2-nIkr7s!@5jy!!Y6ly*VKulw_L|W$$;2u-(4u{;(T~Xn3!(NX7-788 zPdhFBgbhTwy-A6WS+!m|O;@9kKWLluQR;&AC6Igor7_AF@cn1xHT>lT0Z@8;hPjLL z^L1j^@>KSQ;mGXF))u%M%kb3r&8^K6T{s3NkrEWynw|?Pf!EAvxH-M2Ehs6jA~)C* z*<%&l>^Zewr$rSNLVWuBu$kW~wtM?(Z44X(>xM067n${&FqgTC$UL#*uUOE3Q`ANB ziwB)j=0e~}5+I?oON4?IBqW~jo_JK60E1P%8x~g0s5k^uy>T-RX!%zFu17A5paM8L zi-$W0TR((62fv|8>%So8(`LY%p&M$fZ58wCk|PBVIY;KUVz(4e<}TMGd!`g@=1mu%!uJ zPuHUn=8&j!#i(=g^KT#`0tg1kECk{?mokIcZ3$ZLz{v6h9oE0G!XBICpCds?yX0yT zBj65Ercuf6%qoiY-v}!O+wXu9HQcE^fP}I7dpI^3$5$+bwxJMq{*DrVo@lvUpy+cq zD{g#@QH1ZH0s9fCdVNIs&At1MdHVy}H{w5AcQk_#cqLv6t~HAr$ZQ0YIfRlEX1^7e ze0VlNpAMDWGl2nj8RuHZ5iGGg1}au27N15zx5!ssM_n_it?s&P5wO!wGfW*M@Ojdu zLIvi6e515Dq;E4$xpAKj`kn4mrxAvrxgvh!i;0!73_`Q(5Cg5ta1X+Vx%wm}zR(|+ z-n+I99wF>^!;kGEA9BfGD!EC6Mw;QXt3v~nWqRaZ4$={5t61q-l8oIrJP6BCJ%lBS zHq5VOU84m0!_iU~3SRz&b^s4o4X-d_8oB!0z_$LO1`31N%?@Z>GE_aExgMw|3l!^V z_j@_0k!E?Xh&@%jTTBW&DK znVNRDyr@kA@n8q|aQn~+Aq(PGpQRR7t0Kc#a8oLF%Qn?H%>HBRnGC&O`(`Mv!Zx@I z`Szo+#AH~PMLK;!Mq4^C?%7Y$w#Y`1?fT|GTkgLmNJId#j&i%&MmGpYJ>;57L$(zSo3s_JP~2SYcc^MEaAWLo7cyg+bd5SbJ=l?mKYJG2YhGS1)-r>cA-My4U!P$8e3uUp4%hjFdwLB^VGC-i+pasJ@)<>eCgn`6^pA2GQpnp& ztw{}59G5_rnWJ`HP{SROjMor1FRk>C`|Wy_CalKaS3+?2F%%z<#?*hu@(h!^nm$ke5H`1s0n$%^}>0Y zvTh>6$Lz|vpCImFxcg|jcV@W%2zoG)*}hu9xT=3f@ooCyTsbsNdeHq3T+j9Y<9c>B zcJ}`>uIJlK#v6CKdyn>W86INozNHpS73mpjz%R8u6hbZr;IQ;|!_PEk=My!+1@y2q zSItjyxi=PKB^$VZY*k(M)KC3f&NegjJ!udjs&7?utZR&&vRBYh$knyD{sW zRA7yqpRz;0tEo1Jod1294bVl`U?F-ml+~5&_2*|1G9&vrx79iD<*#;ssoO2}nfIe-Jz?-oVQqezn=Z|ot}MDF@gd9wZq4!=52Ac zynkTmLp28CCUY*~ixv9S8KVeqX!T00>vdR$^1ct83&Fery+eRZ>}=ivi`N1nRPX@p z;lmp^7TSF6i@=m}D8FEgFL%t7_wv;b)#dW~<4nVy2!xf%k-~Uqd!HK{LQ{=8_h8w# z2_jFt#C|1~a_ew-SK$Bt@KSJOBsz|{cVWypIdi28+G8$!veX3-JNfM!-TZlR)RR8Z z&v^~QT=j0QHdL?Fdo^FXZhQG4&nM%ocpo<6sOV`pYp{{n@O!<LBS#w=3>`sY0!)@`%q}=?3D-&-a40 zTAHe_MlqKPX1g9`Z0x9Sv;M(nvcKh-`{cm5+YJNWjj>rtl(tkH<~XVQ!4?WpL<$Gm zNe;i)`XrRi`vEQ3sYkMKC?RTy`<2`effOW}ug2gkq!+z)l{sRkFX}Wnpj3)*NS6{r zLf>+y-d5o`cL&`MSk`x_>c2tV+K)XA+hbNvycOI<*mitoj2JKZW*RJb?qtjJ?yb$) zG549L#NQ{QgWO=Lny4GxA_@fddTon%q?6-HE_@GhM^?fFlyjYzMhc6NVpw&~gyKQj z2*Y!htpRfZ1w`sz7V1BL)YtJ|wmrecwiw*X1bG%zo$^Yy+AJWYR(TAY%mmQc@7twDbHaAoJ}@iyg!>Gun`luN~H@B zk#xDq`i1M>Tv?pP+|q>8C+~#up^6HN5bCdf1(--X4c8rC^=0hapAvd@t;AK-0bl4AB6q8F^ag724G;I_4~pE4b62pmNf$D`X+e5`|FZfr>47w_>q7Pqr_X_Y)DQ_@CM333oI#91Dr@UUkJfz7VC%d;)a>+ z*eFO=MhZeQO2cI)*7=IU(ptmNg~92!+%5Ry@guZe@JAlTG+G*Apks_{Zx(iB0z!O5 zj8k%3&LwxkhIg^Jlh~ojh4n-<;E(YmKR;-x%lJ1$3ta5PeTTx<^c`^@z_kd(^FES} zOHk3GRTO?iKd{D|(>e0vz!ltSVB=s1$lKE|_NNQ;Yi7h)?6;TTt%A^(j5&3|=kDYl z({#90SU=d`9gzT2jB97Pbl-lgIS7`4l@fFV;#C0q&W1MX0B=YH_g6eJrtU2ni~#&{ zG{sO(ACQB0V0#pJktqE@j*5PuKSF`2P>VL%^6SliG|a`2#SrmaYCm+m^9d1U{H_D9 z_PTkbeBgB8Ku$5mF4(et&zZFrPB9`MDT_zSB;oay3njgK+wk8qJG{Tx+mV4D|?dDeJH1V4(tm*xn0Qz2E#l8x%>6qpctspqTQt z{BGgAGate#E3RSEE)&&=HosW)pL`|--X6X2iATu;(YyD?`^6^AF9YXA zlI7;xO)6?*8OFPg#E7Xs8p}x2i$(Sb5LcHz%n-ahT&UzdA@du3mc%$D<%&ol6HW~9A2^tQxV!nH5EncL4Itff7X44r|Ha*DkL=WM;EW^EZ zyxxhS*3~n8JCzb4Y=?pD-&6nrmWRW1fbu&ZIW8kjB*!PGKrRsRl$i!65PvxscL}nA zidvxEKd8V2Su~l&d+(jn&sBx6g)2@r^NqukJ`m{nK%j@p1hpq(eM|UsQ2$chcA6$L zsjF6_+^P^BKVxutl%z3K!e)4KU=K;_v5HKxP+XvFJ-$7L=^I%4B~DEBO1QHj7gEx$ zz7XU?A}ed&^R*y~qid`m3bK)VrkUq4nc)?zVU>Z!_j&nt*kBTGJeBqkx6aJY(QWi4 zY`{PjV=pN07k6A^w;0^PVvlXry8{7A{n2WZ)oXS1IIuLvMNA|-ujZ;;Dvjq-n)`y* z?8j{wC>!G{>e0JmgLNWz3K0gxLZa1qzWqZ@i4JckuuyAt+YR%y8x56_J|A>M`c=AN zDu5O+S+L}Ek2@)Up$~Gns@5r!Eby?J09w3;uhe|~1V7BabOgqcIp3#uP&rv=QY@pA zM2@ehoQteJ7v#4kbnU~Ai(Cp=L4bRf(Q!W!(a*H1;vhRl#*;FP_3V;6ien=geDtQa z&vXmny6~1bA(4O%V?>NX+ikWVZJ-QmlqT)z=xka$S#n)Xn`#17+PHW?3kQIZvvPj| zU->o>2(_GFvz;>+d}qliL=VNAke;ce5~!Ts<-;3P=Bs!v>jl9Q<6*FenAyKjeXa*f zh@C`_+j@k(b~tJvXl`_g&PtZy$$|7npz23Jm~@v&l1mrY5V^bEC+`+$vzx0XWDvO@ z!L9pB{U93s@L`UCO$#Q7G^scs@TzKTG=lxgz31Dk#WP(NEoPU?4+r>;;wbDp%JHE( z&E#z~{)C@TuX&={rE;N$Sl>J8LxRqsZoaccDC$0dL!}+iiua!~Rl$BMgfCiE4B?l_ zBBVG9%Px@^IBhVO-sJ~=_Z=pk6rgGJa`pmgT@ncu`9w4H9zHu5^wG~x&M52)x*L zIark+qlk(ff_5pwhXDn$i@j5J34$Gi1wRT4@y5$j7`~itBlL&EtzrK6sa_o?7l}ST zxQ0*OD^EtlF#Xy9%mV&;wx5N0y^XP}z#al`ROWJVjaqrpj<+D#96KH`Z}&|F^GjIh zHwt1`HEf-ZjV@li;6hcA_^ce9<1(Nk%#VD(bgvytgJBD1$ zsu7|TKiJNq)n|Ud(|VpCN{NX_0{g2f+PQyF6~+gv;fMkcL*Ak%pJYF<(c0I-8Km+j zBKrgCB3d^T`odjn$>}8jCT=*Ijd*`YPk|*>@Z0Z8i^;|0ztdrYnN~fMg(((~Tv9j~ zJ&P^ojlZt2u%-D8<2{8!5=>6@7rLP^t-cP3lNk>Z-u#B~W=Y@$aJp6nKJP<63+LSO z7Ro?Pt=Zs)K9qy(x!a6^zV!EGfAG=N%48?PU$8WIR^|7iMx=&1^_)m&780ces1>#zt?mUKWzJCTzIG%=f{Co%_tiDd2Cq&I}BskQjpJpU$}M;zR6{osKvL473?RQi56S_i+n4N7#MI zmo=*wyJVZ!Hrpz({71>PkO;m9JEnRA25R|lYgQ!scy`4&Fy4aIZtEOni@A{+e*H32 ze0{9rrF(9&od@o_=YcE5_K=78YZe~(ez0@&AO-@)PKKe20ZptmZ0Ddxpje9VQBd*M zD0$wZjM0$P;4+&N_%lC4XN52dgx5=}=;-Q(wNBWQ9~fk7gU9sDr~XQ9zOmwLshUNS zM!tn0Uwf1{;}<~iG@?RGnWo|#rcn&MeAmCdnX zOqrQ>1j{{e;4s#%M_~xse_W3cL7N`ko!t)P0VFIPza{n(M}D*o=Dk>cL>icPfEf8> zltxMy` zxPjx|DOEm@jaf2N0d{pfQ`q_?vzIBoA<3y|rytSz)L>+=%hayi+&FQz4odoqy z!i?yH8)R)A486ZA8>mL_Y%{^$CasaUn-uY?E(#n=L82s^1USOhn73;EV9dWPuqNs< z_IVWx)shYZqz*peeeFo5AQ_GO4-6m_`qYmC>3xgRpL)4H1140jssL`0y=Gz#1@S`# z(5-P)&w3>}4ciFub_-@1OgCN5 zI52 zR-GJe!H-RQ)O9pdG@(Z+j70cDZw>&bQn0fzJrmeB<90fn2>mE?! z2)zqU60Xa%#Ux9hv7wpbY_H*282B2(u33=Ya%xHx=7mFYs)-*4t!wS5i-!iog-5{Q z2^8}iNc&S{Z;6{}t>ZP=SSBCBW>>I56s> zigg{-UbRm4@^|!;%GN^;z{9^_hsU$j!K!(A@2G?w&efH4IB@+ZG74og;6X{zwsp

=O10>UmL@-@YCor$Be>xW?Y(zhMZp0U~%t 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Ū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

$R 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