the_silver_searcher-master/0000755000175000017500000000000013700154060016007 5ustar mizunomizunothe_silver_searcher-master/.travis.yml0000644000175000017500000000151413700154060020121 0ustar mizunomizunolanguage: c dist: xenial sudo: false branches: only: - master compiler: - clang - gcc addons: apt: sources: - ubuntu-toolchain-r-test packages: - automake - liblzma-dev - libpcre3-dev - pkg-config - zlib1g-dev env: global: - LLVM_VERSION=6.0.1 - LLVM_PATH=$HOME/clang+llvm - CLANG_FORMAT=$LLVM_PATH/bin/clang-format before_install: - wget http://llvm.org/releases/$LLVM_VERSION/clang+llvm-$LLVM_VERSION-x86_64-linux-gnu-ubuntu-16.04.tar.xz -O $LLVM_PATH.tar.xz - mkdir $LLVM_PATH - tar xf $LLVM_PATH.tar.xz -C $LLVM_PATH --strip-components=1 - export PATH=$HOME/.local/bin:$PATH install: - pip install --user cram script: - ./build.sh && make test notifications: irc: 'chat.freenode.net#ag' on_success: change on_failure: always use_notice: true the_silver_searcher-master/ag.bashcomp.sh0000644000175000017500000000464713700154060020540 0ustar mizunomizuno_ag() { local lngopt shtopt split=false local cur prev COMPREPLY=() cur=$(_get_cword "=") prev="${COMP_WORDS[COMP_CWORD-1]}" _expand || return 0 lngopt=' --ackmate --ackmate-dir-filter --affinity --after --all-text --all-types --before --break --case-sensitive --color --color-line-number --color-match --color-path --color-win-ansi --column --context --count --debug --depth --file-search-regex --filename --files-with-matches --files-without-matches --fixed-strings --follow --group --heading --help --hidden --ignore --ignore-case --ignore-dir --invert-match --line-numbers --list-file-types --literal --match --max-count --no-numbers --no-recurse --noaffinity --nobreak --nocolor --nofilename --nofollow --nogroup --noheading --nonumbers --nopager --norecurse --null --numbers --one-device --only-matching --pager --parallel --passthrough --passthru --path-to-ignore --print-long-lines --print0 --recurse --search-binary --search-files --search-zip --silent --skip-vcs-ignores --smart-case --stats --unrestricted --version --vimgrep --word-regexp --workers ' shtopt=' -a -A -B -C -D -f -F -g -G -h -i -l -L -m -n -p -Q -r -R -s -S -t -u -U -v -V -w -z ' types=$(ag --list-file-types |grep -- '--') # these options require an argument if [[ "${prev}" == -[ABCGgm] ]] ; then return 0 fi _split_longopt && split=true case "${prev}" in --ignore-dir) # directory completion _filedir -d return 0;; --path-to-ignore) # file completion _filedir return 0;; --pager) # command completion COMPREPLY=( $(compgen -c -- "${cur}") ) return 0;; --ackmate-dir-filter|--after|--before|--color-*|--context|--depth\ |--file-search-regex|--ignore|--max-count|--workers) return 0;; esac $split && return 0 case "${cur}" in -*) COMPREPLY=( $(compgen -W \ "${lngopt} ${shtopt} ${types}" -- "${cur}") ) return 0;; *) _filedir return 0;; esac } && # shellcheck disable=SC2086 # shellcheck disable=SC2154,SC2086 complete -F _ag ${nospace} ag the_silver_searcher-master/tests/0000755000175000017500000000000013700154060017151 5ustar mizunomizunothe_silver_searcher-master/tests/setup.sh0000755000175000017500000000064613700154060020656 0ustar mizunomizuno#!/bin/bash # All cram tests should use this. Make sure that "ag" runs the version # of ag we just built, and make the output really simple. # --noaffinity is to stop Travis CI from erroring (it runs in containers so pthread_setaffinity_np fails) # --workers=1 is to keep all output ordered, to make testing output easier # shellcheck disable=2139 alias ag="$TESTDIR/../ag --noaffinity --nocolor --workers=1 --parallel" the_silver_searcher-master/tests/column.t0000644000175000017500000000052613700154060020636 0ustar mizunomizunoSetup: $ . $TESTDIR/setup.sh $ printf "blah\nblah2\n" > blah.txt Ensure column is correct: $ ag --column "blah\nb" blah.txt:1:1:blah blah.txt:2:0:blah2 # Test ackmate output. Not quite right, but at least offsets are in the # ballpark instead of being 9 quintillion $ ag --ackmate "lah\nb" :blah.txt 1;blah 2;1 5:blah2 the_silver_searcher-master/tests/empty_environment.t0000644000175000017500000000033013700154060023114 0ustar mizunomizunoSetup: $ . $TESTDIR/setup.sh $ printf "hello world\n" >test.txt Verify ag runs with an empty environment: $ env -i $TESTDIR/../ag --noaffinity --nocolor --workers=1 --parallel hello test.txt:1:hello world the_silver_searcher-master/tests/ignore_vcs.t0000644000175000017500000000066013700154060021476 0ustar mizunomizunoSetup: $ . $TESTDIR/setup.sh $ printf 'whatever1\n' > ./always.txt $ printf 'whatever2\n' > ./git.txt $ printf 'whatever3\n' > ./text.txt $ printf 'git.txt\n' > ./.gitignore $ printf 'text.*\n' > ./.ignore Obey .gitignore and .ignore patterns: $ ag whatever . always.txt:1:whatever1 Ignore .gitignore patterns but not .ignore patterns: $ ag -U whatever . | sort always.txt:1:whatever1 git.txt:1:whatever2 the_silver_searcher-master/tests/line_width.t0000644000175000017500000000142113700154060021462 0ustar mizunomizunoSetup: $ . $TESTDIR/setup.sh $ printf "12345678901234567890123456789012345678901234567890\n" >> ./blah.txt Truncate to width inside input line length: $ ag -W 20 1 < ./blah.txt blah.txt:1:12345678901234567890 [...] Truncate to width inside input line length, long-form: $ ag --width 20 1 < ./blah.txt blah.txt:1:12345678901234567890 [...] Truncate to width outside input line length: $ ag -W 60 1 < ./blah.txt blah.txt:1:12345678901234567890123456789012345678901234567890 Truncate to width one less than input line length: $ ag -W 49 1 < ./blah.txt blah.txt:1:1234567890123456789012345678901234567890123456789 [...] Truncate to width exactly input line length: $ ag -W 50 1 < ./blah.txt blah.txt:1:12345678901234567890123456789012345678901234567890 the_silver_searcher-master/tests/is_binary.pdf0000644000175000017500000023772713700154060021645 0ustar mizunomizuno%PDF-1.5 % 1 0 obj <>>> endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 4 0 R/Group<>/Tabs/S/StructParents 0>> endobj 4 0 obj <> stream xM= 0E@ CZ يC񣓓Ptp.McǸOE",1 9 *cPhk|(p XR/?Tnͤ旁>#fuxRkB"Q endstream endobj 5 0 obj <> endobj 6 0 obj <> endobj 7 0 obj <> endobj 8 0 obj <> endobj 9 0 obj <> endobj 16 0 obj <> stream xmQ0c.²m٥TD=RPMJMb !7d" flîXQ,kL- sLxsZp 0p6b/ ?sggDR3ґ\c:Gq6ƫ&0zK*Cm'zQ̩4E"=Ne+$ wć%'6Џ׋RWܪlOCqG^j ުK䭨XZy{Q&}w?γ^.MЛ endstream endobj 17 0 obj [ 226 0 0 0 0 0 0 0 0 0 0 0 0 0 252 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 615 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 479 0 423 525 498 0 0 0 0 0 0 0 0 0 0 0 0 0 0 335] endobj 18 0 obj <> stream x} |E̛4G4IJۤ@/ZPJ E)r E<4uuV]Zu]oyRp>|xgsdX.1Z6zBe¸w3Kzl 1vi*/\3YƔe=gʆoIiKF6Ư1WVJ42eD2cO=k[[gXfUnՇ^blE$/j[WŠ B1iq6[)?-0XԽeHoiX[э2escG1cdK.ow c-KZ-mhQgeIwVo۶|eGPkD~[{sw+`WY:Kh`"mɓ&N_YQ^VZ2[{~kTZthOOj4"PkEŨa9^fiұsaSЌjOփ5^#&|jϤ95lV̓R_H)?KCL(XYN9jRM&ǟ=Af I]qOA uF`kVtT{6wEW}OpSCWV^2R婮T:fsxU4',SUu{ysj>ofM@Ji]Imwf̫ZaFphi>/c\jPӍ=6qأ&m lZyUmILږZX?=c_4Ma/b]8#Τ:),5IwO08&94,y1 gDDҿ^jD]}Z,[ Lт1JTurDF &P Zmxi͒Zu9lg$ڌ/ʫ U&BdVAFUאʼn$^VKNқF5VcY$K3DmFHg(aiMH1 GhSؒZ꼚*w&(+CdM}VtU}T4SfxdV[#oIPß`qFBm"^ kgx֦ 9 &sއjN5fdNZTsW+ ^Fw9>5 5>bgKq8SRlbgHNRb蔢CRMR,UR.iR,ER,Y&)h^:)J@R̓bsFR̒'L)!Eӥ&T)H1YIRLb㥨Br)ʤ(DqRx(bc-()FJQ$E#.0) ȗbC,ERH-E()2Ȑ"]Rx'En)\RJ"EN)H"Ax)pH+ERإIa"J f)LRDJa ^ RhHH`!RKqTVoZR/s)>S)>KJKoR+_HqX?KoIoHR&ūRAWxY/JKJ;)i)~+SR<)Rq)Q)JKJKq=R+=RbH-_K;CR.mR*)vKq7Kq7Jq^뤸VkZR*) ).2).7R\"R\$ŅRl)I%R'V)Hq嵇k.=\^{py嵇k.=\^{py嵇K!?\py.?\py.?\py.?\py.=\^{pym.o;\vpy9:օ;s :RgRG6QLT3hAhm ehM hQ'uPj%Q;WRJ@mDˉQVDA-!j!ZL(\jTQ#QQ=QBTo>%CTKTC4hh&Q5 *DӈM!L4hb94h|9TITpNAeDD%7yX1D(ThpaXQ>2h`j,(ee "H4( J6yQiDn"J%J!J&r%I@DqdtŒ1(Ny6"+,Df3E)@'"U - 8SE1J}Ot;R}Mї/ ՠRD}FyR#DSGD#;ޥ_)wSޟ&[DoA:HZ ~6@,^!D/E*d|Y=CE&-"z CDS((AG(a DGC%=D n"?DwIt^q8mʭD{(o7-D7Dt# DƮV%&I*p% 2ʻZ %w1EDm'JnTDm%pԃ 8@m8&:+68pF T}=;h]ZK&ZEIAn+Frjll%ZJt:iDK^ b"LD%-Aϧ#KCMҋjfSwgы|LjDUX/hz VaZ V,敏͠)d*2hb >R*X*nbb7JqD^bh|1ׂF ("* +A#}h٠TrH.68`{3(ADDDDR"ُLԊ(%9m(>`[#rES;UJEd!2SI$@'Q*%H!D6[]ǬM l____OπOO# |xx{bߢZ\a🁷~:']Y^%2-YlZZ]~iZNs=eYzz²uuG{A<2p=hnw=`^#olwֺ2siZô״u;pp+ bq un2:kkF[;ulWWAKőS]ENs]ص={\j]h ]yl&Y{7mmܻgM&m8c olF"ػηַڷfjH9;ڷjoOѩe|p'WXݩ1w}+XMv(vȞ} w}V·׶wo٢Viž} |{| :{;W[X㛍 g|{g |3VNM}J$体| &,c,ٖND&'K;ϜZ;:5$W2КK%g&^&xfWX_so gsiblqSfV\\F0 j`60 3j`PLS)d`0* (J``40  `80 (`09@6 L H ɀH @,DvX( t@S(k1{(- 5%Og'c#C}=߀w^x x 2{Ey9Yw3o''CcAa!A~>8wwww{ہۀ[=nf&F`p=pp-p p5\\ \\\\ \l\4ncsϱ9?csϱ9?qpgqpgqpgqpgqpgqpgqpgqpgcs}ϱ9>{cs__pc;~I=VM[vv){flnc~({8̬X cGz"X.E*F>a ڂbA]4TZ`'?Hڪ\9UlcM-gNgKY+[!o1ZzOZ[lbPJPӝl5cglCZG:5̜Vdlfs1k[yL߫6vBvя'.F2v9]uq5땪}']5#.zUٓQ}G_>lc[1v1H~vB~%7$B Zp'.H.W+?egVSBj1};v?{+av'clTc#-JQINgسRϫ""{^߳<^xEqrװ8Vj^)azVĦl̂868(+3Gܸ ^VܛTwn>/o5Ǟ;袼#%f#ւG2%߇I=YClQ}f߇I_F́*g莘Ɋï﨟n <_ӓ/c`x~ܤ/U<pY|'[߿@۷ݽ"eGoԞ};8gC#. #ƶU,E&$wѣؽ͑++6DH1Nҡ2ĺb |ɑH5)+!֝g;[܃'ŔHl:cI>"Bo6hLh:,݃8ٝ:(dIq` ka^UW1 JOpMj z(iēHn)l x3G1xcO[2`g wܠZ_Ӧ|;q̛)Z'#v\`\e/#G-2x6LݚĊݾcc∍:|ؖLrEreU؎[2hL!f٨;Kf-*?of˚J\-`6tfE&ML(>̙I1)IlƙsVTa΁wݚ0v~w2S#V -33C+pifȕEE\HxW쏙hou)8^:>x|Z߆ Ƣ9t:R^$?!s܇P:e3 )E'ǥFXiKFClACsdh&eV!2#N ~jd#ټݓ.9<N9!O䈁-9G::MOH5[O l/Hu|6 ȣKprOį~5)js{~eϤu}gggggggۘ : !Ζ"[~A=,K\cKll;PK³ %KQo)4%Vդ]JؖyT zQn ZXj˭~z)ʺ>wv}j+CvDk蝢c\Y^u`W_][zu4Fd-j[ZRcm^.U}+)ѧmX9w[&b K.t)1 [jߗƵ\mZDHxmZF}:ҹz;jkj kU?tfŌӼA0Q̵m8Tf%RBw`4Czg^]#4.ѓz+v:W"{`F=+r02JP٤D{@_šu[Z\e(߬(>2Mj{jjmGj5{Zσ^jZX#+V}-vuj1*YJ:^;V @:Kw4sؠ֕*g>{\n{?MONաo{)-6b;U6&5M]!k6uB+jVb:nO;rjMW~S::~7tp49_x@Bh=3kzvH'vГFES]yCܹ7U9IIZhr[UPnZ1t4--HQ""^nnn.mP.ʚ4CIZ z''<ϓy.T"e:lQj樳yquN UQ@hOT*%Yc{#0zo ߑ%Zɱg; iYY{ssvКnrY \ϳKϵZ۝¢Μ,#(/Ӟ7КOUgV.-2,Gau:/+Y*:sv'ߑQ8ZN+Mrr+rP0˩vPh-p6/f՞[N%"5ǞwϳεW;}3Ic¬Dk8 y֌"[Ⱃ6 sE|ڗPݙOBJJw)2gd;,ˑ5('@RWBұޙ8j5;Y鎅JJ4Wݛ|ϳg&N/^8Кeߑv: ]xqbnkDuwdps*J!I0/' 5v3+:T kwsա~̢n)ʤ)e rE s&Z[;?#Zr*vZՕ-N=#4^ھ]&}Q`[ʜp(;3q^N~z/%POh9 ^lRdg\x:143k^:?1Iqb wbyN nq}r95IۮhGw8N>-RЮ1>FG2}ǣMk jGGLc}̢ (J]G}LYM>6VZPƯQ/֮gQ2vzW^GHzcڵ%z(pS`rV9T)XtJZI;Tqx,%_HgQ:K$~.V2Fl޼o]P6PR@ 2B$ FqRɨF]r8HI >H%H\JY4I ~J~+E"$i򍛲c}ZZ[`K&Ns#uN^2KVr-3$C8WNDFIf4h\IN'1%'ԟUMfUa/XLLP|jLf/3ePfIcn ڨjTfd6ׄZ&h**6<`/4>i\eTmUە^'$KKR6qQ'\HN%Hu,%>IX] v?vKdxɞRSw}neE+9\|2676(EK?&HRQ1w:kNX6[D"**#**"R#+IlڌRG<ߑP$;x1 顴{fQVNRB$ "ZtQχhX:ɢoڌbiӬb|uOZ!wkHvGFAax[}}_}X}D}L}ݹVW}=VדYէbʫW_=,uA܅ uQ}}C}ݪnoۉW&_(E= 4_G[u(Oċb!vN\dT35 ZuVuW!M ]zU]>K~k?wz\yuua"Rssz!?ӟĘ RfR Ӥ5߈_i%*uN[*kZIkzȔ.}jz,I{--4Z)ʌZKʨuњhhtKtBrmQܰ:Ӯ4ˑme%2@-/QGDpܮqbIm+lh+PyHvPQ\W:輷rrV)]u7*]cLA-;oXtZ:uo+e KZf߯-RoZ*J 3߈ߦ{~=u|(I.-$}Jf,,;/> xM췳۪<```ʐuP7ʠP n0D7$zH!T&&zp?~w7jΨ;{FW& NZ38Z֏۩a|22?Ataff$?݉fSNܟ=n}6BWM>aSO6ZR-PKɴ5^d~Kx1FԔ)rDK\RrbNfKz\ɢ݋: /:9.Ʌs ?+vtu^4hmX_<.RIϒJl%KԔ.}ҚKK,K.%K.Y:hĥ-ݴǗ%/[?^gWdغ·2ieY>~=vq_-:|V{SqΓHӺ+׮=W:*кߏmX55X}gIe}ƨ#mk&uc}2QDovTbuZUb1Z? ~u| -!Sݡ]ab}NE?XM5uWWyZGOxSJ~6֟5Pq-mulu5.nNiq>i:W)_'cu݊zu55rQGSh޺~*:gV/~gRr.Y.u9ɨm}Zw؞]uWwШT6NA۝]c+r>gԑ֑=';`^9IX]3o9c}r5ع5z_ }RH<רhSflơ)}2{⦢D\jWU)޴Iɵu Ź\PQAyFK;q|Y/K6IJi\/e)SH E 5GRs6GQBZkRRQDJ\\}}%59! 2X.x_jψaZV ~'miW G+z%JD1Ut$1PL+PV8fQŰJTXX `92گ'a <kixuG _Y H*HB<]̐^dlcqk+ŭ'U[&nս)m* 1qQ*|4\#T@GxϑBCF6z/$??@c$zbsa8\a=o[FMpZ  YP$zE 1&襎ݳkz.rFm9?nF*FC)djxIΒT^q2=شny4+ڳ#8;CfΊvObD=7h57kr^KGz^e( rQIIzئfD}>J?Py~FC3A_PiGZtWLd۳:k뙭߉۵ CNu5-f=@39DYY^eO'a <kixu_paWpJ,P 'i8^({Ŀ@\e\!YI$uU<{T>}w|^wT龆Jjjp +0$A$ E03aqg\XȵE;b(R>/ %7˰~Ior~ osqg#ȀG,ȀG9uGdI.>8'14y]&|;C>12! 49Yݹ9Lư{E7|ʧ)/`!q6 &22=L#02=L#02=LeiAFZdiAF`1FL<ڟm:eeȧ5FQax5FQax5FQaxp2 =85yp+S7<D Q=ATE(@*zP1TGDŽ-f&{{گ؅mT}+2<껌Oʟ1}2}2}2}2}2}2}2}2}2}2o/{e_l%s9[ɜ=Ŝ3gY?sϜ2gY/s˜2g[Lc<=I{;JJUPj1Wi.mk&9~A۩τ><~J*jVRszw՞>뇹^14W?{i?= S]O<I zIs r! `8 ϰH"oYE%O7,i,~uC%Ʋsw.;"h?ŝsZt垲>GLaØDL>}MDփzY"Ad= Dփzв3-hٙyj(ZF2Qe-hE(ZFѲ?-eZޡBK --BK --n92r$<"q4Hո\GhA-AHaaĽ{7nHPmRwUNJi\' A0Caa;.'c`,0n0 a2L0 3Ux ^7M o5 Vx{>|o`;|oaܭU|L `7 p J `?Y/c߸_^Cr0|)WEu tnryx@|VU>{>xnS7U_q@3B/B|@_*m0@>fc|1YXF\gԂ"@0B$ h| HF6m='o$~c>Ab.5U$ùdǩ7y\Ol(rX+sc>\_\#;UE>ie -PGB u$ԑPGB u$ZH#2 :C ;B/B>A =`C" ap 0`@0H&$04.C, HHB<L?3X.VJp `5< k)X Ud*=}+XcYұXtx:V<+ONJcӱXtx:Vᷰw{|N) _  v. Ewa,]+t8f:O<9$= l3E׈YOzbֳJ??\+eܧ\ϟqS]~ akg;=vj}#+1byN-myf8Zݵ<̢E3_ ~[|-3tqr!C VV/,` ;87.k`w bQ :=`3X tNY]+t8zqHF4&@o}&3m|Nxǭ+HQ0~BI0\ ڥʻBLn1>Nw*]bXN +`%4WW퍼oWUx ޥmк9<4i)3JF&c8IXԕ* X#{*Tfzj93JGv>QF,?}@ݩIΉ!arf$ 0YJ3E>pW>S>q.fLs)gYXLzx^` ᗰ ^W5x~oނ-kx[n H<;xC~kd/5|J .YnC0̂G!C>eZ9d?On~r󓛟'7?On~r󓛟'7?On~r󓛟'7?On~reH ʧݏopFQޫo#mGLȅ 4P}o#m侍+Ƚ+Ƚ+ȽT"o7RxWqUWqUWqUWqUqvb;vka53HjF;Jv?K ewg݌fFW3] ] ] qƎ3vg8c;qƎ3vg8c;qƎ3vg8c;qƎ3vg(P5(P5(P5(P58c lxlO3YB)d}AFBWT-j^ë}x5RP#5RP#5RP#5laC jPÆ6԰ 5laC jPÆ6԰ 5laC jPÆ6԰ 5laC jPÆ6HAHAHAHA԰ c-dq, "vnFjtEXD7&_M_M_MQMQMQMQMu]] kl-`[9@D|m[ΚR>`^*7rX+O*($F3khfm46YͬfF3ku̺hf]4.YͬfE3bt$̚ j~渗9e{MyNգ]/s2w]/O~b'v?O~b'v?O~b'v?O~b'v?+kl}?o[jp2*z[p2n\ƍԭffL)&M h]ơdYNdYNdYNdYNdYNdYNdYNdYNdYNdYNdYNdYNdYNdYNdYNdYNdY.$2ً7{5vA3̀&ntS~3C&T~w{n/ŻxȪȪȪȪȪȪȪȪȪȪȪȪȪȪȪȪʘdzy<, 7%!{|!BN]2"Cs|!kobf5re7휽Y-@j4%RX-Wi)Z5A^[3[VVHސI,!BBC,C {5KDzZ\\h65<98[BR>q V.5G穷^>y^`)}jZAFQ #@,tB7x=F4lDF4lDF4lDF4l4'Gc`,0n0 a2LLȂy0 `!@.A>"p@!8a1@),?:F TOi6MEIHŅ .q(#;N'@*Q9` a0vQ?A~D Q?A~D Q?A~D Q_BK /%Կrv\]..` P7A nuD Q7A nuD Q7A nuD sѭhѽZDiԮChfSs/ZFӚ%|^.G|#1}|p4_0a|  s k<£*\}E/.zqы^\E/.zqы^\E/.zqы^\ťF\jĥF\jĥF\jĥF\jĥF\jĥF\jĥF\jĥF\j%.pɇK>\|åZ\ťZ\ťZ\ťZ\ťZ\ťZ\ťZ\ťZ\ťZ\ťZ\ťZ\ťZ1 Pgcȅf\h…&ԄMۄMۄM@P7 nu@P7 nu@P7 nu@&iB&iB&iB&iX.2\fMgbYs6߿¾݃p 2`>dwh݂-h݂-h݂-h݂-h݂-h݂-h݂-h݂-h"ѺG>fAY,hPoFƏzǏzǏzǏzǏzǏzǏzǏzǏzǏzǏzǏzǏz}(CA PЇ>fClh`640 ̆fClh`640{=2+I'\T؊(nƭE[J ڒ^\˽R.Rki+@i˵LIi;5Bd5M6myOv>:sךfz.%P h(١*١*١*١*١*١*١*١*١*١*١* ޡ y*۫lSm}+6.ql\f2ٸe6.ql\f2ٸe6.ql\f2ٸe6lek,[cXƲ5lek,[cXƲ5*0W*7k,[c9:D.ۘi7E.9u.Fh+iThˉh{]!Ҳy(TLҗXׇ^A٫:ԇXx M5^˻{yw/mzy_/}^UUAZ׾?\Kٶm_aJgS5ž]Co;wQJ3\'tkvkvkvk6k6k6k6k6k6k6k6k6k6k6k6kS=|O>çzTw{w{w{w{w{w{w{w{w{w{w{w{W]ep% k{D`txja4""|)LI-sS;錁0-'2gAa~|z׿VftH(wo J;6sERȧܘ+_ :ݼV;hX[и(vQ3ѺSæ3>]Yac_C9МO/ r'*ff4ܗ|aOϟagxµF)Z+Vaڽ@zBgn'v!?#;֟\OכWu氳.܃C eVa7Yu3Xu-dյ5wfkdKd+aV`a" e,Xd,X` Y_,Xda,`,Â=,zXXozXlXlXjzXXXXXTzXjXj S zc9-!\ƥ~J{O4?ceq:yxx8.>6a|b7P,=s3OIg…:ƒat<*,U=#'Ja߰ݞ=qX:K,}JG{!T%^4#[w*|'7sP<>Bxŧ'}pxx_]P +N?԰:rY.sxXc^镼*OEv\6ͼc33^yN^Wo?KZKT{gv49Mmb~{X X:4&{Y{/kImbXrD8\['4c%֡랱1\^?ׄyidp0ZMvsoactEu<7n}ޒ}ޒ}޲oD[Q]l>vQ;ooݽkݽkeܲCn!;orb\*kĩ;Q+ &va;PVet,:XDU{fϩ|:XY熾A(Ugcaʷ*~Zwh귭V؊UhGm%Z]ela#l1–vO }㷅mv-Mya[Nm} ۮ}{UY@tB\PK ӓ$k PLS۵vF%vM;xLy>בMtדM7uMtS7L75m>OR2TLbNORE7EMMtGwqЈ;hxn]׹sׁ};_f.6ˆ{KO|bJkwm{aVdNVdN4?NE:Y5:Y5:Y5:Y%:Y:Y:Y3zuָ[c۬(Պ׵YOUY*Kֲx`YK%Y6hְڬچ/EG3=C\&ۢ MaF[=h/MnzhN);|©0NGQ |OLOS4F|G¹<_%/cTtdṪSU/%,XV+h«aik֚C=55Tv ]Cep4:m5e7ܖ?`J{zZhIiO椰4>?<>:$fd.EtFױ,̔{w[kS6F5jXK)Cuȡ`Cq'3=8sSeg ;>ntXX/:#p$އ8 "e|_u|>{ϽNqWjLsy\<7so+oM`nmwN܅=\~_ڰgtcAko42,8';Ow<,wqť>sϹs&IiM[/[mBKt; wc~x OhJbڐj):{UCA-uU~bhDt.D>>h>>㣣0!c~>~ĵ7&,=Ma`G';\;:׎εsܨ {B]m v6TVW}A<_ao0\A #0G(w8ZkZk8'D|߳.|&êw.NɊɊɊ͸p+7{; wc:f܋p?' ¯0fGM5h$Lֱm wuYguYguYguYguYguXguXguXguXgS,*BNH$U^U~{UYn_H#ZT,l@(RE H)"P@(||S%JD (%PJ@(Q%JD dKdKdKI4 #\11~0?azzzzzlzlzlzlzlzlMiV6ʦY4+feӬlMnۡvnۡvD;GV/e4}/@hM_ 4}/@hM_ 4}/@hM_ 4}/@hM_ 4}/@hM_ U_FT}_ *Q^%ʫDy(UJW*Q^%ʫDy(UJW*Q^%ʫDy(UJW*Q^/ѨXXXXXhK4%zƪ?E٪fkQV˩b9U,::~0Y5;O5;o]ʩ1Ju{[UK eS*hS*hx8?oէEGr%U.ըt' dm*QN˩r9U.T*Sr\N˩r9U.GI(%]Kt.Q%JDI(%]KtzzHg܋p?ggg]FU4fUѬ*UEhVͪYU4fUѬ*3:33:33:33:33:33:33Pޅ> 12Wǫ̗yy+ +.K(glNS(䗨ԘS9g9]Cft*G9>((:T΢(qpk':? r.HM>u))Σ(<:Σ(RPPPѴYuQ^oUcOV]}+untAjT0'~6|)^ 2\F-;~k[ݲ豰*ZVy~P5*R[E7+;?iOe\$,P[^_ F.iiF~_javbN:xU~yZUtcGw~[\ڿB'mSͶA5ԗTQaTQzN~){jy},5"O D9UT+Gx^su*](RO,ctMX>pq>w)Oߍέ3'm=iI[Ozk  c =m&_şnJ5X֥6@vg8⨰.s4ށw3ذ SLT܆Ph<;,}_X_{Jh×vXW}_zg~L<}aݰ(v&DŽC1;Ǹ W@g{Vg{Vg{f܂i曽wN܅13pL܇Y֘}xÂź/×|uנ0S0? : ܈p3n4܊q]1s OE]x:V+xu!yhBM5h$ EsQ\?EsNω9?'DsNω9?'DsNω9?'DsNω9?'DsNω9?'D蟓ʯpUt>tM٦lK[>?jVPfƯEǪ*MzzzzOESQT3%zDϔ=SgJH3A3)3$337He}@9sr(fN=2_E:H[i" \777777777Wj^Mhr8Ϟo+z37Æ sMFS$L[뇇`ף;u>/??žO/RR/EWFyz|v3n:g腓9O1 114*G*Knըh{sQ~inW?Z.V-KCQQzO}x{O4ʿEFAw|kH+w[kW.љb赔++n&lKzg{UG#A-!:Px~tD"\jMBkqWjL5h$LFGGGGGGGGGm[sv򯙼nYly-uZ{}tXUKt|Uka>]F ܅ʯWI/utWLOBI (.Ȣxp(. "rxr+r*.^( ** rߐg$ߪĄrz^WV7̔RsيPMPD=-p7P*jm5k n(w4W s]

tB77DZ0ƻ{jܮX}͠ 9)z}t']q;~v\fВh ȴpىq5Uu>gn~B1Z Ϋy菫z-ڌd8 m]lm/@՛5\80䁋4&D/@ȗr _ˡ]Kw"܅0ѣC" v156f9hYZz`h_@O^ =V~ " -#6&.VV^)'S;9a*sZg#~ww7^j6FhЇu"܏σTYQQ^ܮ3jLVTbT"ރ v'؂amF(o tOf"%S6mOzvu.^(}va (%_#w1R#%hi/rL/'6CKK}򶢖](rˆ #9|۶up^϶`6dH !sWHkOsDzz^w"3*5؊zqz~˫jJDTt5UWPO@݈*˅NNhctƎ EF"+o;':P8 T\ZI'o;'Ш:P e.@^@TZ+9 --X&(8籯6f. XXgQ+ؤgХ؛R{Mt3Ro\bF5Kli9':X'S(aX5dgv-@#ά+d=Xnc(a{?ثIثwػ-bxSޜ[Ysފb-y~ ;c+"~o.x֖_o`-»+yރ]{;ռ7{Zޏd3f,xև_et6r6mdL}3~y\ b_ .F(fEg?~"-E\JP4fEq[' h6%KElh-ڰ Vee2CNAtdč):;AGeyx"pW øb&<$fYoxX,+xH;y%4o"[وekIH W~&.[Mjtgw|g_u6N9[|78;|3Ca9;'r*7gqns*\InM!"'jWnG8>!Zp]gDw;Zulj;ܗݗŝw˝N}i4}}Sp?s Kbx].O+ܕb]-^r׻nCLp5ER]@ߪ UkDUmJuXQznT7&uآ:bC=GݧL5X cq)Hth??e&j,t5]&jQ d#X-5j=獒üh7'{' of9;/x^1r\@ŀ*'rZZH ov{{{{w '? /? >|P~(?C3?-erOp}p  ȼP'54.4y!ih3)(yW~οſt~?`[?&#T?m_r)nK{֟qp___?NR_t nO׽?g~; ;<}",îd ݧqDwT8)N Ww_ s'OS#ϻodž_tg_wg_ ~~-iY1<&ƝS]S-(pQ7A߉*]G(NӦgtm)D~M=Su h#-MqS,ݡb=OPJQ/G nPnAHޕ8O/*cՔPzޣ4\mFi2au|fK[gվaޠl} vgPByU%Gc}SI>B==?@[Zo[y7EwЮ7L2leԋ8/V@EX[?9Nvnt@kOooSd*1Z~f%G[ZrtD?w}@Oζ/+=O/5# s şdh: scqMN =kSo?A1zVu2u 3$}7;fQ_{ғ?{S[JԍQ@734w&pͣvU%}C|ZE[=e0F'E7`lyhxz#WP0ogFۜF,~FC/ۜFۜ6ыE*z5Ui'';kܵ]MVt6ʹtfl:fl:al:il::bl:ʃM#Xsc^TXXX%5MMgMǪ5MkN ^ ͫUf*^UK{^*6%?;CFAΞc56bl"64hh {X:l'9{{[?[-1[el l5Fcktck`{[41v5v;fc1!bT옣1Z9䜭fM95~bTtRPm@jJGlVPvꨝjZrCTD{~|PDCrTÐ$[(8pUTYSP{VP &8Mp4h#G @&Ā&8A` I) Lp3BȲЊJ VSAe((NfJ[(oRg wvw#߃~&CgY(sFQ|MIacZW6 KK@1 U !a\p"tD[ Qf%SéS;\(_/\q`ҁ}Hy=< LOTpoߦ* I48O ` +]{Ϥpm@ï/0P|.b. ~YXL88X`d)}b):8a}q|qH6@[ %{hP2dQ2`Q2bbwQ%+cZRHyE*΢3U]ljX%Han38X`-q` A}bQ/Ѭڢ^.EL]FbI`\{ nE$QuDA7nP7xꄒEDnAn)@8ޡ@;՝8Vq4HY Fnt8O=`5n8{B=A:"HT(P=^@A=ϢEqj yR, zRQԛ >UM@y`J!=l#7W}7W yՈԫbQ/Ѣ^Т^UzI-XuT-%YKb_.0NX=1  >BGqJp`S(xq<|xh\Uq8-YdIFVǯT^? zgS^xa%q?dعE33&->oa>+ɒ)m[ bHF/?Y}}k%-&"gv )rg*Wz>3SG2\? ݡµ>}=5_8˟.2 g,ptX cbEF~atK7R-N&mcp~&QxA?}$OGrO}|9t3f{=7عg 4cWIqxX~)Ny^MUN;#S7"G& /i$fgy'Cٷ]22q 'P[D,8S'"b^L0g"utzUYL"wDgEn:{%y"< ƺ\ ۂW@Pѫн->< zckyhlDj)aUFzySϘ>h{[AEG);NXvѾPGmE7v.b_[QKִ*t@iiit˳7+k~O𤻠SW 6>ռ)"CcyV4&)H[1t+`z/{K ̹ Q/ѳ %m.}?%nφ@랑q6J]_G[=PWdzJF1)bo8hhc~[4A5sv:l,K%2E'xW {.WLyN 0sț?fGK"y_El^I`]ߟ`nsveIﺟ-2;{ FӰbQ;'-FΊThK>-\ʴa.t3W=tHRJQO]*tl=m6bޓ~ّ.>gXxRe?(Vo 8ӐzR#+:ς'n2%Z |3dkreBtekSĊs^ϱRF_0?to& RlYQoJ˾AEfK$/k֪S?a+:wRp>kEWK⨱g΃tyqկa$Td-H\߁B[D mk[ ~ WZ5vZ6#VU9n*P!,cOe2`թlTK-v4Fef_ _z#zNETUFTp*bڦwV+R*Cc("IGl?m cw`L_ϤFv<Ӗ:FrMp||劼Yqc4҅FPs')|t()Gf &#Ty G?x^fEeoeu(2x%ֽ2hv7 : /,/l/#a:*D<s9QOczWh)Z*cYr֟\eYta ͷr,x}c);[ΒXgn<;7vTb'c&6{cC76{cÌ7ƞv99㍽`| l|)n|g|/7}083ݸ4ݸcqeqϝN1Ư7~xe׍W7~x]׍7t+ycэ_hs=B^?zqI/KOyI^2ګ#^Ɵ3(qyXw3~k]'kUwO4~l7|x55 YY>{1}h5xy\+o [kU[eMve+t#+5^1M@rlrNH8[T 44ځցD@@;$pE*qV@{4!Q4E?OL nRM\mk6&1[x6tc1|'om_gM,wO3~ڤ4~ڤ2~di!MV1~duM0~d&3dM0~d+M^bɶOiW?m:M^oM~lɮ˚fۍ5y&3^dcPL|LdnfQEfA]`wS`|߱"=.f?[[4@8Lw-YL,'XLs,_`1:0R >j@:XO `}M,B ~*WkZܯiq.pߧ" o`ѿE@$:C$d:SjgF1Pc ql$ 51ZV8^$.Bnk6 `lcR̷WoW_i~S}ƉF>&!b ʱr<]('W|UNVrJUߔ,gO(#,jnR 3f\!ߌ+89qtSɩDB1,%,sQYN gIg:kYzRgyFg#Uq69(d$ 1 %9ۨNvsv9Q'*;{TՌUs,'Z;Ð-Ɇ93s˚eb9F>/>*J 1Fa%%1E$6(-XV)*b[ :D=JqD.8[ !Ø!"FX8ʠ8111,N+׋\l&8mlXM[X8,jo@#nesx,ƃ0{{]"ޥnq7@??~cǨbOC3\u{J]V-oNy'Ƽ'@?`^y/Pއ?'AT~*. |=.| c~!gy/_b rJ*# s1zQy~'_BccVJ=f,_fOpVf`0J$GYN`2y+LJ2U5&׳uVy4+<9O34< OtlȮxxZ sg88 O!2%2#2N#2^Dd=d9_ei^ şX4[z4>pD| ojxNρf`a#͏Xfg) «‹(\k/ ~(' (ah*% M(ah*1?/|EXdx9?%| |#" CC7gG3 ~R~+D1'R[pET(ʳݲ)(W_<(Op }r/|"Cg=">eٔxhyQVգӏr((WMB%_D?Q;K:"ci@EDmB3ڹl.sixF[?P}A~x5,ܿg"/??~;ŪdS&S*e2MLruP>+>b"y"yy (pggԏǡk i5( DD5"4"D5 8|X"ӈk&(D,R9Ǚ@m %#N#^Dl=zuLq WAˉ+čF91?Kļ@,nGrV.+g+;g%F|R3'1rS ӎcq"uKN#`/f/JR/*Rςr6(NVZ >g! sJ̓ޑA]]jr;oHߗvb/yIKc|KϓD%>'3p&P_͊ə%Qrif ~ej1ceh&4 DN>j;EVCۈ6mn}hюG;v<%&ORc+Ԅ9Dv&MBKAKGD?ca|9S6j>[ϱm x}Q^qAۏZ]CCߍh"ʥNMk[@X ͇DM<5ㅊ'z!۷Ml/hulE;v,Q7xl-;&5ѦMG#sP_+ܚ&^ߖ߫ǡUf|VV9 Z+j&ּ͍hKuSWv ]T$Ҡ2]Э]#|rӎ@󊫝 V\2pѴbj"չ|`WxBt6\3'] =N?յ z=e^Rv 1ӕ.'zzK˨t nwEV|N&kFaT M M ݵo.+l:tU\ٮ#*3N"@̘չFtuRe^ '4sfR3wjOhQf5ht]. m uݛTC 5R`ss4[D%HLy%X޹S-n92IgNcei#O-cjEzҲc>tQhq,ro\yH26vUk;'9pævP+:O9I]yV]tԳyA]v/H#]=޷zozo3|6襾2נJߞ9Ϋz~;Cj[cF UlwBۅkj wRv4Yh Sw7 wwCU^w_y_u݂-Ck:>ǵڗ8ٸu)\cԟmeAr}f_+QUv|pqmw*ըq}k(׸>]]@E:^O.{Ѹמ|ƷO{}oy?kn9|N<~ȷ6lU+KlREqnV4]p!]Uc3cc'cz8ڬs0޵MPo6':AN'rUo&QoD ߜ8H1vz9q?UhqK 5a_kw:Ādʶ 4 5wO \07қۻfM;1~9]ʪUS}S ym"@ؾE=5pyS-S};o^J\Q'¾+0TeߋsEہ+wt{zRTk?k>' OUГk#7A/vo^|{WPy M{UczIX8WGsvG lk@^}28Ŵ~.P"wx?8ݴ~W\/oIfwCsB ZwL|bn)uδ@i ԙ@CKc=WgƤ: &~7ޙ ]LY59YI9-g)loQZ*Y_E| z5%\f(X޲ڹJNkMeӢlt*X_y ִ ; .jZv8Ung4 67esu T\uh9ȯsG[ǝ; \(闱;4UπgOܟoEV(h/R($1] =VW?rʹ;hn9lo9<t\r zZ8\l<5pLЏ11R0ry%,8ך%sqZeN̙=RpqiOZoݓn 2Vy=yž^9q0DҨ?0ns('7pс֔svP3p*D 5|lgٞ .]p+󏺦2W]Ӄ# 7\Yv(|˕yR}WQU*  5U*m UEuVƵ5˵(Nt12:Қj֚Z:0ZZ10Ή:}'BĕYֵC}ҍ.ZAšE.C[ U CrUqR k5֪ŭ PQq6ũ5Xw qmEAS~v'4t5ڥַr:\]u9ֵcK9t;sJV97.]޺5պ5ٺu7tupaaNwo2Zp73);a1wv8;7:]z]΋3@sk2};F^v [+sZj:ªVy].k8߼]ȴ0pĺݽ,b&nz"=KHdU;/7l:s-V K{kRށsK,u 6pR>yjG ` 7X{K:^nY>n,s ,&_Y,Eq_=<~F5vOx x%tCx36}% Xɢrd\aoX kAx'wZVoǹ"gB,u{X/OkeG̶ {$"߲Փդ{LnyC}*>j9) ̱́qOY|x@Ou*|tg>nQO5Vj᫖@咧zųXgy` ]&uOsrc T[n{=Kb<sm,>Z_ /SuM#oQŎUJl 8um76cC-c9 mߨ?7nߪ{wĊ:t+NJyPqHdUʎS;0?8>oorҎkW_ѿ/Wa~!fVDkWdJ̡c%ß+ٱp܁N},#??A)W6)X{{!i\oPJIlKg/=RK*w|ɣ۠䕔z)qcQ U02/]1Y]`_nUyUT؁Tmj19:xj89e?V 8hEԱ(kqUs9ؘb?NzJ6q%^WZ)+W>irVݨ_{]4*) cU9+ K;>>uTseZ)neiU\p+kS"W+g:,4LȏŤˌkbc%́rTJQY%O0|Gtgxb5ݳ&h=CiL_;<#S-2ݚɂBHuP$ZY='"%:Hs6RiO;% n!]ҭ=W#fύRSV`j܉=#fv~8&4ⱺzugY}5;%Yk]ӛ`]ߛ͏lͽE]В`[k[_S{zk"{E[6FY.]d=kV-ֳ^GuhRzjp`F*u_|lR߻6싓[ k["c&ֻ%2nӻ=rzwWwo$Ǧ=)%2۔cQ6dTel9hڃ{E3lEٶ\[yhw,ZlލV,Ze[^9Zo3{Ӡތhڄ:Ǜ]l{ "a[[]f[-lkQm*6ykNo}_ߨjnF]ն,/^St]ZmJpz#^5v]jpXލknۘwktmܻzŘ2ȾVX8D LGA Ke l*[̒^ef&[ξֲ([>b1k{vA~5SM!F$Mjfhi,M&)Ьlj4ּW/i׾\:Wԅ5}U75~[4AۺojBwtjݺ=~Ygu_~y~AwFm%ݨ曺 fiÿE٦#}Q/jΊOOh'"_r'OjA'ֈ_DUq"6f!KNaUi+Z9q8, uB[PxM<-/~qT>" 1x_Xe`d-C! c»<ó"1 7 0|C+6 k vkWU;cml} m׆Um? ._>哔Otr [Y6q՞&PN+g ʨruQe"~aB2lV);=rV]{&4O52)Lm7Q cL+LOD_ b,AH8;2}4Y{B;M$ 4FWZM_ehk mˤoklmͦ߀=.`9\8YFW+8:NvtqZXx]u+"+iJl%W)SRBRjzeL1)EQWQ=QUgf #i1c 1P#\CD3Μ(F"/RD4RL!Dy)rKsyE.) y3au[ծ~> JN٨lnU9+QDf VbS!sFC9<*-)Մ nq$T\KPy"d%TU.T7 %BBKBC+IfAhMh}hSh+_wy Q hJP <,bJC(2Jw) ) *ry]WB0;O)[ |rk>QB}(/Rca9gvPRzPxa} a?"?P*ޣ>q%CjuJtzan(2|~I}Yd|~\{@xJAKgyj|sP%Lj>KnǷ;:EN]NKRB[L˅9=-|UJkF]u|sy=|]Up^$]M_;]  \$y!Oe2!a.7 I|(-0iv='A'/KȻ vBNȭ]'n|A(_ fJ`v0',K`Ek`8. . . n nl ǂ'=K+J"*C,e2ZW qDLBR+39)"+%,VRZU6 j5he~_2vP Z-Zhy6Qh}\hy|h1cqǠC'@?O&A~Bw.5{24r|?)hh?ABD-tϑ $AVu'{`h\$=u _6?k~Vek+4J,<(螲(,DX,q[X[-,o9ae|tpYl@YGclM?z¦x![zw276}-^y-7)| كq{pGlr8>׮k n`{-ueB9홾8+}ɸNL?ү'󚞗GǶ'l|I*D֪ ALؖڟv{r)X_\7*^_BCkʊoof~2*5 4.};LߟϡДx;T?cǏdМм ˡHj(x|X:ghj 9&{kC#x_k3_&C[Sk(m["7=ϨϾ2y. 5L<7˼^a=b?ۀ5"DƦ4B5Lmm\+oZ#u2!Zizꈶ2W#"\'ƇN%&GLbr|bj7Qpm[#Ĭ˾(lJ`i;"t䰟 'ߤ?/  /yxTB듽sBnw(QX>'%V''ܧ]ᩚO:Z?w}? WiWgl'dd>B{4Yq{dWPdO 7#(#>DHGTxY#3)ȧw$. rםJ99>] D./0E._Lxc3-nB̓QX&EG,ۥ7|0a؃eq<hQi`'ԷPqcZxƂZwqc4um,ZSc32/qWFmų\G/<7r%6c7%$cᅉЧ:lsHȯK oL`d[xK}D)q;q8nM !Τ9mlpw2M\H/&}^{ G}_KMΜ@?u.;Y]]a_TW+NJd?(&+O.H.a\gM.Ǟºʺ5u5<^uMuV'%;y%[~ݒd[O5ɮcuunS${9ֳ0Ǻ%kK^ĺкcuSΥzRuRx|뮤&qSSX"CS=22532:5_(#)LIq)ύLLE"e$2%8RZu5HQL:9\&eQ/(G#\Rxr18 }44cqZL6)(=Niq:Ix_ p&$D3ѧp&:g3/ruBDƙh%DL gq&jř gvݷt Ngp&:g_ƙ8 Mk+\~ g_Ǚ|q_{]d}4:aPCWcq)yw/4&i4B%"y%EI zJˤRN(mHc"i4I4\%9gIs%'XқG5i&a]iKH{XWLЕ!)OsIX?A?NW4!ta5҂mO/)}0p![>]00q~?!sˢ9~y}3:F7_Œ>L3 u)"rխY,,>Y3t :$(v L"i{{R:IZ:0IUnYY*&\J.J^NV\w,f[뵴LMR{{Fxk׹7-\WKMZ10vvw[{}@KSݙ~W(-T2 y&'(9 % ] $OJHhO&[Sw?9%}2i:,uI)?rNtNKyRA:aIRTTJV~# *nM,)UK9yFK5jKa*j=Rm SXJ:noOt3S:Hxf~xPnz[<2Z$$֔@7,FF!O7=ٓr7y([_ToY Uʍ ^www7;A[*B+G4G{pA nQy{ͧv>z/ۗie_ 뻯WY}լ4slO!i[ƫj)}aKJ|Vi6Y"V6y/%o'ck;kICܿE@_"p p槛SA(e3y&Bݻ#gG[k;|rvM:C%rI.ICs7i ZFdeHIQ^'Wwȳ풞R{.5ksek]gwWmsUVn'QaQQ6q1&z`]BSh8bzz'l|/6Bh#a@`7 0f "1~&4'~T8M".Nۃv!a y8Mףz²[$Ἤh԰q 7`7u 8z{ cP=kVm 8ɼN׾ۃMoNvIM7ޕ [~˧VHwDѵLN=kxJAͰUfL]6uHIj?Fs2vm)> mÚmtz&dBD'RB_]<_'mk 5YWU}ј4.=8L,`466;rk㫍'?u2gcT|N}֮4`ה<5k}6篪}߻je3g \ kۏ X_:y-,rX3ֻ~EOծnٝӚd5Nݫ TN="B.4;HE-~)m# }@`Wio[ ZisOfɾNm$;AݚO>dߡ=i>hN̓{D_i4f'3}eI)Uǀ} ҟE*8fxtQAycZ2b#{hNgn-SǞK fTiuc5zɛA73H ҳ,tlF?r ? Y q/Ѯ~xa~ɲԌƌWhb.یuZ T kh:0G}u?vp݈2c,lkƘ -?{uXvn^/h.:}C;٘â"٪p($!85dڵ M8hsTgsVAkWמ4q>;„&XS=c9a%a ȱ@{8VB1')&p$Ѧ)Ä.mN9u=j}+j ?훝8`yXgHY;)uV̙#ϣP7N1QN:P<8Iq)SѮ)U 9)r\uCwszpE׿.fQ-7%dimѮHhBZ-$Sjx2B%1TgCGr!Tń*Zf6v+㚮_n֞۟qppppƕ|7\cqYǿLT`ZpUoiwõ;Fܸ1+Vesf\6/bz2 [mmmɶöj;`kuڎR:a붝]]ٮvb϶y]L^J(Wحjl[da a_d_b_n_i_c_odjo錄[m.1Ii9{Ct ud9F:F;q2G|ccCrȎ#XX 48V9 ͎m6ű]K( Ci㐣Gtq 8C<^eU4Ý#hMw_\_\0,Ņ,B6~qa$~q½<} Q(%a`[, |ٲeert#t|^7 Y5Thfd5<׫'O^7VwVd^nҰ5;JGǭg(Rljl&p5Y;l#ll1TZD并I3ɶdJeKEsu~iColKD-O[*e! m ̷<,A~K,,-K-,X,mB5k#KPX/%]PGq'U עȯ$.1*gG>F<0%_#N`6~?d\Dlq*1I u^~І("? OT["puH[K|ZXZO_y ͸+੟$gm( H -y lDI%xK2O'n ~A|DKP PGi<M(W<u$lL 3FF Fn} '1zӃ_D}S/0M 2;}Qiِ!4_Gz 1~ uBW|x2uV Ԝ9r}{Єqw?>~?먦_a՛Q:jgD}>0>OubC GYx5/ Y 6b ϑp e25QA|ĿRS;5n7{PD ԣd:'n7`?5)AeY+-߆|+xV n+/ "?3CO1}K\r-4m^Y<9o.,w2Sۦje=(Ay'b_־īaMAk?F/1#HI_-.B|G4_ëm@7:!Oo!G!$4'fV9,D+ơ,IT$t/Q'|ޏ5| ^=}=GÈ1?x}7di9/>|%ۋ^|_,1턷׷q ;rK/)vս^ZhP7m;g2QaS82x4I.<%O( ט 9Q$~~2OT 8/퀄B lj|} <}SEY܋R A!HE;gAɸ=ܻWў1o<leƜ\S?\f|+(r 9oBΛE}/#(r^ އ|jdSqtșEY5r<|?JFCo@{v9x+4Ȝ sdNii,P5 EpW{A g_S6A&{RkЙ7#ac*fDEp3w_q~|<%j=a;)D}5~ C8r3 ż5+72I?_'!ʏk~ wQҎosk[[s_/@l}]F-Ʈ8P_ ɿBؽF?цwsx/#`Uxkl6 Q6(#Kx> ԡ_sEbOE>#ЇQ:il-]c=;V<qK=Q̂ʼ{=^i4X+%hk^|/^<̘M,|5=C-\n|75_ʞ t5@;Z W^SvհC6FPټ5,`HƙXX+σ;6~i=9涉8#5ԃp$| v >kCkE{0J80M{d:LyF~%&?{S寣iͦ>!syC  v עCyuG91y=ó/,VЇì'\.IJ{'`xR{3$MCw+X򎘴}BRe3[VK`^C8GnwO(?wQ^i[ԝb{#c ނ5n=c?B/={mӝ^X~fN.hG>?-w ށxTg7W(߂6?-G?wg1ǚs1zz8bݫr_R<(I_xޏGBg>LK߾<[e.]XgƌpyH*FpFFFGȱM<ԁ7%Qw;z]`?tc2s.~R0el8ʩ;2PFlMyYv^Ţ?;[ݺL\RHG^3=GX n'< ;ݺg9 ư ^ӣw zaӹ܃-zn"/5_G2r52! $-Z^k|wv )팰3lcUi)8r3 6eP&&q3I|*z7*;xeL<\+ }UQMXh~~q+L'_rb7l|oL47%sD2^+Y»ӏY >0}t*^=F}Exx5&ܜ84J"Vʫߪ~W)m JV:*_yONelIh=hSJ,%NXgÒ&beG9z}\=Ya2)2-5DT5qdO0 =~WbVwSxOL'40lu8ކSW %a^OIsYPUo5^18+L6 ƸzhMD,޿9ȥr엧/էRȃ3yҲm 2qD+~08SD$3$JiϫX9Aa焹_ύ `ֻtIY'c4!˪A^ʾbKi:rKjL%>xIT+Z vU%%+:S~-$b9Y>E GwV!̏3̤| /A>L%4Y ,YlVt'W`56  f2Qj& p]QøVTOA"7п\ 4G%F vtžbV3EIp=\ kW>"xB&~5Q:\%-:Bs"%7>f*2(;Z rߋ7;=Mnpe K(x3<Q}TޟJ-H27gLxO?|=8ud>l_rKnkehk@U9 qXPkŲEB0 s&SR.km3Ce/<٨E/yKZWse4g)X-G&f}턇ښjOv6O83Òn]6*.-e2(BQUY(gڇtiO(<x9fջ\7:2NYjd۫ZɥWu+oۙm>Ӧ>j-d$ ;L {DamFM`;&PFy7Kio vYV[3޳>u1#ZuyApn&vJ{;6h&z^hy|} ?^cI_s9}A> o5Ko8qseYg5 46t/ >h *Z<4۵L*5UywBư;8[V ^s"OOyz-0յ|j,'خQM1՘|\X VSzoDX$؆6_j,Wz=ґx8#1'D[e*[|; ѿ KyaGU|e҄!4Iʰe wrxeFi p1rw䑰 Qp2`!!og<)l&9~jxzfdO7ocYy8+fxFXAm!X^eOxuTxTќ@4^#4+ vvs^ʈW ǫ|2ʌhclb9/c☨_U#FÙg$AZY. Wb,:3m:}9<1ǔ'߉\FX9:e\YqZl-f]ȬqZ#&z\N16+ lx]]Źړs;t{K3^{y Bl89yj28iEؖk&0Gu|?S>`x-6?q,vȺH3Є90qMcfFTKVXRQU/ڈlףYWcыh 6&^1[jfj,>QW=#OGf'-YSKNQ!U+$ U=>IjE#{roeR䒽DHfSfׯlO 枢5Rl=x]DAiQGU|e҄!4Iʰe wrxeFi p1rw䑰 Qp2`!!og<)l&9~jxzfdO7ocYy8+fxFXAm!X7K3 sI:k-3p&l@_fep%*0^x^a9<0u4Ɂ,wb3Z7ʤ5(4[0Ǒp6eLd,oZ?D4F=9oqǹ zl84{h} :8ixur-zՄ?_?ϮG%L ;+ktC"iKp; @Հ }AG):Zx/㪂lףY 7EDq3ZM짡Wv)v$d̖jxT{d~S#u7Ǒ;=p zzvwH&*a YƕdrR%)2y;{:Gjf0!`)+Sul>5͹OL$um){hOxTo)JKyHF桟}4=h}a g3lIk۷H>+JxʷjO;z5 I}gӼXld@<3h>jNk/r5T.GHkS%[9>k7"74;z6EUvusLZK")_iCh#OeQ Gk2Cc/< +Ѵf {)pV2rI/4oY CfjЌL/_aWK$0}1k]#P)_w7xhګMX>UkDkKiis 3gRYr0}kjud|܏s=ضjsمYn paeS=}ONh@c2s\F,GoO'+}]ZDЪlIk.n| <7e.e`Fd=5"vKd >=A O*#n#X 4:̴A|cu+3Ȣ 2G,Aqr@п;55P+L{Y,No Er&j X6G,Fy+қ`?v!}OgIOzʚ^ż׵|^_TGG1\,ۥyCRR,OW"Λw:ɓF@_@"Iߨ߲Nwo§{t5kӵ^^y^x|wWnoz?sm#b{:G#~=[&^O.Q9=*Mک؏7ئ-egMFvr{<ԓD{fyˢ/̸UhZ cلsE5'287b?3!J*UՑkV?\?<# B/dfz#qx{Gr ZSb(.g5sVy:3=B+cK/CGٞf*>"O W8h5k=Lt?xNɻ֓K4&=BzX$>9y'>?@ތV2h~~G@06sخw-9~ y`_y]5䊿ϗ-))%K&I=TZrV{&w  9WYr^˕Angm'(_9zI?,c7>N2}('9R].K7_5WOr qRLl6mKvW_+]ڷ2Wl~3O6kHLUQn+ CzK*%RAJgi*<q8OJJE﷖ԕr4F}\+#~UK&$#8Sΐ2rTjK#BZH$]$r2L˴k]uf{p*v.: nۻvy°4[+`+خ[;Ͱ;w G ,¥qp5\7n^xiek, ҾTVa6P?a{{ްpt?Տp gE p9\ n#?}0Чk0aH5Ma+v?30X3Z3SZ*&El$OeR_:1W_9 !6d% elANP64 ݂`r0+X6;<Ҧfƛfy׬1[ns%me[߶m/;̎S\q֧r ~wS~ow >uSxr9.}^w:i)*i:RϞ~S_~rOkkCxNJCs|*h7$ǭqgr<+N cQT,9uv8uVf^>^o<^;u"2/9uS=-O{׭O]z-=LqLvߩ% Ggr("nevs-s˽&$G#b]cXBw_75zS "}ju17_J.ǃ?L?bgl}ήɹni~k 1qwZJYsU3qXo9t;qǕܙX~XJ,H,{W2V*-i6oqkZFwZ6Ҳ#F]Q-jn棾-r)+z,O}Q~VBA! Ε{A'?;`0>/Sdbp08(GX[LԐMʤ mIs9Sb-݇C{[VV#}>'{[6Sm>svs}ᾰݗK{}es߸ogw]˳7'ogPxpW WY>K2LISR2MSFLESQ 澺uHv-&QqQϨGp40(gFR\9˕qe/JQWޕb(gʮw IIWUwkI)wHuɟ%uv\#W+S˺fs7JuVwTr]oRs7 n,P7T.tpFRÍvH-7΍n RMrb{LR=鞔)\vOz=M?g3=瞓Fy\^p/Hc{IrJS7͗ݫU½^fn[(ߤ{۽--ݻ]-qK*_k_;Wվv6nm_m۹^jmUZW&_ew57msF~#M;(7qGx_RZ[V݃ooIL0;k?ٗd_I nK}O/X eLm{EAJI}i"-t axyTL#˻\F*;d%HYCf uAY8κ㐬@/ 80kAY#9κ㐬qq`e=qpC`o79ʚqpCd=CD&q(Yqu:sPXY{7"83D'LI"TIdN"2-$"$y6sIDf&y> ID^L"RID^N"27ȼ$",H"J~fYDdοגD$" D$"o'Nw,J"8̒$2KD$"˓|DdEJ":GID$8ȫDod2"ߌ'ID%YDdCO|DdSϓlN"E/lM"U+_'{mIdI"=̷IDK"3IDv%!Z"l!Sv)$"{M"sID$9DPID$9D$"ǒD$"'L"Nr%?L#S #Sđ)`HD<"r\3EF7O:H`yƶWVnAvՎx`w;wv?Ovcڟ>!{#迣l6пεW+ֶXvI%%;vaHnieߵHN ^SR ,) ˄erȁO+gU]XTL,.gSo0'_V3~/>oNX4,K%9R(,Fa*3ì@xF ]X(,m1Æ6mu}ζ+vЮj]c?k'(̾`__ҿks\Qv=o5׷kv]j߳v1_/zlF罿b}u#{yjyI̴.i6~Q_Pr< cdA.LI~?&qyB)O4.3yVy%/ȋ̖}=+d,WUyW7d)my׊EXRyOr| +CY)d|DzV>u^6ȧ|&s,_טklod|+wS](?GϲO9aɓ#rT~c䄜4L[\cڛkuz`:M'sb:.fVfzMo5w~Nb4[Wkw|coi7Gmg9h&1G/7I|_ֆ6)a3mmkkl{dom{m11f_7B}Ǯh?vpQ$ۻU&Q"*f0!TL b,DŴs^u9Px˰޻~gUuӧN}^a:{bowVw]pWk\wnq;\.wp<pOgs{Žpow{W} O\W̕:ބ%H}Ҁ@Ґ4"IҔ4#A$4'-HKҊPҚ!mI;Ҟ$t$Hg҅DHR4bHOҋ&}H_KH?O2 $`H@Fd$EF$2%x2L$d2L%t2$?Yd6Cyd>I& H I% IYDtA2Lj%zl$fE}+NvdM'ȯ 9D#(9F$9EN3,9GΓ "D.+*Frur$mr䒻O$<"I>yBg9yA^W) I!DH1)"-&YdYNVdyMސy/ !Pa0\!F $a0V'q8J-&cıxq8Q$NSitq8SLSŅbH\,bD\*f qJY\-׊qI,AxL<.O3Yx^ ^/W;]P|$ŗkV|'?GP$%HIJ顔'=KLz.^JNz/} RI*acuitDt:3u&:S\gYueu6:[^+s9*u4"b].C[[--׭tnαd3t#.KmlKb]Pd$K&d&Kd%d+I${A*/9JNRY(U\$l X7+FxD C8Nx3>"x& g2(f$3Md0f3 df0\z+&h1kƚe늖'(_%.;Ƽ1p[ h&ia[ l\^3W+jR4iMX {j5p !@sDs\\4W59mP5% /6ޣuѺ}Zw'>kW닏hi>ki@m >mmOiiPm(>mmjôa+>+B_SH@<og?b;0D(a"R.3R7M| DkKG˞-`Tihg4>p< UEKukݰuzv^SW~pΆ!KSq8'ӻlޚ/_#W|%ޅwxwރ{ xo|_%|_W5&o;8}?y~8B[%;80cLG`L~ -W,uG}iЪA'CP-H"jBQ[H= } dz@2CQ2GhD#! klPYa;dG)ny:Rqo9e*x rpӓ$䂧3;#x3'>#=>O o:CG/MS':\د_աf> VX(,oE8@T/qqW|vAVKsC8R(4!-!C!DqH8dHqȈ !SCf)YRRW,Fh`UǮ Wp .qx h$<Os[27mxgmC;g a$Ƅb'Z-D#=CSഞLo`$f8Dt:zL7CѹWcv=hj!SVVdyy bd*on ]bͨ>DWQ3sP`)wݒrw+!C)w݆rw[b`0u$eᔩGc(x⧯hk"ښMh;D-R[RCFi9]^s߁3ӞhOa5ԟ2!1 )9%gOk%*E^.u2/#V"O1 엿xRk |9(==О. ,ȸ|4ߝA(W+.!{zG겿\K#דȍNrM!c~y(Gdy.OgE|UΑoO+*{.s #xS8_F"^`z̗j=2s05Nb{}y^Oԇ}͙L=DV W״~u }cRWJ'u쇩R]jǤN`˟$}j]V>uߥzIQOZߧ2KO_| 37'so*;>O'LF3<~2 t"s Bzʛ;?>ώHPSTW,hq`q4l?|'c݋ bf\},~ +ʙP^¨o ahN"70b fL33PTZ631N?c]ʸBݍq;7x@2'IBf!Ә4/bҧ6F,ۄ7Uǃ5>ِoX>zOՃ>X}b?/H}>2k"A/ z3[n^Ϻ}P߯;CTl:5YB#<@eCog嗹iL5)S T`L5S T`A0 JS%T`D0U"*LJS%T`D0U"*LJS%T`D0U"*LJS%T`D0U"*LJS%T`D0U"*LJS%T`D0U"*LJS%T`D0U"*LJS%T`D0U"*LJS%T`D0U"*LJS%T`D0U"_i!և4{^%zu|u0Iٰk^T 42.6>"!A)gM~;'#$!O}u;K[P *׷MeƿtM-Z+*>o#:޾AH}@HpJ O_Aql- 5ZIKҩ$@)/0IW>ո ZqoNa,lr҂?q<|ޙ> if5o7յmQf*-OlY)V"#S&էeGJSucnL)p0WJ%ھJRL0,%IZWlImefu7zCE:Ws>dY)}>\m'*r޴!OoZ>yO Cs+ǜn0`B)[gVrpT>zǣCbdۻ d>ϷMe}8'6<^Ұ]Б̮RzN{?h[;OhMSV^QGU, 18q+\vp츊?x,&)Sc-Z5=}#Vku}GyhQڠkuoOy#=*8䮺}y&;]YiM/I9~3L^01N*I*'mٿibMፗ%nޒs nh%H^űG/E~."?l)joYwеd2dݞ ^u_)-@=DM]UUqM U}#*U}|"ymhVmaYPNi+% =:qg[ a 0X,ɹ~w}]Mzv(AE:akifᮁ=X(9eЎ u菉dXvDrVxjÝCcܿ׭4ەFm%jkJמKM#F'64(x?O+yXaPܘѽ}6_v&.*ɸ1fK̬P2σC.w2/܎8[.'.0IyLW7.?2r{fiMx3 Ts)z'~X2w; E}pUl,8*[L׈hz$$R0S?oUU0n7q!؆e)]-һVK'|ܫx[XoLzRrs`Nj(J[aұ5߼tZĦRkEn xzU#/yң׮yR˳yi9^Q9v0fřx2Ӳ6x^+#JpzLiܴȢG;[lhzr:ŨRUk{՜y2O3.<2l-zl!yCV5yxߢM³,M;nwX]늇RۇNPL}T;,iSq \!s[eJ@zku,v8 ABKX#@+BN0?`ԾZ΁kc3_컢6qj#Z$r]ӳَmލ۹mӇ͍z\w;e9qɹ]qW2٬6Mnz _~r>ڤq4fvb*7ԌcyY?){nF\~}R?ؼDpۓSwWܐصM̖' -iF*kk.$yt+3q3/y o!<{MޙV|cm{V4yfdn:ިTagȦ54Zuc-i;96bޟ^]H}iyA|U7'0"N|fԛS[>JtVɋBӊuV+rdNҥat:= ~q`Ǡ(}\9 VG%m=ضЎCFJӭ7wxA'Ro3;#l[}||В~{+z -ۨ4z/VF'3~ ]F3(qEF{CL+G?)t6?@8ƣMJlWNסd=Cgl|$sjmm-R'εRl;rI ,w ?2QuᴞG{0s'Wq>=ɍe6?w[F=G׶Hb_;X{7/yWd`zk1mSFi]zC/;^w~.]Pe[~&EVS7۵q㺠G+0j-I'#;7N_5k#a<_vsAڱ걻GWL?75i_-{֜10bS e{W5|a[4٫[-LuWU}^*=C ۖGU19=O֎k/Ǎ< m^DIF MwU ţX: % {QluP3G9`MH#w%aKgSMhE7f.-_K>7@KQ-ez%ς],.=+ןB1j^/ӸQA/<.݈j;ppӉuIڲo_sh{&o 3o>\"#wV]!Kodp5TO/Ǽ8Ug*oM %Ž ?IK޲FE6]"F_r[ W{DJEB8n˩]{|%Lʥjf(U͑il{&& &&D61oZg$drF̬0-˰CF M--0R䉒7i[Hy9t(5ysZy J+ϪgbT~ kqmTK+Ӑ6Q|%r՛k_fn8O1ӆSj$z[z RnɼfK-gm`O٢~㗸ysUB,!wL9Wy͑~Qœ[e%roI?fyEop}Z\iq;ݓ6QZ{C.mN9i^9?gL\if =TfrL05E!{d6 endstream endobj 19 0 obj <<19800F86140BEF41A79E5081DBA819E5>] /Filter/FlateDecode/Length 78>> stream xc` P[^04L1[)u& 3bP 5=b?m endstream endobj xref 0 20 0000000010 65535 f 0000000017 00000 n 0000000125 00000 n 0000000181 00000 n 0000000445 00000 n 0000000656 00000 n 0000000824 00000 n 0000001063 00000 n 0000001116 00000 n 0000001169 00000 n 0000000011 65535 f 0000000012 65535 f 0000000013 65535 f 0000000014 65535 f 0000000015 65535 f 0000000016 65535 f 0000000000 65535 f 0000001775 00000 n 0000001984 00000 n 0000080868 00000 n trailer <<19800F86140BEF41A79E5081DBA819E5>] >> startxref 81145 %%EOF xref 0 0 trailer <<19800F86140BEF41A79E5081DBA819E5>] /Prev 81145/XRefStm 80868>> startxref 81701 %%EOFthe_silver_searcher-master/tests/ds_store_ignore.t0000644000175000017500000000036513700154060022527 0ustar mizunomizunoSetup. $ . $TESTDIR/setup.sh $ mkdir -p dir0/dir1/dir2 $ printf '*.DS_Store\n' > dir0/.ignore $ printf 'blah\n' > dir0/dir1/dir2/blah.txt $ touch dir0/dir1/.DS_Store Find blah in blah.txt $ ag blah dir0/dir1/dir2/blah.txt:1:blah the_silver_searcher-master/tests/max_count.t0000644000175000017500000000162113700154060021333 0ustar mizunomizunoSetup: $ . $TESTDIR/setup.sh $ printf "blah\n" > blah.txt $ printf "blah2\n" >> blah.txt $ printf "blah2\n" > blah2.txt $ printf "blah2\n" >> blah2.txt $ printf "blah2\n" >> blah2.txt $ printf "blah2\n" >> blah2.txt $ printf "blah2\n" >> blah2.txt $ printf "blah2\n" >> blah2.txt $ printf "blah2\n" >> blah2.txt $ printf "blah2\n" >> blah2.txt $ printf "blah2\n" >> blah2.txt $ printf "blah2\n" >> blah2.txt # 10 lines Max match of 1: $ ag --max-count 1 blah blah.txt ERR: Too many matches in blah.txt. Skipping the rest of this file. 1:blah Max match of 10, one file: $ ag --count --max-count 10 blah blah2.txt ERR: Too many matches in blah2.txt. Skipping the rest of this file. 10 Max match of 10, multiple files: $ ag --count --max-count 10 blah blah.txt blah2.txt ERR: Too many matches in blah2.txt. Skipping the rest of this file. blah.txt:2 blah2.txt:10 the_silver_searcher-master/tests/is_binary_pdf.t0000644000175000017500000000034213700154060022145 0ustar mizunomizunoSetup: $ . $TESTDIR/setup.sh $ cp $TESTDIR/is_binary.pdf . PDF files are binary. Do not search them by default: $ ag PDF [1] OK, search binary files $ ag --search-binary PDF Binary file is_binary.pdf matches. the_silver_searcher-master/tests/only_matching.t0000644000175000017500000000203013700154060022164 0ustar mizunomizunoSetup: $ . $TESTDIR/setup.sh $ printf "the quick brown foxy\n" > blah.txt $ printf "blah blah blah\n" >> blah.txt $ printf "another foxlike word\n" >> blah.txt $ printf "no matches here\n" >> blah.txt $ printf "blah blah blah\n" >> blah.txt Only print matches: $ ag -o "fox\w+" blah.txt foxy foxlike Ditto but with filename & line numbers $ ag -o --noheading "fox\w+" blah.txt:1:foxy blah.txt:3:foxlike Ditto but with filename at top $ ag -o -H "fox\w+" blah.txt 1:foxy 3:foxlike Always print matches on separate lines: $ ag -o "blah" blah.txt blah blah blah blah blah blah Ditto but with filename & line numbers $ ag -o --noheading "blah" blah.txt:2:blah blah.txt:2:blah blah.txt:2:blah blah.txt:5:blah blah.txt:5:blah blah.txt:5:blah Ditto but with filename at top $ ag -o -H "blah" blah.txt 2:blah 2:blah 2:blah 5:blah 5:blah 5:blah With columns $ ag -o -H --column "blah" blah.txt 2:1:blah 2:6:blah 2:11:blah 5:1:blah 5:6:blah 5:11:blah the_silver_searcher-master/tests/files_with_matches.t0000644000175000017500000000326513700154060023205 0ustar mizunomizunoSetup: $ . $TESTDIR/setup.sh $ printf 'foo\n' > ./foo.txt $ printf 'bar\n' > ./bar.txt $ printf 'foo\nbar\nbaz\n' > ./baz.txt $ printf 'duck\nanother duck\nyet another duck\n' > ./duck.txt $ cp duck.txt goose.txt $ echo "GOOSE!!!" >> ./goose.txt Files with matches: $ ag --files-with-matches foo foo.txt foo.txt $ ag --files-with-matches foo foo.txt bar.txt foo.txt $ ag --files-with-matches foo bar.txt [1] $ ag --files-with-matches foo foo.txt bar.txt baz.txt foo.txt baz.txt $ ag --files-with-matches bar foo.txt bar.txt baz.txt bar.txt baz.txt $ ag --files-with-matches foo bar.txt baz.txt baz.txt Files without matches: (Prints names of files in which no line matches query) $ ag --files-without-matches bar foo.txt foo.txt $ ag --files-without-matches bar foo.txt bar.txt foo.txt $ ag --files-without-matches bar bar.txt [1] $ ag --files-without-matches foo foo.txt bar.txt baz.txt bar.txt $ ag --files-without-matches bar foo.txt bar.txt baz.txt foo.txt Files with inverted matches: (Prints names of files in which some line doesn't match query) $ ag --files-with-matches --invert-match bar bar.txt [1] $ ag --files-with-matches --invert-match foo foo.txt bar.txt baz.txt bar.txt baz.txt $ ag --files-with-matches --invert-match bar foo.txt bar.txt baz.txt foo.txt baz.txt Files without inverted matches: (Prints names of files in which no line doesn't match query, i.e. where every line matches query) $ ag --files-without-matches --invert-match duck duck.txt duck.txt $ ag --files-without-matches --invert-match duck goose.txt [1] $ ag --files-without-matches --invert-match duck duck.txt goose.txt duck.txt the_silver_searcher-master/tests/ignore_backups.t0000644000175000017500000000275313700154060022340 0ustar mizunomizunoSetup: $ . $TESTDIR/setup.sh $ mkdir -p ./a/b/c $ printf 'whatever1\n' > ./a/b/c/foo.yml $ printf 'whatever2\n' > ./a/b/c/foo.yml~ $ printf 'whatever3\n' > ./a/b/c/.foo.yml.swp $ printf 'whatever4\n' > ./a/b/c/.foo.yml.swo $ printf 'whatever5\n' > ./a/b/foo.yml $ printf 'whatever6\n' > ./a/b/foo.yml~ $ printf 'whatever7\n' > ./a/b/.foo.yml.swp $ printf 'whatever8\n' > ./a/b/.foo.yml.swo $ printf 'whatever9\n' > ./a/foo.yml $ printf 'whatever10\n' > ./a/foo.yml~ $ printf 'whatever11\n' > ./a/.foo.yml.swp $ printf 'whatever12\n' > ./a/.foo.yml.swo $ printf 'whatever13\n' > ./foo.yml $ printf 'whatever14\n' > ./foo.yml~ $ printf 'whatever15\n' > ./.foo.yml.swp $ printf 'whatever16\n' > ./.foo.yml.swo $ printf '*~\n' > ./.ignore $ printf '*.sw[po]\n' >> ./.ignore Ignore all files except foo.yml $ ag whatever . | sort a/b/c/foo.yml:1:whatever1 a/b/foo.yml:1:whatever5 a/foo.yml:1:whatever9 foo.yml:1:whatever13 Dont ignore anything (unrestricted search): $ ag -u whatever . | sort .foo.yml.swo:1:whatever16 .foo.yml.swp:1:whatever15 a/.foo.yml.swo:1:whatever12 a/.foo.yml.swp:1:whatever11 a/b/.foo.yml.swo:1:whatever8 a/b/.foo.yml.swp:1:whatever7 a/b/c/.foo.yml.swo:1:whatever4 a/b/c/.foo.yml.swp:1:whatever3 a/b/c/foo.yml:1:whatever1 a/b/c/foo.yml~:1:whatever2 a/b/foo.yml:1:whatever5 a/b/foo.yml~:1:whatever6 a/foo.yml:1:whatever9 a/foo.yml~:1:whatever10 foo.yml:1:whatever13 foo.yml~:1:whatever14 the_silver_searcher-master/tests/one_device.t0000644000175000017500000000123713700154060021441 0ustar mizunomizunoSetup: $ . $TESTDIR/setup.sh > if [ ! -e "/dev/shm" ]; then > echo "No /dev/shm. Skipping test." > exit 80 > elif [ "$(stat -c%d /dev/)" = "$(stat -c%d /dev/shm/)" ]; then > echo "/dev/shm not a different device. Skipping test." > exit 80 > fi $ TEST_TMPDIR=`mktemp -d --tmpdir=/dev/shm ag_test.XXX` $ printf "blah\n" > $TEST_TMPDIR/blah.txt $ ln -s $TEST_TMPDIR other_device Should not descend into /dev/shm symlink when --one-device specified: $ ag -f --one-device blah . [1] Files on other devices work the same way as anything else without --one-device: $ ag -f blah . other_device/blah.txt:1:blah Cleanup: $ rm -r $TEST_TMPDIR the_silver_searcher-master/tests/big/0000755000175000017500000000000013700154060017712 5ustar mizunomizunothe_silver_searcher-master/tests/big/create_big_file.py0000755000175000017500000000117613700154060023357 0ustar mizunomizuno#!/usr/bin/env python # Create an 8GB file of mostly "abcdefghijklmnopqrstuvwxyz01234", # with a few instances of "hello" import sys if len(sys.argv) != 2: print("Usage: %s big_file.txt" % sys.argv[0]) sys.exit(1) big_file = sys.argv[1] def create_big_file(): with open(big_file, "w") as fd: for i in range(1, 2**28): byte = i * 32 if byte % 2**30 == 0: fd.write("hello%s\n" % byte) else: fd.write("abcdefghijklmnopqrstuvwxyz01234\n") fd.write("hello\n") try: fd = open(big_file, "r") except Exception as e: create_big_file() the_silver_searcher-master/tests/big/big_file.t0000644000175000017500000000123313700154060021636 0ustar mizunomizunoSetup and create really big file: $ . $TESTDIR/../setup.sh $ python3 $TESTDIR/create_big_file.py $TESTDIR/big_file.txt Search a big file: $ $TESTDIR/../../ag --nocolor --workers=1 --parallel hello $TESTDIR/big_file.txt 33554432:hello1073741824 67108864:hello2147483648 100663296:hello3221225472 134217728:hello4294967296 167772160:hello5368709120 201326592:hello6442450944 234881024:hello7516192768 268435456:hello Fail to regex search a big file: $ $TESTDIR/../../ag --nocolor --workers=1 --parallel 'hello.*' $TESTDIR/big_file.txt ERR: Skipping */big_file.txt: pcre_exec() can't handle files larger than 2147483647 bytes. (glob) [1] the_silver_searcher-master/tests/filetype.t0000644000175000017500000000131713700154060021161 0ustar mizunomizunoSetup: $ . $TESTDIR/setup.sh $ TEST_FILETYPE_EXT1=`ag --list-file-types | grep -E '^[ \t]+\..+' | head -n 1 | awk '{ print $1 }'` $ TEST_FILETYPE_EXT2=`ag --list-file-types | grep -E '^[ \t]+\..+' | tail -n 1 | awk '{ print $1 }'` $ TEST_FILETYPE_DIR=filetype_test $ mkdir $TEST_FILETYPE_DIR $ printf "This is filetype test1.\n" > $TEST_FILETYPE_DIR/test.$TEST_FILETYPE_EXT1 $ printf "This is filetype test2.\n" > $TEST_FILETYPE_DIR/test.$TEST_FILETYPE_EXT2 Match only top file type: $ TEST_FILETYPE_OPTION=`ag --list-file-types | grep -E '^[ \t]+--.+' | head -n 1 | awk '{ print $1 }'` $ ag 'This is filetype test' --nofilename $TEST_FILETYPE_OPTION $TEST_FILETYPE_DIR This is filetype test1. the_silver_searcher-master/tests/fail/0000755000175000017500000000000013700154060020064 5ustar mizunomizunothe_silver_searcher-master/tests/fail/unicode_case_insensitive.t.err0000644000175000017500000000074513700154060026107 0ustar mizunomizunoSetup: $ . $TESTDIR/../setup.sh $ printf "hello=你好\n" > test.txt $ printf "hello=你好\n" >> test.txt Normal search: $ $TESTDIR/../../ag --nocolor --workers=1 --parallel 你好 test.txt:1:hello=\xe4\xbd\xa0\xe5\xa5\xbd (esc) test.txt:2:hello=\xe4\xbd\xa0\xe5\xa5\xbd (esc) Case-insensitive search: $ $TESTDIR/../../ag --nocolor --workers=1 --parallel -i 你好 test.txt:1:hello=\xe4\xbd\xa0\xe5\xa5\xbd (esc) test.txt:2:hello=\xe4\xbd\xa0\xe5\xa5\xbd (esc) the_silver_searcher-master/tests/fail/unicode_case_insensitive.t0000644000175000017500000000060513700154060025313 0ustar mizunomizunoSetup: $ . $TESTDIR/../setup.sh $ printf "hello=你好\n" > test.txt $ printf "hello=你好\n" >> test.txt Normal search: $ $TESTDIR/../../ag --nocolor --workers=1 --parallel 你好 test.txt:1:hello=你好 test.txt:2:hello=你好 Case-insensitive search: $ $TESTDIR/../../ag --nocolor --workers=1 --parallel -i 你好 test.txt:1:hello=你好 test.txt:2:hello=你好 the_silver_searcher-master/tests/ignore_subdir.t0000644000175000017500000000073313700154060022174 0ustar mizunomizunoSetup: $ . $TESTDIR/setup.sh $ mkdir -p ./a/b/c $ printf 'whatever1\n' > ./a/b/c/blah.yml $ printf 'whatever2\n' > ./a/b/foo.yml $ printf 'a/b/foo.yml\n' > ./.gitignore # TODO: have this work instead of the above # $ printf 'a/b/*.yml\n' > ./.gitignore Ignore foo.yml but not blah.yml: $ ag whatever . a/b/c/blah.yml:1:whatever1 Dont ignore anything (unrestricted search): $ ag -u whatever . | sort a/b/c/blah.yml:1:whatever1 a/b/foo.yml:1:whatever2 the_silver_searcher-master/tests/ignore_pattern_in_subdirectory.t0000644000175000017500000000045313700154060025644 0ustar mizunomizunoSetup: $ . $TESTDIR/setup.sh $ mkdir subdir $ printf 'first\n' > file1.txt $ printf 'second\n' > subdir/file2.txt $ printf '*.txt\n' > .gitignore Ignore file based on extension match: $ ag first [1] Ignore file in subdirectory based on extension match (#442): $ ag second [1] the_silver_searcher-master/tests/literal_word_regexp.t0000644000175000017500000000136513700154060023404 0ustar mizunomizunoSetup: $ . $TESTDIR/setup.sh $ echo 'blah abc def' > blah1.txt $ echo 'abc blah def' > blah2.txt $ echo 'abc def blah' > blah3.txt $ echo 'abcblah def' > blah4.txt $ echo 'abc blahdef' >> blah4.txt $ echo 'blahx blah' > blah5.txt $ echo 'abcblah blah blah' > blah6.txt Match a word of the beginning: $ ag -wF --column 'blah' blah1.txt 1:1:blah abc def Match a middle word: $ ag -wF --column 'blah' blah2.txt 1:5:abc blah def Match a last word: $ ag -wF --column 'blah' blah3.txt 1:9:abc def blah No match: $ ag -wF --column 'blah' blah4.txt [1] Match: $ ag -wF --column 'blah' blah5.txt 1:7:blahx blah Case of a word repeating the same part: $ ag -wF --column 'blah blah' blah6.txt 1:9:abcblah blah blah the_silver_searcher-master/tests/ignore_examine_parent_ignorefiles.t0000644000175000017500000000066113700154060026271 0ustar mizunomizunoSetup: $ . $TESTDIR/setup.sh $ mkdir -p subdir $ printf 'match1\n' > subdir/file1.txt $ printf 'file1.txt\n' > .ignore Ignore directory specified by name: $ ag match [1] # Ignore directory specified by name in parent directory when using path (#144): # $ ag match subdir # [1] # Ignore directory specified by name in parent directory when using current directory (#144): # $ cd subdir # $ ag match # [1] the_silver_searcher-master/tests/search_stdin.t0000644000175000017500000000021213700154060021777 0ustar mizunomizunoSetup: $ . $TESTDIR/setup.sh $ printf 'blah\n' > ./blah.txt Feed blah.txt from stdin: $ ag 'blah' < ./blah.txt blah.txt:1:blah the_silver_searcher-master/tests/stupid_fnmatch.t.disabled0000644000175000017500000000043613700154060024117 0ustar mizunomizunoSetup: $ . $TESTDIR/setup.sh $ mkdir -p ./a/bomb $ printf 'whatever\n' > ./a/bomb/foo.yml $ printf '*b/foo.yml\n' > ./.gitignore Ignore foo.yml but not blah.yml: $ ag whatever . Dont ignore anything (unrestricted search): $ ag -u whatever . a/bomb/foo.yml:1:whatever the_silver_searcher-master/tests/case_sensitivity.t0000644000175000017500000000113413700154060022722 0ustar mizunomizunoSetup: $ . $TESTDIR/setup.sh $ printf 'Foo\n' >> ./sample $ printf 'bar\n' >> ./sample Smart case by default: $ ag foo sample 1:Foo $ ag FOO sample [1] $ ag 'f.o' sample 1:Foo $ ag Foo sample 1:Foo $ ag 'F.o' sample 1:Foo Case sensitive mode: $ ag -s foo sample [1] $ ag -s FOO sample [1] $ ag -s 'f.o' sample [1] $ ag -s Foo sample 1:Foo $ ag -s 'F.o' sample 1:Foo Case insensitive mode: $ ag fOO -i sample 1:Foo $ ag fOO --ignore-case sample 1:Foo $ ag 'f.o' -i sample 1:Foo Case insensitive file regex $ ag -i -g 'Samp.*' sample the_silver_searcher-master/tests/print_end.txt0000644000175000017500000000003213700154060021667 0ustar mizunomizunoergneqergneqergneq ergneq1the_silver_searcher-master/tests/vimgrep.t0000644000175000017500000000147013700154060021011 0ustar mizunomizunoSetup: $ . $TESTDIR/setup.sh $ printf 'Hello, "Hello, world" programs output "Hello, world".\n' > ./test_vimgrep.txt $ printf '"Hello, world" programs are simple programs.\n' >> ./test_vimgrep.txt $ printf 'They illustrate the most basic syntax of a programming language\n' >> ./test_vimgrep.txt $ printf 'In javascript: alert("Hello, world!");\n' >> ./test_vimgrep.txt Search for lines matching "hello" in test_vimgrep.txt: $ ag --vimgrep hello test_vimgrep.txt:1:1:Hello, "Hello, world" programs output "Hello, world". test_vimgrep.txt:1:9:Hello, "Hello, world" programs output "Hello, world". test_vimgrep.txt:1:40:Hello, "Hello, world" programs output "Hello, world". test_vimgrep.txt:2:2:"Hello, world" programs are simple programs. test_vimgrep.txt:4:23:In javascript: alert("Hello, world!"); the_silver_searcher-master/tests/count.t0000644000175000017500000000104513700154060020466 0ustar mizunomizunoSetup: $ . $TESTDIR/setup.sh $ unalias ag $ alias ag="$TESTDIR/../ag --noaffinity --nocolor --workers=1" $ printf "blah\n" > blah.txt $ printf "blah2\n" >> blah.txt $ printf "blah_OTHER\n" > other_file.txt $ printf "blah_OTHER\n" >> other_file.txt Count matches: $ ag --count --parallel blah | sort blah.txt:2 other_file.txt:2 Count stream matches: $ printf 'blah blah blah\n' | ag --count blah 3 Count stream matches per line (not very useful since it does not print zero): $ cat blah.txt | ag --count blah 1 1 the_silver_searcher-master/tests/empty_match.t0000644000175000017500000000103313700154060021645 0ustar mizunomizunoSetup. $ . $TESTDIR/setup.sh $ touch empty.txt $ printf 'foo\n' > nonempty.txt Zero-length match on an empty file should fail silently with return code 1 $ ag "^" empty.txt [1] A genuine zero-length match should succeed: $ ag "^" nonempty.txt 1:foo Empty files should be listed with --unrestricted --files-with-matches (-ul) $ ag -lu --stats | sed '$d' | sort # Remove the last line about timing which will differ 2 files contained matches 2 files searched 2 matches 4 bytes searched empty.txt nonempty.txt the_silver_searcher-master/tests/option_g.t0000644000175000017500000000023013700154060021147 0ustar mizunomizunoSetup: $ . $TESTDIR/setup.sh $ touch foobar Search for lines matching "hello" in test_vimgrep.txt: $ ag -g foobar foobar $ ag -g baz [1] the_silver_searcher-master/tests/negated_options.t0000644000175000017500000000173113700154060022522 0ustar mizunomizunoSetup: $ . "${TESTDIR}/setup.sh" Should accept both --no-