# HG changeset patch # User Ryoma SHINYA # Date 1282765715 -32400 # Node ID 4f3747c18585274fa906ffd58228d681a955f400 # Parent 22ad03d59b3f85bd7b85819daac3c54ba53d5887 add benchmark-result diff -r 22ad03d59b3f -r 4f3747c18585 fig6.eps --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fig6.eps Thu Aug 26 04:48:35 2010 +0900 @@ -0,0 +1,1092 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%BoundingBox: 36 35 549 175 +%%HiResBoundingBox: 36.000000 35.000000 549.000000 175.000000 +%..................................... +%%Creator: GPL Ghostscript 871 (epswrite) +%%CreationDate: 2010/08/26 03:18:22 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%EndComments +%%BeginProlog +% This copyright applies to everything between here and the %%EndProlog: +% Copyright (C) 2010 Artifex Software, Inc. All rights reserved. +%%BeginResource: procset GS_epswrite_2_0_1001 1.001 0 +/GS_epswrite_2_0_1001 80 dict dup begin +/PageSize 2 array def/setpagesize{ PageSize aload pop 3 index eq exch +4 index eq and{ pop pop pop}{ PageSize dup 1 +5 -1 roll put 0 4 -1 roll put dup null eq {false} {dup where} ifelse{ exch get exec} +{ pop/setpagedevice where +{ pop 1 dict dup /PageSize PageSize put setpagedevice} +{ /setpage where{ pop PageSize aload pop pageparams 3 {exch pop} repeat +setpage}if}ifelse}ifelse}ifelse} bind def +/!{bind def}bind def/#{load def}!/N/counttomark # +/rG{3{3 -1 roll 255 div}repeat setrgbcolor}!/G{255 div setgray}!/K{0 G}! +/r6{dup 3 -1 roll rG}!/r5{dup 3 1 roll rG}!/r3{dup rG}! +/w/setlinewidth #/J/setlinecap # +/j/setlinejoin #/M/setmiterlimit #/d/setdash #/i/setflat # +/m/moveto #/l/lineto #/c/rcurveto # +/p{N 2 idiv{N -2 roll rlineto}repeat}! +/P{N 0 gt{N -2 roll moveto p}if}! +/h{p closepath}!/H{P closepath}! +/lx{0 rlineto}!/ly{0 exch rlineto}!/v{0 0 6 2 roll c}!/y{2 copy c}! +/re{4 -2 roll m exch dup lx exch ly neg lx h}! +/^{3 index neg 3 index neg}! +/f{P fill}!/f*{P eofill}!/s{H stroke}!/S{P stroke}! +/q/gsave #/Q/grestore #/rf{re fill}! +/Y{P clip newpath}!/Y*{P eoclip newpath}!/rY{re Y}! +/|={pop exch 4 1 roll 1 array astore cvx 3 array astore cvx exch 1 index def exec}! +/|{exch string readstring |=}! +/+{dup type/nametype eq{2 index 7 add -3 bitshift 2 index mul}if}! +/@/currentfile #/${+ @ |}! +/B{{2 copy string{readstring pop}aload pop 4 array astore cvx +3 1 roll}repeat pop pop true}! +/Ix{[1 0 0 1 11 -2 roll exch neg exch neg]exch}! +/,{true exch Ix imagemask}!/If{false exch Ix imagemask}!/I{exch Ix image}! +/Ic{exch Ix false 3 colorimage}! +/F{/Columns counttomark 3 add -2 roll/Rows exch/K -1/BlackIs1 true>> +/CCITTFaxDecode filter}!/FX{< +681.227 539 9.50391 95.5664 re +f +721 538 112 100 @C +, +,6WT'$.*eQ4k$<)Ff2m(q4N@dHFKdDrp'@WJ(&ljI9Vl4a@tPYl)8tUgA:SEgA%lO>3iBk])V^^ +s/#bf^Xq*6?gI$]Y.hLDgA:.$V:P=flg(D!V:,@kl#aOB5AQ"`C>l:T+8WfaHRPLtTE~> +884.85 573.45 m +0 -6.79 -0.89 -13.22 -2.66 -19.28 c +-1.78 -6.06 -4.37 -11.79 -7.79 -17.16 c +-3.6 -5.74 -8.41 -11.1 -14.43 -16.07 c +-3.96 -3.28 -7.29 -5.58 -9.98 -6.9 c +-1.3 2.25 p +7.02 5.33 12.14 10.78 15.38 16.34 c +5.74 9.84 8.61 22.86 8.61 39.04 c +0 13.08 -1.32 23.77 -3.96 32.06 c +-3.69 11.71 -10.37 20.92 -20.03 27.62 c +1.78 2.26 p +7.2 -4.01 13.9 -10.07 20.1 -18.18 c +9.52 -12.49 14.29 -26.48 14.29 -41.97 c +f +899.23 592.59 m +0 3.28 2.31 5.42 6.93 6.43 c +7.31 1.59 12.75 3.55 16.32 5.88 c +-3.61 2.14 -9.12 4.17 -16.52 6.08 c +-4.48 1.14 -6.72 3.1 -6.72 5.88 c +0 1.55 0.48 2.76 1.44 3.63 c +0.96 0.86 2.07 1.3 3.35 1.3 c +1.87 0 4.29 -1.72 7.25 -5.16 c +2.96 -3.44 7 -6.64 12.1 -9.61 c +0 1.78 p +0 3.79 -0.61 7.57 -1.81 11.35 c +-1.21 3.79 -1.81 6.45 -1.81 8 c +0 1.78 0.49 3.13 1.47 4.07 c +0.98 0.93 2.16 1.4 3.52 1.4 c +1.59 0 2.81 -0.52 3.66 -1.55 c +0.84 -1.04 1.27 -2.34 1.27 -3.91 c +0 -1.04 -0.64 -3.48 -1.91 -7.32 c +-1.28 -3.84 -1.87 -8.45 -1.78 -13.8 c +3.75 2.64 6.03 4.27 6.86 4.91 c +0.82 0.64 1.8 1.57 2.95 2.8 c +3.29 3.52 5.34 5.57 6.14 6.16 c +0.8 0.59 1.91 0.89 3.32 0.89 c +1.37 0 2.53 -0.49 3.46 -1.47 c +0.94 -0.98 1.41 -2.17 1.41 -3.55 c +0 -2.82 -2.06 -4.65 -6.19 -5.5 c +-6.87 -1.43 -12.52 -3.55 -16.92 -6.36 c +1.16 -0.68 p +3.61 -2.14 8.91 -3.91 15.91 -5.31 c +4.02 -0.82 6.03 -2.79 6.03 -5.92 c +0 -1.68 -0.59 -2.92 -1.78 -3.71 c +-1.18 -0.8 -2.35 -1.19 -3.48 -1.19 c +-1.91 0 -4.51 1.94 -7.79 5.83 c +-3.28 3.89 -6.66 6.68 -10.12 8.39 c +-0.96 0.47 0 -0.96 p +0 -5.38 0.65 -9.86 1.95 -13.43 c +1.3 -3.58 1.95 -5.77 1.95 -6.59 c +0 -1.5 -0.51 -2.84 -1.54 -4 c +-1.02 -1.16 -2.36 -1.74 -4 -1.74 c +-1.5 0 -2.69 0.55 -3.55 1.64 c +-0.87 1.09 -1.3 2.41 -1.3 3.96 c +0 0.41 0.77 3.27 2.32 8.58 c +1.55 5.31 2.07 9.17 1.57 11.59 c +-0.21 0.96 p +-3.87 -2.14 -7.5 -5.12 -10.87 -8.95 c +-3.37 -3.83 -6.11 -5.74 -8.2 -5.74 c +-1.64 0 -2.86 0.48 -3.66 1.43 c +-0.8 0.96 -1.2 1.98 -1.2 3.08 c +f +992 527 83 124 @C +, +,Ar(Z4<4YmiQuZf*BFZLO>(F%%Lp7aDB">h\8L(\HZ7g.gV(5epYG66rSRX's8W+qkPlf#TRI>` +)HdN'*.`Z(&82,J%3V)^fi#mAIhc6V;a +1 i +255 G +1997.97 960 m +0 -114.88 -93.09 -207.97 -207.97 -207.97 c +-114.88 0 -207.97 93.09 -207.97 207.97 c +0 114.88 93.09 207.97 207.97 207.97 c +114.88 0 207.97 -93.09 207.97 -207.97 c +h +f +K +1997.97 960 m +0 -114.88 -93.09 -207.97 -207.97 -207.97 c +-114.88 0 -207.97 93.09 -207.97 207.97 c +0 114.88 93.09 207.97 207.97 207.97 c +114.88 0 207.97 -93.09 207.97 -207.97 c +h +1997.97 960 S +0.2 i +1743.32 916.31 m +1.09 0 2.56 0.18 4.4 0.55 c +1.84 0.36 3.56 0.98 5.15 1.85 c +2.18 1.18 3.49 2.23 3.92 3.14 c +0.43 0.91 0.65 2.62 0.65 5.13 c +0 28.85 p +0 3.6 -0.52 6.4 -1.57 8.41 c +-2.05 3.64 -5.91 5.47 -11.6 5.47 c +-6.46 0 -11.22 -2.68 -14.29 -8.04 c +-3.07 -5.36 -4.61 -11.47 -4.61 -18.35 c +0 -8.07 1.56 -14.59 4.67 -19.55 c +3.11 -4.97 7.54 -7.45 13.27 -7.45 c +h +1744.85 973.46 m +3.09 0 5.82 -0.43 8.18 -1.3 c +1.59 -0.55 4 -1.73 7.23 -3.55 c +7.63 4.51 p +0.41 0.18 0.73 0.3 0.96 0.34 c +0.23 -0.23 0.37 -0.39 0.41 -0.48 c +0.05 -0.09 0.07 -0.38 0.07 -0.88 c +0 -83.07 p +0 -2.41 0.43 -4.21 1.3 -5.4 c +1.32 -1.78 3.88 -2.85 7.66 -3.21 c +0 -1.91 -33.09 0 0 2.26 p +4.05 0.05 7.07 0.73 9.06 2.05 c +1.98 1.32 2.97 4.26 2.97 8.82 c +0 26.05 p +-3.18 -3.14 -5.94 -5.4 -8.26 -6.77 c +-3.82 -2.23 -8.12 -3.35 -12.9 -3.35 c +-5.69 0 -10.9 2.63 -15.63 7.89 c +-4.73 5.27 -7.1 13 -7.1 23.21 c +0 9.39 2.92 17.53 8.76 24.44 c +5.84 6.91 13.42 10.36 22.74 10.36 c +f +1818.5 911.6 m +6.7 0 11.3 3.66 13.81 11 c +2.5 7.33 3.76 17.94 3.76 31.83 c +0 11.07 -0.75 19.9 -2.25 26.5 c +-2.83 12.3 -8.11 18.45 -15.86 18.45 c +-7.75 0 -13.06 -6.33 -15.93 -18.99 c +-1.5 -6.74 -2.25 -15.62 -2.25 -26.64 c +0 -10.34 0.77 -18.61 2.32 -24.8 c +2.91 -11.57 8.38 -17.35 16.41 -17.35 c +h +1818.29 1003.06 m +10.48 0 18.62 -5.49 24.41 -16.48 c +4.6 -8.89 6.9 -19.09 6.9 -30.62 c +0 -9.07 -1.41 -17.61 -4.24 -25.63 c +-5.33 -15.09 -14.56 -22.63 -27.68 -22.63 c +-8.98 0 -16.36 4.08 -22.15 12.24 c +-6.2 8.7 -9.3 20.53 -9.3 35.48 c +0 11.76 2.07 21.88 6.22 30.35 c +5.61 11.53 14.22 17.3 25.84 17.3 c +f +1 i +255 G +3117.97 1500 m +0 -114.88 -93.09 -207.97 -207.97 -207.97 c +-114.88 0 -207.97 93.09 -207.97 207.97 c +0 114.88 93.09 207.97 207.97 207.97 c +114.88 0 207.97 -93.09 207.97 -207.97 c +h +f +K +3117.97 1500 m +0 -114.88 -93.09 -207.97 -207.97 -207.97 c +-114.88 0 -207.97 93.09 -207.97 207.97 c +0 114.88 93.09 207.97 207.97 207.97 c +114.88 0 207.97 -93.09 207.97 -207.97 c +h +3117.97 1500 S +0.2 i +2863.32 1456.31 m +1.09 0 2.56 0.18 4.4 0.55 c +1.84 0.36 3.56 0.98 5.15 1.85 c +2.18 1.18 3.49 2.23 3.92 3.14 c +0.43 0.91 0.65 2.62 0.65 5.13 c +0 28.85 p +0 3.6 -0.52 6.4 -1.57 8.41 c +-2.05 3.64 -5.91 5.47 -11.6 5.47 c +-6.46 0 -11.22 -2.68 -14.29 -8.04 c +-3.07 -5.36 -4.61 -11.47 -4.61 -18.35 c +0 -8.07 1.56 -14.59 4.67 -19.55 c +3.11 -4.97 7.54 -7.45 13.27 -7.45 c +h +2864.85 1513.46 m +3.09 0 5.82 -0.43 8.18 -1.3 c +1.59 -0.55 4 -1.73 7.23 -3.55 c +7.63 4.51 p +0.41 0.18 0.73 0.3 0.96 0.34 c +0.23 -0.23 0.37 -0.39 0.41 -0.48 c +0.05 -0.09 0.07 -0.38 0.07 -0.88 c +0 -83.07 p +0 -2.41 0.43 -4.21 1.3 -5.4 c +1.32 -1.78 3.88 -2.85 7.66 -3.21 c +0 -1.91 -33.09 0 0 2.26 p +4.05 0.05 7.07 0.73 9.06 2.05 c +1.98 1.32 2.97 4.26 2.97 8.82 c +0 26.05 p +-3.18 -3.14 -5.94 -5.4 -8.26 -6.77 c +-3.82 -2.23 -8.12 -3.35 -12.9 -3.35 c +-5.69 0 -10.9 2.63 -15.63 7.89 c +-4.73 5.27 -7.1 13 -7.1 23.21 c +0 9.39 2.92 17.53 8.76 24.44 c +5.84 6.91 13.42 10.36 22.74 10.36 c +f +2909.17 1449 0 1.57 P +16.68 17.32 28 30.03 33.98 38.14 c +5.97 8.11 8.95 16.02 8.95 23.72 c +0 6.74 -1.82 11.88 -5.47 15.41 c +-3.64 3.53 -8 5.3 -13.05 5.3 c +-6.25 0 -11.3 -2.28 -15.18 -6.84 c +-2.14 -2.5 -4.2 -6.36 -6.15 -11.55 c +-2.94 0.61 p +2.28 10.48 6.14 17.76 11.59 21.84 c +5.45 4.08 11.29 6.12 17.54 6.12 c +7.7 0 13.93 -2.43 18.7 -7.28 c +4.76 -4.85 7.14 -10.79 7.14 -17.81 c +0 -7.47 -2.57 -14.68 -7.72 -21.6 c +-5.15 -6.93 -16.34 -19.25 -33.57 -36.98 c +31.38 0 p +4.38 0 7.45 0.52 9.23 1.57 c +1.78 1.05 3.79 3.6 6.02 7.66 c +1.78 -0.82 -7.59 -19.07 -54.62 0 p f +1 i +1980 1051.6 m +177.77 85.74 445.66 214.88 648.32 312.58 c +S +2613.79 1396.05 105.27 11.88 -74.88 -74.92 H +f +2613.79 1396.05 105.27 11.88 -74.88 -74.92 H +2613.79 1396.05 S +0.2 i +2197.1 1418.61 m +2.14 0 3.54 -0.58 4.2 -1.74 c +0.66 -1.16 0.99 -2.75 0.99 -4.75 c +0 -0.32 -0.01 -0.64 -0.04 -0.96 c +-0.02 -0.32 -0.12 -1.25 -0.3 -2.8 c +-3.42 -30.08 -2.39 0 -3.55 27.82 p +-0.14 1.14 -0.26 2.26 -0.37 3.35 c +-0.11 1.09 -0.17 2.21 -0.17 3.35 c +0 1.41 0.31 2.73 0.92 3.96 c +0.62 1.23 2 1.85 4.14 1.85 c +f +2218.62 1418.61 9.37 0 38.21 -94.61 -9.23 0 -38.35 94.61 f +2263.35 1386.82 29.05 0 0 -1.91 P +-1.73 -0.04 -3.2 -0.29 -4.41 -0.71 c +-1.21 -0.43 -1.81 -1.34 -1.81 -2.7 c +0 -0.87 1.21 -3.3 3.63 -7.31 c +1.27 -2.1 2.89 -4.67 4.85 -7.73 c +2.69 3.69 4.7 6.59 6.02 8.68 c +2.23 3.37 3.35 5.56 3.35 6.56 c +0 1.18 -0.48 1.98 -1.44 2.39 c +-0.96 0.41 -2.3 0.68 -4.03 0.82 c +0 1.91 22.01 0 ^ p +-2.32 -0.18 -4.49 -0.81 -6.5 -1.88 c +-2 -1.07 -3.62 -2.5 -4.85 -4.27 c +-11.69 -16.88 18.05 -27.34 p +2.32 -3.55 4.3 -5.86 5.91 -6.91 c +1.62 -1.05 3.48 -1.62 5.57 -1.71 c +0 -1.91 -28.23 0 ^ 1.98 0.14 p +1.05 0.09 1.93 0.41 2.63 0.96 c +0.71 0.55 1.06 1.23 1.06 2.05 c +0 0.86 -0.87 2.78 -2.6 5.74 c +-0.82 1.46 -2.05 3.44 -3.69 5.95 c +-0.77 1.23 -1.93 2.94 -3.45 5.13 c +-1.53 2.19 -2.81 4.05 -3.86 5.61 c +-11.01 -17.16 p +-1.32 -2.05 -2.14 -3.42 -2.46 -4.1 c +-0.32 -0.68 -0.48 -1.25 -0.48 -1.71 c +0 -0.87 0.35 -1.44 1.06 -1.71 c +0.71 -0.27 2.24 -0.57 4.61 -0.89 c +0 -1.91 -20.23 0 ^ p +2.46 0.5 4.29 1.14 5.47 1.91 c +1.18 0.77 2.76 2.57 4.72 5.4 c +15.93 23.18 -13.12 19.89 p +-2.64 3.96 -4.46 6.31 -5.47 7.04 c +-1 0.73 -3.19 1.25 -6.56 1.57 c +0 1.91 p f +2367.06 1388.12 m +6.43 0 12.05 -2.22 16.89 -6.66 c +4.83 -4.45 7.25 -10.75 7.25 -18.9 c +-43.41 0 p +0.46 -10.55 2.85 -18.24 7.18 -23.05 c +4.33 -4.82 9.45 -7.23 15.38 -7.23 c +4.79 0 8.82 1.25 12.1 3.75 c +3.28 2.5 6.31 6.05 9.09 10.64 c +2.39 -0.82 p +-1.87 -5.8 -5.37 -11.16 -10.5 -16.09 c +-5.12 -4.93 -11.4 -7.4 -18.83 -7.4 c +-8.57 0 -15.19 3.24 -19.86 9.71 c +-4.67 6.47 -7 13.92 -7 22.35 c +0 9.16 2.71 17.07 8.13 23.72 c +5.42 6.65 12.49 9.98 21.19 9.98 c +h +2363.09 1383.13 m +-5.2 0 -9.16 -2.3 -11.89 -6.9 c +-1.46 -2.46 -2.51 -5.56 -3.14 -9.3 c +28.85 0 p +-0.5 4.55 -1.37 7.95 -2.6 10.18 c +-2.23 4.01 -5.97 6.02 -11.21 6.02 c +f +2405.87 1335.89 m +2.51 0 5.82 -1.31 9.95 -3.93 c +4.13 -2.62 7.63 -3.93 10.5 -3.93 c +6.38 0 11.12 2.16 14.22 6.47 c +3.1 4.31 4.65 9 4.65 14.07 c +0 4.88 -1.25 9.17 -3.76 12.87 c +-4.24 6.25 -11.39 9.38 -21.46 9.38 c +-0.59 0 -1.16 -0.01 -1.71 -0.04 c +-0.55 -0.02 -1.19 -0.08 -1.91 -0.17 c +-0.14 1.78 p +7.29 2.64 13.03 5.67 17.23 9.09 c +4.19 3.42 6.29 7.93 6.29 13.54 c +0 4.97 -1.65 8.75 -4.96 11.35 c +-3.3 2.6 -7.07 3.9 -11.31 3.9 c +-5.02 0 -9.43 -1.85 -13.26 -5.54 c +-2.1 -2 -4.36 -5.1 -6.77 -9.3 c +-2.12 0.48 p +1.82 6.93 5.21 12.46 10.18 16.61 c +4.97 4.15 10.71 6.22 17.23 6.22 c +6.97 0 12.36 -1.91 16.17 -5.74 c +3.8 -3.83 5.71 -8.25 5.71 -13.26 c +0 -4.42 -1.57 -8.48 -4.71 -12.17 c +-1.78 -2.1 -4.54 -4.45 -8.27 -7.04 c +4.38 -1.87 7.88 -4.05 10.53 -6.56 c +4.97 -4.79 7.45 -10.85 7.45 -18.18 c +0 -8.66 -3.41 -16.29 -10.22 -22.9 c +-6.81 -6.61 -16.51 -9.91 -29.09 -9.91 c +-5.61 0 -9.54 0.83 -11.79 2.5 c +-2.25 1.66 -3.38 3.45 -3.38 5.37 c +0 1.18 0.38 2.32 1.13 3.42 c +0.75 1.09 1.97 1.64 3.66 1.64 c +f +2482.1 1418.61 m +2.14 0 3.54 -0.58 4.2 -1.74 c +0.66 -1.16 0.99 -2.75 0.99 -4.75 c +0 -0.32 -0.01 -0.64 -0.04 -0.96 c +-0.02 -0.32 -0.12 -1.25 -0.3 -2.8 c +-3.42 -30.08 -2.39 0 -3.55 27.82 p +-0.14 1.14 -0.26 2.26 -0.37 3.35 c +-0.11 1.09 -0.17 2.21 -0.17 3.35 c +0 1.41 0.31 2.73 0.92 3.96 c +0.62 1.23 2 1.85 4.14 1.85 c +f +1 i +255 G +4237.97 960 m +0 -114.88 -93.09 -207.97 -207.97 -207.97 c +-114.88 0 -207.97 93.09 -207.97 207.97 c +0 114.88 93.09 207.97 207.97 207.97 c +114.88 0 207.97 -93.09 207.97 -207.97 c +h +f +K +4237.97 960 m +0 -114.88 -93.09 -207.97 -207.97 -207.97 c +-114.88 0 -207.97 93.09 -207.97 207.97 c +0 114.88 93.09 207.97 207.97 207.97 c +114.88 0 207.97 -93.09 207.97 -207.97 c +h +4237.97 960 S +0.2 i +3983.32 916.31 m +1.09 0 2.56 0.18 4.4 0.55 c +1.84 0.36 3.56 0.98 5.15 1.85 c +2.18 1.18 3.49 2.23 3.92 3.14 c +0.43 0.91 0.65 2.62 0.65 5.13 c +0 28.85 p +0 3.6 -0.52 6.4 -1.57 8.41 c +-2.05 3.64 -5.91 5.47 -11.6 5.47 c +-6.46 0 -11.22 -2.68 -14.29 -8.04 c +-3.07 -5.36 -4.61 -11.47 -4.61 -18.35 c +0 -8.07 1.56 -14.59 4.67 -19.55 c +3.11 -4.97 7.54 -7.45 13.27 -7.45 c +h +3984.85 973.46 m +3.09 0 5.82 -0.43 8.18 -1.3 c +1.59 -0.55 4 -1.73 7.23 -3.55 c +7.63 4.51 p +0.41 0.18 0.73 0.3 0.96 0.34 c +0.23 -0.23 0.37 -0.39 0.41 -0.48 c +0.05 -0.09 0.07 -0.38 0.07 -0.88 c +0 -83.07 p +0 -2.41 0.43 -4.21 1.3 -5.4 c +1.32 -1.78 3.88 -2.85 7.66 -3.21 c +0 -1.91 -33.09 0 0 2.26 p +4.05 0.05 7.07 0.73 9.06 2.05 c +1.98 1.32 2.97 4.26 2.97 8.82 c +0 26.05 p +-3.18 -3.14 -5.94 -5.4 -8.26 -6.77 c +-3.82 -2.23 -8.12 -3.35 -12.9 -3.35 c +-5.69 0 -10.9 2.63 -15.63 7.89 c +-4.73 5.27 -7.1 13 -7.1 23.21 c +0 9.39 2.92 17.53 8.76 24.44 c +5.84 6.91 13.42 10.36 22.74 10.36 c +f +4066.43 1002.93 m +0.18 -0.23 0.28 -0.4 0.3 -0.51 c +0.02 -0.12 0.04 -0.38 0.04 -0.79 c +0 -82.3 p +0 -3.51 0.94 -5.74 2.82 -6.7 c +1.88 -0.96 5.38 -1.53 10.52 -1.71 c +0 -1.91 -38.62 0 0 2.05 p +5.52 0.27 9.11 1.02 10.8 2.25 c +1.69 1.23 2.53 3.9 2.53 8 c +0 63.3 p +0 2.19 -0.27 3.85 -0.82 4.99 c +-0.55 1.14 -1.73 1.71 -3.55 1.71 c +-1.19 0 -2.73 -0.33 -4.62 -0.99 c +-1.89 -0.66 -3.66 -1.36 -5.3 -2.09 c +0 1.91 25.09 12.79 0.82 0 p f +1 i +3818.2 960 m +-396.91 0 -1254.18 0 -1716.91 0 c +S +2100.74 925 -100 35 100 35 H +f +2100.74 925 -100 35 100 35 H +2100.74 925 S +0.2 i +2752.1 1078.61 m +2.14 0 3.54 -0.58 4.2 -1.74 c +0.66 -1.16 0.99 -2.75 0.99 -4.75 c +0 -0.32 -0.01 -0.64 -0.04 -0.96 c +-0.02 -0.32 -0.12 -1.25 -0.3 -2.8 c +-3.42 -30.08 -2.39 0 -3.55 27.82 p +-0.14 1.14 -0.26 2.26 -0.37 3.35 c +-0.11 1.09 -0.17 2.21 -0.17 3.35 c +0 1.41 0.31 2.73 0.92 3.96 c +0.62 1.23 2 1.85 4.14 1.85 c +f +2773.62 1078.61 9.37 0 38.21 -94.61 -9.23 0 -38.35 94.61 f +2818.35 1046.82 29.05 0 0 -1.91 P +-1.73 -0.04 -3.2 -0.29 -4.41 -0.71 c +-1.21 -0.43 -1.81 -1.34 -1.81 -2.7 c +0 -0.87 1.21 -3.3 3.63 -7.31 c +1.27 -2.1 2.89 -4.67 4.85 -7.73 c +2.69 3.69 4.7 6.59 6.02 8.68 c +2.23 3.37 3.35 5.56 3.35 6.56 c +0 1.18 -0.48 1.98 -1.44 2.39 c +-0.96 0.41 -2.3 0.68 -4.03 0.82 c +0 1.91 22.01 0 ^ p +-2.32 -0.18 -4.49 -0.81 -6.5 -1.88 c +-2 -1.07 -3.62 -2.5 -4.85 -4.27 c +-11.69 -16.88 18.05 -27.34 p +2.32 -3.55 4.3 -5.86 5.91 -6.91 c +1.62 -1.05 3.48 -1.62 5.57 -1.71 c +0 -1.91 -28.23 0 ^ 1.98 0.14 p +1.05 0.09 1.93 0.41 2.63 0.96 c +0.71 0.55 1.06 1.23 1.06 2.05 c +0 0.86 -0.87 2.78 -2.6 5.74 c +-0.82 1.46 -2.05 3.44 -3.69 5.95 c +-0.77 1.23 -1.93 2.94 -3.45 5.13 c +-1.53 2.19 -2.81 4.05 -3.86 5.61 c +-11.01 -17.16 p +-1.32 -2.05 -2.14 -3.42 -2.46 -4.1 c +-0.32 -0.68 -0.48 -1.25 -0.48 -1.71 c +0 -0.87 0.35 -1.44 1.06 -1.71 c +0.71 -0.27 2.24 -0.57 4.61 -0.89 c +0 -1.91 -20.23 0 ^ p +2.46 0.5 4.29 1.14 5.47 1.91 c +1.18 0.77 2.76 2.57 4.72 5.4 c +15.93 23.18 -13.12 19.89 p +-2.64 3.96 -4.46 6.31 -5.47 7.04 c +-1 0.73 -3.19 1.25 -6.56 1.57 c +0 1.91 p f +2925.2 986.39 m +5.24 0 9.21 1.46 11.89 4.37 c +2.69 2.91 4.04 6.55 4.04 10.92 c +0 4.96 -1.43 8.98 -4.27 12.05 c +-2.85 3.07 -8.7 7.72 -17.54 13.96 c +-3.92 -2.46 -6.77 -5.64 -8.54 -9.55 c +-1.78 -3.91 -2.67 -7.69 -2.67 -11.33 c +0 -6.23 1.61 -11.19 4.82 -14.88 c +3.21 -3.68 7.3 -5.53 12.27 -5.53 c +h +2926.09 1038.54 m +4.28 3 7.25 5.53 8.89 7.58 c +2.82 3.5 4.24 7.73 4.24 12.7 c +0 4.32 -1.34 8 -4 11.02 c +-2.67 3.02 -6.71 4.54 -12.13 4.54 c +-4.2 0 -7.66 -1.32 -10.39 -3.96 c +-2.73 -2.64 -4.1 -5.85 -4.1 -9.62 c +0 -4.28 1.61 -8.25 4.82 -11.91 c +3.21 -3.66 7.44 -7.11 12.68 -10.34 c +h +2915.57 1030.62 m +-6.02 4.83 -10.12 8.68 -12.3 11.55 c +-3.37 4.38 -5.06 9.21 -5.06 14.49 c +0 6.02 2.49 11.12 7.48 15.31 c +4.99 4.2 11.47 6.29 19.45 6.29 c +7.34 0 13.17 -1.98 17.5 -5.95 c +4.33 -3.97 6.49 -8.57 6.49 -13.81 c +0 -5.34 -2.21 -10.12 -6.63 -14.36 c +-2.55 -2.41 -6.68 -5.2 -12.37 -8.34 c +7.75 -5.74 13.3 -10.75 16.65 -15 c +3.35 -4.26 5.02 -9.29 5.02 -15.07 c +0 -6.56 -2.47 -12.08 -7.42 -16.54 c +-4.95 -4.46 -11.57 -6.7 -19.86 -6.7 c +-7.43 0 -13.8 2.06 -19.11 6.19 c +-5.31 4.13 -7.96 9.56 -7.96 16.3 c +0 5.79 1.85 10.89 5.54 15.31 c +2.41 2.87 6.61 6.31 12.58 10.32 c +f +2969.17 984 0 1.57 P +16.68 17.32 28 30.03 33.98 38.14 c +5.97 8.11 8.95 16.02 8.95 23.72 c +0 6.74 -1.82 11.88 -5.47 15.41 c +-3.64 3.53 -8 5.3 -13.05 5.3 c +-6.25 0 -11.3 -2.28 -15.18 -6.84 c +-2.14 -2.5 -4.2 -6.36 -6.15 -11.55 c +-2.94 0.61 p +2.28 10.48 6.14 17.76 11.59 21.84 c +5.45 4.08 11.29 6.12 17.54 6.12 c +7.7 0 13.93 -2.43 18.7 -7.28 c +4.76 -4.85 7.14 -10.79 7.14 -17.81 c +0 -7.47 -2.57 -14.68 -7.72 -21.6 c +-5.15 -6.93 -16.34 -19.25 -33.57 -36.98 c +31.38 0 p +4.38 0 7.45 0.52 9.23 1.57 c +1.78 1.05 3.79 3.6 6.02 7.66 c +1.78 -0.82 -7.59 -19.07 -54.62 0 p f +3052.1 1078.61 m +2.14 0 3.54 -0.58 4.2 -1.74 c +0.66 -1.16 0.99 -2.75 0.99 -4.75 c +0 -0.32 -0.01 -0.64 -0.04 -0.96 c +-0.02 -0.32 -0.12 -1.25 -0.3 -2.8 c +-3.42 -30.08 -2.39 0 -3.55 27.82 p +-0.14 1.14 -0.26 2.26 -0.37 3.35 c +-0.11 1.09 -0.17 2.21 -0.17 3.35 c +0 1.41 0.31 2.73 0.92 3.96 c +0.62 1.23 2 1.85 4.14 1.85 c +f +1 i +3825.9 904.8 m +-183.2 -46.52 -460.28 -109.45 -705.9 -134.8 c +-185.66 -19.18 -234.34 -19.18 -420 0 c +-205.31 21.21 -432.62 68.63 -608.71 110.82 c +S +2082.81 846.88 -88.71 57.92 105.47 10 H +f +2082.81 846.88 -88.71 57.92 105.47 10 H +2082.81 846.88 S +0.2 i +2752.1 888.61 m +2.14 0 3.54 -0.58 4.2 -1.74 c +0.66 -1.16 0.99 -2.75 0.99 -4.75 c +0 -0.32 -0.01 -0.64 -0.04 -0.96 c +-0.02 -0.32 -0.12 -1.25 -0.3 -2.8 c +-3.42 -30.08 -2.39 0 -3.55 27.82 p +-0.14 1.14 -0.26 2.26 -0.37 3.35 c +-0.11 1.09 -0.17 2.21 -0.17 3.35 c +0 1.41 0.31 2.73 0.92 3.96 c +0.62 1.23 2 1.85 4.14 1.85 c +f +2773.62 888.61 9.37 0 38.21 -94.61 -9.23 0 -38.35 94.61 f +2818.35 856.82 29.05 0 0 -1.91 P +-1.73 -0.04 -3.2 -0.29 -4.41 -0.71 c +-1.21 -0.43 -1.81 -1.34 -1.81 -2.7 c +0 -0.87 1.21 -3.3 3.63 -7.31 c +1.27 -2.1 2.89 -4.67 4.85 -7.73 c +2.69 3.69 4.7 6.59 6.02 8.68 c +2.23 3.37 3.35 5.56 3.35 6.56 c +0 1.18 -0.48 1.98 -1.44 2.39 c +-0.96 0.41 -2.3 0.68 -4.03 0.82 c +0 1.91 22.01 0 ^ p +-2.32 -0.18 -4.49 -0.81 -6.5 -1.88 c +-2 -1.07 -3.62 -2.5 -4.85 -4.27 c +-11.69 -16.88 18.05 -27.34 p +2.32 -3.55 4.3 -5.86 5.91 -6.91 c +1.62 -1.05 3.48 -1.62 5.57 -1.71 c +0 -1.91 -28.23 0 ^ 1.98 0.14 p +1.05 0.09 1.93 0.41 2.63 0.96 c +0.71 0.55 1.06 1.23 1.06 2.05 c +0 0.86 -0.87 2.78 -2.6 5.74 c +-0.82 1.46 -2.05 3.44 -3.69 5.95 c +-0.77 1.23 -1.93 2.94 -3.45 5.13 c +-1.53 2.19 -2.81 4.05 -3.86 5.61 c +-11.01 -17.16 p +-1.32 -2.05 -2.14 -3.42 -2.46 -4.1 c +-0.32 -0.68 -0.48 -1.25 -0.48 -1.71 c +0 -0.87 0.35 -1.44 1.06 -1.71 c +0.71 -0.27 2.24 -0.57 4.61 -0.89 c +0 -1.91 -20.23 0 ^ p +2.46 0.5 4.29 1.14 5.47 1.91 c +1.18 0.77 2.76 2.57 4.72 5.4 c +15.93 23.18 -13.12 19.89 p +-2.64 3.96 -4.46 6.31 -5.47 7.04 c +-1 0.73 -3.19 1.25 -6.56 1.57 c +0 1.91 p f +2925.2 796.39 m +5.24 0 9.21 1.46 11.89 4.37 c +2.69 2.91 4.04 6.55 4.04 10.92 c +0 4.96 -1.43 8.98 -4.27 12.05 c +-2.85 3.07 -8.7 7.72 -17.54 13.96 c +-3.92 -2.46 -6.77 -5.64 -8.54 -9.55 c +-1.78 -3.91 -2.67 -7.69 -2.67 -11.33 c +0 -6.23 1.61 -11.19 4.82 -14.88 c +3.21 -3.68 7.3 -5.53 12.27 -5.53 c +h +2926.09 848.54 m +4.28 3 7.25 5.53 8.89 7.58 c +2.82 3.5 4.24 7.73 4.24 12.7 c +0 4.32 -1.34 8 -4 11.02 c +-2.67 3.02 -6.71 4.54 -12.13 4.54 c +-4.2 0 -7.66 -1.32 -10.39 -3.96 c +-2.73 -2.64 -4.1 -5.85 -4.1 -9.62 c +0 -4.28 1.61 -8.25 4.82 -11.91 c +3.21 -3.66 7.44 -7.11 12.68 -10.34 c +h +2915.57 840.62 m +-6.02 4.83 -10.12 8.68 -12.3 11.55 c +-3.37 4.38 -5.06 9.21 -5.06 14.49 c +0 6.02 2.49 11.12 7.48 15.31 c +4.99 4.2 11.47 6.29 19.45 6.29 c +7.34 0 13.17 -1.98 17.5 -5.95 c +4.33 -3.97 6.49 -8.57 6.49 -13.81 c +0 -5.34 -2.21 -10.12 -6.63 -14.36 c +-2.55 -2.41 -6.68 -5.2 -12.37 -8.34 c +7.75 -5.74 13.3 -10.75 16.65 -15 c +3.35 -4.26 5.02 -9.29 5.02 -15.07 c +0 -6.56 -2.47 -12.08 -7.42 -16.54 c +-4.95 -4.46 -11.57 -6.7 -19.86 -6.7 c +-7.43 0 -13.8 2.06 -19.11 6.19 c +-5.31 4.13 -7.96 9.56 -7.96 16.3 c +0 5.79 1.85 10.89 5.54 15.31 c +2.41 2.87 6.61 6.31 12.58 10.32 c +f +3005.81 826.4 0 47.44 -33.56 -47.44 33.56 0 H +2966.57 826.4 43.75 61.52 6.5 0 0 -61.52 14.29 0 0 -9.09 ^ 0 -23.31 +-10.87 0 ^ -39.37 0 0 9.09 f +3052.1 888.61 m +2.14 0 3.54 -0.58 4.2 -1.74 c +0.66 -1.16 0.99 -2.75 0.99 -4.75 c +0 -0.32 -0.01 -0.64 -0.04 -0.96 c +-0.02 -0.32 -0.12 -1.25 -0.3 -2.8 c +-3.42 -30.08 -2.39 0 -3.55 27.82 p +-0.14 1.14 -0.26 2.26 -0.37 3.35 c +-0.11 1.09 -0.17 2.21 -0.17 3.35 c +0 1.41 0.31 2.73 0.92 3.96 c +0.62 1.23 2 1.85 4.14 1.85 c +f +1 i +255 G +5397.97 960 m +0 -114.88 -93.09 -207.97 -207.97 -207.97 c +-114.88 0 -207.97 93.09 -207.97 207.97 c +0 114.88 93.09 207.97 207.97 207.97 c +114.88 0 207.97 -93.09 207.97 -207.97 c +h +f +K +5397.97 960 m +0 -114.88 -93.09 -207.97 -207.97 -207.97 c +-114.88 0 -207.97 93.09 -207.97 207.97 c +0 114.88 93.09 207.97 207.97 207.97 c +114.88 0 207.97 -93.09 207.97 -207.97 c +h +5397.97 960 S +5437.97 960 m +0 -136.95 -111.02 -247.97 -247.97 -247.97 c +-136.95 0 -247.97 111.02 -247.97 247.97 c +0 136.95 111.02 247.97 247.97 247.97 c +136.95 0 247.97 -111.02 247.97 -247.97 c +h +5437.97 960 S +0.2 i +5143.32 916.31 m +1.09 0 2.56 0.18 4.4 0.55 c +1.84 0.36 3.56 0.98 5.15 1.85 c +2.18 1.18 3.49 2.23 3.92 3.14 c +0.43 0.91 0.65 2.62 0.65 5.13 c +0 28.85 p +0 3.6 -0.52 6.4 -1.57 8.41 c +-2.05 3.64 -5.91 5.47 -11.6 5.47 c +-6.46 0 -11.22 -2.68 -14.29 -8.04 c +-3.07 -5.36 -4.61 -11.47 -4.61 -18.35 c +0 -8.07 1.56 -14.59 4.67 -19.55 c +3.11 -4.97 7.54 -7.45 13.27 -7.45 c +h +5144.85 973.46 m +3.09 0 5.82 -0.43 8.18 -1.3 c +1.59 -0.55 4 -1.73 7.23 -3.55 c +7.63 4.51 p +0.41 0.18 0.73 0.3 0.96 0.34 c +0.23 -0.23 0.37 -0.39 0.41 -0.48 c +0.05 -0.09 0.07 -0.38 0.07 -0.88 c +0 -83.07 p +0 -2.41 0.43 -4.21 1.3 -5.4 c +1.32 -1.78 3.88 -2.85 7.66 -3.21 c +0 -1.91 -33.09 0 0 2.26 p +4.05 0.05 7.07 0.73 9.06 2.05 c +1.98 1.32 2.97 4.26 2.97 8.82 c +0 26.05 p +-3.18 -3.14 -5.94 -5.4 -8.26 -6.77 c +-3.82 -2.23 -8.12 -3.35 -12.9 -3.35 c +-5.69 0 -10.9 2.63 -15.63 7.89 c +-4.73 5.27 -7.1 13 -7.1 23.21 c +0 9.39 2.92 17.53 8.76 24.44 c +5.84 6.91 13.42 10.36 22.74 10.36 c +f +5195.87 920.89 m +2.51 0 5.82 -1.31 9.95 -3.93 c +4.13 -2.62 7.63 -3.93 10.5 -3.93 c +6.38 0 11.12 2.16 14.22 6.47 c +3.1 4.31 4.65 9 4.65 14.07 c +0 4.88 -1.25 9.17 -3.76 12.87 c +-4.24 6.25 -11.39 9.38 -21.46 9.38 c +-0.59 0 -1.16 -0.01 -1.71 -0.04 c +-0.55 -0.02 -1.19 -0.08 -1.91 -0.17 c +-0.14 1.78 p +7.29 2.64 13.03 5.67 17.23 9.09 c +4.19 3.42 6.29 7.93 6.29 13.54 c +0 4.97 -1.65 8.75 -4.96 11.35 c +-3.3 2.6 -7.07 3.9 -11.31 3.9 c +-5.02 0 -9.43 -1.85 -13.26 -5.54 c +-2.1 -2 -4.36 -5.1 -6.77 -9.3 c +-2.12 0.48 p +1.82 6.93 5.21 12.46 10.18 16.61 c +4.97 4.15 10.71 6.22 17.23 6.22 c +6.97 0 12.36 -1.91 16.17 -5.74 c +3.8 -3.83 5.71 -8.25 5.71 -13.26 c +0 -4.42 -1.57 -8.48 -4.71 -12.17 c +-1.78 -2.1 -4.54 -4.45 -8.27 -7.04 c +4.38 -1.87 7.88 -4.05 10.53 -6.56 c +4.97 -4.79 7.45 -10.85 7.45 -18.18 c +0 -8.66 -3.41 -16.29 -10.22 -22.9 c +-6.81 -6.61 -16.51 -9.91 -29.09 -9.91 c +-5.61 0 -9.54 0.83 -11.79 2.5 c +-2.25 1.66 -3.38 3.45 -3.38 5.37 c +0 1.18 0.38 2.32 1.13 3.42 c +0.75 1.09 1.97 1.64 3.66 1.64 c +f +1 i +4240.08 960 m +166.01 0 401.44 0 596.4 0 c +S +4837.03 995 100 -35 -100 -35 H +f +4837.03 995 100 -35 -100 -35 H +4837.03 995 S +0.2 i +4432.1 1078.61 m +2.14 0 3.54 -0.58 4.2 -1.74 c +0.66 -1.16 0.99 -2.75 0.99 -4.75 c +0 -0.32 -0.01 -0.64 -0.04 -0.96 c +-0.02 -0.32 -0.12 -1.25 -0.3 -2.8 c +-3.42 -30.08 -2.39 0 -3.55 27.82 p +-0.14 1.14 -0.26 2.26 -0.37 3.35 c +-0.11 1.09 -0.17 2.21 -0.17 3.35 c +0 1.41 0.31 2.73 0.92 3.96 c +0.62 1.23 2 1.85 4.14 1.85 c +f +4453.62 1078.61 9.37 0 38.21 -94.61 -9.23 0 -38.35 94.61 f +4498.35 1046.82 29.05 0 0 -1.91 P +-1.73 -0.04 -3.2 -0.29 -4.41 -0.71 c +-1.21 -0.43 -1.81 -1.34 -1.81 -2.7 c +0 -0.87 1.21 -3.3 3.63 -7.31 c +1.27 -2.1 2.89 -4.67 4.85 -7.73 c +2.69 3.69 4.7 6.59 6.02 8.68 c +2.23 3.37 3.35 5.56 3.35 6.56 c +0 1.18 -0.48 1.98 -1.44 2.39 c +-0.96 0.41 -2.3 0.68 -4.03 0.82 c +0 1.91 22.01 0 ^ p +-2.32 -0.18 -4.49 -0.81 -6.5 -1.88 c +-2 -1.07 -3.62 -2.5 -4.85 -4.27 c +-11.69 -16.88 18.05 -27.34 p +2.32 -3.55 4.3 -5.86 5.91 -6.91 c +1.62 -1.05 3.48 -1.62 5.57 -1.71 c +0 -1.91 -28.23 0 ^ 1.98 0.14 p +1.05 0.09 1.93 0.41 2.63 0.96 c +0.71 0.55 1.06 1.23 1.06 2.05 c +0 0.86 -0.87 2.78 -2.6 5.74 c +-0.82 1.46 -2.05 3.44 -3.69 5.95 c +-0.77 1.23 -1.93 2.94 -3.45 5.13 c +-1.53 2.19 -2.81 4.05 -3.86 5.61 c +-11.01 -17.16 p +-1.32 -2.05 -2.14 -3.42 -2.46 -4.1 c +-0.32 -0.68 -0.48 -1.25 -0.48 -1.71 c +0 -0.87 0.35 -1.44 1.06 -1.71 c +0.71 -0.27 2.24 -0.57 4.61 -0.89 c +0 -1.91 -20.23 0 ^ p +2.46 0.5 4.29 1.14 5.47 1.91 c +1.18 0.77 2.76 2.57 4.72 5.4 c +15.93 23.18 -13.12 19.89 p +-2.64 3.96 -4.46 6.31 -5.47 7.04 c +-1 0.73 -3.19 1.25 -6.56 1.57 c +0 1.91 p f +4605.2 986.39 m +5.24 0 9.21 1.46 11.89 4.37 c +2.69 2.91 4.04 6.55 4.04 10.92 c +0 4.96 -1.43 8.98 -4.27 12.05 c +-2.85 3.07 -8.7 7.72 -17.54 13.96 c +-3.92 -2.46 -6.77 -5.64 -8.54 -9.55 c +-1.78 -3.91 -2.67 -7.69 -2.67 -11.33 c +0 -6.23 1.61 -11.19 4.82 -14.88 c +3.21 -3.68 7.3 -5.53 12.27 -5.53 c +h +4606.09 1038.54 m +4.28 3 7.25 5.53 8.89 7.58 c +2.82 3.5 4.24 7.73 4.24 12.7 c +0 4.32 -1.34 8 -4 11.02 c +-2.67 3.02 -6.71 4.54 -12.13 4.54 c +-4.2 0 -7.66 -1.32 -10.39 -3.96 c +-2.73 -2.64 -4.1 -5.85 -4.1 -9.62 c +0 -4.28 1.61 -8.25 4.82 -11.91 c +3.21 -3.66 7.44 -7.11 12.68 -10.34 c +h +4595.57 1030.62 m +-6.02 4.83 -10.12 8.68 -12.3 11.55 c +-3.37 4.38 -5.06 9.21 -5.06 14.49 c +0 6.02 2.49 11.12 7.48 15.31 c +4.99 4.2 11.47 6.29 19.45 6.29 c +7.34 0 13.17 -1.98 17.5 -5.95 c +4.33 -3.97 6.49 -8.57 6.49 -13.81 c +0 -5.34 -2.21 -10.12 -6.63 -14.36 c +-2.55 -2.41 -6.68 -5.2 -12.37 -8.34 c +7.75 -5.74 13.3 -10.75 16.65 -15 c +3.35 -4.26 5.02 -9.29 5.02 -15.07 c +0 -6.56 -2.47 -12.08 -7.42 -16.54 c +-4.95 -4.46 -11.57 -6.7 -19.86 -6.7 c +-7.43 0 -13.8 2.06 -19.11 6.19 c +-5.31 4.13 -7.96 9.56 -7.96 16.3 c +0 5.79 1.85 10.89 5.54 15.31 c +2.41 2.87 6.61 6.31 12.58 10.32 c +f +4710.49 1015.1 m +0 -8.34 -2.68 -15.86 -8.03 -22.56 c +-5.36 -6.7 -12.32 -10.05 -20.89 -10.05 c +-8.02 0 -15.32 3.76 -21.91 11.28 c +-6.59 7.52 -9.87 17.52 -9.87 30.01 c +0 16.09 6.38 29.89 19.14 41.43 c +11.39 9.66 24.2 14.49 38.42 14.49 c +0.34 -2.26 p +-5.7 -1.05 -10.61 -2.47 -14.73 -4.27 c +-4.12 -1.8 -7.8 -4.32 -11.04 -7.55 c +-3.33 -3.28 -6.45 -7.45 -9.37 -12.51 c +-2.92 -5.06 -4.92 -10.07 -6.02 -15.04 c +2.82 1.73 5.27 3.01 7.32 3.83 c +3.64 1.46 7.31 2.19 11 2.19 c +7.25 0 13.33 -2.51 18.25 -7.52 c +4.92 -5.01 7.38 -12.17 7.38 -21.46 c +h +4697.98 1009.84 m +0 6.06 -0.96 11.44 -2.87 16.13 c +-3.19 7.84 -8.61 11.76 -16.27 11.76 c +-7.06 0 -11.76 -2.1 -14.08 -6.29 c +-1.37 -2.46 -2.05 -6.56 -2.05 -12.3 c +0 -7.43 1.58 -14.7 4.75 -21.81 c +3.17 -7.11 8.17 -10.66 15.01 -10.66 c +5.42 0 9.36 2.31 11.82 6.94 c +2.46 4.63 3.69 10.04 3.69 16.24 c +f +4732.1 1078.61 m +2.14 0 3.54 -0.58 4.2 -1.74 c +0.66 -1.16 0.99 -2.75 0.99 -4.75 c +0 -0.32 -0.01 -0.64 -0.04 -0.96 c +-0.02 -0.32 -0.12 -1.25 -0.3 -2.8 c +-3.42 -30.08 -2.39 0 -3.55 27.82 p +-0.14 1.14 -0.26 2.26 -0.37 3.35 c +-0.11 1.09 -0.17 2.21 -0.17 3.35 c +0 1.41 0.31 2.73 0.92 3.96 c +0.62 1.23 2 1.85 4.14 1.85 c +f +1 i +3100 1408.4 m +177.77 -85.74 445.66 -214.88 648.32 -312.58 c +S +3764.18 1126.99 74.88 -74.92 -105.27 11.88 H +f +3764.18 1126.99 74.88 -74.92 -105.27 11.88 H +3764.18 1126.99 S +0.2 i +3312.1 1418.61 m +2.14 0 3.54 -0.58 4.2 -1.74 c +0.66 -1.16 0.99 -2.75 0.99 -4.75 c +0 -0.32 -0.01 -0.64 -0.04 -0.96 c +-0.02 -0.32 -0.12 -1.25 -0.3 -2.8 c +-3.42 -30.08 -2.39 0 -3.55 27.82 p +-0.14 1.14 -0.26 2.26 -0.37 3.35 c +-0.11 1.09 -0.17 2.21 -0.17 3.35 c +0 1.41 0.31 2.73 0.92 3.96 c +0.62 1.23 2 1.85 4.14 1.85 c +f +3333.62 1418.61 9.37 0 38.21 -94.61 -9.23 0 -38.35 94.61 f +3378.35 1386.82 29.05 0 0 -1.91 P +-1.73 -0.04 -3.2 -0.29 -4.41 -0.71 c +-1.21 -0.43 -1.81 -1.34 -1.81 -2.7 c +0 -0.87 1.21 -3.3 3.63 -7.31 c +1.27 -2.1 2.89 -4.67 4.85 -7.73 c +2.69 3.69 4.7 6.59 6.02 8.68 c +2.23 3.37 3.35 5.56 3.35 6.56 c +0 1.18 -0.48 1.98 -1.44 2.39 c +-0.96 0.41 -2.3 0.68 -4.03 0.82 c +0 1.91 22.01 0 ^ p +-2.32 -0.18 -4.49 -0.81 -6.5 -1.88 c +-2 -1.07 -3.62 -2.5 -4.85 -4.27 c +-11.69 -16.88 18.05 -27.34 p +2.32 -3.55 4.3 -5.86 5.91 -6.91 c +1.62 -1.05 3.48 -1.62 5.57 -1.71 c +0 -1.91 -28.23 0 ^ 1.98 0.14 p +1.05 0.09 1.93 0.41 2.63 0.96 c +0.71 0.55 1.06 1.23 1.06 2.05 c +0 0.86 -0.87 2.78 -2.6 5.74 c +-0.82 1.46 -2.05 3.44 -3.69 5.95 c +-0.77 1.23 -1.93 2.94 -3.45 5.13 c +-1.53 2.19 -2.81 4.05 -3.86 5.61 c +-11.01 -17.16 p +-1.32 -2.05 -2.14 -3.42 -2.46 -4.1 c +-0.32 -0.68 -0.48 -1.25 -0.48 -1.71 c +0 -0.87 0.35 -1.44 1.06 -1.71 c +0.71 -0.27 2.24 -0.57 4.61 -0.89 c +0 -1.91 -20.23 0 ^ p +2.46 0.5 4.29 1.14 5.47 1.91 c +1.18 0.77 2.76 2.57 4.72 5.4 c +15.93 23.18 -13.12 19.89 p +-2.64 3.96 -4.46 6.31 -5.47 7.04 c +-1 0.73 -3.19 1.25 -6.56 1.57 c +0 1.91 p f +3485.2 1326.39 m +5.24 0 9.21 1.46 11.89 4.37 c +2.69 2.91 4.04 6.55 4.04 10.92 c +0 4.96 -1.43 8.98 -4.27 12.05 c +-2.85 3.07 -8.7 7.72 -17.54 13.96 c +-3.92 -2.46 -6.77 -5.64 -8.54 -9.55 c +-1.78 -3.91 -2.67 -7.69 -2.67 -11.33 c +0 -6.23 1.61 -11.19 4.82 -14.88 c +3.21 -3.68 7.3 -5.53 12.27 -5.53 c +h +3486.09 1378.54 m +4.28 3 7.25 5.53 8.89 7.58 c +2.82 3.5 4.24 7.73 4.24 12.7 c +0 4.32 -1.34 8 -4 11.02 c +-2.67 3.02 -6.71 4.54 -12.13 4.54 c +-4.2 0 -7.66 -1.32 -10.39 -3.96 c +-2.73 -2.64 -4.1 -5.85 -4.1 -9.62 c +0 -4.28 1.61 -8.25 4.82 -11.91 c +3.21 -3.66 7.44 -7.11 12.68 -10.34 c +h +3475.57 1370.62 m +-6.02 4.83 -10.12 8.68 -12.3 11.55 c +-3.37 4.38 -5.06 9.21 -5.06 14.49 c +0 6.02 2.49 11.12 7.48 15.31 c +4.99 4.2 11.47 6.29 19.45 6.29 c +7.34 0 13.17 -1.98 17.5 -5.95 c +4.33 -3.97 6.49 -8.57 6.49 -13.81 c +0 -5.34 -2.21 -10.12 -6.63 -14.36 c +-2.55 -2.41 -6.68 -5.2 -12.37 -8.34 c +7.75 -5.74 13.3 -10.75 16.65 -15 c +3.35 -4.26 5.02 -9.29 5.02 -15.07 c +0 -6.56 -2.47 -12.08 -7.42 -16.54 c +-4.95 -4.46 -11.57 -6.7 -19.86 -6.7 c +-7.43 0 -13.8 2.06 -19.11 6.19 c +-5.31 4.13 -7.96 9.56 -7.96 16.3 c +0 5.79 1.85 10.89 5.54 15.31 c +2.41 2.87 6.61 6.31 12.58 10.32 c +f +3566.43 1417.93 m +0.18 -0.23 0.28 -0.4 0.3 -0.51 c +0.02 -0.12 0.04 -0.38 0.04 -0.79 c +0 -82.3 p +0 -3.51 0.94 -5.74 2.82 -6.7 c +1.88 -0.96 5.38 -1.53 10.52 -1.71 c +0 -1.91 -38.62 0 0 2.05 p +5.52 0.27 9.11 1.02 10.8 2.25 c +1.69 1.23 2.53 3.9 2.53 8 c +0 63.3 p +0 2.19 -0.27 3.85 -0.82 4.99 c +-0.55 1.14 -1.73 1.71 -3.55 1.71 c +-1.19 0 -2.73 -0.33 -4.62 -0.99 c +-1.89 -0.66 -3.66 -1.36 -5.3 -2.09 c +0 1.91 25.09 12.79 0.82 0 p f +3612.1 1418.61 m +2.14 0 3.54 -0.58 4.2 -1.74 c +0.66 -1.16 0.99 -2.75 0.99 -4.75 c +0 -0.32 -0.01 -0.64 -0.04 -0.96 c +-0.02 -0.32 -0.12 -1.25 -0.3 -2.8 c +-3.42 -30.08 -2.39 0 -3.55 27.82 p +-0.14 1.14 -0.26 2.26 -0.37 3.35 c +-0.11 1.09 -0.17 2.21 -0.17 3.35 c +0 1.41 0.31 2.73 0.92 3.96 c +0.62 1.23 2 1.85 4.14 1.85 c +f +1 i +818.01 960 m +0 -23.98 -36.02 -23.98 -36.02 0 c +0 23.98 36.02 23.98 36.02 0 c +h +f +818.01 960 m +0 -23.98 -36.02 -23.98 -36.02 0 c +0 23.98 36.02 23.98 36.02 0 c +h +818.01 960 S +820.66 960 m +83.6 0 403.91 0 653.75 0 c +S +1476.25 995 100 -35 -100 -35 H +f +1476.25 995 100 -35 -100 -35 H +1476.25 995 S +cleartomark end end pagesave restore + showpage +%%PageTrailer +%%Trailer +%%Pages: 1 diff -r 22ad03d59b3f -r 4f3747c18585 paper.pdf Binary file paper.pdf has changed diff -r 22ad03d59b3f -r 4f3747c18585 paper.tex --- a/paper.tex Sun Aug 15 09:51:05 2010 +0900 +++ b/paper.tex Thu Aug 26 04:48:35 2010 +0900 @@ -34,17 +34,17 @@ \begin{document} % 論文のタイトル -\title{実行時コンパイルを用いた正規表現評価器の実装} +\title{動的なコード生成を用いた正規表現評価器の実装} % 著者 % 和文論文の場合,姓と名の間には半角スペースを入れ, % 複数の著者の間は全角スペースで区切る % -\author{新屋 良磨 +\author{新屋 良磨, \space\space 河野 真治 % % ここにタイトル英訳 (英文の場合は和訳) を書く. % -\ejtitle{Implimentation of Regular Expression Engine with Just-In-Time Compilation.} +\ejtitle{Implimentation of Regular Expression Compiler with GCC/LLVM.} % % ここに著者英文表記 (英文の場合は和文表記) および % 所属 (和文および英文) を書く. @@ -57,7 +57,7 @@ \shutten % % 受付年月日,記事カテゴリなどは自動的に生成される. -\uketsuke{1999}{8}{3} +\uketsuke{2010}{8}{25} % % その他,脚注に入れるものがあれば,\note に記述する. %\note{脚注に入れる内容} @@ -65,7 +65,6 @@ % % 和文アブストラクト -% 和文アブストラクト \Jabstract{% 当研究室では, Concinuation based C という, 状態遷移記述に適した C の下位 言語を提案している.Continuous bsed C は ステートメントより大きく, 関数よりも小さなプログラ @@ -78,22 +77,18 @@ \maketitle \section{はじめに} -近年, 実行時コンパイルによる高速化(Just-in-Time Compile)が様々 -なプログラムで用いられている. これらは, コンパイラ理論の発展により -実行時コンパイルにかかるオーバーヘッドよりも, コンパイルによって得られる -機械語レベルのプログラムの実行速度が上回る場合において有効であり, たとえ -ば Java の HotSpot や Python の PyPy など, 仮想マシンを持つ言語処理系の -最適化技術として利用されている. +コンパイラ理論の発展と共に, コンパイルにかかる時間はより短く, また得られ +るプログラムはアセンブラレベルで最適化が施され, より高速になってきている. -実行時コンパイルが可能な対象として, 正規表現評価器に着目した. +完全に静的なコンパイルが可能な対象として, 正規表現評価器に着目した. 現在,正規表現の評価器は, プログラミング言語の組み込み機能やライブラリ等, さまざまな実装が存在するが, それらの殆どは仮想マシン方式を採用している\cite{R2}. 仮想マシンを採用いた実装でも, 正規表現を内部表現に変換する処理を行ってお り, それらを ``コンパイル'' と呼ぶことが多い.本研究で実装した評価器の -``実行時コンパイル''とは, 正規表現を内部形式に変換することではなく, 正規 -表現 から実行バイナリを生成することを指す(\ref{subsection:compile}節). 本研究では, 実行バイナリの生 -成にはコンパイラ基盤であるLLVM, GCC を用いており,評価器全体の実装として -はPythonで実装した. +``コンパイル''とは, 正規表現を内部形式に変換することではなく, 正規 +表現 から実行バイナリーを生成することを指す(\ref{subsection:compile}節). +本研究では, 実行バイナリーの生成にはコンパイラ基盤であるLLVM, GCC を用い +ており,評価器全体の実装としてはPythonで実装した. 本論文では, まず正規表現のコンパイル方法について説明し, 実装した評価器の 性能調査のために, 正規表現を用いてテキストマッチ処理を行う grep と同等の @@ -242,15 +237,17 @@ 元となる正規表現と同等である. \subsubsection{DFAから実行バイナリの生成}\label{subsection:compile} -DFAからの実行バイナリ生成には, 2種類の実装を行った. +DFAからの実行バイナリ生成には, 3種類の実装を行った. \begin{enumerate} -\item DFA $\rightarrow$ Continuous based C $\rightarrow$ gccによるコンパイル +\item DFA $\rightarrow$ Continuous based C $\rightarrow$ gccによるコンパ + イル +\item DFA $\rightarrow$ C $\rightarrow$ gccによるコンパイル \item DFA $\rightarrow$ LLVM-API $\rightarrow$ LLVMによるコンパイル \end{enumerate} % -以下, Continuous based C, LLVMそれ自身の説明と, それを利用したDFAからの +以下, Continuous based C, LLVMの説明と, それを利用したDFAからの 実行バイナリ生成の方法を説明する. \subsubsection{Continous based C} @@ -307,10 +304,114 @@ 生成したCbCソースコードを, GCC上に実装したCbCコンパイラによってコンパイルす ることで実行バイナリを得る. +\subsubsection{C} +Cによる実装では, CbCのコードセグメントに代わり関数を用いてDFAを実装した. +DFAによる遷移を関数呼び出しで行っているため,実行時のスタックの使用領域や,ス +タック操作によるオーバーヘッドが予想される. + \subsubsection{LLVM} LLVM(Low Level Virtual Machine) は \section{評価} + +\subsection{実験} +ここでは,本実験で実装した正規表現評価器を用いて実装した +\begin{itemize} +\item CPU : Core i7 950 @3.0GHz +\item Memory : 16GB +\item Text : Wikipedia 日本語版全記事\\ (4.7GB, 8000万行) +\end{itemize} + +\begin{table}[h] +\caption{ベンチマーク} +\label{table:benchmark} +\begin{tabular}[t]{|l||l|l|l|} +\hline +テストケース & fixed-string & simple-regex & complex-regex \\ +\hline +本実装 & 13.90[s] & 15.45 & 14.83[s] \\ +コンパイル時間 & 0.15[s] & 0.17[s] & 0.23[s]\\ +\hline +GNU grep 2.6.3 & 2.93[s] & 5.65[s] & 16.86[s] \\ +\hline +GNU grep 2.5.4 & 2.96[s] & 6.37[s] & 188.51[s] \\ +\hline +\end{tabular} +\end{table} + +以下に, それぞれのテストケースのパターン, grepにマッチした行数, +および考察を記す. なお,ここで扱う正規表現の ``複雑さ''とは, DFAに +変換した時点の状態数, 遷移規則の多さを基準としている. + +\begin{description} +\item[fixed-string]固定文字列によるマッチング\\ +pattern : ``$Wikipedia$''\\ +match : 348936行\\ +GNU grep では, 与えられたパターン内に, 確実に含まれる文字列(固定文字列) +が存在する場合は, Boyer-Moore法 等の高速な文字列探索アルゴリズムを用いて +フィルタをかけることで, DFAによるマッチングを減らし,高速化している. 本実 +装の grep では, そのようなフィルタリングは施しておらず, どのようなパター +ンにたいしても先に述べたDFAベースのマッチングを行う. fixed-stringのテス +トケースではその差が出ている. +\item[simple-regex]単純な正規表現によるマッチング\\ +pattern : ``\verb|^\*+ \[\[|''\\ +match : 3439028行\\ + +\item[complex-regex]複雑な正規表現によるマッチング\\ +pattern :``$(Python|Perl|Pascall|Prolog|\\ +PHP|Ruby|Haskell|Lisp|Scheme)$''\\ +match : 1503行\\ +GNU grep 2.5.4 は, 188秒と, 本実装及びGNU grep 2.6.3に対して非常に遅い結 +果となっているが, これは後述する mbrtowc(3) によるマルチバイト文字の変換 +処理によるオーバーヘッドによるものである. +\end{description} + +\subsection{特徴} +本実験によって実装された正規表現評価器の特徴を, GNU grep との比較をはさ +みながら説明する. + +{\bf 正規表現からの動的なコード生成}\\ +本実装による一番の特徴として, 正規表現から変換を行うことで得られる等価な +DFAを, C/CbC/LLVM に変換しコンパイルすることで正規表現に応じた実行バイナ +リを生成することが挙げられる. +grep のような, 与えられるパターン(正規表現)に対してマッチ対象のテキスト +ファイルが十分大きい場合, 正規表現のコンパイルにかかる時間はマッチングに +かかる時間によって隠される. + +GNU grep では, 本実装と同様にDFAベースのマッチングを行うが, DFAの各状態 +は構造体よって表され, 状態遷移は各状態毎に保持している遷移先ポインタによ +る配列を,1Byte単位でテーブルルックアップを行うことで実装されている. + +{\bf UTF-8対応}\\ +本実装は, マルチバイト文字の代表的な符号化方式であるUTF-8に対応しており, +正規表現の演算は1Byte単位ではなく,1文字単位で適用される. +マルチバイト文字を含む正規表現のサンプルとして, ``(あ$|$い)*う''をDFAに +変換した図\ref{figure:multibyte-dfasample}を載せる. 図における +\verb|'\x'|に始まる文字は16進数表記で, \verb|'\x82'|は16進数82を表す. + +GNU grep 2.5.x では, マルチバイト文字に対応しているものの, プログラム内 +部でlibc mbrtowc(3)を用いて固定サイズであるワイド文字に変換して処理を行っ +ており, テストケース complex-regex ではそのオーバーヘッドが顕著に現れて +いる. +2010年3月にリリースされた GNU grep 2.6 から, UTF-8に対して本実装と同様に +内部的に対応することで, mbrtowc(3)による変換コストが無くなっている. +\begin{figure*}[H] +\begin{center} +\scalebox{0.80}{\includegraphics{fig6.eps}} +\caption{正規表現``(あ$|$い)*う''に対応するDFA} +\label{figure:multibyte-dfamaple} +\end{center} +\end{figure*} + +{\bf 軽量な実装}\\ +本実験で実装した正規表現コンパイラは, Pythonによって実装されており,全体 +で3000行に満たない軽量なプログラムとなっている. また,コンパイラの記述に +はPythonを用いているが, 生成される正規表現評価器はC/CbCによって記述され +コンパイルされた実行バイナリなので, 高速に実行される. + +比べてGNU grep は, C言語によって実装されており,さまざまな正規表現の拡張 +機能(後方参照など)をサポートしており,プログラム全体は10000行を超える. + \section{まとめと今後の課題} \begin{adjustvboxheight} % needed only when Appendix follows