# HG changeset patch # User kent # Date 1266296680 -32400 # Node ID 4b2af58b0302e1e9fc62fa2fc0458c6c9c02c7ad # Parent 8ef81ff8cb52b5a7e871f3a9369a0f22afe71c85 the version for probation. diff -r 8ef81ff8cb52 -r 4b2af58b0302 abstract.tex --- a/abstract.tex Fri Feb 12 13:10:57 2010 +0900 +++ b/abstract.tex Tue Feb 16 14:04:40 2010 +0900 @@ -8,9 +8,11 @@ これまでCbCのコンパイラにはmicro-cをベースとしたコンパイラを用いてきた 。また2008年の研究ではGCCにて継続制御を実装し、GCCによるCbCのコンパイ -ルが可能となった。 +ルが可能となった。しかしGCCベースコンパイラにはいくつかの制限があり、 +一部の機能が未実装であった。 -本研究ではGCCベースのコンパイラに、残るCbCの機能の実装を行った。 + +本研究ではGCCベースのコンパイラに、未実装であったCbCの機能を実装した。 この改善により、GCCベースコンパイラはCbCの機能を完全にサポートし、さら に以前のバージョンよりも高速化に成功した。加えてGCCベースにしたことに diff -r 8ef81ff8cb52 -r 4b2af58b0302 cbc.tex --- a/cbc.tex Fri Feb 12 13:10:57 2010 +0900 +++ b/cbc.tex Tue Feb 16 14:04:40 2010 +0900 @@ -10,12 +10,11 @@ 90 年代以降、ハードウェアの進歩がプログラミング言語よりも早く進みつつ あり、70 年代、80 年代に設計された言語は矛盾を抱えて来ている。 -オブジェクト指向技術とそれに基づいたJava などの言語が注目されているが -、これらの言語は動的な適合性を中心に設計されたものである。C などの低レ -ベルな言語による記述に比べて、余分な条件判断(Method search, Meta level -での実行) を増やしてしまい、コンパクトで高速な応答を期待される -Real-time 処理や組み込み用途には適さない。この用途にはハードウェアに近 -い記述が要求される。 +オブジェクト指向技術とそれに基づいたJavaなどの言語が注目されテイルが、 +Javaではガベージコレクタや実行時コンパイルにより、余分 +な処理が必要となる。そのため軽量かつ高速な応答が要求される Real-time処 +理や組込み用途には適さない。この用途にはハードウェアに近い記述が要求さ +れる。 %ハードウェアに一番近い言語はアセンブラであるがマクロアセンブラなどの記 %述はあまりにも低レベルであり、長年進歩していない。しかし使用可能なゲー @@ -145,7 +144,7 @@ \subsection{コードセグメント} CbCは図\ref{fig:continuation}の様に分割された手続きのそれぞれを一つの -処理単位として用い、これを``コードセグメント(code-segment)''と呼ぶ。 +処理単位として用いる。これを``コードセグメント(code-segment)''と呼ぶ。 コードセグメントはキーワード``code''を用いてCの関数の様に定義される。 引数部分はインタフェイスと呼ばれ、継続前のコードセグメントからの出力に @@ -212,8 +211,8 @@ とが望ましい。 Continuation based Cの名のとおり、CbCからCの関数の呼び出しは問題なく行 える。しかしCbCをCと相互に利用するためには、Cの関数から継続を行った場 -合に元の環境に戻るための、特殊な継続を導入する必要がある。これを環境付 -き継続と呼ぶ。 +合に元の環境に戻るための、特殊な継続を導入する必要がある。これを``環境 +付き継続''と呼ぶ。 この環境付き継続を導入した言語はC with Continuation(CwC)と呼ばれ、Cと CbCの両方の機能をもつ言語となる。また、 C、CbCはCwCのサブセットと考え @@ -257,11 +256,12 @@ \label{fig:cbcreturn} \end{figure}% -環境付きは実際にはCにおける\verb|setjmp()/longjmp()|とほぼ同じ処理であ -る。この二つの関数はCで継続を実現するために用いられる。例としてコード -\ref{code:setjmp}を挙げる。このコードでは\verb|setfunc|内で -\verb|setjmp|を使用している。\verb|setjmp|は通常は0を返すため、if文の -内部は実行されないが、その後\verb|longjmp|が実行されると、関連する +環境付き継続は実際にはCにおける\verb|setjmp()/longjmp()|とほぼ同じ処理であ +る。この二つの関数はCで継続を実現するために用いられる。 + +例としてコード \ref{code:setjmp}を挙げる。このコードでは\verb|setfunc| +内で \verb|setjmp|を使用している。\verb|setjmp|は通常は0を返すため、if +文の内部は実行されないが、その後\verb|longjmp|が実行されると、関連する \verb|setjmp|が呼び出された環境に``継続''し、非零を返すためif文の中が 実行されることになる。この時、\verb|longjmp|の呼出側(この例では \verb|jmpfunc|)の環境は失われる。 @@ -364,7 +364,7 @@ Cでの関数ポインタを用いた間接呼び出し(indirect call)の様に、CbCで 用いる継続制御においても、コードセグメントポインタを用いたメモリ参 - 照による間接的な継続が可能である。これを間接継続と呼んでいる。 + 照による間接的な継続が可能である。これを``間接継続''と呼んでいる。 コード\ref{code:indirect-example}のcodepointerへの継続が間接継続に 当たる。 \lstinputlisting[ @@ -381,9 +381,9 @@ \item プロトタイプ宣言の自動化 Cのプロトタイプ宣言はコンパイル時のエラー検出に役立っているが、 - CbCでは返り値が存在しないなど、あまり重要な意味をなさない。 - また、micro-cではこれを極力排除するよう設計されているため、ソース - コードの互換性が薄れてしまう。 + CbCでは返り値が存在しないなど、あまり重要な意味をなさない。また、 + micro-cではこれを極力排除するよう設計されているため、既存の CbCプ + ログラムとのソースコードレベルでの互換性が薄れてしまう。 プロトタイプを自動生成することにより、この互換性を向上させる。 diff -r 8ef81ff8cb52 -r 4b2af58b0302 conclusion.tex --- a/conclusion.tex Fri Feb 12 13:10:57 2010 +0900 +++ b/conclusion.tex Tue Feb 16 14:04:40 2010 +0900 @@ -7,30 +7,33 @@ CbCは軽量継続をベースとした言語で、 プログラムの分割による開発効率の向 上や、状態遷移という特徴を元にタブロー法を用いたプログラム検証などを目 -的として設計されている。 CbC言語のコンパイラにはmicro-cとGCCの二つが用 -いられていたが、GCCにはいくつもの問題があった。 +的として設計されている。 これまで、CbC言語のコンパイラにはmicro-cをベ +ースとしたものがあり、2008年の研究にてGCCをベースとしたコンパイラが開 +発されていた。 + +本研究ではこのGCCベースコンパイラを実用的なCbCコンパイラにすることを目 +標とし、そのために必要な項目のリストアップとその実装を行った。 -そこで、本研究では\ref{chp:cbc}章においてこのCbCの紹介とともに、問題点 -の洗い出しをおこなった。洗い出した問題点の中には、実用的なプログラムは -動作不能ともなりえるものも存在した。 +\ref{chp:cbc}章では目標とする達成項目を洗い出した。この中にはCとの互換 +性を向上させる機能や継続制御での制限の除去、また GCCの開発リリースに追 +従するためのメンテナンス性の向上などが含まれた。 -\ref{chp:impl}章ではこれらの問題に対処するため、GCCベースコンパイラの -改善を行った。ここでは最初にGCCに移植した際の実装方法を再確認し、その -上で問題点の解決方法の提案し、実装した。 +\ref{chp:impl}章ではこれらの項目の実装を行った。ここでは最初にGCCに移 +植した際のコードセグメントや継続制御の実装方法を再確認し、その上で今回 +の実装の手法を提案し、実装した。 \ref{chp:eval}章では、\ref{chp:impl}章における改善点の評価とともに、実 用的なプログラムが動作可能になったことで、以前のコンパイラとGCCベース -のコンパイラで性能の比較を行った。 +のコンパイラで性能の比較を行った。さらにメンテナンス性向上のための手法 +の評価も行った。 本研究の成果としては、 \begin{inparaenum}[\bfseries a)] - \item 引数の順番でエラーが出ていた問題を改善し、実用的なCbCプログラ - ミングが可能になった。 - \item 上の理由により、CbCプログラムをこれまで対応していなかった様々 - なアーキテクチャで実行可能になった。 + \item 継続制御での引数の順序による制限を除去した。 + \item 様々なアーキテクチャでのCbCプログラムの実行を可能にした。 \item fastcall最適化によりx86アーキテクチャでの動作速度が改善された。 - \item 以前のコンパイラとの比較ではx86ではあまり差が出なかったものの - 、 PowerPCでは大きな向上が見られた。 + \item micro-cベースコンパイラと比べて、PowerPCでは速度に大きな向上が + 見られた。 \item リポジトリ管理方法の改善により、メンテナンス性が向上した。 \end{inparaenum} などが挙げられる。 diff -r 8ef81ff8cb52 -r 4b2af58b0302 evaluations.tex --- a/evaluations.tex Fri Feb 12 13:10:57 2010 +0900 +++ b/evaluations.tex Tue Feb 16 14:04:40 2010 +0900 @@ -45,7 +45,7 @@ をサポートしてきた。しかし他のCPUに新しく対応するには多大な時間、労力 が必要となる。 GCCは現在、既に20を越えるCPUに対応しており、またOS毎のABIの差異も吸収 -可能である。これはGCCをコンパイラとすることに最大の利点である。 +可能である。これはGCCをコンパイラとすることの最大の利点である。 またそれだけでなく、GCCは新しいアーキテクチャへの対応も早い。この特徴 は、GCCがフロントエンドとバックエンドという形で言語実装とアーキテクチ @@ -96,8 +96,8 @@ での互換性がない。つまりGCCでコンパイルしたコードセグメントからmicro-c でコンパイルしたコードセグメントに継続することはできない。 -これはmicro-cでの軽量継続のABIが関数とはまったく違うものだからである。 -今回はtailcallを実装に用いたため、関数としての制限があり、micro-cの +これはmicro-cでの軽量継続のABIが関数とはまったく異なるものだからである +。今回はtailcallを実装に用いたため、関数としての制限があり、micro-cの ABIに合わせることはできなかった。 この問題はGCCの欠点というわけではないが、CbCベースの共有ライブラリを生 @@ -125,7 +125,7 @@ もう一つの比較対象にはmicro-cベースのコンパイラを用いる。 さらにGCCでは最適化による効果も評価するため、 -\begin{inparaenum}[\itshape 1)\ttfamily] +\begin{inparaenum}[\bfseries\itshape 1)\ttfamily] \item 最適化なし ``-O0'' \item 速度最適化 ``-O2 -fomit-framepointer'' \item サイズ最適化 ``-Os'' @@ -180,25 +180,24 @@ \label{tab:speed-mc-vs-gcc} \end{table} -実行ファイルのstrip前のファイルサイズを表\ref{tab:eval-nostrip} -に、strip後のファイルサイズを表\ref{tab:eval-strip}に示す。 +実行ファイルstrip後のファイルサイズを表\ref{tab:eval-strip}に示す。 -\begin{table}[htpb] - \centering - \begin{tabular}{|c|c|c|c|c|c|} \hline - \multirow{3}{*}{ \backslashbox{CPU/OS}{コンパイラ} } - & \multicolumn{4}{c|}{GCC} & \multirow{3}{*}{micro-c} \\ \cline{2-5} - & \multicolumn{2}{c|}{デバグ情報(-g)付き} & \multicolumn{2}{c|}{デバグ情報なし} & \\ \cline{2-5} - & 速度最適化 & サイズ最適化 & 速度最適化 & サイズ最適化 & \\ \hline - x86/OS X & 11100 & 11100 & 9804 & 9804 & 11136 \\ \hline - x86/Linux & 18444 & 17310 & 8216 & 8214 & 9844 \\ \hline - ppc/OS X & 10392 & 10392 & 9172 & 9172 & 14396 \\ \hline - ppc/Linux & 25138 & 23876 & 13030 & 13028 & 15453 \\ \hline - ppc/PS3 & 22142 & 20452 & 9906 & 9672 & 15463 \\ \hline - \end{tabular} - \caption{実行ファイルのファイルサイズ比較 not stripped(単位: bytes)} - \label{tab:eval-nostrip} -\end{table} +%\begin{table}[htpb] + %\centering + %\begin{tabular}{|c|c|c|c|c|c|} \hline + %\multirow{3}{*}{ \backslashbox{CPU/OS}{コンパイラ} } + %& \multicolumn{4}{c|}{GCC} & \multirow{3}{*}{micro-c} \\ \cline{2-5} + %& \multicolumn{2}{c|}{デバグ情報(-g)付き} & \multicolumn{2}{c|}{デバグ情報なし} & \\ \cline{2-5} + %& 速度最適化 & サイズ最適化 & 速度最適化 & サイズ最適化 & \\ \hline + %x86/OS X & 11100 & 11100 & 9804 & 9804 & 11136 \\ \hline + %x86/Linux & 18444 & 17310 & 8216 & 8214 & 9844 \\ \hline + %ppc/OS X & 10392 & 10392 & 9172 & 9172 & 14396 \\ \hline + %ppc/Linux & 25138 & 23876 & 13030 & 13028 & 15453 \\ \hline + %ppc/PS3 & 22142 & 20452 & 9906 & 9672 & 15463 \\ \hline + %\end{tabular} + %\caption{実行ファイルのファイルサイズ比較 not stripped(単位: bytes)} + %\label{tab:eval-nostrip} +%\end{table} \begin{table}[htpb] \centering \begin{tabular}{|c|c|c|c|} \hline @@ -238,12 +237,12 @@ \subsubsection{速度面} まずどのアーキテクチャにおいても、GCCの最適化が大きな速度差を生み出し ている事が分かる。最適化なしと速度最適化を比較すると、x86では2.4倍、 -ppcでは5〜7倍もの差が生じている。 -ただしppcのこの以上な速度差は\ref{sec:impl-parallel}並列代入で示した様に、継続の引 -数を全て一時変数に入れていることが大きい。その場合最適化なしではすべて -の引数を一度メモリに確保するので、その分逆に遅くなっているのだと考えら -れる。しかしながら最適化を有効にすることでそのメモリへの一時変数の確保 -も解消されるということが分かった。 +ppcでは5〜7倍もの差が生じている。ただしppcのこの異常な速度差は +\ref{sec:impl-parallel}並列代入で示した様に、継続の引数を全て一時変数 +に入れていることが大きい。その場合最適化なしではすべての引数を一度メモ +リに確保するので、その分逆に遅くなっているのだと考えられる。しかしなが +ら最適化を有効にすることでそのメモリへの一時変数の確保も解消されるとい +うことが分かった。 x86はOS XとLinuxの環境で測定を行った。速度最適化のGCCとmicro-cを比べる と、 OS Xではmicro-cに比べて20\%ほど早くなった事が分かる。しかし逆に @@ -315,13 +314,13 @@ が分かる。この環境では速度面でも大きな差はなく、micro-cの精度の良さが わかる。 -デバグ情報のあり/なし/strip後との比較で大きな差が出ているのは全て -Linux(PS3含む)である。Linuxでは実行ファイルのファイル形式にELFを用い -ている。この形式はLinuxの標準的な実行形式で、様々な研究に用いられてい -るため、Mach-Oと比べて付加機能が豊富である。そのため多くの情報が含まれ -ているのだと考えられる。 -Linuxは組み込み用途に多く用いられているため、極端にメモリの制限された -環境ではデバグが困難になることが考えられる。 +%デバグ情報のあり/なし/strip後との比較で大きな差が出ているのは全て +%Linux(PS3含む)である。Linuxでは実行ファイルのファイル形式にELFを用い +%ている。この形式はLinuxの標準的な実行形式で、様々な研究に用いられてい +%るため、Mach-Oと比べて付加機能が豊富である。そのため多くの情報が含まれ +%ているのだと考えられる。 +%Linuxは組み込み用途に多く用いられているため、極端にメモリの制限された +%環境ではデバグが困難になることが考えられる。 また興味深い特徴として、速度最適化とサイズ最適化の差がppc/PS3以外は全 くないことも分かった。 サイズ最適化は速度最適化の最適化機能から、ファ @@ -358,7 +357,7 @@ 分かった。 また、それだけなら速度はほぼ同じ結果がでるところだが、ここではいずれの -環境でも新しいバージョンの方が速い。15~20\%ほど高速化していることがわ +環境でも新しいバージョンの方が速い。15--20\%ほど高速化していることがわ かる。これは本研究で行った改善の一つ、fastcallの影響である。 diff -r 8ef81ff8cb52 -r 4b2af58b0302 figures/functionstack.dia Binary file figures/functionstack.dia has changed diff -r 8ef81ff8cb52 -r 4b2af58b0302 figures/functionstack.eps --- a/figures/functionstack.eps Fri Feb 12 13:10:57 2010 +0900 +++ b/figures/functionstack.eps Tue Feb 16 14:04:40 2010 +0900 @@ -1,11 +1,11 @@ %!PS-Adobe-2.0 EPSF-2.0 %%Title: /home/kent/WorkSpace/Mercurial/master-paper/figures/functionstack.dia %%Creator: Dia v0.97 -%%CreationDate: Thu Feb 4 17:00:32 2010 +%%CreationDate: Sat Feb 13 19:09:07 2010 %%For: kent %%Orientation: Portrait %%Magnification: 1.0000 -%%BoundingBox: 0 0 426 363 +%%BoundingBox: 0 0 852 800 %%BeginSetup %%EndSetup %%EndComments @@ -117,8 +117,8 @@ } bind def /start_ol { gsave 1.1 dpi_x div dup scale} bind def /end_ol { closepath fill grestore } bind def -28.346000 -28.346000 scale --3.300000 -13.550000 translate +56.692000 -56.692000 scale +-3.300000 -14.859057 translate %%EndProlog @@ -3010,27 +3010,24 @@ 448 0 lineto 448 3520 lineto end_ol grestore -0.100000 slw -[0.200000] 0 sd -[0.200000] 0 sd +0.150000 slw +[] 0 sd +[] 0 sd 0 slc -n 8.150000 1.525000 m 9.713197 1.525000 l s -[] 0 sd 0 slj +0.150000 slw 0 slc -n 10.088197 1.525000 m 9.588197 1.775000 l 9.713197 1.525000 l 9.588197 1.275000 l ef -n 10.088197 1.525000 m 9.588197 1.775000 l 9.713197 1.525000 l 9.588197 1.275000 l cp s -0.100000 slw -[0.200000] 0 sd -[0.200000] 0 sd +0 slj +[] 0 sd +1.000000 1.000000 1.000000 srgb +n 7.530000 14.005000 m 9.030000 14.005000 l 9.030000 13.755000 l 10.530000 14.255000 l 9.030000 14.755000 l 9.030000 14.505000 l 7.530000 14.505000 l ef +0.000000 0.000000 0.000000 srgb +n 7.530000 14.005000 m 9.030000 14.005000 l 9.030000 13.755000 l 10.530000 14.255000 l 9.030000 14.755000 l 9.030000 14.505000 l 7.530000 14.505000 l cp s 0 slc -n 13.802500 1.467500 m 15.365697 1.467500 l s +0 slj [] 0 sd -0 slj -0 slc -n 15.740697 1.467500 m 15.240697 1.717500 l 15.365697 1.467500 l 15.240697 1.217500 l ef -n 15.740697 1.467500 m 15.240697 1.717500 l 15.365697 1.467500 l 15.240697 1.217500 l cp s -gsave 8.450000 2.325000 translate 0.035278 -0.035278 scale +n 7.530000 14.005000 m 9.030000 14.005000 l 9.030000 13.755000 l 10.530000 14.255000 l 9.030000 14.755000 l 9.030000 14.505000 l 7.530000 14.505000 l cp s +gsave 7.530000 13.755000 translate 0.035278 -0.035278 scale start_ol 2368 2560 moveto 2368 2176 lineto @@ -3052,7 +3049,7 @@ 1801 2752 1994 2704 conicto 2187 2656 2368 2560 conicto end_ol grestore -gsave 8.802169 2.325000 translate 0.035278 -0.035278 scale +gsave 7.882169 13.755000 translate 0.035278 -0.035278 scale start_ol 1622 1344 moveto 1104 1344 904 1225 conicto @@ -3085,7 +3082,7 @@ 1927 2752 2211 2444 conicto 2496 2137 2496 1513 conicto end_ol grestore -gsave 9.194298 2.325000 translate 0.035278 -0.035278 scale +gsave 8.274298 13.755000 translate 0.035278 -0.035278 scale start_ol 448 3712 moveto 896 3712 lineto @@ -3093,7 +3090,7 @@ 448 0 lineto 448 3712 lineto end_ol grestore -gsave 9.371626 2.325000 translate 0.035278 -0.035278 scale +gsave 8.451626 13.755000 translate 0.035278 -0.035278 scale start_ol 448 3712 moveto 896 3712 lineto @@ -3101,7 +3098,7 @@ 448 0 lineto 448 3712 lineto end_ol grestore -gsave 14.252500 2.367500 translate 0.035278 -0.035278 scale +gsave 13.730000 13.755000 translate 0.035278 -0.035278 scale start_ol 2368 2560 moveto 2368 2176 lineto @@ -3123,7 +3120,7 @@ 1801 2752 1994 2704 conicto 2187 2656 2368 2560 conicto end_ol grestore -gsave 14.604669 2.367500 translate 0.035278 -0.035278 scale +gsave 14.082169 13.755000 translate 0.035278 -0.035278 scale start_ol 1622 1344 moveto 1104 1344 904 1225 conicto @@ -3156,7 +3153,15 @@ 1927 2752 2211 2444 conicto 2496 2137 2496 1513 conicto end_ol grestore -gsave 14.996798 2.367500 translate 0.035278 -0.035278 scale +gsave 14.474298 13.755000 translate 0.035278 -0.035278 scale +start_ol +448 3712 moveto +896 3712 lineto +896 0 lineto +448 0 lineto +448 3712 lineto +end_ol grestore +gsave 14.651626 13.755000 translate 0.035278 -0.035278 scale start_ol 448 3712 moveto 896 3712 lineto @@ -3164,12 +3169,21 @@ 448 0 lineto 448 3712 lineto end_ol grestore -gsave 15.174126 2.367500 translate 0.035278 -0.035278 scale -start_ol -448 3712 moveto -896 3712 lineto -896 0 lineto -448 0 lineto -448 3712 lineto -end_ol grestore +0.150000 slw +[] 0 sd +[] 0 sd +0 slc +0 slj +0.150000 slw +0 slc +0 slj +[] 0 sd +1.000000 1.000000 1.000000 srgb +n 13.530000 14.005000 m 15.030000 14.005000 l 15.030000 13.755000 l 16.530000 14.255000 l 15.030000 14.755000 l 15.030000 14.505000 l 13.530000 14.505000 l ef +0.000000 0.000000 0.000000 srgb +n 13.530000 14.005000 m 15.030000 14.005000 l 15.030000 13.755000 l 16.530000 14.255000 l 15.030000 14.755000 l 15.030000 14.505000 l 13.530000 14.505000 l cp s +0 slc +0 slj +[] 0 sd +n 13.530000 14.005000 m 15.030000 14.005000 l 15.030000 13.755000 l 16.530000 14.255000 l 15.030000 14.755000 l 15.030000 14.505000 l 13.530000 14.505000 l cp s showpage diff -r 8ef81ff8cb52 -r 4b2af58b0302 figures/gcc-flow.dia Binary file figures/gcc-flow.dia has changed diff -r 8ef81ff8cb52 -r 4b2af58b0302 figures/gcc-flow.eps --- a/figures/gcc-flow.eps Fri Feb 12 13:10:57 2010 +0900 +++ b/figures/gcc-flow.eps Tue Feb 16 14:04:40 2010 +0900 @@ -1,11 +1,11 @@ %!PS-Adobe-2.0 EPSF-2.0 %%Title: /home/kent/WorkSpace/Mercurial/master-paper/figures/gcc-flow.dia %%Creator: Dia v0.97 -%%CreationDate: Sat Feb 6 04:15:45 2010 +%%CreationDate: Fri Feb 12 13:46:25 2010 %%For: kent %%Orientation: Portrait %%Magnification: 1.0000 -%%BoundingBox: 0 0 726 366 +%%BoundingBox: 0 0 728 367 %%BeginSetup %%EndSetup %%EndComments @@ -118,7 +118,7 @@ /start_ol { gsave 1.1 dpi_x div dup scale} bind def /end_ol { closepath fill grestore } bind def 28.346000 -28.346000 scale --3.450000 -17.350000 translate +-3.425000 -17.375000 translate %%EndProlog @@ -792,85 +792,162 @@ n 17.000000 9.900000 m 17.000000 9.900000 l s n 13.900000 9.900000 0.900000 0.900000 90.000000 180.000000 ellipse s n 16.100000 9.900000 0.900000 0.900000 0.000000 90.000000 ellipse s -gsave 14.367500 10.095000 translate 0.035278 -0.035278 scale +gsave 13.673750 10.095000 translate 0.035278 -0.035278 scale +start_ol +2816 504 moveto +2816 1472 lineto +2048 1472 lineto +2048 1856 lineto +3328 1856 lineto +3328 325 lineto +3052 133 2720 34 conicto +2388 -64 2011 -64 conicto +1187 -64 721 417 conicto +256 899 256 1759 conicto +256 2621 725 3102 conicto +1195 3584 2028 3584 conicto +2375 3584 2687 3503 conicto +3000 3422 3264 3264 conicto +3264 2752 lineto +2998 2975 2699 3087 conicto +2400 3200 2071 3200 conicto +1420 3200 1094 2838 conicto +768 2476 768 1759 conicto +768 1044 1084 682 conicto +1400 320 2030 320 conicto +2276 320 2469 365 conicto +2662 410 2816 504 conicto +end_ol grestore +gsave 14.168281 10.095000 translate 0.035278 -0.035278 scale start_ol -2624 3392 moveto -2624 2944 lineto -2352 3073 2111 3136 conicto -1870 3200 1645 3200 conicto -1255 3200 1043 3052 conicto -832 2904 832 2631 conicto -832 2402 969 2285 conicto -1107 2169 1491 2097 conicto -1773 2039 lineto -2308 1937 2562 1678 conicto -2816 1420 2816 986 conicto -2816 469 2468 202 conicto -2121 -64 1450 -64 conicto -1197 -64 911 0 conicto -626 65 320 192 conicto -320 704 lineto -613 513 893 416 conicto -1174 320 1445 320 conicto -1857 320 2080 485 conicto -2304 650 2304 955 conicto -2304 1221 2148 1371 conicto -1992 1522 1636 1597 conicto -1352 1652 lineto -807 1756 563 1978 conicto -320 2201 320 2597 conicto -320 3056 654 3320 conicto -989 3584 1576 3584 conicto -1828 3584 2089 3536 conicto -2351 3488 2624 3392 conicto +448 2688 moveto +896 2688 lineto +896 0 lineto +448 0 lineto +448 2688 lineto +448 3712 moveto +896 3712 lineto +896 3136 lineto +448 3136 lineto +448 3712 lineto end_ol grestore -gsave 14.774619 10.095000 translate 0.035278 -0.035278 scale +gsave 14.345610 10.095000 translate 0.035278 -0.035278 scale +start_ol +2549 2204 moveto +2714 2485 2942 2618 conicto +3171 2752 3482 2752 conicto +3899 2752 4125 2464 conicto +4352 2177 4352 1646 conicto +4352 0 lineto +3904 0 lineto +3904 1632 lineto +3904 2006 3769 2187 conicto +3634 2368 3356 2368 conicto +3017 2368 2820 2146 conicto +2624 1925 2624 1542 conicto +2624 0 lineto +2176 0 lineto +2176 1632 lineto +2176 2008 2041 2188 conicto +1906 2368 1624 2368 conicto +1289 2368 1092 2145 conicto +896 1922 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1046 2534 1255 2643 conicto +1465 2752 1753 2752 conicto +2044 2752 2247 2611 conicto +2451 2471 2549 2204 conicto +end_ol grestore +gsave 14.967521 10.095000 translate 0.035278 -0.035278 scale start_ol -2624 3392 moveto -2624 2944 lineto -2352 3073 2111 3136 conicto -1870 3200 1645 3200 conicto -1255 3200 1043 3052 conicto -832 2904 832 2631 conicto -832 2402 969 2285 conicto -1107 2169 1491 2097 conicto -1773 2039 lineto -2308 1937 2562 1678 conicto -2816 1420 2816 986 conicto -2816 469 2468 202 conicto -2121 -64 1450 -64 conicto -1197 -64 911 0 conicto -626 65 320 192 conicto -320 704 lineto -613 513 893 416 conicto -1174 320 1445 320 conicto -1857 320 2080 485 conicto -2304 650 2304 955 conicto -2304 1221 2148 1371 conicto -1992 1522 1636 1597 conicto -1352 1652 lineto -807 1756 563 1978 conicto -320 2201 320 2597 conicto -320 3056 654 3320 conicto -989 3584 1576 3584 conicto -1828 3584 2089 3536 conicto -2351 3488 2624 3392 conicto +896 384 moveto +896 -1024 lineto +448 -1024 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1032 2531 1240 2641 conicto +1448 2752 1737 2752 conicto +2217 2752 2516 2364 conicto +2816 1976 2816 1344 conicto +2816 712 2516 324 conicto +2217 -64 1737 -64 conicto +1448 -64 1240 46 conicto +1032 157 896 384 conicto +2368 1344 moveto +2368 1823 2171 2095 conicto +1975 2368 1632 2368 conicto +1289 2368 1092 2095 conicto +896 1823 896 1344 conicto +896 865 1092 592 conicto +1289 320 1632 320 conicto +1975 320 2171 592 conicto +2368 865 2368 1344 conicto +end_ol grestore +gsave 15.374640 10.095000 translate 0.035278 -0.035278 scale +start_ol +448 3712 moveto +896 3712 lineto +896 0 lineto +448 0 lineto +448 3712 lineto end_ol grestore -gsave 15.194224 10.095000 translate 0.035278 -0.035278 scale +gsave 15.551969 10.095000 translate 0.035278 -0.035278 scale +start_ol +448 2688 moveto +896 2688 lineto +896 0 lineto +448 0 lineto +448 2688 lineto +448 3712 moveto +896 3712 lineto +896 3136 lineto +448 3136 lineto +448 3712 lineto +end_ol grestore +gsave 15.729298 10.095000 translate 0.035278 -0.035278 scale start_ol -1696 3047 moveto -1042 1280 lineto -2352 1280 lineto -1696 3047 lineto -1424 3520 moveto -1970 3520 lineto -3328 0 lineto -2827 0 lineto -2502 896 lineto -897 896 lineto -572 0 lineto -64 0 lineto -1424 3520 lineto +1792 3712 moveto +1792 3328 lineto +1369 3328 lineto +1139 3328 1049 3237 conicto +960 3147 960 2912 conicto +960 2688 lineto +1664 2688 lineto +1664 2368 lineto +960 2368 lineto +960 0 lineto +512 0 lineto +512 2368 lineto +64 2368 lineto +64 2688 lineto +512 2688 lineto +512 2864 lineto +512 3307 718 3509 conicto +925 3712 1374 3712 conicto +1792 3712 lineto +end_ol grestore +gsave 15.944090 10.095000 translate 0.035278 -0.035278 scale +start_ol +1542 -238 moveto +1360 -726 1187 -875 conicto +1015 -1024 726 -1024 conicto +384 -1024 lineto +384 -640 lineto +636 -640 lineto +813 -640 910 -555 conicto +1008 -470 1127 -155 conicto +1204 46 lineto +128 2688 lineto +603 2688 lineto +1418 586 lineto +2234 2688 lineto +2688 2688 lineto +1542 -238 lineto end_ol grestore 0.100000 slw [] 0 sd @@ -1013,12 +1090,12 @@ [] 0 sd [] 0 sd 0 slc -n 14.000000 6.900000 m 15.508008 6.900000 l s +n 14.000000 6.900000 m 15.482890 6.900000 l s [] 0 sd 0 slj 0 slc -n 15.883008 6.900000 m 15.383008 7.150000 l 15.508008 6.900000 l 15.383008 6.650000 l ef -n 15.883008 6.900000 m 15.383008 7.150000 l 15.508008 6.900000 l 15.383008 6.650000 l cp s +n 15.857890 6.900000 m 15.357890 7.150000 l 15.482890 6.900000 l 15.357890 6.650000 l ef +n 15.857890 6.900000 m 15.357890 7.150000 l 15.482890 6.900000 l 15.357890 6.650000 l cp s 0.060000 slw [] 0 sd [] 0 sd @@ -2017,7 +2094,7 @@ [0.300000 0.060000 0.060000 0.060000 0.060000 0.060000] 0 sd 0 slj 0 slc -n 19.327966 13.700000 m 21.220000 13.700000 l 21.220000 15.146447 l s +n 19.352969 13.700000 m 21.220000 13.700000 l 21.220000 15.146447 l s 0.250000 slw [] 0 sd 0 slj @@ -2028,7 +2105,7 @@ [0.300000 0.060000 0.060000 0.060000 0.060000 0.060000] 0 sd 0 slj 0 slc -n 11.699534 13.700000 m 9.720000 13.700000 l 9.720000 15.146447 l s +n 11.674531 13.700000 m 9.720000 13.700000 l 9.720000 15.146447 l s 0.250000 slw [] 0 sd 0 slj diff -r 8ef81ff8cb52 -r 4b2af58b0302 figures/gcc-flow.pdf Binary file figures/gcc-flow.pdf has changed diff -r 8ef81ff8cb52 -r 4b2af58b0302 figures/gcc-flow2.dia Binary file figures/gcc-flow2.dia has changed diff -r 8ef81ff8cb52 -r 4b2af58b0302 figures/insns.dia Binary file figures/insns.dia has changed diff -r 8ef81ff8cb52 -r 4b2af58b0302 figures/insns.eps --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/figures/insns.eps Tue Feb 16 14:04:40 2010 +0900 @@ -0,0 +1,2683 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: /home/kent/WorkSpace/Mercurial/master-paper/figures/insns.dia +%%Creator: Dia v0.97 +%%CreationDate: Fri Feb 12 14:16:58 2010 +%%For: kent +%%Orientation: Portrait +%%Magnification: 1.0000 +%%BoundingBox: 0 0 903 283 +%%BeginSetup +%%EndSetup +%%EndComments +%%BeginProlog +[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright +/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one +/two /three /four /five /six /seven /eight /nine /colon /semicolon +/less /equal /greater /question /at /A /B /C /D /E +/F /G /H /I /J /K /L /M /N /O +/P /Q /R /S /T /U /V /W /X /Y +/Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c +/d /e /f /g /h /i /j /k /l /m +/n /o /p /q /r /s /t /u /v /w +/x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright +/ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior +/acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf +/threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla +/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde +/Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex +/Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring +/ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis +/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave +/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] /isolatin1encoding exch def +/cp {closepath} bind def +/c {curveto} bind def +/f {fill} bind def +/a {arc} bind def +/ef {eofill} bind def +/ex {exch} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth pop} bind def +/tr {translate} bind def + +/ellipsedict 8 dict def +ellipsedict /mtrx matrix put +/ellipse +{ ellipsedict begin + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def /savematrix mtrx currentmatrix def + x y tr xrad yrad sc + 0 0 1 startangle endangle arc + savematrix setmatrix + end +} def + +/mergeprocs { +dup length +3 -1 roll +dup +length +dup +5 1 roll +3 -1 roll +add +array cvx +dup +3 -1 roll +0 exch +putinterval +dup +4 2 roll +putinterval +} bind def +/dpi_x 300 def +/dpi_y 300 def +/conicto { + /to_y exch def + /to_x exch def + /conic_cntrl_y exch def + /conic_cntrl_x exch def + currentpoint + /p0_y exch def + /p0_x exch def + /p1_x p0_x conic_cntrl_x p0_x sub 2 3 div mul add def + /p1_y p0_y conic_cntrl_y p0_y sub 2 3 div mul add def + /p2_x p1_x to_x p0_x sub 1 3 div mul add def + /p2_y p1_y to_y p0_y sub 1 3 div mul add def + p1_x p1_y p2_x p2_y to_x to_y curveto +} bind def +/start_ol { gsave 1.1 dpi_x div dup scale} bind def +/end_ol { closepath fill grestore } bind def +28.346000 -28.346000 scale +1.075000 -12.875000 translate +%%EndProlog + + +0.100000 slw +[] 0 sd +1.000000 1.000000 1.000000 srgb +n 26.500000 6.000000 m 26.500000 7.800000 l 30.700000 7.800000 l 30.700000 6.000000 l f +0.000000 0.000000 0.000000 srgb +n 26.500000 6.000000 m 26.500000 7.800000 l 30.700000 7.800000 l 30.700000 6.000000 l cp s +gsave 27.000000 7.155000 translate 0.035278 -0.035278 scale +start_ol +end_ol grestore +gsave 27.639399 7.155000 translate 0.035278 -0.035278 scale +start_ol +1167 3638 moveto +3799 3638 lineto +3799 3322 lineto +2661 2486 1722 2116 conicto +1727 2106 lineto +4451 2310 lineto +4470 1985 lineto +3264 1897 lineto +2665 1688 2354 1389 conicto +2043 1090 2043 759 conicto +2043 97 3273 97 conicto +3677 97 3998 161 conicto +4042 -170 lineto +3672 -238 3273 -238 conicto +2821 -238 2495 -160 conicto +2169 -83 1991 56 conicto +1814 195 1734 357 conicto +1654 520 1654 720 conicto +1654 1381 2573 1843 conicto +2568 1853 lineto +413 1693 lineto +394 2019 lineto +1017 2062 1693 2371 conicto +2369 2680 3201 3303 conicto +3196 3312 lineto +1167 3312 lineto +1167 3638 lineto +end_ol grestore +gsave 28.278797 7.155000 translate 0.035278 -0.035278 scale +start_ol +2899 219 moveto +3483 282 3808 681 conicto +4134 1080 4134 1741 conicto +4134 2359 3725 2762 conicto +3317 3166 2680 3186 conicto +2578 2242 2424 1590 conicto +2271 939 2086 605 conicto +1902 272 1717 138 conicto +1532 5 1313 5 conicto +963 5 669 428 conicto +375 851 375 1464 conicto +375 2378 1000 2952 conicto +1625 3526 2627 3526 conicto +3434 3526 3961 3023 conicto +4489 2520 4489 1741 conicto +4489 934 4078 435 conicto +3667 -63 2972 -122 conicto +2899 219 lineto +2310 3166 moveto +1591 3074 1160 2614 conicto +730 2155 730 1464 conicto +730 1007 924 686 conicto +1119 365 1313 365 conicto +1401 365 1496 430 conicto +1591 496 1707 683 conicto +1824 871 1926 1170 conicto +2028 1469 2132 1984 conicto +2237 2500 2310 3166 conicto +end_ol grestore +gsave 28.918196 7.155000 translate 0.035278 -0.035278 scale +start_ol +1912 3697 moveto +2286 3697 lineto +2286 2797 lineto +2967 2962 lineto +2967 3954 lineto +3322 3954 lineto +3322 3050 lineto +4475 3327 lineto +4475 3128 lineto +4475 2189 4433 1751 conicto +4392 1313 4319 1199 conicto +4246 1085 4086 1085 conicto +3979 1085 3619 1104 conicto +3570 1440 lineto +3770 1420 3974 1420 conicto +3998 1420 4012 1434 conicto +4027 1449 4044 1498 conicto +4061 1547 4071 1644 conicto +4081 1741 4090 1904 conicto +4100 2067 4105 2308 conicto +4110 2549 4110 2884 conicto +3322 2695 lineto +3322 705 lineto +2967 705 lineto +2967 2607 lineto +2286 2437 lineto +2286 447 lineto +2286 151 2317 95 conicto +2349 39 2524 24 conicto +2841 0 3074 0 conicto +3303 0 3653 24 conicto +3789 34 3845 36 conicto +3901 39 3983 65 conicto +4066 92 4090 102 conicto +4115 112 4161 182 conicto +4207 253 4214 292 conicto +4222 331 4244 464 conicto +4266 598 4273 690 conicto +4280 783 4295 1002 conicto +4655 929 lineto +4635 613 4618 447 conicto +4601 282 4552 126 conicto +4504 -29 4458 -90 conicto +4412 -151 4290 -207 conicto +4168 -263 4049 -277 conicto +3930 -292 3692 -306 conicto +3405 -331 3006 -331 conicto +2656 -331 2388 -306 conicto +2048 -282 1980 -175 conicto +1912 -68 1912 428 conicto +1912 2344 lineto +1411 2223 lineto +1347 2568 lineto +1912 2704 lineto +1912 3697 lineto +1128 2539 moveto +1128 -423 lineto +754 -423 lineto +754 1921 lineto +535 1552 316 1299 conicto +122 1644 lineto +919 2602 1226 3940 conicto +1586 3857 lineto +1445 3157 1128 2539 conicto +end_ol grestore +gsave 29.557595 7.155000 translate 0.035278 -0.035278 scale +start_ol +end_ol grestore +0.050000 slw +n 27.000000 7.322500 m 30.200000 7.322500 l s +0.100000 slw +[] 0 sd +1.000000 1.000000 1.000000 srgb +n 25.000000 5.000000 m 25.000000 6.800000 l 29.840000 6.800000 l 29.840000 5.000000 l f +0.000000 0.000000 0.000000 srgb +n 25.000000 5.000000 m 25.000000 6.800000 l 29.840000 6.800000 l 29.840000 5.000000 l cp s +gsave 25.500000 6.155000 translate 0.035278 -0.035278 scale +start_ol +2933 3633 moveto +3220 3804 lineto +3444 3473 3711 3040 conicto +3424 2889 lineto +3186 3278 2933 3633 conicto +4081 3030 moveto +3857 3400 3575 3799 conicto +3867 3969 lineto +4144 3570 4373 3186 conicto +4081 3030 lineto +4032 -83 moveto +3687 1313 3264 2432 conicto +3629 2549 lineto +4066 1425 4426 0 conicto +4032 -83 lineto +1761 3439 moveto +1561 1571 652 -58 conicto +297 112 lineto +1167 1678 1377 3449 conicto +1761 3439 lineto +end_ol grestore +gsave 26.139399 6.155000 translate 0.035278 -0.035278 scale +start_ol +905 2563 moveto +1211 2646 lineto +1386 2062 1561 1352 conicto +1245 1274 lineto +1060 2028 905 2563 conicto +1975 2704 moveto +2291 2787 lineto +2451 2218 2641 1440 conicto +2325 1357 lineto +2101 2262 1975 2704 conicto +3643 2753 moveto +3969 2753 lineto +3920 1318 3373 666 conicto +2826 15 1527 -170 conicto +1479 136 lineto +2082 229 2473 399 conicto +2865 569 3125 878 conicto +3385 1187 3502 1634 conicto +3619 2082 3643 2753 conicto +end_ol grestore +gsave 26.778797 6.155000 translate 0.035278 -0.035278 scale +start_ol +822 199 moveto +2291 326 2977 987 conicto +3663 1649 3697 2957 conicto +1775 2957 lineto +1488 2116 807 1484 conicto +545 1717 lineto +1449 2568 1591 3804 conicto +1955 3779 lineto +1921 3492 1873 3298 conicto +4086 3298 lineto +4086 3128 lineto +4086 1566 3317 783 conicto +2549 0 880 -141 conicto +822 199 lineto +end_ol grestore +gsave 27.418196 6.155000 translate 0.035278 -0.035278 scale +start_ol +696 3380 moveto +4168 3380 lineto +4168 3040 lineto +2627 3040 lineto +2627 443 lineto +4314 443 lineto +4314 102 lineto +550 102 lineto +550 443 lineto +2237 443 lineto +2237 3040 lineto +696 3040 lineto +696 3380 lineto +end_ol grestore +gsave 28.057595 6.155000 translate 0.035278 -0.035278 scale +start_ol +890 3536 moveto +1634 3166 2378 2709 conicto +2189 2378 lineto +1479 2816 715 3205 conicto +890 3536 lineto +832 306 moveto +2252 438 3066 1128 conicto +3881 1819 4120 3094 conicto +4475 3016 lineto +3984 214 880 -58 conicto +832 306 lineto +end_ol grestore +gsave 28.696993 6.155000 translate 0.035278 -0.035278 scale +start_ol +2811 3366 moveto +3098 3536 lineto +3419 3069 3614 2748 conicto +3327 2597 lineto +3074 3006 2811 3366 conicto +4008 2738 moveto +3755 3152 3478 3531 conicto +3770 3702 lineto +4071 3269 4300 2894 conicto +4008 2738 lineto +1571 3721 moveto +1571 2271 lineto +2933 1946 4290 1430 conicto +4173 1080 lineto +2831 1586 1571 1887 conicto +1571 -238 lineto +1182 -238 lineto +1182 3721 lineto +1571 3721 lineto +end_ol grestore +0.050000 slw +n 25.500000 6.322500 m 29.340000 6.322500 l s +0.100000 slw +[] 0 sd +1.000000 1.000000 1.000000 srgb +n 6.900000 3.000000 m 6.900000 4.800000 l 9.100000 4.800000 l 9.100000 3.000000 l f +n 6.900000 3.900000 m 6.900000 3.900000 0.900000 0.900000 180.000000 270.000000 ellipse f +n 9.100000 3.900000 m 9.100000 3.900000 0.900000 0.900000 270.000000 360.000000 ellipse f +n 6.000000 3.900000 m 6.000000 3.900000 l 10.000000 3.900000 l 10.000000 3.900000 l f +n 6.900000 3.900000 m 6.900000 3.900000 0.900000 0.900000 90.000000 180.000000 ellipse f +n 9.100000 3.900000 m 9.100000 3.900000 0.900000 0.900000 0.000000 90.000000 ellipse f +0.000000 0.000000 0.000000 srgb +n 6.900000 3.000000 m 9.100000 3.000000 l s +n 6.900000 4.800000 m 9.100000 4.800000 l s +n 6.900000 3.900000 0.900000 0.900000 180.000000 270.000000 ellipse s +n 9.100000 3.900000 0.900000 0.900000 270.000000 360.000000 ellipse s +n 6.000000 3.900000 m 6.000000 3.900000 l s +n 10.000000 3.900000 m 10.000000 3.900000 l s +n 6.900000 3.900000 0.900000 0.900000 90.000000 180.000000 ellipse s +n 9.100000 3.900000 0.900000 0.900000 0.000000 90.000000 ellipse s +gsave 6.673750 4.095000 translate 0.035278 -0.035278 scale +start_ol +2176 1375 moveto +2176 1848 1982 2108 conicto +1789 2368 1439 2368 conicto +1091 2368 897 2108 conicto +704 1848 704 1375 conicto +704 904 897 644 conicto +1091 384 1439 384 conicto +1789 384 1982 644 conicto +2176 904 2176 1375 conicto +2624 347 moveto +2624 -347 2323 -685 conicto +2023 -1024 1404 -1024 conicto +1174 -1024 971 -992 conicto +768 -961 576 -896 conicto +576 -448 lineto +766 -546 951 -593 conicto +1137 -640 1329 -640 conicto +1754 -640 1965 -415 conicto +2176 -190 2176 264 conicto +2176 448 lineto +2042 223 1833 111 conicto +1624 0 1332 0 conicto +848 0 552 376 conicto +256 753 256 1375 conicto +256 1999 552 2375 conicto +848 2752 1332 2752 conicto +1624 2752 1833 2640 conicto +2042 2529 2176 2304 conicto +2176 2688 lineto +2624 2688 lineto +2624 347 lineto +end_ol grestore +gsave 7.080869 4.095000 translate 0.035278 -0.035278 scale +start_ol +2752 1480 moveto +2752 1280 lineto +704 1280 lineto +733 811 978 565 conicto +1223 320 1660 320 conicto +1914 320 2152 384 conicto +2390 448 2624 576 conicto +2624 192 lineto +2388 67 2140 1 conicto +1893 -64 1639 -64 conicto +1001 -64 628 309 conicto +256 683 256 1320 conicto +256 1979 613 2365 conicto +970 2752 1576 2752 conicto +2120 2752 2436 2410 conicto +2752 2068 2752 1480 conicto +2304 1600 moveto +2299 1950 2099 2159 conicto +1900 2368 1572 2368 conicto +1200 2368 976 2166 conicto +753 1964 719 1597 conicto +2304 1600 lineto +end_ol grestore +gsave 7.475495 4.095000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 7.880109 4.095000 translate 0.035278 -0.035278 scale +start_ol +2752 1480 moveto +2752 1280 lineto +704 1280 lineto +733 811 978 565 conicto +1223 320 1660 320 conicto +1914 320 2152 384 conicto +2390 448 2624 576 conicto +2624 192 lineto +2388 67 2140 1 conicto +1893 -64 1639 -64 conicto +1001 -64 628 309 conicto +256 683 256 1320 conicto +256 1979 613 2365 conicto +970 2752 1576 2752 conicto +2120 2752 2436 2410 conicto +2752 2068 2752 1480 conicto +2304 1600 moveto +2299 1950 2099 2159 conicto +1900 2368 1572 2368 conicto +1200 2368 976 2166 conicto +753 1964 719 1597 conicto +2304 1600 lineto +end_ol grestore +gsave 8.274735 4.095000 translate 0.035278 -0.035278 scale +start_ol +2549 2204 moveto +2714 2485 2942 2618 conicto +3171 2752 3482 2752 conicto +3899 2752 4125 2464 conicto +4352 2177 4352 1646 conicto +4352 0 lineto +3904 0 lineto +3904 1632 lineto +3904 2006 3769 2187 conicto +3634 2368 3356 2368 conicto +3017 2368 2820 2146 conicto +2624 1925 2624 1542 conicto +2624 0 lineto +2176 0 lineto +2176 1632 lineto +2176 2008 2041 2188 conicto +1906 2368 1624 2368 conicto +1289 2368 1092 2145 conicto +896 1922 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1046 2534 1255 2643 conicto +1465 2752 1753 2752 conicto +2044 2752 2247 2611 conicto +2451 2471 2549 2204 conicto +end_ol grestore +gsave 8.896647 4.095000 translate 0.035278 -0.035278 scale +start_ol +448 2688 moveto +896 2688 lineto +896 0 lineto +448 0 lineto +448 2688 lineto +448 3712 moveto +896 3712 lineto +896 3136 lineto +448 3136 lineto +448 3712 lineto +end_ol grestore +gsave 9.073976 4.095000 translate 0.035278 -0.035278 scale +start_ol +896 3456 moveto +896 2688 lineto +1792 2688 lineto +1792 2368 lineto +896 2368 lineto +896 902 lineto +896 572 984 478 conicto +1073 384 1345 384 conicto +1792 384 lineto +1792 0 lineto +1345 0 lineto +836 0 642 194 conicto +448 389 448 902 conicto +448 2368 lineto +128 2368 lineto +128 2688 lineto +448 2688 lineto +448 3456 lineto +896 3456 lineto +end_ol grestore +0.100000 slw +[] 0 sd +1.000000 1.000000 1.000000 srgb +n 12.000000 3.000000 m 12.000000 4.800000 l 16.550000 4.800000 l 16.550000 3.000000 l f +0.000000 0.000000 0.000000 srgb +n 12.000000 3.000000 m 12.000000 4.800000 l 16.550000 4.800000 l 16.550000 3.000000 l cp s +gsave 12.500000 4.095000 translate 0.035278 -0.035278 scale +start_ol +448 2688 moveto +896 2688 lineto +896 0 lineto +448 0 lineto +448 2688 lineto +448 3712 moveto +896 3712 lineto +896 3136 lineto +448 3136 lineto +448 3712 lineto +end_ol grestore +gsave 12.677329 4.095000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 13.081943 4.095000 translate 0.035278 -0.035278 scale +start_ol +2112 2560 moveto +2112 2176 lineto +1932 2272 1738 2320 conicto +1544 2368 1336 2368 conicto +1020 2368 862 2269 conicto +704 2170 704 1972 conicto +704 1821 814 1735 conicto +925 1649 1260 1571 conicto +1403 1538 lineto +1857 1438 2048 1255 conicto +2240 1072 2240 744 conicto +2240 371 1954 153 conicto +1668 -64 1167 -64 conicto +958 -64 732 -16 conicto +506 32 256 128 conicto +256 576 lineto +491 448 719 384 conicto +947 320 1170 320 conicto +1470 320 1631 425 conicto +1792 531 1792 722 conicto +1792 900 1678 994 conicto +1564 1089 1177 1177 conicto +1032 1212 lineto +621 1298 438 1476 conicto +256 1654 256 1964 conicto +256 2341 520 2546 conicto +784 2752 1269 2752 conicto +1509 2752 1721 2704 conicto +1933 2656 2112 2560 conicto +end_ol grestore +gsave 13.414127 4.095000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 13.818741 4.095000 translate 0.035278 -0.035278 scale +start_ol +256 1536 moveto +1536 1536 lineto +1536 1152 lineto +256 1152 lineto +256 1536 lineto +end_ol grestore +gsave 14.048524 4.095000 translate 0.035278 -0.035278 scale +start_ol +2752 1480 moveto +2752 1280 lineto +704 1280 lineto +733 811 978 565 conicto +1223 320 1660 320 conicto +1914 320 2152 384 conicto +2390 448 2624 576 conicto +2624 192 lineto +2388 67 2140 1 conicto +1893 -64 1639 -64 conicto +1001 -64 628 309 conicto +256 683 256 1320 conicto +256 1979 613 2365 conicto +970 2752 1576 2752 conicto +2120 2752 2436 2410 conicto +2752 2068 2752 1480 conicto +2304 1600 moveto +2299 1950 2099 2159 conicto +1900 2368 1572 2368 conicto +1200 2368 976 2166 conicto +753 1964 719 1597 conicto +2304 1600 lineto +end_ol grestore +gsave 14.443150 4.095000 translate 0.035278 -0.035278 scale +start_ol +2549 2204 moveto +2714 2485 2942 2618 conicto +3171 2752 3482 2752 conicto +3899 2752 4125 2464 conicto +4352 2177 4352 1646 conicto +4352 0 lineto +3904 0 lineto +3904 1632 lineto +3904 2006 3769 2187 conicto +3634 2368 3356 2368 conicto +3017 2368 2820 2146 conicto +2624 1925 2624 1542 conicto +2624 0 lineto +2176 0 lineto +2176 1632 lineto +2176 2008 2041 2188 conicto +1906 2368 1624 2368 conicto +1289 2368 1092 2145 conicto +896 1922 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1046 2534 1255 2643 conicto +1465 2752 1753 2752 conicto +2044 2752 2247 2611 conicto +2451 2471 2549 2204 conicto +end_ol grestore +gsave 15.065061 4.095000 translate 0.035278 -0.035278 scale +start_ol +448 2688 moveto +896 2688 lineto +896 0 lineto +448 0 lineto +448 2688 lineto +448 3712 moveto +896 3712 lineto +896 3136 lineto +448 3136 lineto +448 3712 lineto +end_ol grestore +gsave 15.242390 4.095000 translate 0.035278 -0.035278 scale +start_ol +896 3456 moveto +896 2688 lineto +1792 2688 lineto +1792 2368 lineto +896 2368 lineto +896 902 lineto +896 572 984 478 conicto +1073 384 1345 384 conicto +1792 384 lineto +1792 0 lineto +1345 0 lineto +836 0 642 194 conicto +448 389 448 902 conicto +448 2368 lineto +128 2368 lineto +128 2688 lineto +448 2688 lineto +448 3456 lineto +896 3456 lineto +end_ol grestore +gsave 15.492156 4.095000 translate 0.035278 -0.035278 scale +start_ol +576 576 moveto +1088 576 lineto +1088 0 lineto +576 0 lineto +576 576 lineto +end_ol grestore +gsave 15.694463 4.095000 translate 0.035278 -0.035278 scale +start_ol +2368 2560 moveto +2368 2176 lineto +2180 2272 1991 2320 conicto +1803 2368 1611 2368 conicto +1180 2368 942 2099 conicto +704 1830 704 1344 conicto +704 858 942 589 conicto +1180 320 1611 320 conicto +1803 320 1991 368 conicto +2180 416 2368 512 conicto +2368 128 lineto +2184 32 1987 -16 conicto +1791 -64 1569 -64 conicto +966 -64 611 316 conicto +256 697 256 1344 conicto +256 2000 615 2376 conicto +974 2752 1598 2752 conicto +1801 2752 1994 2704 conicto +2187 2656 2368 2560 conicto +end_ol grestore +0.050000 slw +n 12.500000 4.247500 m 16.050000 4.247500 l s +0.050000 slw +[] 0 sd +[] 0 sd +0 slc +n 10.000000 3.900000 m 11.495771 3.900000 l s +[] 0 sd +0 slj +0 slc +n 11.870771 3.900000 m 11.370771 4.150000 l 11.495771 3.900000 l 11.370771 3.650000 l ef +n 11.870771 3.900000 m 11.370771 4.150000 l 11.495771 3.900000 l 11.370771 3.650000 l cp s +0.100000 slw +[] 0 sd +1.000000 1.000000 1.000000 srgb +n -1.000000 4.500000 m -1.000000 7.100000 l 3.645000 7.100000 l 3.645000 4.500000 l f +0.000000 0.000000 0.000000 srgb +n -1.000000 4.500000 m -1.000000 7.100000 l 3.645000 7.100000 l 3.645000 4.500000 l cp s +gsave -0.017500 5.595000 translate 0.035278 -0.035278 scale +start_ol +448 3520 moveto +1202 3520 lineto +2079 1148 lineto +2961 3520 lineto +3712 3520 lineto +3712 0 lineto +3200 0 lineto +3200 3095 lineto +2314 704 lineto +1846 704 lineto +960 3095 lineto +960 0 lineto +448 0 lineto +448 3520 lineto +end_ol grestore +gsave 0.534479 5.595000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 0.926608 5.595000 translate 0.035278 -0.035278 scale +start_ol +2368 2560 moveto +2368 2176 lineto +2180 2272 1991 2320 conicto +1803 2368 1611 2368 conicto +1180 2368 942 2099 conicto +704 1830 704 1344 conicto +704 858 942 589 conicto +1180 320 1611 320 conicto +1803 320 1991 368 conicto +2180 416 2368 512 conicto +2368 128 lineto +2184 32 1987 -16 conicto +1791 -64 1569 -64 conicto +966 -64 611 316 conicto +256 697 256 1344 conicto +256 2000 615 2376 conicto +974 2752 1598 2752 conicto +1801 2752 1994 2704 conicto +2187 2656 2368 2560 conicto +end_ol grestore +gsave 1.278776 5.595000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 3712 lineto +896 3712 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 1.683390 5.595000 translate 0.035278 -0.035278 scale +start_ol +448 2688 moveto +896 2688 lineto +896 0 lineto +448 0 lineto +448 2688 lineto +448 3712 moveto +896 3712 lineto +896 3136 lineto +448 3136 lineto +448 3712 lineto +end_ol grestore +gsave 1.860719 5.595000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 2.265333 5.595000 translate 0.035278 -0.035278 scale +start_ol +2752 1480 moveto +2752 1280 lineto +704 1280 lineto +733 811 978 565 conicto +1223 320 1660 320 conicto +1914 320 2152 384 conicto +2390 448 2624 576 conicto +2624 192 lineto +2388 67 2140 1 conicto +1893 -64 1639 -64 conicto +1001 -64 628 309 conicto +256 683 256 1320 conicto +256 1979 613 2365 conicto +970 2752 1576 2752 conicto +2120 2752 2436 2410 conicto +2752 2068 2752 1480 conicto +2304 1600 moveto +2299 1950 2099 2159 conicto +1900 2368 1572 2368 conicto +1200 2368 976 2166 conicto +753 1964 719 1597 conicto +2304 1600 lineto +end_ol grestore +gsave -0.500000 6.395000 translate 0.035278 -0.035278 scale +start_ol +960 3136 moveto +960 384 lineto +1536 384 lineto +2266 384 2605 716 conicto +2944 1048 2944 1764 conicto +2944 2475 2605 2805 conicto +2266 3136 1536 3136 conicto +960 3136 lineto +448 3520 moveto +1463 3520 lineto +2493 3520 2974 3094 conicto +3456 2669 3456 1764 conicto +3456 853 2972 426 conicto +2488 0 1463 0 conicto +448 0 lineto +448 3520 lineto +end_ol grestore +gsave -0.007966 6.395000 translate 0.035278 -0.035278 scale +start_ol +2752 1480 moveto +2752 1280 lineto +704 1280 lineto +733 811 978 565 conicto +1223 320 1660 320 conicto +1914 320 2152 384 conicto +2390 448 2624 576 conicto +2624 192 lineto +2388 67 2140 1 conicto +1893 -64 1639 -64 conicto +1001 -64 628 309 conicto +256 683 256 1320 conicto +256 1979 613 2365 conicto +970 2752 1576 2752 conicto +2120 2752 2436 2410 conicto +2752 2068 2752 1480 conicto +2304 1600 moveto +2299 1950 2099 2159 conicto +1900 2368 1572 2368 conicto +1200 2368 976 2166 conicto +753 1964 719 1597 conicto +2304 1600 lineto +end_ol grestore +gsave 0.386660 6.395000 translate 0.035278 -0.035278 scale +start_ol +2112 2560 moveto +2112 2176 lineto +1932 2272 1738 2320 conicto +1544 2368 1336 2368 conicto +1020 2368 862 2269 conicto +704 2170 704 1972 conicto +704 1821 814 1735 conicto +925 1649 1260 1571 conicto +1403 1538 lineto +1857 1438 2048 1255 conicto +2240 1072 2240 744 conicto +2240 371 1954 153 conicto +1668 -64 1167 -64 conicto +958 -64 732 -16 conicto +506 32 256 128 conicto +256 576 lineto +491 448 719 384 conicto +947 320 1170 320 conicto +1470 320 1631 425 conicto +1792 531 1792 722 conicto +1792 900 1678 994 conicto +1564 1089 1177 1177 conicto +1032 1212 lineto +621 1298 438 1476 conicto +256 1654 256 1964 conicto +256 2341 520 2546 conicto +784 2752 1269 2752 conicto +1509 2752 1721 2704 conicto +1933 2656 2112 2560 conicto +end_ol grestore +gsave 0.718844 6.395000 translate 0.035278 -0.035278 scale +start_ol +2368 2560 moveto +2368 2176 lineto +2180 2272 1991 2320 conicto +1803 2368 1611 2368 conicto +1180 2368 942 2099 conicto +704 1830 704 1344 conicto +704 858 942 589 conicto +1180 320 1611 320 conicto +1803 320 1991 368 conicto +2180 416 2368 512 conicto +2368 128 lineto +2184 32 1987 -16 conicto +1791 -64 1569 -64 conicto +966 -64 611 316 conicto +256 697 256 1344 conicto +256 2000 615 2376 conicto +974 2752 1598 2752 conicto +1801 2752 1994 2704 conicto +2187 2656 2368 2560 conicto +end_ol grestore +gsave 1.071013 6.395000 translate 0.035278 -0.035278 scale +start_ol +1984 2304 moveto +1912 2337 1828 2352 conicto +1744 2368 1642 2368 conicto +1282 2368 1089 2127 conicto +896 1887 896 1437 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1030 2531 1245 2641 conicto +1460 2752 1767 2752 conicto +1811 2752 1864 2752 conicto +1917 2752 1982 2752 conicto +1984 2304 lineto +end_ol grestore +gsave 1.333265 6.395000 translate 0.035278 -0.035278 scale +start_ol +448 2688 moveto +896 2688 lineto +896 0 lineto +448 0 lineto +448 2688 lineto +448 3712 moveto +896 3712 lineto +896 3136 lineto +448 3136 lineto +448 3712 lineto +end_ol grestore +gsave 1.510594 6.395000 translate 0.035278 -0.035278 scale +start_ol +896 384 moveto +896 -1024 lineto +448 -1024 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1032 2531 1240 2641 conicto +1448 2752 1737 2752 conicto +2217 2752 2516 2364 conicto +2816 1976 2816 1344 conicto +2816 712 2516 324 conicto +2217 -64 1737 -64 conicto +1448 -64 1240 46 conicto +1032 157 896 384 conicto +2368 1344 moveto +2368 1823 2171 2095 conicto +1975 2368 1632 2368 conicto +1289 2368 1092 2095 conicto +896 1823 896 1344 conicto +896 865 1092 592 conicto +1289 320 1632 320 conicto +1975 320 2171 592 conicto +2368 865 2368 1344 conicto +end_ol grestore +gsave 1.917713 6.395000 translate 0.035278 -0.035278 scale +start_ol +896 3456 moveto +896 2688 lineto +1792 2688 lineto +1792 2368 lineto +896 2368 lineto +896 902 lineto +896 572 984 478 conicto +1073 384 1345 384 conicto +1792 384 lineto +1792 0 lineto +1345 0 lineto +836 0 642 194 conicto +448 389 448 902 conicto +448 2368 lineto +128 2368 lineto +128 2688 lineto +448 2688 lineto +448 3456 lineto +896 3456 lineto +end_ol grestore +gsave 2.167480 6.395000 translate 0.035278 -0.035278 scale +start_ol +448 2688 moveto +896 2688 lineto +896 0 lineto +448 0 lineto +448 2688 lineto +448 3712 moveto +896 3712 lineto +896 3136 lineto +448 3136 lineto +448 3712 lineto +end_ol grestore +gsave 2.344808 6.395000 translate 0.035278 -0.035278 scale +start_ol +1473 2368 moveto +1117 2368 910 2094 conicto +704 1820 704 1344 conicto +704 868 909 594 conicto +1115 320 1473 320 conicto +1827 320 2033 595 conicto +2240 870 2240 1344 conicto +2240 1816 2033 2092 conicto +1827 2368 1473 2368 conicto +1472 2752 moveto +2040 2752 2364 2378 conicto +2688 2005 2688 1344 conicto +2688 685 2364 310 conicto +2040 -64 1472 -64 conicto +902 -64 579 310 conicto +256 685 256 1344 conicto +256 2005 579 2378 conicto +902 2752 1472 2752 conicto +end_ol grestore +gsave 2.736937 6.395000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +0.050000 slw +n -0.017500 5.747500 m 2.662500 5.747500 l s +n -0.500000 6.547500 m 3.145000 6.547500 l s +0.050000 slw +[] 0 sd +[] 0 sd +0 slc +n 3.645000 5.800000 m 5.664637 4.170569 l s +[] 0 sd +0 slj +0 slc +n 5.956493 3.935101 m 5.724330 4.443629 l 5.664637 4.170569 l 5.410373 4.054488 l ef +n 5.956493 3.935101 m 5.724330 4.443629 l 5.664637 4.170569 l 5.410373 4.054488 l cp s +0.100000 slw +[] 0 sd +1.000000 1.000000 1.000000 srgb +n 6.900000 5.000000 m 6.900000 6.800000 l 9.417500 6.800000 l 9.417500 5.000000 l f +n 6.900000 5.900000 m 6.900000 5.900000 0.900000 0.900000 180.000000 270.000000 ellipse f +n 9.417500 5.900000 m 9.417500 5.900000 0.900000 0.900000 270.000000 360.000000 ellipse f +n 6.000000 5.900000 m 6.000000 5.900000 l 10.317500 5.900000 l 10.317500 5.900000 l f +n 6.900000 5.900000 m 6.900000 5.900000 0.900000 0.900000 90.000000 180.000000 ellipse f +n 9.417500 5.900000 m 9.417500 5.900000 0.900000 0.900000 0.000000 90.000000 ellipse f +0.000000 0.000000 0.000000 srgb +n 6.900000 5.000000 m 9.417500 5.000000 l s +n 6.900000 6.800000 m 9.417500 6.800000 l s +n 6.900000 5.900000 0.900000 0.900000 180.000000 270.000000 ellipse s +n 9.417500 5.900000 0.900000 0.900000 270.000000 360.000000 ellipse s +n 6.000000 5.900000 m 6.000000 5.900000 l s +n 10.317500 5.900000 m 10.317500 5.900000 l s +n 6.900000 5.900000 0.900000 0.900000 90.000000 180.000000 ellipse s +n 9.417500 5.900000 0.900000 0.900000 0.000000 90.000000 ellipse s +gsave 6.500000 6.095000 translate 0.035278 -0.035278 scale +start_ol +2176 1375 moveto +2176 1848 1982 2108 conicto +1789 2368 1439 2368 conicto +1091 2368 897 2108 conicto +704 1848 704 1375 conicto +704 904 897 644 conicto +1091 384 1439 384 conicto +1789 384 1982 644 conicto +2176 904 2176 1375 conicto +2624 347 moveto +2624 -347 2323 -685 conicto +2023 -1024 1404 -1024 conicto +1174 -1024 971 -992 conicto +768 -961 576 -896 conicto +576 -448 lineto +766 -546 951 -593 conicto +1137 -640 1329 -640 conicto +1754 -640 1965 -415 conicto +2176 -190 2176 264 conicto +2176 448 lineto +2042 223 1833 111 conicto +1624 0 1332 0 conicto +848 0 552 376 conicto +256 753 256 1375 conicto +256 1999 552 2375 conicto +848 2752 1332 2752 conicto +1624 2752 1833 2640 conicto +2042 2529 2176 2304 conicto +2176 2688 lineto +2624 2688 lineto +2624 347 lineto +end_ol grestore +gsave 6.907119 6.095000 translate 0.035278 -0.035278 scale +start_ol +2752 1480 moveto +2752 1280 lineto +704 1280 lineto +733 811 978 565 conicto +1223 320 1660 320 conicto +1914 320 2152 384 conicto +2390 448 2624 576 conicto +2624 192 lineto +2388 67 2140 1 conicto +1893 -64 1639 -64 conicto +1001 -64 628 309 conicto +256 683 256 1320 conicto +256 1979 613 2365 conicto +970 2752 1576 2752 conicto +2120 2752 2436 2410 conicto +2752 2068 2752 1480 conicto +2304 1600 moveto +2299 1950 2099 2159 conicto +1900 2368 1572 2368 conicto +1200 2368 976 2166 conicto +753 1964 719 1597 conicto +2304 1600 lineto +end_ol grestore +gsave 7.301745 6.095000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 7.706359 6.095000 translate 0.035278 -0.035278 scale +start_ol +1473 2368 moveto +1117 2368 910 2094 conicto +704 1820 704 1344 conicto +704 868 909 594 conicto +1115 320 1473 320 conicto +1827 320 2033 595 conicto +2240 870 2240 1344 conicto +2240 1816 2033 2092 conicto +1827 2368 1473 2368 conicto +1472 2752 moveto +2040 2752 2364 2378 conicto +2688 2005 2688 1344 conicto +2688 685 2364 310 conicto +2040 -64 1472 -64 conicto +902 -64 579 310 conicto +256 685 256 1344 conicto +256 2005 579 2378 conicto +902 2752 1472 2752 conicto +end_ol grestore +gsave 8.098488 6.095000 translate 0.035278 -0.035278 scale +start_ol +448 1040 moveto +448 2688 lineto +896 2688 lineto +896 1057 lineto +896 689 1042 504 conicto +1188 320 1481 320 conicto +1832 320 2036 541 conicto +2240 763 2240 1145 conicto +2240 2688 lineto +2688 2688 lineto +2688 0 lineto +2240 0 lineto +2240 384 lineto +2081 157 1870 46 conicto +1660 -64 1382 -64 conicto +923 -64 685 217 conicto +448 499 448 1040 conicto +end_ol grestore +gsave 8.503103 6.095000 translate 0.035278 -0.035278 scale +start_ol +896 3456 moveto +896 2688 lineto +1792 2688 lineto +1792 2368 lineto +896 2368 lineto +896 902 lineto +896 572 984 478 conicto +1073 384 1345 384 conicto +1792 384 lineto +1792 0 lineto +1345 0 lineto +836 0 642 194 conicto +448 389 448 902 conicto +448 2368 lineto +128 2368 lineto +128 2688 lineto +448 2688 lineto +448 3456 lineto +896 3456 lineto +end_ol grestore +gsave 8.752869 6.095000 translate 0.035278 -0.035278 scale +start_ol +896 384 moveto +896 -1024 lineto +448 -1024 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1032 2531 1240 2641 conicto +1448 2752 1737 2752 conicto +2217 2752 2516 2364 conicto +2816 1976 2816 1344 conicto +2816 712 2516 324 conicto +2217 -64 1737 -64 conicto +1448 -64 1240 46 conicto +1032 157 896 384 conicto +2368 1344 moveto +2368 1823 2171 2095 conicto +1975 2368 1632 2368 conicto +1289 2368 1092 2095 conicto +896 1823 896 1344 conicto +896 865 1092 592 conicto +1289 320 1632 320 conicto +1975 320 2171 592 conicto +2368 865 2368 1344 conicto +end_ol grestore +gsave 9.159989 6.095000 translate 0.035278 -0.035278 scale +start_ol +448 1040 moveto +448 2688 lineto +896 2688 lineto +896 1057 lineto +896 689 1042 504 conicto +1188 320 1481 320 conicto +1832 320 2036 541 conicto +2240 763 2240 1145 conicto +2240 2688 lineto +2688 2688 lineto +2688 0 lineto +2240 0 lineto +2240 384 lineto +2081 157 1870 46 conicto +1660 -64 1382 -64 conicto +923 -64 685 217 conicto +448 499 448 1040 conicto +end_ol grestore +gsave 9.564603 6.095000 translate 0.035278 -0.035278 scale +start_ol +896 3456 moveto +896 2688 lineto +1792 2688 lineto +1792 2368 lineto +896 2368 lineto +896 902 lineto +896 572 984 478 conicto +1073 384 1345 384 conicto +1792 384 lineto +1792 0 lineto +1345 0 lineto +836 0 642 194 conicto +448 389 448 902 conicto +448 2368 lineto +128 2368 lineto +128 2688 lineto +448 2688 lineto +448 3456 lineto +896 3456 lineto +end_ol grestore +0.100000 slw +[] 0 sd +1.000000 1.000000 1.000000 srgb +n 6.900000 7.000000 m 6.900000 8.800000 l 9.102500 8.800000 l 9.102500 7.000000 l f +n 6.900000 7.900000 m 6.900000 7.900000 0.900000 0.900000 180.000000 270.000000 ellipse f +n 9.102500 7.900000 m 9.102500 7.900000 0.900000 0.900000 270.000000 360.000000 ellipse f +n 6.000000 7.900000 m 6.000000 7.900000 l 10.002500 7.900000 l 10.002500 7.900000 l f +n 6.900000 7.900000 m 6.900000 7.900000 0.900000 0.900000 90.000000 180.000000 ellipse f +n 9.102500 7.900000 m 9.102500 7.900000 0.900000 0.900000 0.000000 90.000000 ellipse f +0.000000 0.000000 0.000000 srgb +n 6.900000 7.000000 m 9.102500 7.000000 l s +n 6.900000 8.800000 m 9.102500 8.800000 l s +n 6.900000 7.900000 0.900000 0.900000 180.000000 270.000000 ellipse s +n 9.102500 7.900000 0.900000 0.900000 270.000000 360.000000 ellipse s +n 6.000000 7.900000 m 6.000000 7.900000 l s +n 10.002500 7.900000 m 10.002500 7.900000 l s +n 6.900000 7.900000 0.900000 0.900000 90.000000 180.000000 ellipse s +n 9.102500 7.900000 0.900000 0.900000 0.000000 90.000000 ellipse s +gsave 6.500000 8.095000 translate 0.035278 -0.035278 scale +start_ol +2176 1375 moveto +2176 1848 1982 2108 conicto +1789 2368 1439 2368 conicto +1091 2368 897 2108 conicto +704 1848 704 1375 conicto +704 904 897 644 conicto +1091 384 1439 384 conicto +1789 384 1982 644 conicto +2176 904 2176 1375 conicto +2624 347 moveto +2624 -347 2323 -685 conicto +2023 -1024 1404 -1024 conicto +1174 -1024 971 -992 conicto +768 -961 576 -896 conicto +576 -448 lineto +766 -546 951 -593 conicto +1137 -640 1329 -640 conicto +1754 -640 1965 -415 conicto +2176 -190 2176 264 conicto +2176 448 lineto +2042 223 1833 111 conicto +1624 0 1332 0 conicto +848 0 552 376 conicto +256 753 256 1375 conicto +256 1999 552 2375 conicto +848 2752 1332 2752 conicto +1624 2752 1833 2640 conicto +2042 2529 2176 2304 conicto +2176 2688 lineto +2624 2688 lineto +2624 347 lineto +end_ol grestore +gsave 6.907119 8.095000 translate 0.035278 -0.035278 scale +start_ol +2752 1480 moveto +2752 1280 lineto +704 1280 lineto +733 811 978 565 conicto +1223 320 1660 320 conicto +1914 320 2152 384 conicto +2390 448 2624 576 conicto +2624 192 lineto +2388 67 2140 1 conicto +1893 -64 1639 -64 conicto +1001 -64 628 309 conicto +256 683 256 1320 conicto +256 1979 613 2365 conicto +970 2752 1576 2752 conicto +2120 2752 2436 2410 conicto +2752 2068 2752 1480 conicto +2304 1600 moveto +2299 1950 2099 2159 conicto +1900 2368 1572 2368 conicto +1200 2368 976 2166 conicto +753 1964 719 1597 conicto +2304 1600 lineto +end_ol grestore +gsave 7.301745 8.095000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 7.706359 8.095000 translate 0.035278 -0.035278 scale +start_ol +1984 2304 moveto +1912 2337 1828 2352 conicto +1744 2368 1642 2368 conicto +1282 2368 1089 2127 conicto +896 1887 896 1437 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1030 2531 1245 2641 conicto +1460 2752 1767 2752 conicto +1811 2752 1864 2752 conicto +1917 2752 1982 2752 conicto +1984 2304 lineto +end_ol grestore +gsave 7.953621 8.095000 translate 0.035278 -0.035278 scale +start_ol +2752 1480 moveto +2752 1280 lineto +704 1280 lineto +733 811 978 565 conicto +1223 320 1660 320 conicto +1914 320 2152 384 conicto +2390 448 2624 576 conicto +2624 192 lineto +2388 67 2140 1 conicto +1893 -64 1639 -64 conicto +1001 -64 628 309 conicto +256 683 256 1320 conicto +256 1979 613 2365 conicto +970 2752 1576 2752 conicto +2120 2752 2436 2410 conicto +2752 2068 2752 1480 conicto +2304 1600 moveto +2299 1950 2099 2159 conicto +1900 2368 1572 2368 conicto +1200 2368 976 2166 conicto +753 1964 719 1597 conicto +2304 1600 lineto +end_ol grestore +gsave 8.348247 8.095000 translate 0.035278 -0.035278 scale +start_ol +2368 2560 moveto +2368 2176 lineto +2180 2272 1991 2320 conicto +1803 2368 1611 2368 conicto +1180 2368 942 2099 conicto +704 1830 704 1344 conicto +704 858 942 589 conicto +1180 320 1611 320 conicto +1803 320 1991 368 conicto +2180 416 2368 512 conicto +2368 128 lineto +2184 32 1987 -16 conicto +1791 -64 1569 -64 conicto +966 -64 611 316 conicto +256 697 256 1344 conicto +256 2000 615 2376 conicto +974 2752 1598 2752 conicto +1801 2752 1994 2704 conicto +2187 2656 2368 2560 conicto +end_ol grestore +gsave 8.700416 8.095000 translate 0.035278 -0.035278 scale +start_ol +1473 2368 moveto +1117 2368 910 2094 conicto +704 1820 704 1344 conicto +704 868 909 594 conicto +1115 320 1473 320 conicto +1827 320 2033 595 conicto +2240 870 2240 1344 conicto +2240 1816 2033 2092 conicto +1827 2368 1473 2368 conicto +1472 2752 moveto +2040 2752 2364 2378 conicto +2688 2005 2688 1344 conicto +2688 685 2364 310 conicto +2040 -64 1472 -64 conicto +902 -64 579 310 conicto +256 685 256 1344 conicto +256 2005 579 2378 conicto +902 2752 1472 2752 conicto +end_ol grestore +gsave 9.092545 8.095000 translate 0.035278 -0.035278 scale +start_ol +2176 1375 moveto +2176 1848 1982 2108 conicto +1789 2368 1439 2368 conicto +1091 2368 897 2108 conicto +704 1848 704 1375 conicto +704 904 897 644 conicto +1091 384 1439 384 conicto +1789 384 1982 644 conicto +2176 904 2176 1375 conicto +2624 347 moveto +2624 -347 2323 -685 conicto +2023 -1024 1404 -1024 conicto +1174 -1024 971 -992 conicto +768 -961 576 -896 conicto +576 -448 lineto +766 -546 951 -593 conicto +1137 -640 1329 -640 conicto +1754 -640 1965 -415 conicto +2176 -190 2176 264 conicto +2176 448 lineto +2042 223 1833 111 conicto +1624 0 1332 0 conicto +848 0 552 376 conicto +256 753 256 1375 conicto +256 1999 552 2375 conicto +848 2752 1332 2752 conicto +1624 2752 1833 2640 conicto +2042 2529 2176 2304 conicto +2176 2688 lineto +2624 2688 lineto +2624 347 lineto +end_ol grestore +0.050000 slw +[] 0 sd +[] 0 sd +0 slc +n 3.645000 5.800000 m 5.569486 5.881719 l s +[] 0 sd +0 slj +0 slc +n 5.944149 5.897628 m 5.433993 6.126191 l 5.569486 5.881719 l 5.455205 5.626641 l ef +n 5.944149 5.897628 m 5.433993 6.126191 l 5.569486 5.881719 l 5.455205 5.626641 l cp s +0.050000 slw +[] 0 sd +[] 0 sd +0 slc +n 3.645000 5.800000 m 5.678393 7.613216 l s +[] 0 sd +0 slj +0 slc +n 5.958277 7.862795 m 5.418712 7.716613 l 5.678393 7.613216 l 5.751483 7.343434 l ef +n 5.958277 7.862795 m 5.418712 7.716613 l 5.678393 7.613216 l 5.751483 7.343434 l cp s +0.100000 slw +[] 0 sd +1.000000 1.000000 1.000000 srgb +n 12.000000 5.000000 m 12.000000 6.800000 l 17.227500 6.800000 l 17.227500 5.000000 l f +0.000000 0.000000 0.000000 srgb +n 12.000000 5.000000 m 12.000000 6.800000 l 17.227500 6.800000 l 17.227500 5.000000 l cp s +gsave 12.500000 6.095000 translate 0.035278 -0.035278 scale +start_ol +448 2688 moveto +896 2688 lineto +896 0 lineto +448 0 lineto +448 2688 lineto +448 3712 moveto +896 3712 lineto +896 3136 lineto +448 3136 lineto +448 3712 lineto +end_ol grestore +gsave 12.677329 6.095000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 13.081943 6.095000 translate 0.035278 -0.035278 scale +start_ol +2112 2560 moveto +2112 2176 lineto +1932 2272 1738 2320 conicto +1544 2368 1336 2368 conicto +1020 2368 862 2269 conicto +704 2170 704 1972 conicto +704 1821 814 1735 conicto +925 1649 1260 1571 conicto +1403 1538 lineto +1857 1438 2048 1255 conicto +2240 1072 2240 744 conicto +2240 371 1954 153 conicto +1668 -64 1167 -64 conicto +958 -64 732 -16 conicto +506 32 256 128 conicto +256 576 lineto +491 448 719 384 conicto +947 320 1170 320 conicto +1470 320 1631 425 conicto +1792 531 1792 722 conicto +1792 900 1678 994 conicto +1564 1089 1177 1177 conicto +1032 1212 lineto +621 1298 438 1476 conicto +256 1654 256 1964 conicto +256 2341 520 2546 conicto +784 2752 1269 2752 conicto +1509 2752 1721 2704 conicto +1933 2656 2112 2560 conicto +end_ol grestore +gsave 13.414127 6.095000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 13.818741 6.095000 translate 0.035278 -0.035278 scale +start_ol +256 1536 moveto +1536 1536 lineto +1536 1152 lineto +256 1152 lineto +256 1536 lineto +end_ol grestore +gsave 14.061009 6.095000 translate 0.035278 -0.035278 scale +start_ol +1473 2368 moveto +1117 2368 910 2094 conicto +704 1820 704 1344 conicto +704 868 909 594 conicto +1115 320 1473 320 conicto +1827 320 2033 595 conicto +2240 870 2240 1344 conicto +2240 1816 2033 2092 conicto +1827 2368 1473 2368 conicto +1472 2752 moveto +2040 2752 2364 2378 conicto +2688 2005 2688 1344 conicto +2688 685 2364 310 conicto +2040 -64 1472 -64 conicto +902 -64 579 310 conicto +256 685 256 1344 conicto +256 2005 579 2378 conicto +902 2752 1472 2752 conicto +end_ol grestore +gsave 14.453138 6.095000 translate 0.035278 -0.035278 scale +start_ol +448 1040 moveto +448 2688 lineto +896 2688 lineto +896 1057 lineto +896 689 1042 504 conicto +1188 320 1481 320 conicto +1832 320 2036 541 conicto +2240 763 2240 1145 conicto +2240 2688 lineto +2688 2688 lineto +2688 0 lineto +2240 0 lineto +2240 384 lineto +2081 157 1870 46 conicto +1660 -64 1382 -64 conicto +923 -64 685 217 conicto +448 499 448 1040 conicto +end_ol grestore +gsave 14.857752 6.095000 translate 0.035278 -0.035278 scale +start_ol +896 3456 moveto +896 2688 lineto +1792 2688 lineto +1792 2368 lineto +896 2368 lineto +896 902 lineto +896 572 984 478 conicto +1073 384 1345 384 conicto +1792 384 lineto +1792 0 lineto +1345 0 lineto +836 0 642 194 conicto +448 389 448 902 conicto +448 2368 lineto +128 2368 lineto +128 2688 lineto +448 2688 lineto +448 3456 lineto +896 3456 lineto +end_ol grestore +gsave 15.107518 6.095000 translate 0.035278 -0.035278 scale +start_ol +896 384 moveto +896 -1024 lineto +448 -1024 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1032 2531 1240 2641 conicto +1448 2752 1737 2752 conicto +2217 2752 2516 2364 conicto +2816 1976 2816 1344 conicto +2816 712 2516 324 conicto +2217 -64 1737 -64 conicto +1448 -64 1240 46 conicto +1032 157 896 384 conicto +2368 1344 moveto +2368 1823 2171 2095 conicto +1975 2368 1632 2368 conicto +1289 2368 1092 2095 conicto +896 1823 896 1344 conicto +896 865 1092 592 conicto +1289 320 1632 320 conicto +1975 320 2171 592 conicto +2368 865 2368 1344 conicto +end_ol grestore +gsave 15.514638 6.095000 translate 0.035278 -0.035278 scale +start_ol +448 1040 moveto +448 2688 lineto +896 2688 lineto +896 1057 lineto +896 689 1042 504 conicto +1188 320 1481 320 conicto +1832 320 2036 541 conicto +2240 763 2240 1145 conicto +2240 2688 lineto +2688 2688 lineto +2688 0 lineto +2240 0 lineto +2240 384 lineto +2081 157 1870 46 conicto +1660 -64 1382 -64 conicto +923 -64 685 217 conicto +448 499 448 1040 conicto +end_ol grestore +gsave 15.919252 6.095000 translate 0.035278 -0.035278 scale +start_ol +896 3456 moveto +896 2688 lineto +1792 2688 lineto +1792 2368 lineto +896 2368 lineto +896 902 lineto +896 572 984 478 conicto +1073 384 1345 384 conicto +1792 384 lineto +1792 0 lineto +1345 0 lineto +836 0 642 194 conicto +448 389 448 902 conicto +448 2368 lineto +128 2368 lineto +128 2688 lineto +448 2688 lineto +448 3456 lineto +896 3456 lineto +end_ol grestore +gsave 16.169018 6.095000 translate 0.035278 -0.035278 scale +start_ol +576 576 moveto +1088 576 lineto +1088 0 lineto +576 0 lineto +576 576 lineto +end_ol grestore +gsave 16.371325 6.095000 translate 0.035278 -0.035278 scale +start_ol +2368 2560 moveto +2368 2176 lineto +2180 2272 1991 2320 conicto +1803 2368 1611 2368 conicto +1180 2368 942 2099 conicto +704 1830 704 1344 conicto +704 858 942 589 conicto +1180 320 1611 320 conicto +1803 320 1991 368 conicto +2180 416 2368 512 conicto +2368 128 lineto +2184 32 1987 -16 conicto +1791 -64 1569 -64 conicto +966 -64 611 316 conicto +256 697 256 1344 conicto +256 2000 615 2376 conicto +974 2752 1598 2752 conicto +1801 2752 1994 2704 conicto +2187 2656 2368 2560 conicto +end_ol grestore +0.050000 slw +n 12.500000 6.247500 m 16.727500 6.247500 l s +0.100000 slw +[] 0 sd +1.000000 1.000000 1.000000 srgb +n 12.000000 7.000000 m 12.000000 8.800000 l 16.900000 8.800000 l 16.900000 7.000000 l f +0.000000 0.000000 0.000000 srgb +n 12.000000 7.000000 m 12.000000 8.800000 l 16.900000 8.800000 l 16.900000 7.000000 l cp s +gsave 12.500000 8.095000 translate 0.035278 -0.035278 scale +start_ol +448 2688 moveto +896 2688 lineto +896 0 lineto +448 0 lineto +448 2688 lineto +448 3712 moveto +896 3712 lineto +896 3136 lineto +448 3136 lineto +448 3712 lineto +end_ol grestore +gsave 12.677329 8.095000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 13.081943 8.095000 translate 0.035278 -0.035278 scale +start_ol +2112 2560 moveto +2112 2176 lineto +1932 2272 1738 2320 conicto +1544 2368 1336 2368 conicto +1020 2368 862 2269 conicto +704 2170 704 1972 conicto +704 1821 814 1735 conicto +925 1649 1260 1571 conicto +1403 1538 lineto +1857 1438 2048 1255 conicto +2240 1072 2240 744 conicto +2240 371 1954 153 conicto +1668 -64 1167 -64 conicto +958 -64 732 -16 conicto +506 32 256 128 conicto +256 576 lineto +491 448 719 384 conicto +947 320 1170 320 conicto +1470 320 1631 425 conicto +1792 531 1792 722 conicto +1792 900 1678 994 conicto +1564 1089 1177 1177 conicto +1032 1212 lineto +621 1298 438 1476 conicto +256 1654 256 1964 conicto +256 2341 520 2546 conicto +784 2752 1269 2752 conicto +1509 2752 1721 2704 conicto +1933 2656 2112 2560 conicto +end_ol grestore +gsave 13.414127 8.095000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 13.818741 8.095000 translate 0.035278 -0.035278 scale +start_ol +256 1536 moveto +1536 1536 lineto +1536 1152 lineto +256 1152 lineto +256 1536 lineto +end_ol grestore +gsave 14.048524 8.095000 translate 0.035278 -0.035278 scale +start_ol +1984 2304 moveto +1912 2337 1828 2352 conicto +1744 2368 1642 2368 conicto +1282 2368 1089 2127 conicto +896 1887 896 1437 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1030 2531 1245 2641 conicto +1460 2752 1767 2752 conicto +1811 2752 1864 2752 conicto +1917 2752 1982 2752 conicto +1984 2304 lineto +end_ol grestore +gsave 14.295785 8.095000 translate 0.035278 -0.035278 scale +start_ol +2752 1480 moveto +2752 1280 lineto +704 1280 lineto +733 811 978 565 conicto +1223 320 1660 320 conicto +1914 320 2152 384 conicto +2390 448 2624 576 conicto +2624 192 lineto +2388 67 2140 1 conicto +1893 -64 1639 -64 conicto +1001 -64 628 309 conicto +256 683 256 1320 conicto +256 1979 613 2365 conicto +970 2752 1576 2752 conicto +2120 2752 2436 2410 conicto +2752 2068 2752 1480 conicto +2304 1600 moveto +2299 1950 2099 2159 conicto +1900 2368 1572 2368 conicto +1200 2368 976 2166 conicto +753 1964 719 1597 conicto +2304 1600 lineto +end_ol grestore +gsave 14.690411 8.095000 translate 0.035278 -0.035278 scale +start_ol +2368 2560 moveto +2368 2176 lineto +2180 2272 1991 2320 conicto +1803 2368 1611 2368 conicto +1180 2368 942 2099 conicto +704 1830 704 1344 conicto +704 858 942 589 conicto +1180 320 1611 320 conicto +1803 320 1991 368 conicto +2180 416 2368 512 conicto +2368 128 lineto +2184 32 1987 -16 conicto +1791 -64 1569 -64 conicto +966 -64 611 316 conicto +256 697 256 1344 conicto +256 2000 615 2376 conicto +974 2752 1598 2752 conicto +1801 2752 1994 2704 conicto +2187 2656 2368 2560 conicto +end_ol grestore +gsave 15.042580 8.095000 translate 0.035278 -0.035278 scale +start_ol +1473 2368 moveto +1117 2368 910 2094 conicto +704 1820 704 1344 conicto +704 868 909 594 conicto +1115 320 1473 320 conicto +1827 320 2033 595 conicto +2240 870 2240 1344 conicto +2240 1816 2033 2092 conicto +1827 2368 1473 2368 conicto +1472 2752 moveto +2040 2752 2364 2378 conicto +2688 2005 2688 1344 conicto +2688 685 2364 310 conicto +2040 -64 1472 -64 conicto +902 -64 579 310 conicto +256 685 256 1344 conicto +256 2005 579 2378 conicto +902 2752 1472 2752 conicto +end_ol grestore +gsave 15.434709 8.095000 translate 0.035278 -0.035278 scale +start_ol +2176 1375 moveto +2176 1848 1982 2108 conicto +1789 2368 1439 2368 conicto +1091 2368 897 2108 conicto +704 1848 704 1375 conicto +704 904 897 644 conicto +1091 384 1439 384 conicto +1789 384 1982 644 conicto +2176 904 2176 1375 conicto +2624 347 moveto +2624 -347 2323 -685 conicto +2023 -1024 1404 -1024 conicto +1174 -1024 971 -992 conicto +768 -961 576 -896 conicto +576 -448 lineto +766 -546 951 -593 conicto +1137 -640 1329 -640 conicto +1754 -640 1965 -415 conicto +2176 -190 2176 264 conicto +2176 448 lineto +2042 223 1833 111 conicto +1624 0 1332 0 conicto +848 0 552 376 conicto +256 753 256 1375 conicto +256 1999 552 2375 conicto +848 2752 1332 2752 conicto +1624 2752 1833 2640 conicto +2042 2529 2176 2304 conicto +2176 2688 lineto +2624 2688 lineto +2624 347 lineto +end_ol grestore +gsave 15.841828 8.095000 translate 0.035278 -0.035278 scale +start_ol +576 576 moveto +1088 576 lineto +1088 0 lineto +576 0 lineto +576 576 lineto +end_ol grestore +gsave 16.044135 8.095000 translate 0.035278 -0.035278 scale +start_ol +2368 2560 moveto +2368 2176 lineto +2180 2272 1991 2320 conicto +1803 2368 1611 2368 conicto +1180 2368 942 2099 conicto +704 1830 704 1344 conicto +704 858 942 589 conicto +1180 320 1611 320 conicto +1803 320 1991 368 conicto +2180 416 2368 512 conicto +2368 128 lineto +2184 32 1987 -16 conicto +1791 -64 1569 -64 conicto +966 -64 611 316 conicto +256 697 256 1344 conicto +256 2000 615 2376 conicto +974 2752 1598 2752 conicto +1801 2752 1994 2704 conicto +2187 2656 2368 2560 conicto +end_ol grestore +0.050000 slw +n 12.500000 8.247500 m 16.400000 8.247500 l s +0.050000 slw +[] 0 sd +[] 0 sd +0 slc +n 10.317500 5.900000 m 11.569098 5.900000 l s +[] 0 sd +0 slj +0 slc +n 11.944098 5.900000 m 11.444098 6.150000 l 11.569098 5.900000 l 11.444098 5.650000 l ef +n 11.944098 5.900000 m 11.444098 6.150000 l 11.569098 5.900000 l 11.444098 5.650000 l cp s +0.050000 slw +[] 0 sd +[] 0 sd +0 slc +n 10.002500 7.900000 m 11.569098 7.900000 l s +[] 0 sd +0 slj +0 slc +n 11.944098 7.900000 m 11.444098 8.150000 l 11.569098 7.900000 l 11.444098 7.650000 l ef +n 11.944098 7.900000 m 11.444098 8.150000 l 11.569098 7.900000 l 11.444098 7.650000 l cp s +0.100000 slw +[] 0 sd +1.000000 1.000000 1.000000 srgb +n 23.500000 4.000000 m 23.500000 5.800000 l 28.340000 5.800000 l 28.340000 4.000000 l f +0.000000 0.000000 0.000000 srgb +n 23.500000 4.000000 m 23.500000 5.800000 l 28.340000 5.800000 l 28.340000 4.000000 l cp s +gsave 24.000000 5.155000 translate 0.035278 -0.035278 scale +start_ol +613 224 moveto +632 603 lineto +2403 545 4232 214 conicto +4183 -165 lineto +2393 161 613 224 conicto +1021 1790 moveto +1046 2169 lineto +2437 2111 3833 1868 conicto +3779 1488 lineto +2413 1732 1021 1790 conicto +841 3205 moveto +861 3575 lineto +2495 3522 4076 3283 conicto +4032 2914 lineto +2447 3147 841 3205 conicto +end_ol grestore +gsave 24.639399 5.155000 translate 0.035278 -0.035278 scale +start_ol +2811 3366 moveto +3098 3536 lineto +3419 3069 3614 2748 conicto +3327 2597 lineto +3074 3006 2811 3366 conicto +4008 2738 moveto +3755 3152 3478 3531 conicto +3770 3702 lineto +4071 3269 4300 2894 conicto +4008 2738 lineto +1571 3721 moveto +1571 2271 lineto +2933 1946 4290 1430 conicto +4173 1080 lineto +2831 1586 1571 1887 conicto +1571 -238 lineto +1182 -238 lineto +1182 3721 lineto +1571 3721 lineto +end_ol grestore +gsave 25.278797 5.155000 translate 0.035278 -0.035278 scale +start_ol +2515 3575 moveto +2884 3575 lineto +2884 272 lineto +3502 355 3874 802 conicto +4246 1250 4314 2028 conicto +4669 1999 lineto +4489 -58 2515 -161 conicto +2515 3575 lineto +1265 3575 moveto +1639 3575 lineto +1639 2617 lineto +1639 1663 1529 1128 conicto +1420 593 1194 316 conicto +968 39 525 -170 conicto +336 141 lineto +725 336 907 564 conicto +1090 793 1177 1262 conicto +1265 1732 1265 2617 conicto +1265 3575 lineto +end_ol grestore +gsave 25.918196 5.155000 translate 0.035278 -0.035278 scale +start_ol +696 3380 moveto +4168 3380 lineto +4168 3040 lineto +2627 3040 lineto +2627 443 lineto +4314 443 lineto +4314 102 lineto +550 102 lineto +550 443 lineto +2237 443 lineto +2237 3040 lineto +696 3040 lineto +696 3380 lineto +end_ol grestore +gsave 26.557595 5.155000 translate 0.035278 -0.035278 scale +start_ol +890 3536 moveto +1634 3166 2378 2709 conicto +2189 2378 lineto +1479 2816 715 3205 conicto +890 3536 lineto +832 306 moveto +2252 438 3066 1128 conicto +3881 1819 4120 3094 conicto +4475 3016 lineto +3984 214 880 -58 conicto +832 306 lineto +end_ol grestore +gsave 27.196993 5.155000 translate 0.035278 -0.035278 scale +start_ol +2811 3366 moveto +3098 3536 lineto +3419 3069 3614 2748 conicto +3327 2597 lineto +3074 3006 2811 3366 conicto +4008 2738 moveto +3755 3152 3478 3531 conicto +3770 3702 lineto +4071 3269 4300 2894 conicto +4008 2738 lineto +1571 3721 moveto +1571 2271 lineto +2933 1946 4290 1430 conicto +4173 1080 lineto +2831 1586 1571 1887 conicto +1571 -238 lineto +1182 -238 lineto +1182 3721 lineto +1571 3721 lineto +end_ol grestore +0.050000 slw +n 24.000000 5.322500 m 27.840000 5.322500 l s +0.100000 slw +[] 0 sd +1.000000 1.000000 1.000000 srgb +n 22.000000 3.000000 m 22.000000 4.800000 l 27.480000 4.800000 l 27.480000 3.000000 l f +0.000000 0.000000 0.000000 srgb +n 22.000000 3.000000 m 22.000000 4.800000 l 27.480000 4.800000 l 27.480000 3.000000 l cp s +gsave 22.500000 4.155000 translate 0.035278 -0.035278 scale +start_ol +632 3410 moveto +4246 3410 lineto +4246 3235 lineto +4246 1698 3485 873 conicto +2724 49 1138 -122 conicto +1085 219 lineto +2486 384 3149 1062 conicto +3813 1741 3857 3055 conicto +632 3055 lineto +632 3410 lineto +end_ol grestore +gsave 23.139399 4.155000 translate 0.035278 -0.035278 scale +start_ol +987 370 moveto +3877 370 lineto +3877 3113 lineto +987 3113 lineto +987 370 lineto +987 24 moveto +598 24 lineto +598 3458 lineto +4266 3458 lineto +4266 24 lineto +987 24 lineto +end_ol grestore +gsave 23.778797 4.155000 translate 0.035278 -0.035278 scale +start_ol +890 3536 moveto +1634 3166 2378 2709 conicto +2189 2378 lineto +1479 2816 715 3205 conicto +890 3536 lineto +832 306 moveto +2252 438 3066 1128 conicto +3881 1819 4120 3094 conicto +4475 3016 lineto +3984 214 880 -58 conicto +832 306 lineto +end_ol grestore +gsave 24.418196 4.155000 translate 0.035278 -0.035278 scale +start_ol +1620 3721 moveto +1620 2301 lineto +2962 1980 4339 1464 conicto +4222 1109 lineto +2899 1615 1620 1921 conicto +1620 -238 lineto +1231 -238 lineto +1231 3721 lineto +1620 3721 lineto +end_ol grestore +gsave 25.057595 4.155000 translate 0.035278 -0.035278 scale +start_ol +696 3380 moveto +4168 3380 lineto +4168 3040 lineto +2627 3040 lineto +2627 443 lineto +4314 443 lineto +4314 102 lineto +550 102 lineto +550 443 lineto +2237 443 lineto +2237 3040 lineto +696 3040 lineto +696 3380 lineto +end_ol grestore +gsave 25.696993 4.155000 translate 0.035278 -0.035278 scale +start_ol +890 3536 moveto +1634 3166 2378 2709 conicto +2189 2378 lineto +1479 2816 715 3205 conicto +890 3536 lineto +832 306 moveto +2252 438 3066 1128 conicto +3881 1819 4120 3094 conicto +4475 3016 lineto +3984 214 880 -58 conicto +832 306 lineto +end_ol grestore +gsave 26.336392 4.155000 translate 0.035278 -0.035278 scale +start_ol +2811 3366 moveto +3098 3536 lineto +3419 3069 3614 2748 conicto +3327 2597 lineto +3074 3006 2811 3366 conicto +4008 2738 moveto +3755 3152 3478 3531 conicto +3770 3702 lineto +4071 3269 4300 2894 conicto +4008 2738 lineto +1571 3721 moveto +1571 2271 lineto +2933 1946 4290 1430 conicto +4173 1080 lineto +2831 1586 1571 1887 conicto +1571 -238 lineto +1182 -238 lineto +1182 3721 lineto +1571 3721 lineto +end_ol grestore +0.050000 slw +n 22.500000 4.322500 m 26.980000 4.322500 l s +0.100000 slw +[] 0 sd +1.000000 1.000000 1.000000 srgb +n 18.750000 9.050000 m 18.750000 10.850000 l 21.150000 10.850000 l 21.150000 9.050000 l f +n 18.750000 9.950000 m 18.750000 9.950000 0.900000 0.900000 180.000000 270.000000 ellipse f +n 21.150000 9.950000 m 21.150000 9.950000 0.900000 0.900000 270.000000 360.000000 ellipse f +n 17.850000 9.950000 m 17.850000 9.950000 l 22.050000 9.950000 l 22.050000 9.950000 l f +n 18.750000 9.950000 m 18.750000 9.950000 0.900000 0.900000 90.000000 180.000000 ellipse f +n 21.150000 9.950000 m 21.150000 9.950000 0.900000 0.900000 0.000000 90.000000 ellipse f +0.000000 0.000000 0.000000 srgb +n 18.750000 9.050000 m 21.150000 9.050000 l s +n 18.750000 10.850000 m 21.150000 10.850000 l s +n 18.750000 9.950000 0.900000 0.900000 180.000000 270.000000 ellipse s +n 21.150000 9.950000 0.900000 0.900000 270.000000 360.000000 ellipse s +n 17.850000 9.950000 m 17.850000 9.950000 l s +n 22.050000 9.950000 m 22.050000 9.950000 l s +n 18.750000 9.950000 0.900000 0.900000 90.000000 180.000000 ellipse s +n 21.150000 9.950000 0.900000 0.900000 0.000000 90.000000 ellipse s +gsave 18.350000 10.205000 translate 0.035278 -0.035278 scale +start_ol +715 3380 moveto +4120 3380 lineto +4120 102 lineto +715 102 lineto +715 443 lineto +3745 443 lineto +3745 3040 lineto +715 3040 lineto +715 3380 lineto +end_ol grestore +gsave 18.989399 10.205000 translate 0.035278 -0.035278 scale +start_ol +890 3536 moveto +1634 3166 2378 2709 conicto +2189 2378 lineto +1479 2816 715 3205 conicto +890 3536 lineto +832 306 moveto +2252 438 3066 1128 conicto +3881 1819 4120 3094 conicto +4475 3016 lineto +3984 214 880 -58 conicto +832 306 lineto +end_ol grestore +gsave 19.628797 10.205000 translate 0.035278 -0.035278 scale +start_ol +4032 -83 moveto +3702 1226 3351 2233 conicto +3721 2344 lineto +4110 1265 4426 0 conicto +4032 -83 lineto +1761 3439 moveto +1561 1571 652 -58 conicto +297 112 lineto +1167 1678 1377 3449 conicto +1761 3439 lineto +3888 3008 moveto +3998 3118 3998 3273 conicto +3998 3429 3888 3538 conicto +3779 3648 3623 3648 conicto +3468 3648 3358 3538 conicto +3249 3429 3249 3273 conicto +3249 3118 3358 3008 conicto +3468 2899 3623 2899 conicto +3779 2899 3888 3008 conicto +4071 3721 moveto +4256 3536 4256 3273 conicto +4256 3011 4071 2826 conicto +3886 2641 3623 2641 conicto +3361 2641 3176 2826 conicto +2991 3011 2991 3273 conicto +2991 3536 3176 3721 conicto +3361 3906 3623 3906 conicto +3886 3906 4071 3721 conicto +end_ol grestore +gsave 20.268196 10.205000 translate 0.035278 -0.035278 scale +start_ol +472 1814 moveto +1522 1960 2514 2451 conicto +3507 2943 4125 3619 conicto +4363 3356 lineto +3770 2724 2909 2262 conicto +2909 -229 lineto +2515 -229 lineto +2515 2062 lineto +1542 1610 530 1464 conicto +472 1814 lineto +end_ol grestore +gsave 20.907595 10.205000 translate 0.035278 -0.035278 scale +start_ol +2515 3575 moveto +2884 3575 lineto +2884 272 lineto +3502 355 3874 802 conicto +4246 1250 4314 2028 conicto +4669 1999 lineto +4489 -58 2515 -161 conicto +2515 3575 lineto +1265 3575 moveto +1639 3575 lineto +1639 2617 lineto +1639 1663 1529 1128 conicto +1420 593 1194 316 conicto +968 39 525 -170 conicto +336 141 lineto +725 336 907 564 conicto +1090 793 1177 1262 conicto +1265 1732 1265 2617 conicto +1265 3575 lineto +end_ol grestore +0.150000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 19.950000 10.850000 m 19.950000 11.900000 l 15.965205 11.900000 l s +[] 0 sd +0 slj +0 slc +n 15.590205 11.900000 m 16.090205 11.650000 l 15.965205 11.900000 l 16.090205 12.150000 l ef +n 15.590205 11.900000 m 16.090205 11.650000 l 15.965205 11.900000 l 16.090205 12.150000 l cp s +0.150000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 23.500000 4.900000 m 23.500000 5.000000 l 19.950000 5.000000 l 19.950000 8.507295 l s +[] 0 sd +0 slj +0 slc +n 19.950000 8.882295 m 19.700000 8.382295 l 19.950000 8.507295 l 20.200000 8.382295 l ef +n 19.950000 8.882295 m 19.700000 8.382295 l 19.950000 8.507295 l 20.200000 8.382295 l cp s +0.150000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 16.550000 3.900000 m 20.000000 3.900000 l 20.000000 5.000000 l 20.000000 5.000000 l s +0.150000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 22.000000 3.900000 m 20.000000 3.900000 l 20.000000 5.000000 l 20.000000 5.000000 l s +0.150000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 25.000000 5.900000 m 22.487500 5.900000 l 22.487500 5.925000 l 19.975000 5.925000 l s +0.150000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 26.425000 7.075000 m 23.225000 7.075000 l 23.225000 7.125000 l 20.025000 7.125000 l s +0.150000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 17.227500 5.900000 m 18.601250 5.900000 l 18.601250 5.925000 l 19.975000 5.925000 l s +0.150000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 16.900000 7.900000 m 18.437500 7.900000 l 18.437500 7.925000 l 19.975000 7.925000 l s +0.100000 slw +[] 0 sd +1.000000 1.000000 1.000000 srgb +n 12.000000 11.000000 m 12.000000 12.800000 l 15.422500 12.800000 l 15.422500 11.000000 l f +0.000000 0.000000 0.000000 srgb +n 12.000000 11.000000 m 12.000000 12.800000 l 15.422500 12.800000 l 15.422500 11.000000 l cp s +gsave 12.500000 12.120000 translate 0.035278 -0.035278 scale +start_ol +end_ol grestore +gsave 13.154381 12.120000 translate 0.035278 -0.035278 scale +start_ol +2368 2560 moveto +2368 2176 lineto +2180 2272 1991 2320 conicto +1803 2368 1611 2368 conicto +1180 2368 942 2099 conicto +704 1830 704 1344 conicto +704 858 942 589 conicto +1180 320 1611 320 conicto +1803 320 1991 368 conicto +2180 416 2368 512 conicto +2368 128 lineto +2184 32 1987 -16 conicto +1791 -64 1569 -64 conicto +966 -64 611 316 conicto +256 697 256 1344 conicto +256 2000 615 2376 conicto +974 2752 1598 2752 conicto +1801 2752 1994 2704 conicto +2187 2656 2368 2560 conicto +end_ol grestore +gsave 13.506549 12.120000 translate 0.035278 -0.035278 scale +start_ol +2368 2560 moveto +2368 2176 lineto +2180 2272 1991 2320 conicto +1803 2368 1611 2368 conicto +1180 2368 942 2099 conicto +704 1830 704 1344 conicto +704 858 942 589 conicto +1180 320 1611 320 conicto +1803 320 1991 368 conicto +2180 416 2368 512 conicto +2368 128 lineto +2184 32 1987 -16 conicto +1791 -64 1569 -64 conicto +966 -64 611 316 conicto +256 697 256 1344 conicto +256 2000 615 2376 conicto +974 2752 1598 2752 conicto +1801 2752 1994 2704 conicto +2187 2656 2368 2560 conicto +end_ol grestore +gsave 13.858718 12.120000 translate 0.035278 -0.035278 scale +start_ol +640 384 moveto +1408 384 lineto +1408 3136 lineto +576 2944 lineto +576 3328 lineto +1434 3520 lineto +1920 3520 lineto +1920 384 lineto +2688 384 lineto +2688 0 lineto +640 0 lineto +640 384 lineto +end_ol grestore +gsave 14.265837 12.120000 translate 0.035278 -0.035278 scale +start_ol +end_ol grestore +0.050000 slw +n 12.500000 12.272500 m 14.922500 12.272500 l s +showpage diff -r 8ef81ff8cb52 -r 4b2af58b0302 figures/interfacestack.dia Binary file figures/interfacestack.dia has changed diff -r 8ef81ff8cb52 -r 4b2af58b0302 figures/interfacestack.eps --- a/figures/interfacestack.eps Fri Feb 12 13:10:57 2010 +0900 +++ b/figures/interfacestack.eps Tue Feb 16 14:04:40 2010 +0900 @@ -1,11 +1,11 @@ %!PS-Adobe-2.0 EPSF-2.0 %%Title: /home/kent/WorkSpace/Mercurial/master-paper/figures/interfacestack.dia %%Creator: Dia v0.97 -%%CreationDate: Thu Feb 4 16:40:03 2010 +%%CreationDate: Sat Feb 13 19:06:01 2010 %%For: kent %%Orientation: Portrait %%Magnification: 1.0000 -%%BoundingBox: 0 0 443 302 +%%BoundingBox: 0 0 443 346 %%BeginSetup %%EndSetup %%EndComments @@ -118,7 +118,7 @@ /start_ol { gsave 1.1 dpi_x div dup scale} bind def /end_ol { closepath fill grestore } bind def 28.346000 -28.346000 scale --2.900000 -13.550000 translate +-2.900000 -15.104057 translate %%EndProlog @@ -2369,4 +2369,234 @@ 0 slj 0 slc n 16.444098 7.750000 m 16.944098 7.500000 l 16.444098 7.250000 l s +0.150000 slw +[] 0 sd +[] 0 sd +0 slc +0 slj +0.150000 slw +0 slc +0 slj +[] 0 sd +1.000000 1.000000 1.000000 srgb +n 7.500000 14.250000 m 9.000000 14.250000 l 9.000000 14.000000 l 10.500000 14.500000 l 9.000000 15.000000 l 9.000000 14.750000 l 7.500000 14.750000 l ef +0.000000 0.000000 0.000000 srgb +n 7.500000 14.250000 m 9.000000 14.250000 l 9.000000 14.000000 l 10.500000 14.500000 l 9.000000 15.000000 l 9.000000 14.750000 l 7.500000 14.750000 l cp s +0 slc +0 slj +[] 0 sd +n 7.500000 14.250000 m 9.000000 14.250000 l 9.000000 14.000000 l 10.500000 14.500000 l 9.000000 15.000000 l 9.000000 14.750000 l 7.500000 14.750000 l cp s +0.150000 slw +[] 0 sd +[] 0 sd +0 slc +0 slj +0.150000 slw +0 slc +0 slj +[] 0 sd +1.000000 1.000000 1.000000 srgb +n 13.500000 14.250000 m 15.000000 14.250000 l 15.000000 14.000000 l 16.500000 14.500000 l 15.000000 15.000000 l 15.000000 14.750000 l 13.500000 14.750000 l ef +0.000000 0.000000 0.000000 srgb +n 13.500000 14.250000 m 15.000000 14.250000 l 15.000000 14.000000 l 16.500000 14.500000 l 15.000000 15.000000 l 15.000000 14.750000 l 13.500000 14.750000 l cp s +0 slc +0 slj +[] 0 sd +n 13.500000 14.250000 m 15.000000 14.250000 l 15.000000 14.000000 l 16.500000 14.500000 l 15.000000 15.000000 l 15.000000 14.750000 l 13.500000 14.750000 l cp s +gsave 7.500000 14.000000 translate 0.035278 -0.035278 scale +start_ol +2176 1375 moveto +2176 1848 1982 2108 conicto +1789 2368 1439 2368 conicto +1091 2368 897 2108 conicto +704 1848 704 1375 conicto +704 904 897 644 conicto +1091 384 1439 384 conicto +1789 384 1982 644 conicto +2176 904 2176 1375 conicto +2624 347 moveto +2624 -347 2323 -685 conicto +2023 -1024 1404 -1024 conicto +1174 -1024 971 -992 conicto +768 -961 576 -896 conicto +576 -448 lineto +766 -546 951 -593 conicto +1137 -640 1329 -640 conicto +1754 -640 1965 -415 conicto +2176 -190 2176 264 conicto +2176 448 lineto +2042 223 1833 111 conicto +1624 0 1332 0 conicto +848 0 552 376 conicto +256 753 256 1375 conicto +256 1999 552 2375 conicto +848 2752 1332 2752 conicto +1624 2752 1833 2640 conicto +2042 2529 2176 2304 conicto +2176 2688 lineto +2624 2688 lineto +2624 347 lineto +end_ol grestore +gsave 7.907119 14.000000 translate 0.035278 -0.035278 scale +start_ol +1473 2368 moveto +1117 2368 910 2094 conicto +704 1820 704 1344 conicto +704 868 909 594 conicto +1115 320 1473 320 conicto +1827 320 2033 595 conicto +2240 870 2240 1344 conicto +2240 1816 2033 2092 conicto +1827 2368 1473 2368 conicto +1472 2752 moveto +2040 2752 2364 2378 conicto +2688 2005 2688 1344 conicto +2688 685 2364 310 conicto +2040 -64 1472 -64 conicto +902 -64 579 310 conicto +256 685 256 1344 conicto +256 2005 579 2378 conicto +902 2752 1472 2752 conicto +end_ol grestore +gsave 8.299248 14.000000 translate 0.035278 -0.035278 scale +start_ol +896 3456 moveto +896 2688 lineto +1792 2688 lineto +1792 2368 lineto +896 2368 lineto +896 902 lineto +896 572 984 478 conicto +1073 384 1345 384 conicto +1792 384 lineto +1792 0 lineto +1345 0 lineto +836 0 642 194 conicto +448 389 448 902 conicto +448 2368 lineto +128 2368 lineto +128 2688 lineto +448 2688 lineto +448 3456 lineto +896 3456 lineto +end_ol grestore +gsave 8.549015 14.000000 translate 0.035278 -0.035278 scale +start_ol +1473 2368 moveto +1117 2368 910 2094 conicto +704 1820 704 1344 conicto +704 868 909 594 conicto +1115 320 1473 320 conicto +1827 320 2033 595 conicto +2240 870 2240 1344 conicto +2240 1816 2033 2092 conicto +1827 2368 1473 2368 conicto +1472 2752 moveto +2040 2752 2364 2378 conicto +2688 2005 2688 1344 conicto +2688 685 2364 310 conicto +2040 -64 1472 -64 conicto +902 -64 579 310 conicto +256 685 256 1344 conicto +256 2005 579 2378 conicto +902 2752 1472 2752 conicto +end_ol grestore +gsave 13.500000 14.000000 translate 0.035278 -0.035278 scale +start_ol +2176 1375 moveto +2176 1848 1982 2108 conicto +1789 2368 1439 2368 conicto +1091 2368 897 2108 conicto +704 1848 704 1375 conicto +704 904 897 644 conicto +1091 384 1439 384 conicto +1789 384 1982 644 conicto +2176 904 2176 1375 conicto +2624 347 moveto +2624 -347 2323 -685 conicto +2023 -1024 1404 -1024 conicto +1174 -1024 971 -992 conicto +768 -961 576 -896 conicto +576 -448 lineto +766 -546 951 -593 conicto +1137 -640 1329 -640 conicto +1754 -640 1965 -415 conicto +2176 -190 2176 264 conicto +2176 448 lineto +2042 223 1833 111 conicto +1624 0 1332 0 conicto +848 0 552 376 conicto +256 753 256 1375 conicto +256 1999 552 2375 conicto +848 2752 1332 2752 conicto +1624 2752 1833 2640 conicto +2042 2529 2176 2304 conicto +2176 2688 lineto +2624 2688 lineto +2624 347 lineto +end_ol grestore +gsave 13.907119 14.000000 translate 0.035278 -0.035278 scale +start_ol +1473 2368 moveto +1117 2368 910 2094 conicto +704 1820 704 1344 conicto +704 868 909 594 conicto +1115 320 1473 320 conicto +1827 320 2033 595 conicto +2240 870 2240 1344 conicto +2240 1816 2033 2092 conicto +1827 2368 1473 2368 conicto +1472 2752 moveto +2040 2752 2364 2378 conicto +2688 2005 2688 1344 conicto +2688 685 2364 310 conicto +2040 -64 1472 -64 conicto +902 -64 579 310 conicto +256 685 256 1344 conicto +256 2005 579 2378 conicto +902 2752 1472 2752 conicto +end_ol grestore +gsave 14.299248 14.000000 translate 0.035278 -0.035278 scale +start_ol +896 3456 moveto +896 2688 lineto +1792 2688 lineto +1792 2368 lineto +896 2368 lineto +896 902 lineto +896 572 984 478 conicto +1073 384 1345 384 conicto +1792 384 lineto +1792 0 lineto +1345 0 lineto +836 0 642 194 conicto +448 389 448 902 conicto +448 2368 lineto +128 2368 lineto +128 2688 lineto +448 2688 lineto +448 3456 lineto +896 3456 lineto +end_ol grestore +gsave 14.549015 14.000000 translate 0.035278 -0.035278 scale +start_ol +1473 2368 moveto +1117 2368 910 2094 conicto +704 1820 704 1344 conicto +704 868 909 594 conicto +1115 320 1473 320 conicto +1827 320 2033 595 conicto +2240 870 2240 1344 conicto +2240 1816 2033 2092 conicto +1827 2368 1473 2368 conicto +1472 2752 moveto +2040 2752 2364 2378 conicto +2688 2005 2688 1344 conicto +2688 685 2364 310 conicto +2040 -64 1472 -64 conicto +902 -64 579 310 conicto +256 685 256 1344 conicto +256 2005 579 2378 conicto +902 2752 1472 2752 conicto +end_ol grestore showpage diff -r 8ef81ff8cb52 -r 4b2af58b0302 figures/tailcallstack.dia Binary file figures/tailcallstack.dia has changed diff -r 8ef81ff8cb52 -r 4b2af58b0302 figures/tailcallstack.eps --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/figures/tailcallstack.eps Tue Feb 16 14:04:40 2010 +0900 @@ -0,0 +1,2628 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: /home/kent/WorkSpace/Mercurial/master-paper/figures/tailcallstack.dia +%%Creator: Dia v0.97 +%%CreationDate: Sat Feb 13 19:04:25 2010 +%%For: kent +%%Orientation: Portrait +%%Magnification: 1.0000 +%%BoundingBox: 0 0 427 328 +%%BeginSetup +%%EndSetup +%%EndComments +%%BeginProlog +[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright +/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one +/two /three /four /five /six /seven /eight /nine /colon /semicolon +/less /equal /greater /question /at /A /B /C /D /E +/F /G /H /I /J /K /L /M /N /O +/P /Q /R /S /T /U /V /W /X /Y +/Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c +/d /e /f /g /h /i /j /k /l /m +/n /o /p /q /r /s /t /u /v /w +/x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright +/ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior +/acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf +/threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla +/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde +/Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex +/Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring +/ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis +/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave +/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] /isolatin1encoding exch def +/cp {closepath} bind def +/c {curveto} bind def +/f {fill} bind def +/a {arc} bind def +/ef {eofill} bind def +/ex {exch} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth pop} bind def +/tr {translate} bind def + +/ellipsedict 8 dict def +ellipsedict /mtrx matrix put +/ellipse +{ ellipsedict begin + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def /savematrix mtrx currentmatrix def + x y tr xrad yrad sc + 0 0 1 startangle endangle arc + savematrix setmatrix + end +} def + +/mergeprocs { +dup length +3 -1 roll +dup +length +dup +5 1 roll +3 -1 roll +add +array cvx +dup +3 -1 roll +0 exch +putinterval +dup +4 2 roll +putinterval +} bind def +/dpi_x 300 def +/dpi_y 300 def +/conicto { + /to_y exch def + /to_x exch def + /conic_cntrl_y exch def + /conic_cntrl_x exch def + currentpoint + /p0_y exch def + /p0_x exch def + /p1_x p0_x conic_cntrl_x p0_x sub 2 3 div mul add def + /p1_y p0_y conic_cntrl_y p0_y sub 2 3 div mul add def + /p2_x p1_x to_x p0_x sub 1 3 div mul add def + /p2_y p1_y to_y p0_y sub 1 3 div mul add def + p1_x p1_y p2_x p2_y to_x to_y curveto +} bind def +/start_ol { gsave 1.1 dpi_x div dup scale} bind def +/end_ol { closepath fill grestore } bind def +28.346000 -28.346000 scale +-3.400000 -15.104057 translate +%%EndProlog + + +0.100000 slw +[] 0 sd +[] 0 sd +0 slc +0.000000 0.000000 0.000000 srgb +n 5.950000 4.500000 m 5.950000 13.500000 l s +0.100000 slw +[] 0 sd +[] 0 sd +0 slc +n 7.050000 4.500000 m 7.050000 13.500000 l s +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +1.000000 1.000000 1.000000 srgb +n 6.000000 10.000000 m 6.000000 11.000000 l 7.000000 11.000000 l 7.000000 10.000000 l f +0.000000 0.000000 0.000000 srgb +n 6.000000 10.000000 m 6.000000 11.000000 l 7.000000 11.000000 l 7.000000 10.000000 l cp s +gsave 6.077500 10.721250 translate 0.035278 -0.035278 scale +start_ol +320 3520 moveto +827 3520 lineto +1694 2211 lineto +2565 3520 lineto +3072 3520 lineto +1951 1830 lineto +3136 0 lineto +2633 0 lineto +1659 1497 lineto +649 0 lineto +128 0 lineto +1406 1879 lineto +320 3520 lineto +end_ol grestore +gsave 6.514592 10.721250 translate 0.035278 -0.035278 scale +start_ol +640 384 moveto +1408 384 lineto +1408 3136 lineto +576 2944 lineto +576 3328 lineto +1434 3520 lineto +1920 3520 lineto +1920 384 lineto +2688 384 lineto +2688 0 lineto +640 0 lineto +640 384 lineto +end_ol grestore +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +1.000000 1.000000 1.000000 srgb +n 6.000000 11.000000 m 6.000000 12.000000 l 7.000000 12.000000 l 7.000000 11.000000 l f +0.000000 0.000000 0.000000 srgb +n 6.000000 11.000000 m 6.000000 12.000000 l 7.000000 12.000000 l 7.000000 11.000000 l cp s +gsave 6.077500 11.721250 translate 0.035278 -0.035278 scale +start_ol +320 3520 moveto +827 3520 lineto +1694 2211 lineto +2565 3520 lineto +3072 3520 lineto +1951 1830 lineto +3136 0 lineto +2633 0 lineto +1659 1497 lineto +649 0 lineto +128 0 lineto +1406 1879 lineto +320 3520 lineto +end_ol grestore +gsave 6.514592 11.721250 translate 0.035278 -0.035278 scale +start_ol +938 384 moveto +2643 384 lineto +2643 0 lineto +384 0 lineto +384 384 lineto +654 668 1119 1146 conicto +1584 1625 1704 1763 conicto +1931 2023 2021 2203 conicto +2112 2384 2112 2558 conicto +2112 2842 1913 3021 conicto +1715 3200 1397 3200 conicto +1171 3200 920 3104 conicto +669 3009 384 2816 conicto +384 3328 lineto +678 3455 933 3519 conicto +1188 3584 1400 3584 conicto +1959 3584 2291 3309 conicto +2624 3034 2624 2574 conicto +2624 2356 2540 2160 conicto +2457 1965 2237 1700 conicto +2177 1631 1852 1302 conicto +1528 974 938 384 conicto +end_ol grestore +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +1.000000 1.000000 1.000000 srgb +n 6.000000 12.000000 m 6.000000 13.000000 l 7.000000 13.000000 l 7.000000 12.000000 l f +0.000000 0.000000 0.000000 srgb +n 6.000000 12.000000 m 6.000000 13.000000 l 7.000000 13.000000 l 7.000000 12.000000 l cp s +gsave 6.077500 12.721250 translate 0.035278 -0.035278 scale +start_ol +320 3520 moveto +827 3520 lineto +1694 2211 lineto +2565 3520 lineto +3072 3520 lineto +1951 1830 lineto +3136 0 lineto +2633 0 lineto +1659 1497 lineto +649 0 lineto +128 0 lineto +1406 1879 lineto +320 3520 lineto +end_ol grestore +gsave 6.514592 12.721250 translate 0.035278 -0.035278 scale +start_ol +1897 1936 moveto +2269 1862 2478 1627 conicto +2688 1392 2688 1046 conicto +2688 516 2331 226 conicto +1975 -64 1319 -64 conicto +1099 -64 865 -16 conicto +632 32 384 128 conicto +384 576 lineto +576 449 805 384 conicto +1035 320 1285 320 conicto +1720 320 1948 504 conicto +2176 688 2176 1039 conicto +2176 1363 1967 1545 conicto +1759 1728 1388 1728 conicto +1024 1728 lineto +1024 2112 lineto +1405 2112 lineto +1717 2112 1882 2250 conicto +2048 2388 2048 2648 conicto +2048 2915 1877 3057 conicto +1706 3200 1388 3200 conicto +1200 3200 985 3153 conicto +770 3107 512 3008 conicto +512 3456 lineto +773 3520 1001 3552 conicto +1229 3584 1431 3584 conicto +1952 3584 2256 3343 conicto +2560 3102 2560 2692 conicto +2560 2406 2387 2209 conicto +2215 2012 1897 1936 conicto +end_ol grestore +0.050000 slw +[] 0 sd +[] 0 sd +0 slc +n 5.000000 10.500000 m 5.888197 10.500000 l s +0.050000 slw +[] 0 sd +0 slj +0 slc +n 5.444098 10.750000 m 5.944098 10.500000 l 5.444098 10.250000 l s +gsave 7.900000 11.300000 translate 0.035278 -0.035278 scale +start_ol +896 384 moveto +896 -1024 lineto +448 -1024 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1032 2531 1240 2641 conicto +1448 2752 1737 2752 conicto +2217 2752 2516 2364 conicto +2816 1976 2816 1344 conicto +2816 712 2516 324 conicto +2217 -64 1737 -64 conicto +1448 -64 1240 46 conicto +1032 157 896 384 conicto +2368 1344 moveto +2368 1823 2171 2095 conicto +1975 2368 1632 2368 conicto +1289 2368 1092 2095 conicto +896 1823 896 1344 conicto +896 865 1092 592 conicto +1289 320 1632 320 conicto +1975 320 2171 592 conicto +2368 865 2368 1344 conicto +end_ol grestore +gsave 8.307119 11.300000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 8.699248 11.300000 translate 0.035278 -0.035278 scale +start_ol +1984 2304 moveto +1912 2337 1828 2352 conicto +1744 2368 1642 2368 conicto +1282 2368 1089 2127 conicto +896 1887 896 1437 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1030 2531 1245 2641 conicto +1460 2752 1767 2752 conicto +1811 2752 1864 2752 conicto +1917 2752 1982 2752 conicto +1984 2304 lineto +end_ol grestore +gsave 8.961500 11.300000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 9.353629 11.300000 translate 0.035278 -0.035278 scale +start_ol +2549 2204 moveto +2714 2485 2942 2618 conicto +3171 2752 3482 2752 conicto +3899 2752 4125 2464 conicto +4352 2177 4352 1646 conicto +4352 0 lineto +3904 0 lineto +3904 1632 lineto +3904 2006 3769 2187 conicto +3634 2368 3356 2368 conicto +3017 2368 2820 2146 conicto +2624 1925 2624 1542 conicto +2624 0 lineto +2176 0 lineto +2176 1632 lineto +2176 2008 2041 2188 conicto +1906 2368 1624 2368 conicto +1289 2368 1092 2145 conicto +896 1922 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1046 2534 1255 2643 conicto +1465 2752 1753 2752 conicto +2044 2752 2247 2611 conicto +2451 2471 2549 2204 conicto +end_ol grestore +gsave 9.975540 11.300000 translate 0.035278 -0.035278 scale +start_ol +2752 1480 moveto +2752 1280 lineto +704 1280 lineto +733 811 978 565 conicto +1223 320 1660 320 conicto +1914 320 2152 384 conicto +2390 448 2624 576 conicto +2624 192 lineto +2388 67 2140 1 conicto +1893 -64 1639 -64 conicto +1001 -64 628 309 conicto +256 683 256 1320 conicto +256 1979 613 2365 conicto +970 2752 1576 2752 conicto +2120 2752 2436 2410 conicto +2752 2068 2752 1480 conicto +2304 1600 moveto +2299 1950 2099 2159 conicto +1900 2368 1572 2368 conicto +1200 2368 976 2166 conicto +753 1964 719 1597 conicto +2304 1600 lineto +end_ol grestore +gsave 10.370167 11.300000 translate 0.035278 -0.035278 scale +start_ol +896 3456 moveto +896 2688 lineto +1792 2688 lineto +1792 2368 lineto +896 2368 lineto +896 902 lineto +896 572 984 478 conicto +1073 384 1345 384 conicto +1792 384 lineto +1792 0 lineto +1345 0 lineto +836 0 642 194 conicto +448 389 448 902 conicto +448 2368 lineto +128 2368 lineto +128 2688 lineto +448 2688 lineto +448 3456 lineto +896 3456 lineto +end_ol grestore +gsave 10.619933 11.300000 translate 0.035278 -0.035278 scale +start_ol +2752 1480 moveto +2752 1280 lineto +704 1280 lineto +733 811 978 565 conicto +1223 320 1660 320 conicto +1914 320 2152 384 conicto +2390 448 2624 576 conicto +2624 192 lineto +2388 67 2140 1 conicto +1893 -64 1639 -64 conicto +1001 -64 628 309 conicto +256 683 256 1320 conicto +256 1979 613 2365 conicto +970 2752 1576 2752 conicto +2120 2752 2436 2410 conicto +2752 2068 2752 1480 conicto +2304 1600 moveto +2299 1950 2099 2159 conicto +1900 2368 1572 2368 conicto +1200 2368 976 2166 conicto +753 1964 719 1597 conicto +2304 1600 lineto +end_ol grestore +gsave 11.014559 11.300000 translate 0.035278 -0.035278 scale +start_ol +1984 2304 moveto +1912 2337 1828 2352 conicto +1744 2368 1642 2368 conicto +1282 2368 1089 2127 conicto +896 1887 896 1437 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1030 2531 1245 2641 conicto +1460 2752 1767 2752 conicto +1811 2752 1864 2752 conicto +1917 2752 1982 2752 conicto +1984 2304 lineto +end_ol grestore +gsave 7.900000 12.100000 translate 0.035278 -0.035278 scale +start_ol +1792 3712 moveto +1792 3328 lineto +1369 3328 lineto +1139 3328 1049 3237 conicto +960 3147 960 2912 conicto +960 2688 lineto +1664 2688 lineto +1664 2368 lineto +960 2368 lineto +960 0 lineto +512 0 lineto +512 2368 lineto +64 2368 lineto +64 2688 lineto +512 2688 lineto +512 2864 lineto +512 3307 718 3509 conicto +925 3712 1374 3712 conicto +1792 3712 lineto +end_ol grestore +gsave 8.124788 12.100000 translate 0.035278 -0.035278 scale +start_ol +1473 2368 moveto +1117 2368 910 2094 conicto +704 1820 704 1344 conicto +704 868 909 594 conicto +1115 320 1473 320 conicto +1827 320 2033 595 conicto +2240 870 2240 1344 conicto +2240 1816 2033 2092 conicto +1827 2368 1473 2368 conicto +1472 2752 moveto +2040 2752 2364 2378 conicto +2688 2005 2688 1344 conicto +2688 685 2364 310 conicto +2040 -64 1472 -64 conicto +902 -64 579 310 conicto +256 685 256 1344 conicto +256 2005 579 2378 conicto +902 2752 1472 2752 conicto +end_ol grestore +gsave 8.516917 12.100000 translate 0.035278 -0.035278 scale +start_ol +1984 2304 moveto +1912 2337 1828 2352 conicto +1744 2368 1642 2368 conicto +1282 2368 1089 2127 conicto +896 1887 896 1437 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1030 2531 1245 2641 conicto +1460 2752 1767 2752 conicto +1811 2752 1864 2752 conicto +1917 2752 1982 2752 conicto +1984 2304 lineto +end_ol grestore +gsave 8.779169 12.100000 translate 0.035278 -0.035278 scale +start_ol +end_ol grestore +gsave 8.981476 12.100000 translate 0.035278 -0.035278 scale +start_ol +1792 3712 moveto +1792 3328 lineto +1369 3328 lineto +1139 3328 1049 3237 conicto +960 3147 960 2912 conicto +960 2688 lineto +1664 2688 lineto +1664 2368 lineto +960 2368 lineto +960 0 lineto +512 0 lineto +512 2368 lineto +64 2368 lineto +64 2688 lineto +512 2688 lineto +512 2864 lineto +512 3307 718 3509 conicto +925 3712 1374 3712 conicto +1792 3712 lineto +end_ol grestore +gsave 9.206264 12.100000 translate 0.035278 -0.035278 scale +start_ol +448 1040 moveto +448 2688 lineto +896 2688 lineto +896 1057 lineto +896 689 1042 504 conicto +1188 320 1481 320 conicto +1832 320 2036 541 conicto +2240 763 2240 1145 conicto +2240 2688 lineto +2688 2688 lineto +2688 0 lineto +2240 0 lineto +2240 384 lineto +2081 157 1870 46 conicto +1660 -64 1382 -64 conicto +923 -64 685 217 conicto +448 499 448 1040 conicto +end_ol grestore +gsave 9.610879 12.100000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 10.015493 12.100000 translate 0.035278 -0.035278 scale +start_ol +2368 2560 moveto +2368 2176 lineto +2180 2272 1991 2320 conicto +1803 2368 1611 2368 conicto +1180 2368 942 2099 conicto +704 1830 704 1344 conicto +704 858 942 589 conicto +1180 320 1611 320 conicto +1803 320 1991 368 conicto +2180 416 2368 512 conicto +2368 128 lineto +2184 32 1987 -16 conicto +1791 -64 1569 -64 conicto +966 -64 611 316 conicto +256 697 256 1344 conicto +256 2000 615 2376 conicto +974 2752 1598 2752 conicto +1801 2752 1994 2704 conicto +2187 2656 2368 2560 conicto +end_ol grestore +gsave 10.367661 12.100000 translate 0.035278 -0.035278 scale +start_ol +320 3520 moveto +827 3520 lineto +1694 2211 lineto +2565 3520 lineto +3072 3520 lineto +1951 1830 lineto +3136 0 lineto +2633 0 lineto +1659 1497 lineto +649 0 lineto +128 0 lineto +1406 1879 lineto +320 3520 lineto +end_ol grestore +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +1.000000 1.000000 1.000000 srgb +n 11.500000 6.000000 m 11.500000 7.000000 l 12.500000 7.000000 l 12.500000 6.000000 l f +0.000000 0.000000 0.000000 srgb +n 11.500000 6.000000 m 11.500000 7.000000 l 12.500000 7.000000 l 12.500000 6.000000 l cp s +gsave 11.601250 6.721250 translate 0.035278 -0.035278 scale +start_ol +-64 3520 moveto +466 3520 lineto +1476 2072 lineto +2479 3520 lineto +3008 3520 lineto +1728 1676 lineto +1728 0 lineto +1216 0 lineto +1216 1676 lineto +-64 3520 lineto +end_ol grestore +gsave 11.990882 6.721250 translate 0.035278 -0.035278 scale +start_ol +640 384 moveto +1408 384 lineto +1408 3136 lineto +576 2944 lineto +576 3328 lineto +1434 3520 lineto +1920 3520 lineto +1920 384 lineto +2688 384 lineto +2688 0 lineto +640 0 lineto +640 384 lineto +end_ol grestore +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +1.000000 1.000000 1.000000 srgb +n 11.500000 7.000000 m 11.500000 8.000000 l 12.500000 8.000000 l 12.500000 7.000000 l f +0.000000 0.000000 0.000000 srgb +n 11.500000 7.000000 m 11.500000 8.000000 l 12.500000 8.000000 l 12.500000 7.000000 l cp s +gsave 11.601250 7.721250 translate 0.035278 -0.035278 scale +start_ol +-64 3520 moveto +466 3520 lineto +1476 2072 lineto +2479 3520 lineto +3008 3520 lineto +1728 1676 lineto +1728 0 lineto +1216 0 lineto +1216 1676 lineto +-64 3520 lineto +end_ol grestore +gsave 11.990882 7.721250 translate 0.035278 -0.035278 scale +start_ol +938 384 moveto +2643 384 lineto +2643 0 lineto +384 0 lineto +384 384 lineto +654 668 1119 1146 conicto +1584 1625 1704 1763 conicto +1931 2023 2021 2203 conicto +2112 2384 2112 2558 conicto +2112 2842 1913 3021 conicto +1715 3200 1397 3200 conicto +1171 3200 920 3104 conicto +669 3009 384 2816 conicto +384 3328 lineto +678 3455 933 3519 conicto +1188 3584 1400 3584 conicto +1959 3584 2291 3309 conicto +2624 3034 2624 2574 conicto +2624 2356 2540 2160 conicto +2457 1965 2237 1700 conicto +2177 1631 1852 1302 conicto +1528 974 938 384 conicto +end_ol grestore +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +1.000000 1.000000 1.000000 srgb +n 11.500000 8.000000 m 11.500000 9.000000 l 12.500000 9.000000 l 12.500000 8.000000 l f +0.000000 0.000000 0.000000 srgb +n 11.500000 8.000000 m 11.500000 9.000000 l 12.500000 9.000000 l 12.500000 8.000000 l cp s +gsave 11.601250 8.721250 translate 0.035278 -0.035278 scale +start_ol +-64 3520 moveto +466 3520 lineto +1476 2072 lineto +2479 3520 lineto +3008 3520 lineto +1728 1676 lineto +1728 0 lineto +1216 0 lineto +1216 1676 lineto +-64 3520 lineto +end_ol grestore +gsave 11.990882 8.721250 translate 0.035278 -0.035278 scale +start_ol +1897 1936 moveto +2269 1862 2478 1627 conicto +2688 1392 2688 1046 conicto +2688 516 2331 226 conicto +1975 -64 1319 -64 conicto +1099 -64 865 -16 conicto +632 32 384 128 conicto +384 576 lineto +576 449 805 384 conicto +1035 320 1285 320 conicto +1720 320 1948 504 conicto +2176 688 2176 1039 conicto +2176 1363 1967 1545 conicto +1759 1728 1388 1728 conicto +1024 1728 lineto +1024 2112 lineto +1405 2112 lineto +1717 2112 1882 2250 conicto +2048 2388 2048 2648 conicto +2048 2915 1877 3057 conicto +1706 3200 1388 3200 conicto +1200 3200 985 3153 conicto +770 3107 512 3008 conicto +512 3456 lineto +773 3520 1001 3552 conicto +1229 3584 1431 3584 conicto +1952 3584 2256 3343 conicto +2560 3102 2560 2692 conicto +2560 2406 2387 2209 conicto +2215 2012 1897 1936 conicto +end_ol grestore +0.100000 slw +[] 0 sd +[] 0 sd +0 slc +n 11.450000 4.500000 m 11.450000 13.500000 l s +0.100000 slw +[] 0 sd +[] 0 sd +0 slc +n 12.550000 4.500000 m 12.550000 13.500000 l s +gsave 5.637500 4.150000 translate 0.035278 -0.035278 scale +start_ol +1792 3712 moveto +1792 3328 lineto +1369 3328 lineto +1139 3328 1049 3237 conicto +960 3147 960 2912 conicto +960 2688 lineto +1664 2688 lineto +1664 2368 lineto +960 2368 lineto +960 0 lineto +512 0 lineto +512 2368 lineto +64 2368 lineto +64 2688 lineto +512 2688 lineto +512 2864 lineto +512 3307 718 3509 conicto +925 3712 1374 3712 conicto +1792 3712 lineto +end_ol grestore +gsave 5.862288 4.150000 translate 0.035278 -0.035278 scale +start_ol +448 1040 moveto +448 2688 lineto +896 2688 lineto +896 1057 lineto +896 689 1042 504 conicto +1188 320 1481 320 conicto +1832 320 2036 541 conicto +2240 763 2240 1145 conicto +2240 2688 lineto +2688 2688 lineto +2688 0 lineto +2240 0 lineto +2240 384 lineto +2081 157 1870 46 conicto +1660 -64 1382 -64 conicto +923 -64 685 217 conicto +448 499 448 1040 conicto +end_ol grestore +gsave 6.266902 4.150000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 6.671516 4.150000 translate 0.035278 -0.035278 scale +start_ol +2368 2560 moveto +2368 2176 lineto +2180 2272 1991 2320 conicto +1803 2368 1611 2368 conicto +1180 2368 942 2099 conicto +704 1830 704 1344 conicto +704 858 942 589 conicto +1180 320 1611 320 conicto +1803 320 1991 368 conicto +2180 416 2368 512 conicto +2368 128 lineto +2184 32 1987 -16 conicto +1791 -64 1569 -64 conicto +966 -64 611 316 conicto +256 697 256 1344 conicto +256 2000 615 2376 conicto +974 2752 1598 2752 conicto +1801 2752 1994 2704 conicto +2187 2656 2368 2560 conicto +end_ol grestore +gsave 7.023685 4.150000 translate 0.035278 -0.035278 scale +start_ol +320 3520 moveto +827 3520 lineto +1694 2211 lineto +2565 3520 lineto +3072 3520 lineto +1951 1830 lineto +3136 0 lineto +2633 0 lineto +1659 1497 lineto +649 0 lineto +128 0 lineto +1406 1879 lineto +320 3520 lineto +end_ol grestore +gsave 13.000000 8.500000 translate 0.035278 -0.035278 scale +start_ol +896 384 moveto +896 -1024 lineto +448 -1024 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1032 2531 1240 2641 conicto +1448 2752 1737 2752 conicto +2217 2752 2516 2364 conicto +2816 1976 2816 1344 conicto +2816 712 2516 324 conicto +2217 -64 1737 -64 conicto +1448 -64 1240 46 conicto +1032 157 896 384 conicto +2368 1344 moveto +2368 1823 2171 2095 conicto +1975 2368 1632 2368 conicto +1289 2368 1092 2095 conicto +896 1823 896 1344 conicto +896 865 1092 592 conicto +1289 320 1632 320 conicto +1975 320 2171 592 conicto +2368 865 2368 1344 conicto +end_ol grestore +gsave 13.407119 8.500000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 13.799248 8.500000 translate 0.035278 -0.035278 scale +start_ol +1984 2304 moveto +1912 2337 1828 2352 conicto +1744 2368 1642 2368 conicto +1282 2368 1089 2127 conicto +896 1887 896 1437 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1030 2531 1245 2641 conicto +1460 2752 1767 2752 conicto +1811 2752 1864 2752 conicto +1917 2752 1982 2752 conicto +1984 2304 lineto +end_ol grestore +gsave 14.061500 8.500000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 14.453629 8.500000 translate 0.035278 -0.035278 scale +start_ol +2549 2204 moveto +2714 2485 2942 2618 conicto +3171 2752 3482 2752 conicto +3899 2752 4125 2464 conicto +4352 2177 4352 1646 conicto +4352 0 lineto +3904 0 lineto +3904 1632 lineto +3904 2006 3769 2187 conicto +3634 2368 3356 2368 conicto +3017 2368 2820 2146 conicto +2624 1925 2624 1542 conicto +2624 0 lineto +2176 0 lineto +2176 1632 lineto +2176 2008 2041 2188 conicto +1906 2368 1624 2368 conicto +1289 2368 1092 2145 conicto +896 1922 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1046 2534 1255 2643 conicto +1465 2752 1753 2752 conicto +2044 2752 2247 2611 conicto +2451 2471 2549 2204 conicto +end_ol grestore +gsave 15.075540 8.500000 translate 0.035278 -0.035278 scale +start_ol +2752 1480 moveto +2752 1280 lineto +704 1280 lineto +733 811 978 565 conicto +1223 320 1660 320 conicto +1914 320 2152 384 conicto +2390 448 2624 576 conicto +2624 192 lineto +2388 67 2140 1 conicto +1893 -64 1639 -64 conicto +1001 -64 628 309 conicto +256 683 256 1320 conicto +256 1979 613 2365 conicto +970 2752 1576 2752 conicto +2120 2752 2436 2410 conicto +2752 2068 2752 1480 conicto +2304 1600 moveto +2299 1950 2099 2159 conicto +1900 2368 1572 2368 conicto +1200 2368 976 2166 conicto +753 1964 719 1597 conicto +2304 1600 lineto +end_ol grestore +gsave 15.470167 8.500000 translate 0.035278 -0.035278 scale +start_ol +896 3456 moveto +896 2688 lineto +1792 2688 lineto +1792 2368 lineto +896 2368 lineto +896 902 lineto +896 572 984 478 conicto +1073 384 1345 384 conicto +1792 384 lineto +1792 0 lineto +1345 0 lineto +836 0 642 194 conicto +448 389 448 902 conicto +448 2368 lineto +128 2368 lineto +128 2688 lineto +448 2688 lineto +448 3456 lineto +896 3456 lineto +end_ol grestore +gsave 15.719933 8.500000 translate 0.035278 -0.035278 scale +start_ol +2752 1480 moveto +2752 1280 lineto +704 1280 lineto +733 811 978 565 conicto +1223 320 1660 320 conicto +1914 320 2152 384 conicto +2390 448 2624 576 conicto +2624 192 lineto +2388 67 2140 1 conicto +1893 -64 1639 -64 conicto +1001 -64 628 309 conicto +256 683 256 1320 conicto +256 1979 613 2365 conicto +970 2752 1576 2752 conicto +2120 2752 2436 2410 conicto +2752 2068 2752 1480 conicto +2304 1600 moveto +2299 1950 2099 2159 conicto +1900 2368 1572 2368 conicto +1200 2368 976 2166 conicto +753 1964 719 1597 conicto +2304 1600 lineto +end_ol grestore +gsave 16.114559 8.500000 translate 0.035278 -0.035278 scale +start_ol +1984 2304 moveto +1912 2337 1828 2352 conicto +1744 2368 1642 2368 conicto +1282 2368 1089 2127 conicto +896 1887 896 1437 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1030 2531 1245 2641 conicto +1460 2752 1767 2752 conicto +1811 2752 1864 2752 conicto +1917 2752 1982 2752 conicto +1984 2304 lineto +end_ol grestore +gsave 13.000000 9.300000 translate 0.035278 -0.035278 scale +start_ol +1792 3712 moveto +1792 3328 lineto +1369 3328 lineto +1139 3328 1049 3237 conicto +960 3147 960 2912 conicto +960 2688 lineto +1664 2688 lineto +1664 2368 lineto +960 2368 lineto +960 0 lineto +512 0 lineto +512 2368 lineto +64 2368 lineto +64 2688 lineto +512 2688 lineto +512 2864 lineto +512 3307 718 3509 conicto +925 3712 1374 3712 conicto +1792 3712 lineto +end_ol grestore +gsave 13.224788 9.300000 translate 0.035278 -0.035278 scale +start_ol +1473 2368 moveto +1117 2368 910 2094 conicto +704 1820 704 1344 conicto +704 868 909 594 conicto +1115 320 1473 320 conicto +1827 320 2033 595 conicto +2240 870 2240 1344 conicto +2240 1816 2033 2092 conicto +1827 2368 1473 2368 conicto +1472 2752 moveto +2040 2752 2364 2378 conicto +2688 2005 2688 1344 conicto +2688 685 2364 310 conicto +2040 -64 1472 -64 conicto +902 -64 579 310 conicto +256 685 256 1344 conicto +256 2005 579 2378 conicto +902 2752 1472 2752 conicto +end_ol grestore +gsave 13.616917 9.300000 translate 0.035278 -0.035278 scale +start_ol +1984 2304 moveto +1912 2337 1828 2352 conicto +1744 2368 1642 2368 conicto +1282 2368 1089 2127 conicto +896 1887 896 1437 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1030 2531 1245 2641 conicto +1460 2752 1767 2752 conicto +1811 2752 1864 2752 conicto +1917 2752 1982 2752 conicto +1984 2304 lineto +end_ol grestore +gsave 13.879169 9.300000 translate 0.035278 -0.035278 scale +start_ol +end_ol grestore +gsave 14.081476 9.300000 translate 0.035278 -0.035278 scale +start_ol +1792 3712 moveto +1792 3328 lineto +1369 3328 lineto +1139 3328 1049 3237 conicto +960 3147 960 2912 conicto +960 2688 lineto +1664 2688 lineto +1664 2368 lineto +960 2368 lineto +960 0 lineto +512 0 lineto +512 2368 lineto +64 2368 lineto +64 2688 lineto +512 2688 lineto +512 2864 lineto +512 3307 718 3509 conicto +925 3712 1374 3712 conicto +1792 3712 lineto +end_ol grestore +gsave 14.306264 9.300000 translate 0.035278 -0.035278 scale +start_ol +448 1040 moveto +448 2688 lineto +896 2688 lineto +896 1057 lineto +896 689 1042 504 conicto +1188 320 1481 320 conicto +1832 320 2036 541 conicto +2240 763 2240 1145 conicto +2240 2688 lineto +2688 2688 lineto +2688 0 lineto +2240 0 lineto +2240 384 lineto +2081 157 1870 46 conicto +1660 -64 1382 -64 conicto +923 -64 685 217 conicto +448 499 448 1040 conicto +end_ol grestore +gsave 14.710879 9.300000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 15.115493 9.300000 translate 0.035278 -0.035278 scale +start_ol +2368 2560 moveto +2368 2176 lineto +2180 2272 1991 2320 conicto +1803 2368 1611 2368 conicto +1180 2368 942 2099 conicto +704 1830 704 1344 conicto +704 858 942 589 conicto +1180 320 1611 320 conicto +1803 320 1991 368 conicto +2180 416 2368 512 conicto +2368 128 lineto +2184 32 1987 -16 conicto +1791 -64 1569 -64 conicto +966 -64 611 316 conicto +256 697 256 1344 conicto +256 2000 615 2376 conicto +974 2752 1598 2752 conicto +1801 2752 1994 2704 conicto +2187 2656 2368 2560 conicto +end_ol grestore +gsave 15.467661 9.300000 translate 0.035278 -0.035278 scale +start_ol +-64 3520 moveto +466 3520 lineto +1476 2072 lineto +2479 3520 lineto +3008 3520 lineto +1728 1676 lineto +1728 0 lineto +1216 0 lineto +1216 1676 lineto +-64 3520 lineto +end_ol grestore +gsave 11.111250 4.250000 translate 0.035278 -0.035278 scale +start_ol +1792 3712 moveto +1792 3328 lineto +1369 3328 lineto +1139 3328 1049 3237 conicto +960 3147 960 2912 conicto +960 2688 lineto +1664 2688 lineto +1664 2368 lineto +960 2368 lineto +960 0 lineto +512 0 lineto +512 2368 lineto +64 2368 lineto +64 2688 lineto +512 2688 lineto +512 2864 lineto +512 3307 718 3509 conicto +925 3712 1374 3712 conicto +1792 3712 lineto +end_ol grestore +gsave 11.336038 4.250000 translate 0.035278 -0.035278 scale +start_ol +448 1040 moveto +448 2688 lineto +896 2688 lineto +896 1057 lineto +896 689 1042 504 conicto +1188 320 1481 320 conicto +1832 320 2036 541 conicto +2240 763 2240 1145 conicto +2240 2688 lineto +2688 2688 lineto +2688 0 lineto +2240 0 lineto +2240 384 lineto +2081 157 1870 46 conicto +1660 -64 1382 -64 conicto +923 -64 685 217 conicto +448 499 448 1040 conicto +end_ol grestore +gsave 11.740652 4.250000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 12.145266 4.250000 translate 0.035278 -0.035278 scale +start_ol +2368 2560 moveto +2368 2176 lineto +2180 2272 1991 2320 conicto +1803 2368 1611 2368 conicto +1180 2368 942 2099 conicto +704 1830 704 1344 conicto +704 858 942 589 conicto +1180 320 1611 320 conicto +1803 320 1991 368 conicto +2180 416 2368 512 conicto +2368 128 lineto +2184 32 1987 -16 conicto +1791 -64 1569 -64 conicto +966 -64 611 316 conicto +256 697 256 1344 conicto +256 2000 615 2376 conicto +974 2752 1598 2752 conicto +1801 2752 1994 2704 conicto +2187 2656 2368 2560 conicto +end_ol grestore +gsave 12.497435 4.250000 translate 0.035278 -0.035278 scale +start_ol +-64 3520 moveto +466 3520 lineto +1476 2072 lineto +2479 3520 lineto +3008 3520 lineto +1728 1676 lineto +1728 0 lineto +1216 0 lineto +1216 1676 lineto +-64 3520 lineto +end_ol grestore +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +1.000000 1.000000 1.000000 srgb +n 11.500000 9.000000 m 11.500000 10.000000 l 12.500000 10.000000 l 12.500000 9.000000 l f +0.000000 0.000000 0.000000 srgb +n 11.500000 9.000000 m 11.500000 10.000000 l 12.500000 10.000000 l 12.500000 9.000000 l cp s +gsave 11.601250 9.721250 translate 0.035278 -0.035278 scale +start_ol +-64 3520 moveto +466 3520 lineto +1476 2072 lineto +2479 3520 lineto +3008 3520 lineto +1728 1676 lineto +1728 0 lineto +1216 0 lineto +1216 1676 lineto +-64 3520 lineto +end_ol grestore +gsave 11.990882 9.721250 translate 0.035278 -0.035278 scale +start_ol +1792 3103 moveto +630 1216 lineto +1792 1216 lineto +1792 3103 lineto +1709 3520 moveto +2304 3520 lineto +2304 1216 lineto +2816 1216 lineto +2816 832 lineto +2304 832 lineto +2304 0 lineto +1792 0 lineto +1792 832 lineto +256 832 lineto +256 1291 lineto +1709 3520 lineto +end_ol grestore +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +1.000000 1.000000 1.000000 srgb +n 17.000000 6.000000 m 17.000000 7.000000 l 18.000000 7.000000 l 18.000000 6.000000 l f +0.000000 0.000000 0.000000 srgb +n 17.000000 6.000000 m 17.000000 7.000000 l 18.000000 7.000000 l 18.000000 6.000000 l cp s +gsave 17.072500 6.721250 translate 0.035278 -0.035278 scale +start_ol +3136 3264 moveto +3136 2752 lineto +2892 2977 2616 3088 conicto +2340 3200 2030 3200 conicto +1418 3200 1093 2829 conicto +768 2459 768 1759 conicto +768 1061 1093 690 conicto +1418 320 2030 320 conicto +2340 320 2616 431 conicto +2892 543 3136 768 conicto +3136 256 lineto +2882 96 2599 16 conicto +2316 -64 2000 -64 conicto +1189 -64 722 424 conicto +256 913 256 1759 conicto +256 2607 722 3095 conicto +1189 3584 2000 3584 conicto +2320 3584 2603 3504 conicto +2887 3424 3136 3264 conicto +end_ol grestore +gsave 17.519580 6.721250 translate 0.035278 -0.035278 scale +start_ol +640 384 moveto +1408 384 lineto +1408 3136 lineto +576 2944 lineto +576 3328 lineto +1434 3520 lineto +1920 3520 lineto +1920 384 lineto +2688 384 lineto +2688 0 lineto +640 0 lineto +640 384 lineto +end_ol grestore +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +1.000000 1.000000 1.000000 srgb +n 17.000000 7.000000 m 17.000000 8.000000 l 18.000000 8.000000 l 18.000000 7.000000 l f +0.000000 0.000000 0.000000 srgb +n 17.000000 7.000000 m 17.000000 8.000000 l 18.000000 8.000000 l 18.000000 7.000000 l cp s +gsave 17.072500 7.721250 translate 0.035278 -0.035278 scale +start_ol +3136 3264 moveto +3136 2752 lineto +2892 2977 2616 3088 conicto +2340 3200 2030 3200 conicto +1418 3200 1093 2829 conicto +768 2459 768 1759 conicto +768 1061 1093 690 conicto +1418 320 2030 320 conicto +2340 320 2616 431 conicto +2892 543 3136 768 conicto +3136 256 lineto +2882 96 2599 16 conicto +2316 -64 2000 -64 conicto +1189 -64 722 424 conicto +256 913 256 1759 conicto +256 2607 722 3095 conicto +1189 3584 2000 3584 conicto +2320 3584 2603 3504 conicto +2887 3424 3136 3264 conicto +end_ol grestore +gsave 17.519580 7.721250 translate 0.035278 -0.035278 scale +start_ol +938 384 moveto +2643 384 lineto +2643 0 lineto +384 0 lineto +384 384 lineto +654 668 1119 1146 conicto +1584 1625 1704 1763 conicto +1931 2023 2021 2203 conicto +2112 2384 2112 2558 conicto +2112 2842 1913 3021 conicto +1715 3200 1397 3200 conicto +1171 3200 920 3104 conicto +669 3009 384 2816 conicto +384 3328 lineto +678 3455 933 3519 conicto +1188 3584 1400 3584 conicto +1959 3584 2291 3309 conicto +2624 3034 2624 2574 conicto +2624 2356 2540 2160 conicto +2457 1965 2237 1700 conicto +2177 1631 1852 1302 conicto +1528 974 938 384 conicto +end_ol grestore +0.100000 slw +[] 0 sd +[] 0 sd +0 slc +n 16.950000 4.500000 m 16.950000 13.500000 l s +0.100000 slw +[] 0 sd +[] 0 sd +0 slc +n 18.050000 4.500000 m 18.050000 13.500000 l s +gsave 16.587500 4.250000 translate 0.035278 -0.035278 scale +start_ol +1792 3712 moveto +1792 3328 lineto +1369 3328 lineto +1139 3328 1049 3237 conicto +960 3147 960 2912 conicto +960 2688 lineto +1664 2688 lineto +1664 2368 lineto +960 2368 lineto +960 0 lineto +512 0 lineto +512 2368 lineto +64 2368 lineto +64 2688 lineto +512 2688 lineto +512 2864 lineto +512 3307 718 3509 conicto +925 3712 1374 3712 conicto +1792 3712 lineto +end_ol grestore +gsave 16.812288 4.250000 translate 0.035278 -0.035278 scale +start_ol +448 1040 moveto +448 2688 lineto +896 2688 lineto +896 1057 lineto +896 689 1042 504 conicto +1188 320 1481 320 conicto +1832 320 2036 541 conicto +2240 763 2240 1145 conicto +2240 2688 lineto +2688 2688 lineto +2688 0 lineto +2240 0 lineto +2240 384 lineto +2081 157 1870 46 conicto +1660 -64 1382 -64 conicto +923 -64 685 217 conicto +448 499 448 1040 conicto +end_ol grestore +gsave 17.216902 4.250000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 17.621516 4.250000 translate 0.035278 -0.035278 scale +start_ol +2368 2560 moveto +2368 2176 lineto +2180 2272 1991 2320 conicto +1803 2368 1611 2368 conicto +1180 2368 942 2099 conicto +704 1830 704 1344 conicto +704 858 942 589 conicto +1180 320 1611 320 conicto +1803 320 1991 368 conicto +2180 416 2368 512 conicto +2368 128 lineto +2184 32 1987 -16 conicto +1791 -64 1569 -64 conicto +966 -64 611 316 conicto +256 697 256 1344 conicto +256 2000 615 2376 conicto +974 2752 1598 2752 conicto +1801 2752 1994 2704 conicto +2187 2656 2368 2560 conicto +end_ol grestore +gsave 17.973685 4.250000 translate 0.035278 -0.035278 scale +start_ol +256 3520 moveto +3008 3520 lineto +3008 3155 lineto +793 384 lineto +3072 384 lineto +3072 0 lineto +192 0 lineto +192 365 lineto +2417 3136 lineto +256 3136 lineto +256 3520 lineto +end_ol grestore +0.050000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 12.500000 6.000000 m 13.500000 6.000000 12.500000 8.000000 13.500000 8.000000 c s +0.050000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 13.500000 8.000000 m 12.500000 8.000000 13.500000 10.000000 12.500000 10.000000 c s +0.050000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 7.000000 10.000000 m 8.000000 10.000000 7.000000 11.500000 8.000000 11.500000 c s +0.050000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 8.000000 11.500000 m 7.000000 11.500000 8.000000 13.000000 7.000000 13.000000 c s +gsave 3.400000 10.350000 translate 0.035278 -0.035278 scale +start_ol +2624 3392 moveto +2624 2944 lineto +2352 3073 2111 3136 conicto +1870 3200 1645 3200 conicto +1255 3200 1043 3052 conicto +832 2904 832 2631 conicto +832 2402 969 2285 conicto +1107 2169 1491 2097 conicto +1773 2039 lineto +2308 1937 2562 1678 conicto +2816 1420 2816 986 conicto +2816 469 2468 202 conicto +2121 -64 1450 -64 conicto +1197 -64 911 0 conicto +626 65 320 192 conicto +320 704 lineto +613 513 893 416 conicto +1174 320 1445 320 conicto +1857 320 2080 485 conicto +2304 650 2304 955 conicto +2304 1221 2148 1371 conicto +1992 1522 1636 1597 conicto +1352 1652 lineto +807 1756 563 1978 conicto +320 2201 320 2597 conicto +320 3056 654 3320 conicto +989 3584 1576 3584 conicto +1828 3584 2089 3536 conicto +2351 3488 2624 3392 conicto +end_ol grestore +gsave 3.807119 10.350000 translate 0.035278 -0.035278 scale +start_ol +896 3456 moveto +896 2688 lineto +1792 2688 lineto +1792 2368 lineto +896 2368 lineto +896 902 lineto +896 572 984 478 conicto +1073 384 1345 384 conicto +1792 384 lineto +1792 0 lineto +1345 0 lineto +836 0 642 194 conicto +448 389 448 902 conicto +448 2368 lineto +128 2368 lineto +128 2688 lineto +448 2688 lineto +448 3456 lineto +896 3456 lineto +end_ol grestore +gsave 4.056886 10.350000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 4.449015 10.350000 translate 0.035278 -0.035278 scale +start_ol +2368 2560 moveto +2368 2176 lineto +2180 2272 1991 2320 conicto +1803 2368 1611 2368 conicto +1180 2368 942 2099 conicto +704 1830 704 1344 conicto +704 858 942 589 conicto +1180 320 1611 320 conicto +1803 320 1991 368 conicto +2180 416 2368 512 conicto +2368 128 lineto +2184 32 1987 -16 conicto +1791 -64 1569 -64 conicto +966 -64 611 316 conicto +256 697 256 1344 conicto +256 2000 615 2376 conicto +974 2752 1598 2752 conicto +1801 2752 1994 2704 conicto +2187 2656 2368 2560 conicto +end_ol grestore +gsave 4.801184 10.350000 translate 0.035278 -0.035278 scale +start_ol +448 3712 moveto +896 3712 lineto +896 1529 lineto +2196 2688 lineto +2752 2688 lineto +1346 1430 lineto +2816 0 lineto +2246 0 lineto +896 1313 lineto +896 0 lineto +448 0 lineto +448 3712 lineto +end_ol grestore +gsave 3.400000 11.150000 translate 0.035278 -0.035278 scale +start_ol +896 384 moveto +896 -1024 lineto +448 -1024 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1032 2531 1240 2641 conicto +1448 2752 1737 2752 conicto +2217 2752 2516 2364 conicto +2816 1976 2816 1344 conicto +2816 712 2516 324 conicto +2217 -64 1737 -64 conicto +1448 -64 1240 46 conicto +1032 157 896 384 conicto +2368 1344 moveto +2368 1823 2171 2095 conicto +1975 2368 1632 2368 conicto +1289 2368 1092 2095 conicto +896 1823 896 1344 conicto +896 865 1092 592 conicto +1289 320 1632 320 conicto +1975 320 2171 592 conicto +2368 865 2368 1344 conicto +end_ol grestore +gsave 3.807119 11.150000 translate 0.035278 -0.035278 scale +start_ol +1473 2368 moveto +1117 2368 910 2094 conicto +704 1820 704 1344 conicto +704 868 909 594 conicto +1115 320 1473 320 conicto +1827 320 2033 595 conicto +2240 870 2240 1344 conicto +2240 1816 2033 2092 conicto +1827 2368 1473 2368 conicto +1472 2752 moveto +2040 2752 2364 2378 conicto +2688 2005 2688 1344 conicto +2688 685 2364 310 conicto +2040 -64 1472 -64 conicto +902 -64 579 310 conicto +256 685 256 1344 conicto +256 2005 579 2378 conicto +902 2752 1472 2752 conicto +end_ol grestore +gsave 4.199248 11.150000 translate 0.035278 -0.035278 scale +start_ol +448 2688 moveto +896 2688 lineto +896 0 lineto +448 0 lineto +448 2688 lineto +448 3712 moveto +896 3712 lineto +896 3136 lineto +448 3136 lineto +448 3712 lineto +end_ol grestore +gsave 4.376577 11.150000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 4.781191 11.150000 translate 0.035278 -0.035278 scale +start_ol +896 3456 moveto +896 2688 lineto +1792 2688 lineto +1792 2368 lineto +896 2368 lineto +896 902 lineto +896 572 984 478 conicto +1073 384 1345 384 conicto +1792 384 lineto +1792 0 lineto +1345 0 lineto +836 0 642 194 conicto +448 389 448 902 conicto +448 2368 lineto +128 2368 lineto +128 2688 lineto +448 2688 lineto +448 3456 lineto +896 3456 lineto +end_ol grestore +gsave 5.030958 11.150000 translate 0.035278 -0.035278 scale +start_ol +2752 1480 moveto +2752 1280 lineto +704 1280 lineto +733 811 978 565 conicto +1223 320 1660 320 conicto +1914 320 2152 384 conicto +2390 448 2624 576 conicto +2624 192 lineto +2388 67 2140 1 conicto +1893 -64 1639 -64 conicto +1001 -64 628 309 conicto +256 683 256 1320 conicto +256 1979 613 2365 conicto +970 2752 1576 2752 conicto +2120 2752 2436 2410 conicto +2752 2068 2752 1480 conicto +2304 1600 moveto +2299 1950 2099 2159 conicto +1900 2368 1572 2368 conicto +1200 2368 976 2166 conicto +753 1964 719 1597 conicto +2304 1600 lineto +end_ol grestore +gsave 5.425584 11.150000 translate 0.035278 -0.035278 scale +start_ol +1984 2304 moveto +1912 2337 1828 2352 conicto +1744 2368 1642 2368 conicto +1282 2368 1089 2127 conicto +896 1887 896 1437 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1030 2531 1245 2641 conicto +1460 2752 1767 2752 conicto +1811 2752 1864 2752 conicto +1917 2752 1982 2752 conicto +1984 2304 lineto +end_ol grestore +0.050000 slw +[] 0 sd +[] 0 sd +0 slc +n 10.500000 6.500000 m 11.388197 6.500000 l s +0.050000 slw +[] 0 sd +0 slj +0 slc +n 10.944098 6.750000 m 11.444098 6.500000 l 10.944098 6.250000 l s +0.050000 slw +[] 0 sd +[] 0 sd +0 slc +n 16.000000 6.500000 m 16.888197 6.500000 l s +0.050000 slw +[] 0 sd +0 slj +0 slc +n 16.444098 6.750000 m 16.944098 6.500000 l 16.444098 6.250000 l s +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +1.000000 1.000000 1.000000 srgb +n 11.500000 10.000000 m 11.500000 11.000000 l 12.500000 11.000000 l 12.500000 10.000000 l f +0.000000 0.000000 0.000000 srgb +n 11.500000 10.000000 m 11.500000 11.000000 l 12.500000 11.000000 l 12.500000 10.000000 l cp s +gsave 11.577500 10.721250 translate 0.035278 -0.035278 scale +start_ol +320 3520 moveto +827 3520 lineto +1694 2211 lineto +2565 3520 lineto +3072 3520 lineto +1951 1830 lineto +3136 0 lineto +2633 0 lineto +1659 1497 lineto +649 0 lineto +128 0 lineto +1406 1879 lineto +320 3520 lineto +end_ol grestore +gsave 12.014592 10.721250 translate 0.035278 -0.035278 scale +start_ol +640 384 moveto +1408 384 lineto +1408 3136 lineto +576 2944 lineto +576 3328 lineto +1434 3520 lineto +1920 3520 lineto +1920 384 lineto +2688 384 lineto +2688 0 lineto +640 0 lineto +640 384 lineto +end_ol grestore +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +1.000000 1.000000 1.000000 srgb +n 11.500000 11.000000 m 11.500000 12.000000 l 12.500000 12.000000 l 12.500000 11.000000 l f +0.000000 0.000000 0.000000 srgb +n 11.500000 11.000000 m 11.500000 12.000000 l 12.500000 12.000000 l 12.500000 11.000000 l cp s +gsave 11.577500 11.721250 translate 0.035278 -0.035278 scale +start_ol +320 3520 moveto +827 3520 lineto +1694 2211 lineto +2565 3520 lineto +3072 3520 lineto +1951 1830 lineto +3136 0 lineto +2633 0 lineto +1659 1497 lineto +649 0 lineto +128 0 lineto +1406 1879 lineto +320 3520 lineto +end_ol grestore +gsave 12.014592 11.721250 translate 0.035278 -0.035278 scale +start_ol +938 384 moveto +2643 384 lineto +2643 0 lineto +384 0 lineto +384 384 lineto +654 668 1119 1146 conicto +1584 1625 1704 1763 conicto +1931 2023 2021 2203 conicto +2112 2384 2112 2558 conicto +2112 2842 1913 3021 conicto +1715 3200 1397 3200 conicto +1171 3200 920 3104 conicto +669 3009 384 2816 conicto +384 3328 lineto +678 3455 933 3519 conicto +1188 3584 1400 3584 conicto +1959 3584 2291 3309 conicto +2624 3034 2624 2574 conicto +2624 2356 2540 2160 conicto +2457 1965 2237 1700 conicto +2177 1631 1852 1302 conicto +1528 974 938 384 conicto +end_ol grestore +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +1.000000 1.000000 1.000000 srgb +n 11.500000 12.000000 m 11.500000 13.000000 l 12.500000 13.000000 l 12.500000 12.000000 l f +0.000000 0.000000 0.000000 srgb +n 11.500000 12.000000 m 11.500000 13.000000 l 12.500000 13.000000 l 12.500000 12.000000 l cp s +gsave 11.577500 12.721250 translate 0.035278 -0.035278 scale +start_ol +320 3520 moveto +827 3520 lineto +1694 2211 lineto +2565 3520 lineto +3072 3520 lineto +1951 1830 lineto +3136 0 lineto +2633 0 lineto +1659 1497 lineto +649 0 lineto +128 0 lineto +1406 1879 lineto +320 3520 lineto +end_ol grestore +gsave 12.014592 12.721250 translate 0.035278 -0.035278 scale +start_ol +1897 1936 moveto +2269 1862 2478 1627 conicto +2688 1392 2688 1046 conicto +2688 516 2331 226 conicto +1975 -64 1319 -64 conicto +1099 -64 865 -16 conicto +632 32 384 128 conicto +384 576 lineto +576 449 805 384 conicto +1035 320 1285 320 conicto +1720 320 1948 504 conicto +2176 688 2176 1039 conicto +2176 1363 1967 1545 conicto +1759 1728 1388 1728 conicto +1024 1728 lineto +1024 2112 lineto +1405 2112 lineto +1717 2112 1882 2250 conicto +2048 2388 2048 2648 conicto +2048 2915 1877 3057 conicto +1706 3200 1388 3200 conicto +1200 3200 985 3153 conicto +770 3107 512 3008 conicto +512 3456 lineto +773 3520 1001 3552 conicto +1229 3584 1431 3584 conicto +1952 3584 2256 3343 conicto +2560 3102 2560 2692 conicto +2560 2406 2387 2209 conicto +2215 2012 1897 1936 conicto +end_ol grestore +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +1.000000 1.000000 1.000000 srgb +n 17.000000 8.000000 m 17.000000 9.000000 l 18.000000 9.000000 l 18.000000 8.000000 l f +0.000000 0.000000 0.000000 srgb +n 17.000000 8.000000 m 17.000000 9.000000 l 18.000000 9.000000 l 18.000000 8.000000 l cp s +gsave 17.101250 8.721250 translate 0.035278 -0.035278 scale +start_ol +-64 3520 moveto +466 3520 lineto +1476 2072 lineto +2479 3520 lineto +3008 3520 lineto +1728 1676 lineto +1728 0 lineto +1216 0 lineto +1216 1676 lineto +-64 3520 lineto +end_ol grestore +gsave 17.490882 8.721250 translate 0.035278 -0.035278 scale +start_ol +1897 1936 moveto +2269 1862 2478 1627 conicto +2688 1392 2688 1046 conicto +2688 516 2331 226 conicto +1975 -64 1319 -64 conicto +1099 -64 865 -16 conicto +632 32 384 128 conicto +384 576 lineto +576 449 805 384 conicto +1035 320 1285 320 conicto +1720 320 1948 504 conicto +2176 688 2176 1039 conicto +2176 1363 1967 1545 conicto +1759 1728 1388 1728 conicto +1024 1728 lineto +1024 2112 lineto +1405 2112 lineto +1717 2112 1882 2250 conicto +2048 2388 2048 2648 conicto +2048 2915 1877 3057 conicto +1706 3200 1388 3200 conicto +1200 3200 985 3153 conicto +770 3107 512 3008 conicto +512 3456 lineto +773 3520 1001 3552 conicto +1229 3584 1431 3584 conicto +1952 3584 2256 3343 conicto +2560 3102 2560 2692 conicto +2560 2406 2387 2209 conicto +2215 2012 1897 1936 conicto +end_ol grestore +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +1.000000 1.000000 1.000000 srgb +n 17.000000 9.000000 m 17.000000 10.000000 l 18.000000 10.000000 l 18.000000 9.000000 l f +0.000000 0.000000 0.000000 srgb +n 17.000000 9.000000 m 17.000000 10.000000 l 18.000000 10.000000 l 18.000000 9.000000 l cp s +gsave 17.101250 9.721250 translate 0.035278 -0.035278 scale +start_ol +-64 3520 moveto +466 3520 lineto +1476 2072 lineto +2479 3520 lineto +3008 3520 lineto +1728 1676 lineto +1728 0 lineto +1216 0 lineto +1216 1676 lineto +-64 3520 lineto +end_ol grestore +gsave 17.490882 9.721250 translate 0.035278 -0.035278 scale +start_ol +1792 3103 moveto +630 1216 lineto +1792 1216 lineto +1792 3103 lineto +1709 3520 moveto +2304 3520 lineto +2304 1216 lineto +2816 1216 lineto +2816 832 lineto +2304 832 lineto +2304 0 lineto +1792 0 lineto +1792 832 lineto +256 832 lineto +256 1291 lineto +1709 3520 lineto +end_ol grestore +0.100000 slw +[] 0 sd +[] 0 sd +0 slc +n 17.000000 8.000000 m 18.000000 9.000000 l s +0.100000 slw +[] 0 sd +[] 0 sd +0 slc +n 17.000000 9.000000 m 18.000000 10.000000 l s +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +1.000000 1.000000 1.000000 srgb +n 17.000000 10.000000 m 17.000000 11.000000 l 18.000000 11.000000 l 18.000000 10.000000 l f +0.000000 0.000000 0.000000 srgb +n 17.000000 10.000000 m 17.000000 11.000000 l 18.000000 11.000000 l 18.000000 10.000000 l cp s +gsave 17.077500 10.721250 translate 0.035278 -0.035278 scale +start_ol +320 3520 moveto +827 3520 lineto +1694 2211 lineto +2565 3520 lineto +3072 3520 lineto +1951 1830 lineto +3136 0 lineto +2633 0 lineto +1659 1497 lineto +649 0 lineto +128 0 lineto +1406 1879 lineto +320 3520 lineto +end_ol grestore +gsave 17.514592 10.721250 translate 0.035278 -0.035278 scale +start_ol +640 384 moveto +1408 384 lineto +1408 3136 lineto +576 2944 lineto +576 3328 lineto +1434 3520 lineto +1920 3520 lineto +1920 384 lineto +2688 384 lineto +2688 0 lineto +640 0 lineto +640 384 lineto +end_ol grestore +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +1.000000 1.000000 1.000000 srgb +n 17.000000 11.000000 m 17.000000 12.000000 l 18.000000 12.000000 l 18.000000 11.000000 l f +0.000000 0.000000 0.000000 srgb +n 17.000000 11.000000 m 17.000000 12.000000 l 18.000000 12.000000 l 18.000000 11.000000 l cp s +gsave 17.077500 11.721250 translate 0.035278 -0.035278 scale +start_ol +320 3520 moveto +827 3520 lineto +1694 2211 lineto +2565 3520 lineto +3072 3520 lineto +1951 1830 lineto +3136 0 lineto +2633 0 lineto +1659 1497 lineto +649 0 lineto +128 0 lineto +1406 1879 lineto +320 3520 lineto +end_ol grestore +gsave 17.514592 11.721250 translate 0.035278 -0.035278 scale +start_ol +938 384 moveto +2643 384 lineto +2643 0 lineto +384 0 lineto +384 384 lineto +654 668 1119 1146 conicto +1584 1625 1704 1763 conicto +1931 2023 2021 2203 conicto +2112 2384 2112 2558 conicto +2112 2842 1913 3021 conicto +1715 3200 1397 3200 conicto +1171 3200 920 3104 conicto +669 3009 384 2816 conicto +384 3328 lineto +678 3455 933 3519 conicto +1188 3584 1400 3584 conicto +1959 3584 2291 3309 conicto +2624 3034 2624 2574 conicto +2624 2356 2540 2160 conicto +2457 1965 2237 1700 conicto +2177 1631 1852 1302 conicto +1528 974 938 384 conicto +end_ol grestore +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +1.000000 1.000000 1.000000 srgb +n 17.000000 12.000000 m 17.000000 13.000000 l 18.000000 13.000000 l 18.000000 12.000000 l f +0.000000 0.000000 0.000000 srgb +n 17.000000 12.000000 m 17.000000 13.000000 l 18.000000 13.000000 l 18.000000 12.000000 l cp s +gsave 17.077500 12.721250 translate 0.035278 -0.035278 scale +start_ol +320 3520 moveto +827 3520 lineto +1694 2211 lineto +2565 3520 lineto +3072 3520 lineto +1951 1830 lineto +3136 0 lineto +2633 0 lineto +1659 1497 lineto +649 0 lineto +128 0 lineto +1406 1879 lineto +320 3520 lineto +end_ol grestore +gsave 17.514592 12.721250 translate 0.035278 -0.035278 scale +start_ol +1897 1936 moveto +2269 1862 2478 1627 conicto +2688 1392 2688 1046 conicto +2688 516 2331 226 conicto +1975 -64 1319 -64 conicto +1099 -64 865 -16 conicto +632 32 384 128 conicto +384 576 lineto +576 449 805 384 conicto +1035 320 1285 320 conicto +1720 320 1948 504 conicto +2176 688 2176 1039 conicto +2176 1363 1967 1545 conicto +1759 1728 1388 1728 conicto +1024 1728 lineto +1024 2112 lineto +1405 2112 lineto +1717 2112 1882 2250 conicto +2048 2388 2048 2648 conicto +2048 2915 1877 3057 conicto +1706 3200 1388 3200 conicto +1200 3200 985 3153 conicto +770 3107 512 3008 conicto +512 3456 lineto +773 3520 1001 3552 conicto +1229 3584 1431 3584 conicto +1952 3584 2256 3343 conicto +2560 3102 2560 2692 conicto +2560 2406 2387 2209 conicto +2215 2012 1897 1936 conicto +end_ol grestore +0.150000 slw +[] 0 sd +[] 0 sd +0 slc +0 slj +0.150000 slw +0 slc +0 slj +[] 0 sd +1.000000 1.000000 1.000000 srgb +n 7.500000 14.250000 m 9.000000 14.250000 l 9.000000 14.000000 l 10.500000 14.500000 l 9.000000 15.000000 l 9.000000 14.750000 l 7.500000 14.750000 l ef +0.000000 0.000000 0.000000 srgb +n 7.500000 14.250000 m 9.000000 14.250000 l 9.000000 14.000000 l 10.500000 14.500000 l 9.000000 15.000000 l 9.000000 14.750000 l 7.500000 14.750000 l cp s +0 slc +0 slj +[] 0 sd +n 7.500000 14.250000 m 9.000000 14.250000 l 9.000000 14.000000 l 10.500000 14.500000 l 9.000000 15.000000 l 9.000000 14.750000 l 7.500000 14.750000 l cp s +gsave 7.500000 14.000000 translate 0.035278 -0.035278 scale +start_ol +2368 2560 moveto +2368 2176 lineto +2180 2272 1991 2320 conicto +1803 2368 1611 2368 conicto +1180 2368 942 2099 conicto +704 1830 704 1344 conicto +704 858 942 589 conicto +1180 320 1611 320 conicto +1803 320 1991 368 conicto +2180 416 2368 512 conicto +2368 128 lineto +2184 32 1987 -16 conicto +1791 -64 1569 -64 conicto +966 -64 611 316 conicto +256 697 256 1344 conicto +256 2000 615 2376 conicto +974 2752 1598 2752 conicto +1801 2752 1994 2704 conicto +2187 2656 2368 2560 conicto +end_ol grestore +gsave 7.852169 14.000000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 8.244298 14.000000 translate 0.035278 -0.035278 scale +start_ol +448 3712 moveto +896 3712 lineto +896 0 lineto +448 0 lineto +448 3712 lineto +end_ol grestore +gsave 8.421626 14.000000 translate 0.035278 -0.035278 scale +start_ol +448 3712 moveto +896 3712 lineto +896 0 lineto +448 0 lineto +448 3712 lineto +end_ol grestore +gsave 13.000000 14.000000 translate 0.035278 -0.035278 scale +start_ol +896 3456 moveto +896 2688 lineto +1792 2688 lineto +1792 2368 lineto +896 2368 lineto +896 902 lineto +896 572 984 478 conicto +1073 384 1345 384 conicto +1792 384 lineto +1792 0 lineto +1345 0 lineto +836 0 642 194 conicto +448 389 448 902 conicto +448 2368 lineto +128 2368 lineto +128 2688 lineto +448 2688 lineto +448 3456 lineto +896 3456 lineto +end_ol grestore +gsave 13.249767 14.000000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 13.641896 14.000000 translate 0.035278 -0.035278 scale +start_ol +448 2688 moveto +896 2688 lineto +896 0 lineto +448 0 lineto +448 2688 lineto +448 3712 moveto +896 3712 lineto +896 3136 lineto +448 3136 lineto +448 3712 lineto +end_ol grestore +gsave 13.819224 14.000000 translate 0.035278 -0.035278 scale +start_ol +448 3712 moveto +896 3712 lineto +896 0 lineto +448 0 lineto +448 3712 lineto +end_ol grestore +gsave 13.996553 14.000000 translate 0.035278 -0.035278 scale +start_ol +2368 2560 moveto +2368 2176 lineto +2180 2272 1991 2320 conicto +1803 2368 1611 2368 conicto +1180 2368 942 2099 conicto +704 1830 704 1344 conicto +704 858 942 589 conicto +1180 320 1611 320 conicto +1803 320 1991 368 conicto +2180 416 2368 512 conicto +2368 128 lineto +2184 32 1987 -16 conicto +1791 -64 1569 -64 conicto +966 -64 611 316 conicto +256 697 256 1344 conicto +256 2000 615 2376 conicto +974 2752 1598 2752 conicto +1801 2752 1994 2704 conicto +2187 2656 2368 2560 conicto +end_ol grestore +gsave 14.348722 14.000000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 14.740851 14.000000 translate 0.035278 -0.035278 scale +start_ol +448 3712 moveto +896 3712 lineto +896 0 lineto +448 0 lineto +448 3712 lineto +end_ol grestore +gsave 14.918180 14.000000 translate 0.035278 -0.035278 scale +start_ol +448 3712 moveto +896 3712 lineto +896 0 lineto +448 0 lineto +448 3712 lineto +end_ol grestore +0.150000 slw +[] 0 sd +[] 0 sd +0 slc +0 slj +0.150000 slw +0 slc +0 slj +[] 0 sd +1.000000 1.000000 1.000000 srgb +n 13.500000 14.250000 m 15.000000 14.250000 l 15.000000 14.000000 l 16.500000 14.500000 l 15.000000 15.000000 l 15.000000 14.750000 l 13.500000 14.750000 l ef +0.000000 0.000000 0.000000 srgb +n 13.500000 14.250000 m 15.000000 14.250000 l 15.000000 14.000000 l 16.500000 14.500000 l 15.000000 15.000000 l 15.000000 14.750000 l 13.500000 14.750000 l cp s +0 slc +0 slj +[] 0 sd +n 13.500000 14.250000 m 15.000000 14.250000 l 15.000000 14.000000 l 16.500000 14.500000 l 15.000000 15.000000 l 15.000000 14.750000 l 13.500000 14.750000 l cp s +showpage diff -r 8ef81ff8cb52 -r 4b2af58b0302 gcc.tex --- a/gcc.tex Fri Feb 12 13:10:57 2010 +0900 +++ b/gcc.tex Tue Feb 16 14:04:40 2010 +0900 @@ -10,17 +10,17 @@ たる予備知識としてGCCのプログラム構成について簡単に説明する。 -\section{ソースコードからアセンブラへ} +\section{コンパイル、アセンブル、リンク} GCCはコンパイルだけでなく、出力したアセンブラのアセンブル、リンクまで 行い、最終的に実行ファイルを出力する。このコンパイル、アセンブル、リン クはそれぞれcc1, as, collect2というプログラムが行っており、GCCは実際に はそれらを統括しているだけである。 -言語に関する処理はcc1だけである。ここではこのプログラムがどのようにソ +言語に関する処理はcc1だけである。以降はこのプログラムcc1がどのようにソ ースコードをアセンブラに変換するかを説明する。 -\subsection{cc1} +\section{cc1} GCCではプログラムソースコードをアセンブラに変換する過程で Generic, GIMPLE, RTL という3つの内部表現を用いている。 @@ -69,20 +69,25 @@ をコンパイラが理解し、それぞれのブロック毎にアセンブラへの変換が可能に なる。 +\subsubsection{GimplifyとGIMPLE(SSA)} + フロントエンドではGenericを生成した後、ミドルエンドにデータを渡す前に -GenericをGIMPLEと呼ばれるデータ構造に変換する。GIMPLEはデータ構造とし -ては Genericと同じであるが、一つの枝に4つ以上の子がついてはいけないな -どの制限が付加されている。この制限はミドルエンド以降での解析を容易にし -、また種々の最適化はこのGIMPLEを対象として行われている。 +GenericをGIMPLEと呼ばれるデータ構造に変換する。この処理がGimplifyであ +る。GIMPLEはデータ構造としては Genericと同じであるが、一つの枝に4つ以 +上の子がついてはいけないなどの制限が付加されている。 + +この制限されたデータ構造は一般的には静的単一代入(Static Single +Assignment)と呼ばれており、様々な最適化を簡略化する事を目的として導入 +されている。 \subsection{ミドルエンドとRTL} -GCCは構文木GIMPLEの生成後、このGIMPLEを解析しながらRTLと呼ばれる中間コ -ードを生成する。RTLはアセンブラとほぼ同等の命令列を表現可能であり、ど -のアーキテクチャでも同じように扱われる。また、GIMPLEにも言語の依存はな -いため、ミドルエンドは言語にもアーキテクチャにも依存しない、全ての GCC -コンパイラに共通のルーチンとなっている。 +GCCはフロントエンドにて構文木GIMPLEの生成後、このGIMPLEを解析しながら +RTLと呼ばれる中間コードを生成する。RTLはアセンブラとほぼ同等の命令列を +表現可能であり、どのアーキテクチャでも同じように扱われる。また、GIMPLE +にも言語の依存はないため、ミドルエンドは言語にもアーキテクチャにも依存 +しない、全ての GCC コンパイラに共通のルーチンとなっている。 しかしながらアーキテクチャに依存した形にRTLを作ることは可能であり、特 に最適化に関するRTL生成はアーキテクチャ依存であることが多い。ただしそ @@ -107,6 +112,32 @@ ミドルエンドではGIMPLEを元にこの様なRTLの命令列を作成し、バックエンド に処理を引き渡している。 +\subsubsection{最適化パス} +最適化はGCCの中でももっとも重要な機能の一つといえる。 +様々な最適化の手法がGCCにおいて実装され、実用化されている。 + +GCCでは最適化は2つフェーズに分類される。 + +一つはGIMPLEを対象とした最適化である。 GIMPLEは、アーキテクチャはもち +ろん言語仕様にも依存しないため、どのコンパイラにおいてもこの最適化を適 +用することができる。 + +もう一つはRTLを対象とした最適化である。 RTLのデータ構造自体は言語にも +アーキテクチャにも依存はないが、最適化にはレジスタの数やスタックの操作 +法などに依存する事が多いため、この最適化ではいくつかの制限が入る。 + +ミドルエンドには``pass''という概念があり、最適化処理やGIMPLEの変換、そ +の他諸々の処理は、その処理のメインルーチンをpassに登録することでミドル +エンド上にて実行可能になる。 + +passの登録順序にも意味があり、passの前半部はGIMPLE対象の最適化など、続 +いてGIMPLEからRTLへの変換処理、後半部にはRTLの最適化処理が登録されてい +る。 + +次章で説明するが、本研究では軽量継続の実装にGIMPLE対象の最適化である末 +尾呼び出し最適化を利用している。そのため、CbCの言語実装であるがミドル +エンドの修正も行っている。 + \subsection{バックエンドとMachine Description} @@ -157,29 +188,27 @@ "mul%?\\t%0, %2, %1") \end{lstlisting} - -\subsection{最適化パス} -最適化はGCCの中でももっとも重要な機能の一つといえる。 -様々な最適化の手法がGCCにおいて実装され、実用化されている。 +\subsubsection{mdからソースコードへの変換} -GCCでは最適化は2つフェーズに分類される。 -一つはGIMPLEを対象とした最適化である。 -GIMPLEは、アーキテクチャはもちろん言語仕様にも依存しないため、どのコン -パイラにおいてもこの最適化を適用することができる。 -この最適化はミドルエンドで行われる。 +mdの記述は上記の様に単なる生成規則でしかない。そのため通常のプログラム +であれば実行時にmdデータを読み込みその通りに解釈する方法を取るが、コン +パイラの様な大規模なソフトウェアではそれでは処理に時間がかかりすぎる。 -もう一つはRTLを対象とした最適化である。 -RTLのデータ構造自体は言語にもアーキテクチャにも依存はないが、最適化に -はレジスタの数やスタックの操作法などに依存する事が多いため、この最適化 -ではいくつかの制限が入る。 -こちらはバックエンドでの実装である。 +そのためGCCではこのmdを直接プログラムに変換する手法を取っている。 +例として、\verb|i386.md|(x86アーキテクチャの生成規則である)は +\verb|insn-emit.c|や\verb|insn-output.c|などの、C言語ソースファイルに +変換され、バックエンドやその他のソースファイルと一緒にコンパイルされ、 +cc1プログラムの一部となる。この様子を図\ref{fig:insns}に表した。 -次章で説明するが、本研究では軽量継続の実装にGIMPLE対象の最適化である末 -尾呼び出し最適化を利用している。そのため、CbCの言語実装であるがミドル -エンドの修正も行っている。 +\begin{figure}[htpb] + \begin{center} + \includegraphics[width=.9\textwidth]{figures/insns.eps} + \end{center} + \caption{mdからソースコードを生成、さらにcc1をコンパイルする様子} + \label{fig:insns} +\end{figure} - -\subsection{GCC} +\section{GCC} 以上のようにGCCはフロントエンド、ミドルエンド、バックエンドがそれぞれ の役割を持ち、全体を通して最終的にアセンブラの生成を行う。 diff -r 8ef81ff8cb52 -r 4b2af58b0302 implementation.tex --- a/implementation.tex Fri Feb 12 13:10:57 2010 +0900 +++ b/implementation.tex Tue Feb 16 14:04:40 2010 +0900 @@ -1,8 +1,8 @@ \chapter{GCCにおける実装・改善} \label{chp:impl} -この章では、GCCにおけるCbCコンパイラの実装方法の説明と、 \ref{chp:cbc} -章で洗い出したGCCでの問題点の改善を行う。 +この章では、GCCにおけるCbCコンパイラの実装方法の説明と、\ref{chp:cbc} +章にて示した項目の実装を行う。 実装にはGCCのフロントエンドであるcc1というプログラムを直接変更する。 このcc1はCからアセンブラへ変換を行う純粋なコンパイラとして実行されるプ @@ -23,9 +23,12 @@ る。このcodeは内部でvoid型に変換する。 GCC(及び一般的なコンパイラ)ではコンパイルに必要な全ての要素、変数や式 -、関数、構文などをすべて GIMPLEと呼ばれる構文木に保持している。コードセ -グメントの構文木も関数とほぼ同じものを作成すれば良い。コード -\ref{code:build-code-segment}はその構文木を作成している部分である。 +、関数、構文などをすべて Genericと呼ばれる構文木に保持している。よって +Genericを生成するParserのルーチンにおいて、コードセグメントの構文木を +関数の構文木と同じように作成すれば良い。 + +コード\ref{code:build-code-segment}はその構文木を作成している部分であ +る。 \lstinputlisting [caption=構文木生成(gcc/c-typeck.c),label=code:build-code-segment] @@ -60,14 +63,14 @@ Scheme処理系では仕様上この最適化が必須となっているが、Cはそうではない。 しかしGCCはこの最適化をデフォルトで行っている。 -\subsubsection{軽量継続への摘要} +\subsubsection{軽量継続への適用} tailcallをコードセグメントの呼び出しに適用することで軽量継続が実装でき る。具体的にはソースコード上にコード\ref{code:goto}のような式があった 場合に、これをコード\ref{code:ret-call}と同じように解釈する。 つまり、``goto''が前置する関数呼び出しは、必ず後ろに\verb|return;|がつ -くと解釈するのである。これでtailcallの条件ほぼ満たされる。 +くと解釈するのである。これでtailcallの条件が一部満たされる。 -この構文解析はGCCのgcc/c-parser.c内で行う。 +この構文解析はGCCフロントエンドのgcc/c-parser.c内で行う。 \begin{minipage}[t]{.45\textwidth} \lstinputlisting[caption=goto文の例,label=code:goto] @@ -79,29 +82,37 @@ {sources/ret-call.cbc} \end{minipage} -しかし構文木の変更だけではtailcallが行われるとは限らない。特にスタック -の状態や変数の数、順番によっても最適化はカットされる場合がある。 -そのため最適化を判断する条件式を修正、また構文木から中間コードRTLを生 -成する部分でも修正が必要になる。 +しかし構文木の変更だけではtailcallが行われるとは限らない。引数などが条 +件を満たさないとは最適化はカットされる場合がある。そのため最適化を判断 +する条件式を修正、また構文木から中間コードRTLを生成する部分でも修正が +必要になる。 \paragraph{expand-call}関数は関数を表す構文木からRTLを生成する処理であ -る。この関数内では呼び出される関数のアドレスを取得するコードの生成、ス -タックへの引数をプッシュするコードの生成、引数のプッシュの度に -tailcallが可能かのチェックなどが行われている。 +る(cc1のミドルエンドに当たる)。この関数内では呼び出される関数のアド +レスを取得するコードの生成、スタックへの引数をプッシュするコードの生成 +、引数のプッシュの度に tailcallが可能かのチェックなどが行われている。 -ここでは以下の処理を追加することでtailcallカットの条件判断をパスしている。 +問題となるのはtailcallの可否をチェックする部分である。 +ここでは主に以下の条件でtailcallが不可能だと判定される。 \begin{itemize} - \item スタックのサイズをごまかす + \item 呼出先関数の全引数が占めるスタックサイズが、呼出元関数のそれよ + り大きい場合 - tailcallは呼び出し元の全引数サイズが呼び出し先のそれより小さい場合 - には実行できない。そのため呼び出し元のコードセグメント全ての引数に - もちいるスタックサイズを大きな値でごまかす。 - \item 並列代入 + \item 引数を順にスタックに格納すると、書き込み前のデータが上書きされ + てしまう場合 +\end{itemize} +そのため、この条件を回避するための処理が必要となる。 - \ref{sec:cbc-problem}で説明したような並列代入の必要な関数呼び出し - を行った場合はtailcallは実行されない。そのためここで並列代入が必要 - になる。 -\end{itemize} +スタックサイズの問題に関しては、呼出元関数のスタックサイズをごまかす方 +法をとった。全てのコードセグメントは一定の(今回は4096)バイト数のスタ +ックサイズを持つと決めうちすることでこの条件は回避できる。 + +引数を書き込む順番の問題は、書き込む順序を工夫することで回避した。 +書き込んでも次に読み込む引数に影響を与えない引数から順に書き込むように +実行順序を操作する。 + +この二つの処理はどちらもミドルエンドの\verb|expand_call|関数内で行われ +ている。 上記処理の追加により軽量継続が実装された。 継続の際にコードセグメントに渡す引数は関数と同じようにスタック上に格納 @@ -119,66 +130,81 @@ \caption{継続制御と関数呼び出しでのスタックの違い} \end{figure} -しかし並列代入の処理は構造体のようにオーバラップする引数に対しては対応 -しておらず、プログラムによっては引数がちゃんと渡されないなどのバグが生 -じていた。 - +しかし、引数の書き込み順序を変更するだけでは、複数の引数の格納位置が互 +いに影響し合うような場合には正しいコードを生成することができないでいた +。 -\section{問題点の改善} -ここから\ref{sec:cbc-problem}節で紹介した問題点について、本研究での改 -善点を説明する。 - +\section{本研究における実装} +ここから、\ref{sec:cbc-problem}節で示した項目について、それぞれ実装方 +法を説明する。 \subsection{並列代入}\label{sec:impl-parallel} -\ref{sec:gcc-problems}節で説明した様に、コードセグメントの受け取 -った引数と継続の際に渡す引数の順序が変わる場合等に並列代入が必要になる。 -過去の実装ではこの並列代入を、\verb|expand_call|という構文木から RTLを -生成する処理の部分で行っていた。 +前節で説明した様に、コードセグメントへの継続の際の引数書き込みが、別の +引数の読み込みに影響を与えるような場合に正しく引数を渡せないという問題 +がある。 + +前の実装の際には、ミドルエンドの\verb|expand_call|関数という関数呼出の +RTLを生成するルーチンにおいて、引数格納の順序を工夫することでこの問題 +を一部回避していた。 + +しかし完全に、任意の引数の組み合わせでも引数渡しを可能にするにはこの処 +理だけでは足りず、``並列代入''を導入する必要がある。 + +\subsubsection{並列代入とは} -しかし実際にはGCCは元より並列代入を実装しているため、独自の実装は必要 -としない。また、この独自の実装にも問題があった。 -そのため独自の実装は廃止し、GCCの機能を利用することにする。 +複数の変数に同時に値を代入する事を並列代入(Parallel Assignment)という。 +例えばPythonでは\lstinline[language=Python]|a, b = 0, 1|として並列代入 +を行える。この場合は単純に二つの代入を順に実行したものと結果は同じだが +、\lstinline[language=Python]|a, b = b, a|という場合には結果は同じには +ならない。順に\lstinline[language=Python]|a=b, b=a|と分割すると元の +\verb|a|の値が失われてしまうからである。処理を正しく行うには、一部の変 +数の値を一時変数に保持するなどの処理が必要である。 -コード\ref{code:parallel-example2}は並列代入の必要な軽量継続の例である。 +CbCの継続制御ではコード\ref{code:parallel-example2}の場合などに並列代 +入が必要になる。これは継続元の引数の格納場所と継続先のそれが互いに逆の +位置にあるからである。 + \lstinputlisting [caption=並列代入の必要な軽量継続の例,label=code:parallel-example2] {sources/parallel-example.cbc} -継続の引数は現在の引数と同じメモリに格納されるため、引数\verb|a|は -\verb|b|の位置に、引数\verb|b|は\verb|a|の位置に代入されることになる。 -この場合に並列代入を考慮せず、順に代入すると -\begin{verbatim} - a = b; - b = a; -\end{verbatim} -となり、両方が同じ値になってしまう。 -ただしこの例は極端に簡略化した例であり、この程度であればtailcallに問題 -はない。しかしより複雑な並列代入では同じ問題が現れる。特に、引数に含ま -れるコードセグメントポインタへ間接継続する場合には、ほぼ確実に失敗する。 +\subsubsection{一時変数への退避} -この問題の回避策として単純にコード\ref{code:avoiding-parallel}の様に変 -数の値を一時変数に退避することが考えられる。 +そのため、このような場合に並列代入を行うことでこの問題が解消できる。し +かし実際にはGCCは元より並列代入を実装しているため、独自の並列代入の実 +装は必要としない。余分な一時変数への確保は最適化により省かれるが、この +最適化を利用して、継続制御の引数渡しを並列代入にする。 + +この実装では一時変数に全ての引数を退避する手法をとった。具体的には、コ +ード \ref{code:avoiding-parallel}の様に、一旦全ての引数を局所変数に代 +入し、それらの局所変数を継続の引数とする。 \lstinputlisting [caption=引数の退避,label=code:avoiding-parallel] {sources/avoiding-parallel.cbc} +この処理はもちろんユーザがソースコードで行うのではなく、GCCが自動で判 +定してそのような構文木を生成するべきである。 + こうすることで引数が一時変数に確保され、その後そこからコピーする形で所 -定のメモリ位置に戻されるため問題が回避できる。今回の並列代入の改善では -この手法を用いる。 +定のメモリ位置に戻されるため問題が回避できる。 -\subsubsection{問題点と最適化の期待} + +\subsubsection{最適化による並列代入} この手法でどのように引数を入れ替えても正しく代入可能になる。ただし、一 時変数の使用は処理速度に問題がある。特にレジスタの少ないアーキテクチャ では一時変数の確保にメモリ上のスタックを用いるため、余計なメモリアクセ スや冗長な命令が増えてしまう。このため、この手法を実践したコードではそ うでないコードに比べて若干の速度低下が見込まれる。 -その代わり、この速度低下はGCCのもつ最適化機構で回避され得るものである。 -GCCでは中間コード生成後、必要のない一時変数へのコピーなどは最適化によ -りカットされる。そのため、最適化を有効にした場合はこの処理速度の低下は -起きないと考えられる。この影響に関しては\ref{chp:eval}章にて検証する。 +その代わり、この余分な一時変数への退避の生成はGCCの最適化により最小限 +に抑えられるものである。これにより、全ての引数を一時変数にとるという命 +令列は最小限の一時変数を使うことで並列代入と同じ効果が得られると考えら +れる。 + +そのため、最適化を有効にした場合はこの処理速度の低下は起きないと考えら +れる。この影響に関しては\ref{chp:eval}章にて検証する。 \subsubsection{一時変数への退避の実装} @@ -202,11 +228,13 @@ ここでは関数ポインタも引数と同じように扱い、一時変数に退避する。 実際のプログラムはコード\ref{code:replace-args}の様になる。 -この関数\verb|cbc_replace_arguments|は関数呼び出し構文木を引数として受 -け取り、上記の処理を行う。引数として渡される\verb|tree call|がその構文 -木である。 \verb|build_decl|は名無し一時変数の宣言、 -\verb|build_modify_expr|は一時変数への代入を行う構文木の生成をしている -。 +この関数は継続制御の構文木を生成した際に呼び出されるフロントエンドの関 +数である。 + +\verb|cbc_replace_arguments|は関数呼び出し構文木を引数として受け取り、 +上記の処理を行う。引数として渡される\verb|tree call|がその構文木である +。 \verb|build_decl|は名無し一時変数の宣言、 \verb|build_modify_expr| +は一時変数への代入を行う構文木の生成をしている。 \lstinputlisting [caption=上記の処理を行う関数,label=code:replace-args] @@ -228,19 +256,24 @@ 渡された\verb|__return|の値は、コードセグメント側からは他のコードセグ メントと区別する必要はない。 -この環境付き継続にもちいる\verb|__return|擬似変数の実装には様々な方法 -が考えられるが、今回の実装には内部関数をもちいることにした。内部関数は -GCCによるCの拡張機能である\cite{bib:nestedfunc}。 +この環境付き継続に用いる\verb|__return|擬似変数の実装には様々な方法が +考えられる。例えば\ref{ssec:gotowithenv}節で紹介した +\verb|setjmp/longjmp|を使った実装も可能である。 +しかしこの方法は特に\verb|longjmp|のオーバヘッドが大きく、また実行環境 +によっては\verb|setjmp/longjmp|そのものがないことも考えられる。ポータ +ビリティを考えるとGCCの機能で実装することが望ましい。 + +今回の実装には内部関数をもちいることにした。内部関数は GCCによるCの拡 +張機能である\cite{bib:nestedfunc}。 \subsubsection{GCCにより追加されるコード} 環境付き継続で使う\verb|__return|変数は特殊なコードセグメントへのポイ ンタとなる必要がある。このコードセグメントはユーザでは定義せず、その変 数を参照した関数の返り値型を基にコンパイラが自動で生成する事が望ましい。 -具体的には、コード\ref{code:cbcreturn2}の関数funcB( -\pageref{code:cbcreturn}ページのコード\ref{code:cbcreturn}と同じ)をコ -ンパイラは次のコード\ref{code:nestedcode}の様に解釈し、内部コードセグ -メントを自動生成する。 +具体的には、コード\ref{code:cbcreturn2}の関数funcBをコンパイラは次のコ +ード\ref{code:nestedcode}の様に解釈し、内部コードセグメントを自動生成 +する。 \begin{minipage}[t]{.33\textwidth} \lstinputlisting @@ -300,17 +333,33 @@ %が割愛する。処理内容は GCCが通常行う関数やif文の構文木生成とほぼ同じで %ある。 +ここでは実際に出力されるアセンブラをコード\ref{code:nest-asm}に示す。 + +\lstinputlisting + [caption=\ref{code:nestedcode}のfuncBで出力されるアセンブラ(x86), + label=code:nest-asm,numbers=left,frame=Ltb,multicols=2] + {sources/nestedcode.asm} + +この出力によると、\verb|funcB|はcsに継続(20行目)する前にいくつかのレ +ジスタをスタック領域に確保している。これは内部関数が呼ばれた際にこの +\verb|funcB|の環境を再現するためのものである。内部関数は +\verb|_segment.1243|として表されており、\verb|jmp *%eax|をもって +\verb|.L3|にジャンプし、最終的に\verb|.L5|のコード内で関数 +\verb|funcB|からリターンする。 + 以上でコード\ref{code:nestedcode}に示すような処理がコンパイル時に自動 で追加され、環境付き継続の使用が可能になった。 + + \subsubsection{関数からの継続} ここで軽量継続の実装にtailcallを用いたことの弊害がでてくる。 \ref{sec:impl-goto}節の実装では関数からの継続は考慮していない。通常の -継続の際は現コードセグメントのもつ引数は保持しないため、直接継続しよう -とすると、その関数やその関数を呼び出した関数の持つ環境(スタック)を破 -壊してしまう(\pageref{fig:gotostack} -ページ、図\ref{fig:gotostack})。 +継続の際は現コードセグメントのもつ引数は保持しないため、その環境やスタ +ック領域は破壊される。同様に関数から直接継続しようとすると、その関数や +その関数を呼び出した関数の持つ環境(スタック)を破壊してしまうことにな +る(\pageref{fig:gotostack} ページ、図\ref{fig:gotostack})。 この問題を回避するため、関数からの継続に限り、スタックを拡張し関数の環 境を保持する手法をとった。 @@ -325,10 +374,12 @@ 軽量継続の実装にtailcallを用いたことは\ref{sec:impl-goto}で説明した。 しかし、実際にはtailcallが行われないアーキテクチャがいくつか存在する。 PowerPCもその一つで、このアーキテクチャでは間接呼び出しの場合は -tailcallが行われない。このためこれまでPowerPCでの間接継続はコンパイル -エラーで実行できなかった。 +tailcallが行われない。 +これはtailcallを表すRTLをアセンブラに変換するmdが定義されていないため +である。このため、これまでPowerPCでの間接継続は変換規則がみつからない +というコンパイルエラーで実行できなかった。 -間接呼び出しのtailcallは専用のRTL表現がある。 +間接呼び出しのtailcallには専用のRTL表現がある。 PowerPCで問題となるのは、このRTLからアセンブラへの変換が定義されていな いことである。この問題に対処するため、PowerPCアーキテクチャにおけるmd を記述する。 @@ -338,7 +389,7 @@ GCCでは関数呼び出しは全て一つのRTLに置き換えられる。 これはtailcallが行われた場合も、呼び出し関数がポインタである場合も同様 である。しかしtailcallかポインタかによってRTLの形が異なるため、 -PowerPCではこの両方の場合(つまり間接呼び出しのtailcall)のRTLの形が +PowerPCではこの両方の場合(つまり間接呼び出しのtailcall)のRTLの規則が mdで定義されていない。そのため、これはエラーになる。 この問題となっているRTLを次のコード\ref{code:rtl-indirecttailcall}に @@ -352,23 +403,28 @@ このRTL内の\verb|(mem:SI (reg/f:SI 129)|が関数のポインタを示すレジスタ である。間接呼び出しでない場合はこれが \verb|(mem:SI (symbol_ref:SI (``cs0'')|となり、コードセグメントの関数 -を直接表している。 +を直接表している。また、下に続く\verb|expr_list|は引数の列である。この +RTLの表す継続制御の引数がこのS 式で表されている。 + +PowerPCをこの間接継続に対応させるにはこのRTLに対応するmdを定義する必要 +がある。 + \subsubsection{間接継続のmd} PowerPCにおいて間接継続を実装するには、上記のRTLを変換するmdを記述すれ -ば良い。このRTLに近い形が間接でないtailcallのmdとして使われているはず -なのでそれを使用する。 次のコード\ref{code:md-example}が新しく記述され -たmdである。 +ば良い。このRTLに近い形が間接でないtailcallのmdとして使われているので +それを使用する。 次のコード\ref{code:md-example}が新しく記述されたmd +である。 \lstinputlisting [caption=\ref{code:rtl-indirecttailcall}の変換規則, label=code:md-for-indirect, language=Lisp] {sources/md-for-indirect.md} -このコードの3番目の要素はコード\ref{code:rtl-indirecttailcall}とよく似 -ていることがわかる。これは変換対象としてこの型に合うものに制限するため -である。 +このコードの3番目の要素はコード\ref{code:rtl-indirecttailcall}のRTLと +よく似ていることがわかる。これは変換対象としてこの型に合うものに制限す +るためである。 ここでは出力するアセンブラとして\verb|b%T0|が使われている。 \verb|%T0|はレジスタ名に置き換えられる部分である。このアセンブラは最終 @@ -453,10 +509,19 @@ これらの問題に暫定的に対処するため、Pythonを用いてプロトタイプの自動生 成を行うスクリプトを作成した。このスクリプトでは関数の定義部を正規表現 -で検索し、マッチする部分を変換して関数宣言として出力する。 -全コードは付録\ref{apx:make-prototype}に掲載する。 +で検索し、マッチする部分を変換して関数宣言として出力する。この出力例と +して、\pageref{code:factorial}ページにある階乗計算を行うコード +\ref{code:factorial}をスクリプトに通した結果を、コード +\ref{code:factorial-header}に示す。 -このプトロタイプ自動生成により、これまでに作られたCbCのプログラムとの -互換性が確保できた。 +\lstinputlisting + [caption=プロトタイプ自動生成スクリプトの出力例,label=code:factorial-header] + {sources/factorial.h} + +このスクリプトの全コードは付録\ref{apx:make-prototype}に掲載する。 + +このプトロタイプ自動生成により、CbCプログラムのヘッダファイルを自動生 +成することができる。プログラムではこのヘッダファイルをインクルードする +ことで、micro-cコンパイラとの互換性を確保することができる。 diff -r 8ef81ff8cb52 -r 4b2af58b0302 introduction.tex --- a/introduction.tex Fri Feb 12 13:10:57 2010 +0900 +++ b/introduction.tex Tue Feb 16 14:04:40 2010 +0900 @@ -58,7 +58,7 @@ 我々はこれらの問題に取り組むため、Continuation based C(以下CbC)とい う言語を提案している。Continuationとはプログラムの次の実行処理を表現す -る制御構造で、継続とも呼ばれている\cite{;}。CbCではCからサブルーチンや +る制御構造で、継続とも呼ばれている。CbCではCからサブルーチンや ループ制御を除き、代わりに継続をベースとした実行制御を行う。この特徴か ら、CbCはCの下位言語と考ることができ、ハードウェアの記述や記述したプロ グラムの検証などを目的として設計されている。 @@ -76,8 +76,8 @@ され、継続処理の実装が行われた。 %TODO: taskmanager -本論文ではGCCベースのコンパイラに残るCbCの機能の実装を行い、実用的な -CbCプログラムの動作を目指す。 +本論文ではGCCベースのコンパイラにおいて残るCbCの機能の実装を行い、実 +用的な CbCプログラムの動作を目指す。 %本論文ではGCCベースのCbCコンパイラの問題の洗い出しとその問題の改善を行 %い、実用レベルのCbCプログラムの動作を目指す。 @@ -102,8 +102,8 @@ の構造について、簡単に説明する。 \ref{chp:impl}章は実際の実装方法、改善の手法を説明し、これらの結果の評 -価を\ref{chp:eval}で行う。 +価を\ref{chp:eval}章で行う。 -最後に、本研究での成果と今後の課題を\ref{chp:conc}で述べ、本論文のまと -めとする。 +最後に、本研究での成果と今後の課題を\ref{chp:conc}章で述べ、本論文のま +とめとする。 diff -r 8ef81ff8cb52 -r 4b2af58b0302 master_paper.tex --- a/master_paper.tex Fri Feb 12 13:10:57 2010 +0900 +++ b/master_paper.tex Tue Feb 16 14:04:40 2010 +0900 @@ -1,5 +1,6 @@ \documentclass[a4j,12pt]{jreport} \usepackage{master_paper} +\usepackage{multicol} \usepackage{newcent} %% フォントテーマを変更 \usepackage{ascmac} %% itembox \usepackage[dvipdfm]{graphicx} diff -r 8ef81ff8cb52 -r 4b2af58b0302 sources/factorial.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sources/factorial.h Tue Feb 16 14:04:40 2010 +0900 @@ -0,0 +1,12 @@ +/* defined in file factorial.cbc at offset 0 */ +code print_factorial (int prod); + +/* defined in file factorial.cbc at offset 83 */ +code factorial0 (int prod, int x); + +/* defined in file factorial.cbc at offset 218 */ +code factorial (int x); + +/* defined in file factorial.cbc at offset 272 */ +int main (int argc, char **argv); +