Mercurial > hg > Papers > 2014 > masakoha-thesis > final
changeset 50:22740fb4d522
write mmap
author | masa |
---|---|
date | Fri, 21 Feb 2014 00:26:56 +0900 |
parents | e8dd2f96d046 |
children | 06f75bca7a70 |
files | paper/chapter4.tex paper/fig/blockread.graffle paper/fig/mapreduce.bb paper/fig/mapreduce.pdf paper/thesis-paper.pdf |
diffstat | 5 files changed, 1820 insertions(+), 50 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/chapter4.tex Thu Feb 20 17:22:38 2014 +0900 +++ b/paper/chapter4.tex Fri Feb 21 00:26:56 2014 +0900 @@ -3,12 +3,55 @@ \section{map reduce} +\begin{figure}[htbp] +\begin{center} +\includegraphics[width=1.0\textwidth]{fig/mapreduce.pdf} +\end{center} +\caption{map reduce image} +\label{fig:mmap} \end{figure} + \section{mmap での実装の問題点} -・mmap の仕様 +mmap とは、sys/mman.h に含まれている関数で、ファイルの読み込み等に使用される関数である。 +ファイルディスクリプタで指定したファイルを offset から len バイトの範囲を読み込む。 +この時にアドレス addr からメモリを確保するようにする。 +prot には、PROT\_READによるページの読み込み、PROT\_WRITEによるページへの書き込みなどを指定でき、 +flags にはメモリ確保する際のオプションを指定することができる。\ref{table:mmap} + +\begin{tiny} + \begin{table}[ht] + \begin{center} + \label{table:mmap} + \small + void * mmap(void *addr, size\_t len, int prot, int flags, int fd, off\_t offset); - mmap の細かい話をここで書く + \begin{tabular}[t]{c|l} + \hline + void *addr & メモリに確保するときの先頭のアドレス\\ + \hline + size\_t len & メモリを確保するサイズ\\ + \hline + int prot & ファイルモード選択\\ + \hline + int flags & 確保するときのオプション指定\\ + \hline + int fd & 読み込むファイルのファイルディスクリプタ\\ + \hline + off\_t offset & ファイル読み込みの先頭からの開始位置 \\ + \hline + \end{tabular} + \caption{mmap 関数の概要} + \end{center} + \end{table} +\end{tiny} -mmap でファイルを読み込むタイミングは、mmap 関数を使用したときではない。mmap した領域に対して何らかのアクセスをしたときに初めてファイルが読み込まれる。 +mmap でファイルを読み込むタイミングは、mmap 関数が呼ばれたときではなく、mmap した領域に対して何らかのアクセスをしたときに初めてファイルが読み込まれる。 + +図\ref{fig:mmap}では、読み込んだファイルを分割して、それらの領域に何らかの処理を加えるときの図である。これらの処理を Task と呼ぶ。 +Task 1 という1個目の Task が実行される。実行されたときに初めてそれらの領域にファイルが読み込まれ、その後何らかの処理が行われ、そして Task 2 も同様に読み込みを行ってから処理が行われる。 +これら Task は並列に実行されるべきであるが、ファイル読み込みの I/O 部分がネックとなり、本来並列実行される Task が読み込み待ちを起こしてしまう恐れがある。 +その上、読み込み方法が OS 依存となるために環境によって左右されやすく、プログラムの書き手が読み込みに関して制御しにくい。 + +それらを解決するためには、ファイル読み込みと Task を分離し、ファイルの読み込みも制御しやすくでき、なおかつ高速で動くのではないかと考えた。 \begin{figure}[htbp] \begin{center} @@ -17,24 +60,6 @@ \caption{mmap のイメージ} \label{fig:mmap} \end{figure} -mmap は kernel 部分での実装によるものなので、OS に依存されてしまう。 -・ mmap は kernel 部分の実装によるものなので、OS によってかわってしまう。 - -・ mmap が呼び出されているときにファイルを読み込むわけではない。仮想メモリに格納されているだけ。 - -・ mmap された領域に対してアクセスされたときに初めて実メモリに呼び出される。 - -図\ref{fig:mmap} - - -・ OS によってうごきが変わってしまうので、自分自身で制御できない - -・ 並列処理でファイル読み込みを行う Task を扱うと、1つ1つの Task が[読み込む → Task が走る] - -・ I/O 読み込みはネックになるが、そのネックが Task 1つ1つにふりかかる。 - -・ I/O と Task を完全に分けたほうがいいのでは。と考えた。 - \section{Broked Read の設計と実装} ・ I/O を mmap ではなく、pread 関数で実装した
--- a/paper/fig/blockread.graffle Thu Feb 20 17:22:38 2014 +0900 +++ b/paper/fig/blockread.graffle Fri Feb 21 00:26:56 2014 +0900 @@ -26,9 +26,9 @@ <key>MasterSheets</key> <array/> <key>ModificationDate</key> - <string>2014-02-19 08:14:22 +0000</string> + <string>2014-02-20 14:36:27 +0000</string> <key>Modifier</key> - <string>MasaKoha</string> + <string>masataka kohagura</string> <key>NotesVisible</key> <string>NO</string> <key>OriginVisible</key> @@ -55,7 +55,7 @@ <key>NSPaperSize</key> <array> <string>size</string> - <string>{595.00000476837158, 842}</string> + <string>{595, 842}</string> </array> <key>NSPrintReverseOrientation</key> <array> @@ -85,7 +85,7 @@ <key>BackgroundGraphic</key> <dict> <key>Bounds</key> - <string>{{0, 0}, {1118.0000095367432, 783}}</string> + <string>{{0, 0}, {1118, 783}}</string> <key>Class</key> <string>SolidGraphic</string> <key>ID</key> @@ -1382,7 +1382,7 @@ <key>BackgroundGraphic</key> <dict> <key>Bounds</key> - <string>{{0, 0}, {559.00000476837158, 783}}</string> + <string>{{0, 0}, {559, 783}}</string> <key>Class</key> <string>SolidGraphic</string> <key>ID</key> @@ -2222,7 +2222,7 @@ <key>BackgroundGraphic</key> <dict> <key>Bounds</key> - <string>{{0, 0}, {559.00000476837158, 783}}</string> + <string>{{0, 0}, {559, 783}}</string> <key>Class</key> <string>SolidGraphic</string> <key>ID</key> @@ -3030,7 +3030,7 @@ <key>BackgroundGraphic</key> <dict> <key>Bounds</key> - <string>{{0, 0}, {559.00000476837158, 783}}</string> + <string>{{0, 0}, {559, 783}}</string> <key>Class</key> <string>SolidGraphic</string> <key>ID</key> @@ -3726,7 +3726,7 @@ <key>BackgroundGraphic</key> <dict> <key>Bounds</key> - <string>{{0, 0}, {559.00000476837158, 783}}</string> + <string>{{0, 0}, {559, 783}}</string> <key>Class</key> <string>SolidGraphic</string> <key>ID</key> @@ -4316,7 +4316,7 @@ <key>BackgroundGraphic</key> <dict> <key>Bounds</key> - <string>{{0, 0}, {559.00000476837158, 783}}</string> + <string>{{0, 0}, {559, 783}}</string> <key>Class</key> <string>SolidGraphic</string> <key>ID</key> @@ -4876,7 +4876,7 @@ <key>BackgroundGraphic</key> <dict> <key>Bounds</key> - <string>{{0, 0}, {559.00000476837158, 783}}</string> + <string>{{0, 0}, {559, 783}}</string> <key>Class</key> <string>SolidGraphic</string> <key>ID</key> @@ -7387,7 +7387,7 @@ <key>BackgroundGraphic</key> <dict> <key>Bounds</key> - <string>{{0, 0}, {1118.0000095367432, 783}}</string> + <string>{{0, 0}, {1118, 783}}</string> <key>Class</key> <string>SolidGraphic</string> <key>ID</key> @@ -9927,7 +9927,7 @@ <key>BackgroundGraphic</key> <dict> <key>Bounds</key> - <string>{{0, 0}, {559.00000476837158, 783}}</string> + <string>{{0, 0}, {559, 783}}</string> <key>Class</key> <string>SolidGraphic</string> <key>ID</key> @@ -19168,7 +19168,7 @@ <key>BackgroundGraphic</key> <dict> <key>Bounds</key> - <string>{{0, 0}, {559.00000476837158, 783}}</string> + <string>{{0, 0}, {559, 783}}</string> <key>Class</key> <string>SolidGraphic</string> <key>ID</key> @@ -21213,7 +21213,7 @@ <key>BackgroundGraphic</key> <dict> <key>Bounds</key> - <string>{{0, 0}, {559.00000476837158, 783}}</string> + <string>{{0, 0}, {559, 783}}</string> <key>Class</key> <string>SolidGraphic</string> <key>ID</key> @@ -23926,7 +23926,7 @@ <key>BackgroundGraphic</key> <dict> <key>Bounds</key> - <string>{{0, 0}, {559.00000476837158, 783}}</string> + <string>{{0, 0}, {559, 783}}</string> <key>Class</key> <string>SolidGraphic</string> <key>ID</key> @@ -26341,7 +26341,7 @@ <key>BackgroundGraphic</key> <dict> <key>Bounds</key> - <string>{{0, 0}, {559.00000476837158, 783}}</string> + <string>{{0, 0}, {559, 783}}</string> <key>Class</key> <string>SolidGraphic</string> <key>ID</key> @@ -28168,7 +28168,7 @@ <key>BackgroundGraphic</key> <dict> <key>Bounds</key> - <string>{{0, 0}, {559.00000476837158, 783}}</string> + <string>{{0, 0}, {559, 783}}</string> <key>Class</key> <string>SolidGraphic</string> <key>ID</key> @@ -28303,8 +28303,8 @@ <integer>553</integer> <key>Points</key> <array> - <string>{132.36103293347102, 232.07150599490603}</string> - <string>{132.36106557516933, 248.50654822205897}</string> + <string>{132.36103293869587, 232.07150599490603}</string> + <string>{132.36106559184367, 248.50654822205897}</string> </array> <key>Style</key> <dict> @@ -28340,8 +28340,8 @@ <integer>552</integer> <key>Points</key> <array> - <string>{157.72335149550153, 232.07150597754608}</string> - <string>{157.7233836900713, 248.5065476340697}</string> + <string>{157.72335141891162, 232.07150597754608}</string> + <string>{157.72338344564685, 248.5065476340697}</string> </array> <key>Style</key> <dict> @@ -28377,8 +28377,8 @@ <integer>551</integer> <key>Points</key> <array> - <string>{183.08567166474919, 232.0715095184045}</string> - <string>{183.08570434789129, 248.50654826977546}</string> + <string>{183.0856716444957, 232.0715095184045}</string> + <string>{183.08570428325555, 248.50654826977546}</string> </array> <key>Style</key> <dict> @@ -30346,7 +30346,7 @@ <key>BackgroundGraphic</key> <dict> <key>Bounds</key> - <string>{{0, 0}, {559.00000476837158, 783}}</string> + <string>{{0, 0}, {559, 783}}</string> <key>Class</key> <string>SolidGraphic</string> <key>ID</key> @@ -31665,7 +31665,7 @@ <key>BackgroundGraphic</key> <dict> <key>Bounds</key> - <string>{{0, 0}, {1118.0000095367432, 783}}</string> + <string>{{0, 0}, {1118, 783}}</string> <key>Class</key> <string>SolidGraphic</string> <key>ID</key> @@ -33330,7 +33330,7 @@ <key>BackgroundGraphic</key> <dict> <key>Bounds</key> - <string>{{0, 0}, {1118.0000095367432, 783}}</string> + <string>{{0, 0}, {1118, 783}}</string> <key>Class</key> <string>SolidGraphic</string> <key>ID</key> @@ -35044,6 +35044,1741 @@ <key>VPages</key> <integer>1</integer> </dict> + <dict> + <key>ActiveLayerIndex</key> + <integer>0</integer> + <key>AutoAdjust</key> + <true/> + <key>BackgroundGraphic</key> + <dict> + <key>Bounds</key> + <string>{{0, 0}, {559, 783}}</string> + <key>Class</key> + <string>SolidGraphic</string> + <key>ID</key> + <integer>2</integer> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + </dict> + <key>BaseZoom</key> + <integer>0</integer> + <key>CanvasOrigin</key> + <string>{0, 0}</string> + <key>ColumnAlign</key> + <integer>1</integer> + <key>ColumnSpacing</key> + <real>36</real> + <key>DisplayScale</key> + <string>1 0/72 in = 1.0000 in</string> + <key>GraphicsList</key> + <array> + <dict> + <key>Bounds</key> + <string>{{242.41607280367006, 548.55553539778384}, {81.463137313527341, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>96</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 DS \'d7 task num}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{242.41604461219262, 508.80553045155182}, {102.62709463610148, 28}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>95</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural + +\f0\fs24 \cf0 [src]\ +DS;}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{242.41606086337939, 469.05552994814781}, {102.62709463610148, 28}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>94</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural + +\f0\fs24 \cf0 [reduce]\ +task num;}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{242.41606086337939, 401.30553941599771}, {102.62709463610148, 56}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>93</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Align</key> + <integer>0</integer> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural + +\f0\fs24 \cf0 [map]\ +task num;\ +inData = fileblocks;\ +outData = DS;}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{209.07869938665962, 375.55554892300592}, {169.30184092209089, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>91</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 MapReduce(map,reduce,src)}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{388.43354813091935, 206.18577968069192}, {54, 27.310923056518021}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Color</key> + <dict> + <key>b</key> + <string>1</string> + <key>g</key> + <string>1</string> + <key>r</key> + <string>1</string> + </dict> + </dict> + <key>ID</key> + <integer>86</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Color</key> + <dict> + <key>b</key> + <string>1</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>CornerRadius</key> + <real>9</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf1 reduce}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{254.88515692570439, 289.71085932252026}, {35.433071398293073, 27.310923056518021}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Color</key> + <dict> + <key>b</key> + <string>1</string> + <key>g</key> + <string>1</string> + <key>r</key> + <string>1</string> + </dict> + </dict> + <key>ID</key> + <integer>4</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Color</key> + <dict> + <key>b</key> + <string>1</string> + <key>g</key> + <string>0</string> + <key>r</key> + <string>0</string> + </dict> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>CornerRadius</key> + <real>9</real> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf1 map}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{99.999999041864925, 336.42051868510498}, {176.17548225077354, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>84</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 DS : Data Segment}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{329.24834526539792, 117.67127216271368}, {81.463137313527341, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>83</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 wait for DS}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{243.88976493164088, 66.259255664279038}, {81.463137313527341, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>82</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 spawn DS}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{165.26627324696224, 59.259258212703131}, {81.463137313527341, 28}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>81</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 wait for\ +file read}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{209.07869991629107, 319.72115565429419}, {67.096776257692653, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>80</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 NDRange}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{117.21653282182854, 319.72115442771599}, {67.096776257692653, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>77</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 Cerium}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>AllowToConnect</key> + <false/> + <key>Class</key> + <string>LineGraphic</string> + <key>ID</key> + <integer>74</integer> + <key>Points</key> + <array> + <string>{341.86584513143976, 253.66476934783077}</string> + <string>{380.3066578611747, 211.2167148771924}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>Arrow</string> + </dict> + </dict> + </dict> + <dict> + <key>AllowToConnect</key> + <false/> + <key>Class</key> + <string>LineGraphic</string> + <key>ID</key> + <integer>73</integer> + <key>Points</key> + <array> + <string>{341.86583188370969, 233.49670309070993}</string> + <string>{368.12178561394489, 206.18578003419194}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>Arrow</string> + </dict> + </dict> + </dict> + <dict> + <key>AllowToConnect</key> + <false/> + <key>Class</key> + <string>LineGraphic</string> + <key>ID</key> + <integer>72</integer> + <key>Points</key> + <array> + <string>{341.86583188370969, 160.38746290864728}</string> + <string>{368.1217844974974, 188.34200803011507}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>Arrow</string> + </dict> + </dict> + </dict> + <dict> + <key>AllowToConnect</key> + <false/> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>62</integer> + </dict> + <key>ID</key> + <integer>70</integer> + <key>Points</key> + <array> + <string>{341.86584513143976, 143.16057298068878}</string> + <string>{378.50651797510295, 184.1767507589588}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>Arrow</string> + </dict> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>52</integer> + </dict> + <key>ID</key> + <integer>69</integer> + <key>Points</key> + <array> + <string>{287.39141517937776, 261.12084931031353}</string> + <string>{263.5079591670966, 269.06794244140059}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>FilledArrow</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>60</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>51</integer> + </dict> + <key>ID</key> + <integer>68</integer> + <key>Points</key> + <array> + <string>{287.36668611439308, 234.2798402329239}</string> + <string>{267.64789226450119, 235.4249656846188}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>FilledArrow</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>59</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>50</integer> + </dict> + <key>ID</key> + <integer>67</integer> + <key>Points</key> + <array> + <string>{287.36666394281065, 160.19905736749354}</string> + <string>{267.6479089388468, 159.05394838136525}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>FilledArrow</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>55</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>28</integer> + </dict> + <key>ID</key> + <integer>66</integer> + <key>Points</key> + <array> + <string>{287.39140211169376, 133.35804581130162}</string> + <string>{263.50798251259681, 125.41097989648119}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>FilledArrow</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>54</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>52</integer> + </dict> + <key>ID</key> + <integer>65</integer> + <key>Points</key> + <array> + <string>{181.63598451295803, 262.47277946515339}</string> + <string>{191.80789890658932, 253.29921570905844}</string> + <string>{212.35765330484233, 253.29921570905844}</string> + <string>{225.76468571828983, 264.56145477864015}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>Arrow</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>47</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>51</integer> + </dict> + <key>ID</key> + <integer>64</integer> + <key>Points</key> + <array> + <string>{180.05816762613657, 222.68085587893208}</string> + <string>{191.80789376886767, 210.89872323676454}</string> + <string>{212.35764816712063, 210.89872323676454}</string> + <string>{226.85845272979398, 224.44266155136057}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>Arrow</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>46</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>ID</key> + <integer>63</integer> + <key>Points</key> + <array> + <string>{180.27231672314932, 143.53164879550511}</string> + <string>{191.80790294741374, 132.85200477392701}</string> + <string>{212.35765734566669, 132.85200477392701}</string> + <string>{225.81004116434357, 145.30621858185688}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>Arrow</string> + </dict> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>28</integer> + </dict> + <key>ID</key> + <integer>35</integer> + <key>Points</key> + <array> + <string>{181.23069342851116, 103.37704719929881}</string> + <string>{192.76627965277558, 92.697403177720687}</string> + <string>{213.31603405102859, 92.697403177720687}</string> + <string>{226.76841786970544, 105.15161698565052}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>Arrow</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>1</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{363.17573184196499, 183.26218970144342}, {54, 27.954545768578228}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>62</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 print}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{287.86584054216667, 242.33088234514204}, {54, 19.295995712280273}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>60</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 DS}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{287.86584513143976, 223.03488938207519}, {54, 19.295995712280273}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>59</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 DS}</string> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>ID</key> + <integer>58</integer> + <key>Points</key> + <array> + <string>{314.36578847390081, 183.26216910861453}</string> + <string>{314.36578847390081, 211.2167148771924}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <true/> + <key>Pattern</key> + <integer>2</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{287.86582298874112, 152.14799269137089}, {54, 19.295995712280273}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>55</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 DS}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{287.8658275780142, 132.85199972830398}, {54, 19.295995712280273}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>54</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 DS}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{213.31602108687596, 262.80766376930353}, {54, 27.954545768578228}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>52</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 task}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{213.31602108687596, 223.03493092281334}, {54, 27.954545768578228}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>51</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 task}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{213.31603405102854, 143.48945685495173}, {54, 27.954545768578228}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>50</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 task}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{213.31603405102859, 103.71672400846133}, {54, 27.954545768578228}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>28</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 task}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>ID</key> + <integer>48</integer> + <key>Points</key> + <array> + <string>{165.26627488093757, 183.26218666204076}</string> + <string>{165.26627488093757, 211.21673243061869}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <true/> + <key>Pattern</key> + <integer>2</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{138.76627276886589, 262.80764162659648}, {54, 27.954545768578228}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>47</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 file read}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{138.76627276886589, 223.03489581595906}, {54, 27.954545768578228}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>46</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 file read}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{138.76627276886589, 143.48945226567864}, {54, 27.954545768578228}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>45</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 file read}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{138.76627965277558, 103.71672630309787}, {54, 27.954545768578228}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>1</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 file read}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{99.999998233936481, 289.710876759602}, {35.433071398293073, 14}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>ID</key> + <integer>44</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Pad</key> + <integer>0</integer> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 FILE}</string> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>ID</key> + <integer>43</integer> + <key>Points</key> + <array> + <string>{117.21652858486596, 262.80763005446465}</string> + <string>{117.21652858486596, 290.76217582304253}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>NegativeControls</string> + <key>Legacy</key> + <true/> + <key>TailArrow</key> + <string>NegativeControls</string> + </dict> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>ID</key> + <integer>42</integer> + <key>Points</key> + <array> + <string>{117.21652858486596, 223.03490154432578}</string> + <string>{117.21652858486596, 250.98944731290354}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>NegativeControls</string> + <key>Legacy</key> + <true/> + <key>TailArrow</key> + <string>NegativeControls</string> + </dict> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>ID</key> + <integer>40</integer> + <key>Points</key> + <array> + <string>{117.21652858486601, 183.26217787078312}</string> + <string>{117.21652858486601, 211.21672363936099}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <true/> + <key>Pattern</key> + <integer>2</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>ID</key> + <integer>39</integer> + <key>Points</key> + <array> + <string>{117.21653342146274, 143.48945705826318}</string> + <string>{117.21653342146274, 171.44400282684146}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>NegativeControls</string> + <key>Legacy</key> + <true/> + <key>TailArrow</key> + <string>NegativeControls</string> + </dict> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>ID</key> + <integer>38</integer> + <key>Points</key> + <array> + <string>{117.21652858486607, 103.71672957002347}</string> + <string>{117.21652858486607, 131.6712753386017}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>NegativeControls</string> + <key>Legacy</key> + <true/> + <key>TailArrow</key> + <string>NegativeControls</string> + </dict> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{99.999998233936509, 96.614089928107333}, {102.62709463610148, 207.09678649902344}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>75</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{209.07870390362567, 96.614093715018058}, {67.096776257692653, 207.09678649902344}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>78</integer> + <key>Shape</key> + <string>Rectangle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + </dict> + </array> + <key>GridInfo</key> + <dict/> + <key>HPages</key> + <integer>1</integer> + <key>KeepToScale</key> + <false/> + <key>Layers</key> + <array> + <dict> + <key>Lock</key> + <string>NO</string> + <key>Name</key> + <string>レイヤー 1</string> + <key>Print</key> + <string>YES</string> + <key>View</key> + <string>YES</string> + </dict> + </array> + <key>LayoutInfo</key> + <dict> + <key>Animate</key> + <string>NO</string> + <key>circoMinDist</key> + <real>18</real> + <key>circoSeparation</key> + <real>0.0</real> + <key>layoutEngine</key> + <string>dot</string> + <key>neatoSeparation</key> + <real>0.0</real> + <key>twopiSeparation</key> + <real>0.0</real> + </dict> + <key>Orientation</key> + <integer>2</integer> + <key>PrintOnePage</key> + <false/> + <key>RowAlign</key> + <integer>1</integer> + <key>RowSpacing</key> + <real>36</real> + <key>SheetTitle</key> + <string>キャンバス 18</string> + <key>UniqueID</key> + <integer>20</integer> + <key>VPages</key> + <integer>1</integer> + </dict> </array> <key>SmartAlignmentGuidesActive</key> <string>YES</string> @@ -35054,11 +36789,11 @@ <key>WindowInfo</key> <dict> <key>CurrentSheet</key> - <integer>15</integer> + <integer>17</integer> <key>ExpandedCanvases</key> <array/> <key>Frame</key> - <string>{{915, 48}, {1184, 874}}</string> + <string>{{625, 1234}, {1184, 874}}</string> <key>ListView</key> <true/> <key>OutlineWidth</key> @@ -35072,7 +36807,7 @@ <key>SidebarWidth</key> <integer>120</integer> <key>VisibleRegion</key> - <string>{{0, 0}, {777.03702331406953, 532.59258318666912}}</string> + <string>{{-108.99999999999997, 25.925925468057606}, {777.03702331406942, 544.44443482920974}}</string> <key>Zoom</key> <real>1.3500000238418579</real> <key>ZoomValues</key> @@ -35162,6 +36897,11 @@ <real>1.3500000238418579</real> <real>1</real> </array> + <array> + <string>キャンバス 18</string> + <real>1.3500000238418579</real> + <real>1</real> + </array> </array> </dict> </dict>