# HG changeset patch # User tatsuki # Date 1486628756 -32400 # Node ID 33d8077a5d45ea6252f89ef58aebff434b44165f # Parent e4da23b042604268af1bfc4096d7567387b88395 commit diff -r e4da23b04260 -r 33d8077a5d45 databases.tex --- a/databases.tex Wed Feb 08 17:26:22 2017 +0900 +++ b/databases.tex Thu Feb 09 17:25:56 2017 +0900 @@ -10,35 +10,39 @@ データの格納を行う際は、まずテーブルのデータの型と・制約を定義する。 テーブルの定義は、 +{\tt \vspace{0.1in} CREATE TABLE table名 ( \\ \ \ 値の名前 型 制約 , …… \\ ) \\ - +} の構文で行う。 -制約というのは、値の重複を許さない行を特定する際に用いる{\tt PRIMARY KEY}などがある。 +制約というのは、テーブルに値を入れる際に守らなければならない条件のことである。 +値の重複を許さない行を特定する際に用いる{\tt PRIMARY KEY}などがある。 また、テーブル同士は{\tt PRIMARY KEY}を用いて参照を行うことが可能である。 テーブルへのデータの格納は、 \vspace{0.1in} +{\tt INSERT INTO テーブル名 VALUES( \\ \ \ 格納するデータ \\ ); \\ - +} の構文で行う。 テーブルにデータを格納する際にはスキーマの定義に沿ってなければならない。 もし、スキーマに反するデータを格納した場合 エラーが発生しデータの格納に失敗する。 -このようにPostgreSqlは、厳密な型に守られている。 作成したテーブルからのデータの取得は、 + \vspace{0.1in} +{\tt Select 表示する値 FROM テーブル名;\\ - +} の構文で行う。 またテーブル名の後ろに表示する値の絞込や、データの並び替えなどのオプションをつけることも可能である。 @@ -67,7 +71,9 @@ コレクションへのデータの格納は、 \vspace{0.1in} +{\tt db.コレクション名.insert({Jsonフォーマットで記述されたデータ});\\ +} の構文で行う。 Json形式のデータは任意の深さまでネストすることが可能である。 @@ -76,7 +82,9 @@ 作成したコレクションからのデータの取得は、 \vspace{0.1in} +{\tt db.コレクション名.find(検索条件,表示する値の絞込);\\ +} の構文で行う。 引数を渡さなかった場合、コレクションの中身が全て表示される。 @@ -86,7 +94,7 @@ findで使用するクエリもJavaScriptで記述できる。 -このようにMongoDBは、非常に柔軟なデータモデルを扱える。 +このようにMongoDBは、非常に柔軟なデータモデルを扱え、 JavaScript を用いることで複雑な検索も可能である。 一方でデータの設計を行わないと、そのパフォーマンスを活かすことはできない。 @@ -105,7 +113,9 @@ KeySpaceは、 \vspace{0.1in} +{\tt create keyspace KeySpace名 with replication = {レプリケーションの設定};\\ +} の構文で行う。 レプリケーションとは、データベースを別のノードに複製し、データの編集時に同期を取ることである。 @@ -119,7 +129,9 @@ ColumnSpace は、 \vspace{0.1in} +{\tt create table テーブル名 (Key Column PRIMARY KEY, Key Column); \\ +} の構文で行う。 また、テーブルの定義で最低1つは Key にオプションで PRIMARY KEY を指定する必要がある。 @@ -128,7 +140,9 @@ 作成したColumnFamily への値の挿入は、 \vspace{0.1in} +{\tt INSERT INTO テーブル名 (key1,key2) VALUES (column1, column2);\\ +} の構文で行う。 また、Cassandra は、PRIMARY KEY で指定した Key で、Column を管理しているため、重複した PRIMARY KEY で 値を挿入すると、データの更新扱いになり上書きされる。 @@ -136,8 +150,28 @@ 作成した ColumnFamily からのデータの取得は、 \vspace{0.1in} +{\tt SELECT 表示する値 FROM テーブル名 オプション;\\ +} で行う。 またテーブル名の後ろに表示する値の絞込や、データの並び替えなどのオプションをつけることも可能である。 + +\section{非破壊的木構造データベースJungle} +Jungleは、当研究室で開発を行っているデータベースで、Javaを用いて実装されている。 +Jungleは名前付きの複数の木の集合からなり、木は複数のノードの集合で出来ている。 +ノードは自身の子のリストと属性名と属性値の組でデータを持ち、データベースのレコードに相当する。 +通常のレコードと異なるのは、ノードに子供となる複数のノードが付くところである。 +Jungleでは、親から子への片方向の参照しか持たない。 + +通常のRDBと異なり、Jungleは木構造をそのまま読み込むことができる。例えば、XMLやJsonで記述された構造を、データベースを設計することなく読み込むことが可能である。 +また、この木を、そのままデータベースとして使用することも可能である。しかし、木の変更の手間は木の構造に依存する。 +特に非破壊木構造を採用しているJungleでは、木構造の変更の手間はO(1)からO(n)となりえる。つまり、アプリケーションに合わせて木を設計しない限り、 +十分な性能を出すことはできない。逆に、正しい木の設計を行えば高速な処理が可能である。 + +Jungleは基本的にon memoryで使用することを考えており、一度、木のルートを取得すれば、その上で木構造として自由にアクセスして良い。 +Jungleは分散データベースを構成するように設計されており、分散ノード間の通信は木の変更のログを交換することによって行われる。 +持続性のある分散ノードを用いることでJungleの持続性を保証することができる。 + +詳しいAPIについては次章で記述する。 diff -r e4da23b04260 -r 33d8077a5d45 differential.tex --- a/differential.tex Wed Feb 08 17:26:22 2017 +0900 +++ b/differential.tex Thu Feb 09 17:25:56 2017 +0900 @@ -1,82 +1,74 @@ \chapter{Differential Jungle Tree} -Jungleの木の変更の手間は形によって異なる。 -特に線形の木は、変更の手間がO(n)となってしまう。 -線形の木をO(1)で変更するために、Jungleは、ルートノードを追加していくPushPopの機能を持つ。 -しかし、PushPopはルートノードを追加していくため、図\ref{fig:pushpop}のようにノードの並びが逆順になってしまう。 -Logなどの正順の木でなければデータを表現できない場合、木の編集時 PushPop を使用できない。 +Jungleは木の編集時、編集を行うノードと、経路にあるノードの複製を行う。 +そのため、木の編集の手間は、木構造の形によって異なる。 +特に線形の木は、全てのノードの複製を行うため、変更の手間がO(n)になってしまう。 +そこで、Jungle は、線形の木をO(1)で変更する、PushPopの機能を持つ。 +PushPopとは、ルートノードの上に新しいルートノードを付け加えるAPIである(図\ref{fig:pushpop})。 +すると、木の複製を行う必要が無いため、木の変更の手間がO(1)でノードの追加を行える。 + \begin{figure}[htpb] \begin{center} \includegraphics[scale=0.3]{figures/PushPopDemerit.pdf} -\caption{PushPopの問題点} +\caption{PushPop} \label{fig:pushpop} \end{center} \end{figure} +しかし、PushPopはルートノードを追加していくため、図\ref{fig:pushpop}のようにノードの並びが逆順になってしまう。 +Logなどの正順の木でなければデータを表現できない場合、木の編集時 PushPop を使用できない。 その問題を解決するために、木の編集の手間をO(1)で、正順の木を構築できるDifferential Jungle Treeの実装を行った。 Differential Jungle Treeは、木のバージョンごとに、自身の木の最後尾を表す末尾のノードを保持する。 +\newpage \section{Differential Tree Context} -Jungleの木はTreeContextというオブジェクトに自身の木の情報を保持している(表\ref{TreeContext})。 +Jungleの木はTreeContextというオブジェクトに自身の木の情報を保持している。 +Differential Jungle Treeでは、現在の版の木構造の末尾ノード保持することが可能な Differential Tree Context 作成した。 -\newpage + +\section{Differential Jungle Treeの作成} +Differential Jungle Treeを作成するためにJungleに、新しいAPIを実装した(表\ref{createDifTreeAPI})。 \begin{table}[htb] \begin{center} -\caption{TreeContextが保持している値} -\begin{tabular}{|l|} \hline -{\tt } 自身のルートノード\\ \hline -{\tt } 1つ前のversionのTreeContext\\ \hline -{\tt } 編集のログ\\ \hline -{\tt } 木のuuid \\ \hline -{\tt } 木の名前 \\ \hline -{\tt } 木のversion \\ \hline -{\tt } 木の検索に使うTraverser \\ \hline -\end{tabular} -\label{TreeContext} -\end{center} -\end{table} - -Differential Jungle Treeでは、現在の版の木構造の末尾ノード保持することが可能な Differential Tree Context 作成した。 - - - -\section{Differential Jungle Treeの作成} -Differential Jungle Treeを作成するためにJungleに、{\tt createNewDifferentialTree(String treeName) }を実装した。 -これは、第一引数String {\tt treeName}で受け取った名前の Differential Tree を作成する。 -その際、名前が重複した場合木の生成に失敗する。 +\caption{Jungleに新しく実装したAPI} +\begin{tabular}{|p{15em}|p{24em}|} \hline +{\small {\tt JungleTree createNewDifferentialTree(String treeName)}} &{\small Jungleに新しくDifferential Jungle Tree を生成する。木の名前が重複した場合、生成に失敗しnullを返す。} \\ \hline +\end{tabular} +\label{createDifTreeAPI} +\end{center} +\end{table} ソースコード\ref{newDifferentialTree}に新しいDifferential Jungle Treeを作成するサンプルコードを記載する。 \begin{lstlisting}[frame=lrbt,numbers=left,label=newDifferentialTree,caption=Differential Jungle Treeの生成] -Jungle jungle = new DefaultJungle(null, "hogehoge", new DefaultTraverser()); // jungleの作成 -String treeName = "difTree"; //treeNameの設定 -JungleTree tree = jungle.createNewDifferenceTree(treeName]); //Differential Treeの作成 +Jungle jungle = new DefaultJungle(null, "hogehoge", new DefaultTraverser()); +String treeName = "difTree"; +JungleTree tree = jungle.createNewDifferenceTree(treeName); \end{lstlisting} + Jungle では、{\tt TreeMap} を用いて Jungle Tree を管理している。 Differential Jungle Tree と Default Jungle Tree は、同じ TreeMap に保持されるため、別々の木に同じ名前をつけることはできない(ソースコード\ref{src:nameFail})。 \begin{lstlisting}[frame=lrbt,numbers=left,label=src:nameFail,caption=名前の重複] -Jungle jungle = new DefaultJungle(null, "hogehoge", new DefaultTraverser()); // jungleの作成 -String treeName = "treeName"; //treeNameの設定 -JungleTree defaultTree = jungle.createNewTree(treeName) //Default Treeの作成 -JungleTree dfTree = jungle.createNewDifferenceTree(treeName); //Differential Treeの作成 +Jungle jungle = new DefaultJungle(null, "hogehoge", new DefaultTraverser()); +String treeName = "treeName"; +JungleTree defaultTree = jungle.createNewTree(treeName) +JungleTree dfTree = jungle.createNewDifferenceTree(treeName); \end{lstlisting} ソースコード\ref{src:nameFail}では、4行目で Differentail Jungle Tree の名前が、3行目で生成した Default Jungle Tree の名前と重複するため、木の生成に失敗する。 -\newpage \section{末尾ノードを使用した木の編集} Differential Jungle Treeの木の編集は、Differential Jungle Tree Editorを使用して行う。 -%Differential Jungle Tree Editorは、Jungle Tree Editor インターフェースを実装しているため、使い方はDefault Jungle Tree Editorと同じである。 - -Default Jungle Tree との、木の編集時の処理の違いは、Default Jungle Tree の Editorは、木の複製を行い、過去の木を保持するのに対して、Differential Jungle TreeのEditor は、自身が保持している Sub Tree に対して破壊的に編集を行う。 -そして、Commitを行う際に、構築したSub Treeを末尾ノードにAppendする。 +Differential Jungle Tree Editor は、Default Jungle Tree Editor と違い、生成時に新しい木構造(Sub Tree)を自身の中に構築する。 +そして、木の編集は、Editor が保持している木構造に対して行う。 +編集後、Commitを行う際に構築した木構造を、 Differential Jungle Tree の末尾ノードにAppendする。 そうすることで、木の複製を行う必要がないため、木の変更の手間はO(1)で行える。 -また、Differential TreeはSub Treeに対する変更しか行えないため、一度Commitした木に対して変更は行えない。 +また、Differential Treeは自身が保持している木構造に対する変更しか行えないため、一度Commitした木に対して変更は行えない。 図\ref{fig:EditDifTree}にDifferential Jungle Treeの編集の流れを記述する。 \begin{figure}[htpb] @@ -88,59 +80,66 @@ \end{figure} \begin{enumerate} -\item 木から{\tt getJungleTreeEditor}でEditorを取得する。(このとき取得するEditorはSub Treeを持つ)。 -\item SubTreeに対して{\tt addNewChild(<-1,0>)}を実行し、ノードの追加を行う。 -\item Commitを行い、Treeの末尾ノードにSub TreeをAppendする。 +\item 木から{\tt getJungleTreeEditor}でEditorを取得する。(このときEditorは新しい木構造(Sub Tree)を持つ)。 +\item Editor が保持している木構造に対して{\tt addNewChild(<-1,0>)}を実行し、ノードの追加を行う。 +\item Commitを行い、Treeの末尾ノードに Editor が保持している木構造をAppendする。 \end{enumerate} -Sub Tree に最後に追加したノードが、新しい木の末尾ノードとなる。 -また、Differential TreeのIndexのアップデートは、Commit 時に Sub Treeの中身をIndexに追加するだけで良い。 +Editor が保持している木構造に最後に追加したノードが、新しい木の末尾ノードとなる。 +また、Differential TreeのIndexのアップデートは、Commit 時に Editor が保持している木構造のデータをIndexに追加するだけで良い。 + + + +\section{Differential Jungle Treeの検索} +Differential Jungle Tree は、末尾ノードを使って、現在の木構造を表現している。 +なので、過去の木に対して、Indexを使わずに全探索を行った場合、その版の木には無いはずのノードが取得できてしまう。 +例として、編集前の木である {\tt Tree ver1} と編集後の木である {\tt Tree ver2}があるとする(図\ref{fig:multiTree})。 +ここで、{\tt Tree ver1}に対して、検索をIndexを使わず行った場合、 +本来{\tt Tree ver1}に存在しないノード3・4も検索対象に含まれてしまう。 + +そこで、その版の木が持つ末尾ノード以下のSub Treeを検索対象から除外する検索を持つ、Differential Interface Traverser を実装した。 +Differential Interface Traverser を用いて Index を使用せず木の全探索を行った場合、{\tt Tree ver1}に存在しないノード3・4は検索対象から省かれる。 + +\begin{figure}[htpb] +\begin{center} +\includegraphics[scale=0.25]{figures/findDifTree.pdf} +\caption{複数の版の木の表現} +\label{fig:multiTree} +\end{center} +\end{figure} + + +Indexを使用した検索を行う場合、各版の木に対応したIndexがあるため、Default Treeと検索のアルゴリズムは変わらない。 +これらの実装により Differential Jungle Tree は木構造の構築・検索を行う。 \section{Differential Jungle Treeの整合性} +Default Jungle Tree への Commit は、 編集後の木のデータを持つ TreeContext を作り、編集前の木が持つ TreeContext と入れ替えることで行われる。 +しかし、Differentail Jungle Tree への Commit は、Default Jungle Tree のCommit と異なり、 +TreeContext の入れ替えと、Editor が保持している木構造の末尾ノードへの Append の2つのプロセスからなる。 +TreeContext の入れ替えに関しては、 Default Jungle Tree と同じように行う。 -Differential Jungle Treeに対する変更が競合した場合、先にCommitを行った方の変更が適応される。 -末尾ノードへのAppendは、破壊的な変更であるため、Commit成功後に行う。 -そうすることで、編集が競合した際の整合性を保っている。 +末尾ノードへの Editor が持っている木構造の Append は、 TreeContext の入れ替えが成功した際に行う。 +そうすることで、TreeContext を入れ替えた Thread と別 Thread が Append を行い、木の整合性が崩れることを回避している。 -また、Differential Jungle Treeは、木を破壊的に変更するため、過去の木を取得し変更を加えた場合、末尾ノードに複数のSub TreeがAppendされてしまい、木の整合性が崩れてしまう。 -その問題を解決するため、末尾ノードは1つしか子ノードを持つことができない。 -ノードのAppend時、末尾ノードが子ノードを持っていた場合、過去に木に対する変更と判断し、木の Commit は失敗する。 - -\begin{comment} -ソースコード\ref{src:Append}にSub TreeのAppend部分のコードを記述する。 +また、過去の版の木に対して、編集を加え Commit を行った場合、木の整合性が崩れてしまう問題もある。 +図\ref{fig:multiTree}・\ref{fig:badDifTree2}を例に解説する。 +最新版の木が {\tt Tree ver2}とする。 -\begin{lstlisting}[frame=lrbt,label=src:Append,caption=Sub TreeのAppend部分のコード,numbers=left] -Either appendSubTree(TreeNode subTreeRoot) { - TreeNode appendedNode = treeContext.getEndNode(); - TreeNodeChildren children = appendedNode.getChildren(); - if (children.size() != 0) - return DefaultEither.newA(APPEND_FAILD); - return children.addNewChildAt(0, subTreeRoot); -} -\end{lstlisting} - -ソースコード\ref{src:Append}の解説を行う。 +図\ref{fig:multiTree}の過去の版の木 {\tt Tree ver1}に新しいノード5を追加・Commit を行うと、新しい木 {\tt Tree ver`2} が構築される。 +ここで、木である{\tt Tree ver`2} に対して Index を使用しないで検索を行う。 +Differential Jungle Tree に対する Index を使用しない検索は、末尾ノードより上にあるノードを検索対象にする。 +しかしノード3・4という、本来存在しないはずのノードが検索対象に含まれてしまう。 -\begin{enumerate} -\item 関数{\tt appendSubTree}でSub TreeのAppendを行う。引数にSub Treeのルートを持つ。 -\item Differential Treeから末尾ノードを取得する。 -\item 末尾ノードからChildrenを取得する。 -\item 末尾ノードにSub TreeがすでにAppendされているか(子供を持っているか)を調べる。 -\item 他のSub TreeがAppendされている(今編集を行っているのが過去の木)場合、木のAppendは失敗するため、エラーを返す。 -\item そうでない場合、Sub Treeを末尾ノードにAppendする。 -\end{enumerate} +\begin{figure}[htpb] +\begin{center} +\includegraphics[scale=0.25]{figures/badDifTree2.pdf} +\caption{木の整合性が崩れる例} +\label{fig:badDifTree2} +\end{center} +\end{figure} -このように、末尾ノードが複数の子を持つことを禁止することで、過去の木を取得した際の木の整合性を保証している。 -\end{comment} - - -\section{Differential Jungle Treeの検索} -Differential Treeは、木を破壊的に編集する。 -そのため、過去の木に対して、Indexを使わずに全探索を行った場合、その版の木には無いはずのノードが取得できてしまう。 -そこで、その版の木が持つ末尾ノード以下のSub Treeを検索対象から除外する検索を持つ、Differential Interface Traverser を実装した。 - -Indexを使用した検索を行う場合、各版に対応したIndexがあるため、Default Treeと検索のアルゴリズムは変わらない。 - -これらの実装により Differential Jungle Tree は木構造の構築・検索を行う。 +この問題を解決するために、Differential Jungle Tree では、過去の木に対する変更を禁止している。 +具体的には、末尾ノードは子を1つしか持つことができない。 +そうすることで木の整合性を保証している。 diff -r e4da23b04260 -r 33d8077a5d45 figures/RedBlackTreeDelete5.graffle --- a/figures/RedBlackTreeDelete5.graffle Wed Feb 08 17:26:22 2017 +0900 +++ b/figures/RedBlackTreeDelete5.graffle Thu Feb 09 17:25:56 2017 +0900 @@ -57,10 +57,10 @@ Head ID - 493 + 551 ID - 494 + 552 Points {574.9773759804915, 363.87360014180553} @@ -94,7 +94,7 @@ 12 ID - 493 + 551 Magnets {0, 1} @@ -136,10 +136,10 @@ Head ID - 491 + 547 ID - 492 + 548 Points {574.9773759804915, 363.87360014180553} @@ -173,7 +173,7 @@ 12 ID - 491 + 547 Magnets {0, 1} @@ -215,10 +215,10 @@ Head ID - 489 + 553 ID - 490 + 554 Points {466.76909350978838, 363.87360014180558} @@ -241,7 +241,7 @@ Tail ID - 484 + 543 Info 1 @@ -259,7 +259,7 @@ 12 ID - 489 + 553 Magnets {0, 1} @@ -301,10 +301,10 @@ Head ID - 487 + 549 ID - 488 + 550 Points {466.76909350978838, 363.87360014180558} @@ -327,7 +327,7 @@ Tail ID - 484 + 543 Info 1 @@ -345,7 +345,7 @@ 12 ID - 487 + 549 Magnets {0, 1} @@ -387,10 +387,10 @@ Head ID - 484 + 543 ID - 486 + 544 Points {517.36027621852861, 272.4248010085048} @@ -413,7 +413,7 @@ Tail ID - 456 + 512 Info 1 @@ -440,7 +440,7 @@ 24 ID - 485 + 541 Shape Circle Style @@ -510,7 +510,7 @@ 12 ID - 484 + 543 Magnets {0, 1} @@ -552,10 +552,10 @@ Head ID - 481 + 542 ID - 483 + 545 Points {517.36027621852861, 272.4248010085048} @@ -578,7 +578,7 @@ Tail ID - 486 + 544 @@ -603,7 +603,7 @@ 24 ID - 482 + 546 Shape Circle Style @@ -673,7 +673,7 @@ 12 ID - 481 + 542 Magnets {0, 1} @@ -715,10 +715,10 @@ Head ID - 475 + 514 ID - 476 + 515 Points {816.3582353554915, 181.33090209960938} @@ -752,7 +752,7 @@ 12 ID - 475 + 514 Magnets {0, 1} @@ -794,10 +794,10 @@ Head ID - 473 + 518 ID - 474 + 519 Points {816.3582353554915, 181.33090209960938} @@ -831,7 +831,7 @@ 12 ID - 473 + 518 Magnets {0, 1} @@ -873,10 +873,10 @@ Head ID - 471 + 537 ID - 472 + 538 Points {671.08034228908525, 272.42481626729381} @@ -910,7 +910,7 @@ 12 ID - 471 + 537 Magnets {0, 1} @@ -952,10 +952,10 @@ Head ID - 469 + 539 ID - 470 + 540 Points {671.08034228908525, 272.42481626729381} @@ -989,7 +989,7 @@ 12 ID - 469 + 539 Magnets {0, 1} @@ -1031,12 +1031,12 @@ Head ID - 456 + 512 Info 2 ID - 458 + 513 Points {591.99743520087907, 181.3309217394411} @@ -1059,7 +1059,7 @@ Tail ID - 447 + 508 Info 1 @@ -1086,7 +1086,7 @@ 24 ID - 457 + 507 Shape Circle Style @@ -1156,7 +1156,7 @@ 12 ID - 456 + 512 Magnets {0, 1} @@ -1198,12 +1198,12 @@ Head ID - 453 + 516 Info 2 ID - 455 + 517 Points {591.99743520087907, 181.3309217394411} @@ -1226,7 +1226,7 @@ Tail ID - 447 + 508 Info 1 @@ -1253,7 +1253,7 @@ 24 ID - 454 + 520 Shape Circle Style @@ -1323,7 +1323,7 @@ 12 ID - 453 + 516 Magnets {0, 1} @@ -1381,7 +1381,7 @@ 24 ID - 452 + 506 Shape Rectangle Style @@ -1458,7 +1458,7 @@ 24 ID - 451 + 505 Shape Circle Style @@ -1537,7 +1537,7 @@ 24 ID - 450 + 500 Shape Circle Style @@ -1600,12 +1600,12 @@ Head ID - 446 + 510 Info 2 ID - 449 + 511 Points {691.10736226110225, 101.56261827594868} @@ -1628,7 +1628,7 @@ Tail ID - 445 + 501 Info 1 @@ -1639,12 +1639,12 @@ Head ID - 447 + 508 Info 2 ID - 448 + 509 Points {691.10736226110225, 101.56261827594868} @@ -1667,7 +1667,7 @@ Tail ID - 445 + 501 Info 1 @@ -1685,7 +1685,7 @@ 12 ID - 447 + 508 Magnets {0, 1} @@ -1734,7 +1734,7 @@ 12 ID - 446 + 510 Magnets {0, 1} @@ -1783,7 +1783,7 @@ 12 ID - 445 + 501 Magnets {0, 1} @@ -1841,7 +1841,7 @@ 24 ID - 406 + 504 Shape Circle Style @@ -1904,10 +1904,10 @@ Head ID - 302 + 525 ID - 303 + 526 Points {380.58720820378994, 272.42480708673304} @@ -1948,7 +1948,7 @@ 12 ID - 302 + 525 Magnets {0, 1} @@ -1990,10 +1990,10 @@ Head ID - 300 + 527 ID - 301 + 528 Points {380.58720820378994, 272.42480708673304} @@ -2034,7 +2034,7 @@ 12 ID - 300 + 527 Magnets {0, 1} @@ -2076,10 +2076,10 @@ Head ID - 298 + 531 ID - 299 + 532 Points {271.89639758693681, 268.14511108398438} @@ -2113,7 +2113,7 @@ 12 ID - 298 + 531 Magnets {0, 1} @@ -2155,10 +2155,10 @@ Head ID - 296 + 523 ID - 297 + 524 Points {271.89639758693681, 268.14511108398438} @@ -2192,7 +2192,7 @@ 12 ID - 296 + 523 Magnets {0, 1} @@ -2234,10 +2234,10 @@ Head ID - 294 + 529 ID - 295 + 530 Points {168.13063525783525, 268.14511503438365} @@ -2271,7 +2271,7 @@ 12 ID - 294 + 529 Magnets {0, 1} @@ -2313,10 +2313,10 @@ Head ID - 292 + 535 ID - 293 + 536 Points {168.13063525783525, 268.14511503438365} @@ -2350,7 +2350,7 @@ 12 ID - 292 + 535 Magnets {0, 1} @@ -2392,10 +2392,10 @@ Head ID - 286 + 533 ID - 287 + 534 Points {59.922352787132112, 268.14511503438371} @@ -2436,7 +2436,7 @@ 12 ID - 286 + 533 Magnets {0, 1} @@ -2478,10 +2478,10 @@ Head ID - 284 + 521 ID - 285 + 522 Points {59.922352787132112, 268.14511503438371} @@ -2522,7 +2522,7 @@ 12 ID - 284 + 521 Magnets {0, 1} @@ -2567,12 +2567,150 @@ Color + archive + + YnBsaXN0MDDUAQIDBAUGLC1YJHZlcnNpb25Y + JG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGG + oKcHCBMZHSQoVSRudWxs1QkKCwwNDg8QERJc + TlNDb21wb25lbnRzVU5TUkdCXE5TQ29sb3JT + cGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYk + Y2xhc3NHMCAwIDAgMUYwIDAgMAAQAYACgAbT + FBUNFhcYVE5TSURVTlNJQ0MQB4ADgAXSGg0b + HFdOUy5kYXRhTxEMSAAADEhMaW5vAhAAAG1u + dHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BN + U0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAA + AAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MA + AAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIE + AAAAFHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAA + FGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRt + ZGQAAALEAAAAiHZ1ZWQAAANMAAAAhnZpZXcA + AAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQM + AAAAJHRlY2gAAAQwAAAADHJUUkMAAAQ8AAAI + DGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRl + eHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhl + d2xldHQtUGFja2FyZCBDb21wYW55AABkZXNj + AAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAA + AAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4x + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVog + AAAAAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAA + AAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAA + A5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAA + AAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAW + SUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAA + AAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNo + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAA + AAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBS + R0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAA + AAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVs + dCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAA + AAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAA + AAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25k + aXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAA + AAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29u + ZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAA + AAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4A + AAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFz + AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAC + jwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAA + BAAAAAAFAAoADwAUABkAHgAjACgALQAyADcA + OwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8 + AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwA + wQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEH + AQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkB + YAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHB + AckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8C + OAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2 + AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MD + TwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APs + A/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoE + qAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVn + BXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcG + SAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcr + Bz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8I + MghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6 + CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQK + agqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuY + C7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM + 8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5J + DmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MP + zw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFP + EW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMT + AxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixSt + FM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwW + jxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhl + GIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEa + dxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7 + HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQe + vh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDw + IRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgj + ZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXH + JfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8o + cSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysC + KzYraSudK9EsBSw5LG4soizXLQwtQS12Last + 4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCk + MNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38z + uDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjau + Nuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5 + +To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0i + PWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRA + pkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQD + REdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tH + wEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtT + S5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBP + SU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MT + U19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdX + RFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtF + W5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ff + s2AFYFdgqmD8YU9homH1YklinGLwY0Njl2Pr + ZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9o + lmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20I + bWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx + 8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnab + dvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7 + wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4Co + gQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauG + DoZyhteHO4efiASIaYjOiTOJmYn+imSKyosw + i5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q + 1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0 + lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+c + HJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2 + oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n + 4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24 + ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660 + JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7 + urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA + 7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dB + x7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXO + Ns62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL + 1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724Dc + BdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb + 42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDq + W+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy + 8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5 + OPnH+lf65/t3/Af8mP0p/br+S/7c/23//4AE + 0h4fICFaJGNsYXNzbmFtZVgkY2xhc3Nlc11O + U011dGFibGVEYXRhoyAiI1ZOU0RhdGFYTlNP + YmplY3TSHh8lJlxOU0NvbG9yU3BhY2WiJyNc + TlNDb2xvclNwYWNl0h4fKSpXTlNDb2xvcqIr + I1dOU0NvbG9yXxAPTlNLZXllZEFyY2hpdmVy + 0S4vVHJvb3SAAQAIABEAGgAjAC0AMgA3AD8A + RQBQAF0AYwBwAIUAjACUAJsAnQCfAKEAqACt + ALMAtQC3ALkAvgDGDRINFA0ZDSQNLQ07DT8N + Rg1PDVQNYQ1kDXENdg1+DYENiQ2bDZ4NowAA + AAAAAAIBAAAAAAAAADAAAAAAAAAAAAAAAAAA + AA2l + b - 1 + 0 g - 1 + 0 r - 1 + 0 Font HiraKakuPro-W3 @@ -2679,6 +2817,153 @@ ShapedGraphic FontInfo + Color + + archive + + YnBsaXN0MDDUAQIDBAUGLC1YJHZlcnNpb25Y + JG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGG + oKcHCBMZHSQoVSRudWxs1QkKCwwNDg8QERJc + TlNDb21wb25lbnRzVU5TUkdCXE5TQ29sb3JT + cGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYk + Y2xhc3NHMCAwIDAgMUYwIDAgMAAQAYACgAbT + FBUNFhcYVE5TSURVTlNJQ0MQB4ADgAXSGg0b + HFdOUy5kYXRhTxEMSAAADEhMaW5vAhAAAG1u + dHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BN + U0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAA + AAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MA + AAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIE + AAAAFHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAA + FGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRt + ZGQAAALEAAAAiHZ1ZWQAAANMAAAAhnZpZXcA + AAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQM + AAAAJHRlY2gAAAQwAAAADHJUUkMAAAQ8AAAI + DGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRl + eHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhl + d2xldHQtUGFja2FyZCBDb21wYW55AABkZXNj + AAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAA + AAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4x + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVog + AAAAAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAA + AAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAA + A5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAA + AAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAW + SUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAA + AAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNo + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAA + AAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBS + R0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAA + AAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVs + dCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAA + AAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAA + AAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25k + aXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAA + AAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29u + ZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAA + AAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4A + AAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFz + AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAC + jwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAA + BAAAAAAFAAoADwAUABkAHgAjACgALQAyADcA + OwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8 + AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwA + wQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEH + AQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkB + YAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHB + AckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8C + OAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2 + AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MD + TwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APs + A/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoE + qAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVn + BXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcG + SAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcr + Bz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8I + MghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6 + CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQK + agqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuY + C7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM + 8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5J + DmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MP + zw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFP + EW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMT + AxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixSt + FM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwW + jxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhl + GIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEa + dxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7 + HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQe + vh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDw + IRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgj + ZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXH + JfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8o + cSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysC + KzYraSudK9EsBSw5LG4soizXLQwtQS12Last + 4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCk + MNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38z + uDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjau + Nuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5 + +To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0i + PWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRA + pkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQD + REdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tH + wEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtT + S5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBP + SU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MT + U19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdX + RFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtF + W5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ff + s2AFYFdgqmD8YU9homH1YklinGLwY0Njl2Pr + ZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9o + lmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20I + bWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx + 8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnab + dvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7 + wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4Co + gQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauG + DoZyhteHO4efiASIaYjOiTOJmYn+imSKyosw + i5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q + 1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0 + lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+c + HJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2 + oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n + 4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24 + ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660 + JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7 + urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA + 7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dB + x7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXO + Ns62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL + 1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724Dc + BdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb + 42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDq + W+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy + 8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5 + OPnH+lf65/t3/Af8mP0p/br+S/7c/23//4AE + 0h4fICFaJGNsYXNzbmFtZVgkY2xhc3Nlc11O + U011dGFibGVEYXRhoyAiI1ZOU0RhdGFYTlNP + YmplY3TSHh8lJlxOU0NvbG9yU3BhY2WiJyNc + TlNDb2xvclNwYWNl0h4fKSpXTlNDb2xvcqIr + I1dOU0NvbG9yXxAPTlNLZXllZEFyY2hpdmVy + 0S4vVHJvb3SAAQAIABEAGgAjAC0AMgA3AD8A + RQBQAF0AYwBwAIUAjACUAJsAnQCfAKEAqACt + ALMAtQC3ALkAvgDGDRINFA0ZDSQNLQ07DT8N + Rg1PDVQNYQ1kDXENdg1+DYENiQ2bDZ4NowAA + AAAAAAIBAAAAAAAAADAAAAAAAAAAAAAAAAAA + AA2l + + b + 0 + g + 0 + r + 0 + Font HiraKakuProN-W3 Size @@ -2762,12 +3047,150 @@ Color + archive + + YnBsaXN0MDDUAQIDBAUGLC1YJHZlcnNpb25Y + JG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGG + oKcHCBMZHSQoVSRudWxs1QkKCwwNDg8QERJc + TlNDb21wb25lbnRzVU5TUkdCXE5TQ29sb3JT + cGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYk + Y2xhc3NHMCAwIDAgMUYwIDAgMAAQAYACgAbT + FBUNFhcYVE5TSURVTlNJQ0MQB4ADgAXSGg0b + HFdOUy5kYXRhTxEMSAAADEhMaW5vAhAAAG1u + dHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BN + U0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAA + AAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MA + AAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIE + AAAAFHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAA + FGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRt + ZGQAAALEAAAAiHZ1ZWQAAANMAAAAhnZpZXcA + AAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQM + AAAAJHRlY2gAAAQwAAAADHJUUkMAAAQ8AAAI + DGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRl + eHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhl + d2xldHQtUGFja2FyZCBDb21wYW55AABkZXNj + AAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAA + AAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4x + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVog + AAAAAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAA + AAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAA + A5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAA + AAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAW + SUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAA + AAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNo + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAA + AAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBS + R0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAA + AAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVs + dCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAA + AAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAA + AAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25k + aXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAA + AAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29u + ZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAA + AAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4A + AAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFz + AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAC + jwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAA + BAAAAAAFAAoADwAUABkAHgAjACgALQAyADcA + OwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8 + AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwA + wQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEH + AQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkB + YAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHB + AckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8C + OAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2 + AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MD + TwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APs + A/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoE + qAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVn + BXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcG + SAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcr + Bz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8I + MghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6 + CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQK + agqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuY + C7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM + 8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5J + DmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MP + zw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFP + EW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMT + AxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixSt + FM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwW + jxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhl + GIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEa + dxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7 + HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQe + vh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDw + IRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgj + ZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXH + JfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8o + cSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysC + KzYraSudK9EsBSw5LG4soizXLQwtQS12Last + 4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCk + MNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38z + uDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjau + Nuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5 + +To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0i + PWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRA + pkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQD + REdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tH + wEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtT + S5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBP + SU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MT + U19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdX + RFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtF + W5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ff + s2AFYFdgqmD8YU9homH1YklinGLwY0Njl2Pr + ZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9o + lmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20I + bWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx + 8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnab + dvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7 + wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4Co + gQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauG + DoZyhteHO4efiASIaYjOiTOJmYn+imSKyosw + i5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q + 1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0 + lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+c + HJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2 + oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n + 4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24 + ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660 + JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7 + urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA + 7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dB + x7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXO + Ns62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL + 1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724Dc + BdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb + 42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDq + W+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy + 8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5 + OPnH+lf65/t3/Af8mP0p/br+S/7c/23//4AE + 0h4fICFaJGNsYXNzbmFtZVgkY2xhc3Nlc11O + U011dGFibGVEYXRhoyAiI1ZOU0RhdGFYTlNP + YmplY3TSHh8lJlxOU0NvbG9yU3BhY2WiJyNc + TlNDb2xvclNwYWNl0h4fKSpXTlNDb2xvcqIr + I1dOU0NvbG9yXxAPTlNLZXllZEFyY2hpdmVy + 0S4vVHJvb3SAAQAIABEAGgAjAC0AMgA3AD8A + RQBQAF0AYwBwAIUAjACUAJsAnQCfAKEAqACt + ALMAtQC3ALkAvgDGDRINFA0ZDSQNLQ07DT8N + Rg1PDVQNYQ1kDXENdg1+DYENiQ2bDZ4NowAA + AAAAAAIBAAAAAAAAADAAAAAAAAAAAAAAAAAA + AA2l + b - 1 + 0 g - 1 + 0 r - 1 + 0 Font HiraKakuPro-W3 @@ -2839,6 +3262,153 @@ ShapedGraphic FontInfo + Color + + archive + + YnBsaXN0MDDUAQIDBAUGLC1YJHZlcnNpb25Y + JG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGG + oKcHCBMZHSQoVSRudWxs1QkKCwwNDg8QERJc + TlNDb21wb25lbnRzVU5TUkdCXE5TQ29sb3JT + cGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYk + Y2xhc3NHMCAwIDAgMUYwIDAgMAAQAYACgAbT + FBUNFhcYVE5TSURVTlNJQ0MQB4ADgAXSGg0b + HFdOUy5kYXRhTxEMSAAADEhMaW5vAhAAAG1u + dHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BN + U0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAA + AAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MA + AAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIE + AAAAFHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAA + FGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRt + ZGQAAALEAAAAiHZ1ZWQAAANMAAAAhnZpZXcA + AAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQM + AAAAJHRlY2gAAAQwAAAADHJUUkMAAAQ8AAAI + DGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRl + eHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhl + d2xldHQtUGFja2FyZCBDb21wYW55AABkZXNj + AAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAA + AAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4x + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVog + AAAAAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAA + AAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAA + A5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAA + AAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAW + SUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAA + AAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNo + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAA + AAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBS + R0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAA + AAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVs + dCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAA + AAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAA + AAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25k + aXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAA + AAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29u + ZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAA + AAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4A + AAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFz + AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAC + jwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAA + BAAAAAAFAAoADwAUABkAHgAjACgALQAyADcA + OwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8 + AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwA + wQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEH + AQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkB + YAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHB + AckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8C + OAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2 + AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MD + TwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APs + A/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoE + qAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVn + BXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcG + SAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcr + Bz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8I + MghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6 + CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQK + agqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuY + C7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM + 8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5J + DmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MP + zw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFP + EW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMT + AxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixSt + FM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwW + jxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhl + GIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEa + dxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7 + HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQe + vh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDw + IRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgj + ZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXH + JfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8o + cSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysC + KzYraSudK9EsBSw5LG4soizXLQwtQS12Last + 4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCk + MNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38z + uDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjau + Nuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5 + +To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0i + PWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRA + pkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQD + REdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tH + wEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtT + S5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBP + SU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MT + U19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdX + RFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtF + W5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ff + s2AFYFdgqmD8YU9homH1YklinGLwY0Njl2Pr + ZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9o + lmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20I + bWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx + 8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnab + dvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7 + wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4Co + gQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauG + DoZyhteHO4efiASIaYjOiTOJmYn+imSKyosw + i5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q + 1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0 + lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+c + HJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2 + oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n + 4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24 + ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660 + JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7 + urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA + 7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dB + x7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXO + Ns62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL + 1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724Dc + BdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb + 42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDq + W+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy + 8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5 + OPnH+lf65/t3/Af8mP0p/br+S/7c/23//4AE + 0h4fICFaJGNsYXNzbmFtZVgkY2xhc3Nlc11O + U011dGFibGVEYXRhoyAiI1ZOU0RhdGFYTlNP + YmplY3TSHh8lJlxOU0NvbG9yU3BhY2WiJyNc + TlNDb2xvclNwYWNl0h4fKSpXTlNDb2xvcqIr + I1dOU0NvbG9yXxAPTlNLZXllZEFyY2hpdmVy + 0S4vVHJvb3SAAQAIABEAGgAjAC0AMgA3AD8A + RQBQAF0AYwBwAIUAjACUAJsAnQCfAKEAqACt + ALMAtQC3ALkAvgDGDRINFA0ZDSQNLQ07DT8N + Rg1PDVQNYQ1kDXENdg1+DYENiQ2bDZ4NowAA + AAAAAAIBAAAAAAAAADAAAAAAAAAAAAAAAAAA + AA2l + + b + 0 + g + 0 + r + 0 + Font HiraKakuProN-W3 Size @@ -2880,6 +3450,8 @@ VerticalPad 0 + TextRelativeArea + {{0, 0}, {1, 1}} Class @@ -2920,12 +3492,150 @@ Color + archive + + YnBsaXN0MDDUAQIDBAUGLC1YJHZlcnNpb25Y + JG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGG + oKcHCBMZHSQoVSRudWxs1QkKCwwNDg8QERJc + TlNDb21wb25lbnRzVU5TUkdCXE5TQ29sb3JT + cGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYk + Y2xhc3NHMCAwIDAgMUYwIDAgMAAQAYACgAbT + FBUNFhcYVE5TSURVTlNJQ0MQB4ADgAXSGg0b + HFdOUy5kYXRhTxEMSAAADEhMaW5vAhAAAG1u + dHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BN + U0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAA + AAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MA + AAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIE + AAAAFHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAA + FGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRt + ZGQAAALEAAAAiHZ1ZWQAAANMAAAAhnZpZXcA + AAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQM + AAAAJHRlY2gAAAQwAAAADHJUUkMAAAQ8AAAI + DGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRl + eHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhl + d2xldHQtUGFja2FyZCBDb21wYW55AABkZXNj + AAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAA + AAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4x + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVog + AAAAAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAA + AAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAA + A5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAA + AAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAW + SUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAA + AAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNo + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAA + AAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBS + R0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAA + AAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVs + dCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAA + AAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAA + AAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25k + aXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAA + AAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29u + ZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAA + AAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4A + AAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFz + AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAC + jwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAA + BAAAAAAFAAoADwAUABkAHgAjACgALQAyADcA + OwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8 + AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwA + wQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEH + AQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkB + YAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHB + AckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8C + OAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2 + AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MD + TwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APs + A/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoE + qAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVn + BXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcG + SAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcr + Bz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8I + MghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6 + CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQK + agqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuY + C7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM + 8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5J + DmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MP + zw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFP + EW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMT + AxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixSt + FM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwW + jxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhl + GIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEa + dxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7 + HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQe + vh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDw + IRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgj + ZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXH + JfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8o + cSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysC + KzYraSudK9EsBSw5LG4soizXLQwtQS12Last + 4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCk + MNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38z + uDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjau + Nuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5 + +To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0i + PWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRA + pkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQD + REdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tH + wEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtT + S5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBP + SU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MT + U19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdX + RFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtF + W5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ff + s2AFYFdgqmD8YU9homH1YklinGLwY0Njl2Pr + ZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9o + lmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20I + bWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx + 8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnab + dvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7 + wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4Co + gQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauG + DoZyhteHO4efiASIaYjOiTOJmYn+imSKyosw + i5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q + 1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0 + lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+c + HJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2 + oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n + 4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24 + ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660 + JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7 + urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA + 7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dB + x7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXO + Ns62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL + 1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724Dc + BdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb + 42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDq + W+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy + 8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5 + OPnH+lf65/t3/Af8mP0p/br+S/7c/23//4AE + 0h4fICFaJGNsYXNzbmFtZVgkY2xhc3Nlc11O + U011dGFibGVEYXRhoyAiI1ZOU0RhdGFYTlNP + YmplY3TSHh8lJlxOU0NvbG9yU3BhY2WiJyNc + TlNDb2xvclNwYWNl0h4fKSpXTlNDb2xvcqIr + I1dOU0NvbG9yXxAPTlNLZXllZEFyY2hpdmVy + 0S4vVHJvb3SAAQAIABEAGgAjAC0AMgA3AD8A + RQBQAF0AYwBwAIUAjACUAJsAnQCfAKEAqACt + ALMAtQC3ALkAvgDGDRINFA0ZDSQNLQ07DT8N + Rg1PDVQNYQ1kDXENdg1+DYENiQ2bDZ4NowAA + AAAAAAIBAAAAAAAAADAAAAAAAAAAAAAAAAAA + AA2l + b - 1 + 0 g - 1 + 0 r - 1 + 0 Font HiraKakuPro-W3 @@ -2997,6 +3707,153 @@ ShapedGraphic FontInfo + Color + + archive + + YnBsaXN0MDDUAQIDBAUGLC1YJHZlcnNpb25Y + JG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGG + oKcHCBMZHSQoVSRudWxs1QkKCwwNDg8QERJc + TlNDb21wb25lbnRzVU5TUkdCXE5TQ29sb3JT + cGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYk + Y2xhc3NHMCAwIDAgMUYwIDAgMAAQAYACgAbT + FBUNFhcYVE5TSURVTlNJQ0MQB4ADgAXSGg0b + HFdOUy5kYXRhTxEMSAAADEhMaW5vAhAAAG1u + dHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BN + U0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAA + AAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MA + AAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIE + AAAAFHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAA + FGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRt + ZGQAAALEAAAAiHZ1ZWQAAANMAAAAhnZpZXcA + AAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQM + AAAAJHRlY2gAAAQwAAAADHJUUkMAAAQ8AAAI + DGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRl + eHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhl + d2xldHQtUGFja2FyZCBDb21wYW55AABkZXNj + AAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAA + AAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4x + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVog + AAAAAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAA + AAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAA + A5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAA + AAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAW + SUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAA + AAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNo + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAA + AAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBS + R0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAA + AAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVs + dCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAA + AAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAA + AAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25k + aXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAA + AAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29u + ZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAA + AAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4A + AAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFz + AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAC + jwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAA + BAAAAAAFAAoADwAUABkAHgAjACgALQAyADcA + OwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8 + AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwA + wQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEH + AQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkB + YAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHB + AckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8C + OAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2 + AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MD + TwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APs + A/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoE + qAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVn + BXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcG + SAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcr + Bz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8I + MghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6 + CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQK + agqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuY + C7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM + 8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5J + DmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MP + zw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFP + EW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMT + AxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixSt + FM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwW + jxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhl + GIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEa + dxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7 + HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQe + vh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDw + IRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgj + ZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXH + JfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8o + cSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysC + KzYraSudK9EsBSw5LG4soizXLQwtQS12Last + 4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCk + MNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38z + uDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjau + Nuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5 + +To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0i + PWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRA + pkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQD + REdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tH + wEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtT + S5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBP + SU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MT + U19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdX + RFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtF + W5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ff + s2AFYFdgqmD8YU9homH1YklinGLwY0Njl2Pr + ZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9o + lmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20I + bWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx + 8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnab + dvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7 + wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4Co + gQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauG + DoZyhteHO4efiASIaYjOiTOJmYn+imSKyosw + i5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q + 1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0 + lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+c + HJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2 + oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n + 4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24 + ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660 + JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7 + urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA + 7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dB + x7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXO + Ns62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL + 1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724Dc + BdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb + 42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDq + W+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy + 8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5 + OPnH+lf65/t3/Af8mP0p/br+S/7c/23//4AE + 0h4fICFaJGNsYXNzbmFtZVgkY2xhc3Nlc11O + U011dGFibGVEYXRhoyAiI1ZOU0RhdGFYTlNP + YmplY3TSHh8lJlxOU0NvbG9yU3BhY2WiJyNc + TlNDb2xvclNwYWNl0h4fKSpXTlNDb2xvcqIr + I1dOU0NvbG9yXxAPTlNLZXllZEFyY2hpdmVy + 0S4vVHJvb3SAAQAIABEAGgAjAC0AMgA3AD8A + RQBQAF0AYwBwAIUAjACUAJsAnQCfAKEAqACt + ALMAtQC3ALkAvgDGDRINFA0ZDSQNLQ07DT8N + Rg1PDVQNYQ1kDXENdg1+DYENiQ2bDZ4NowAA + AAAAAAIBAAAAAAAAADAAAAAAAAAAAAAAAAAA + AA2l + + b + 0 + g + 0 + r + 0 + Font HiraKakuProN-W3 Size @@ -3085,12 +3942,150 @@ Color + archive + + YnBsaXN0MDDUAQIDBAUGLC1YJHZlcnNpb25Y + JG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGG + oKcHCBMZHSQoVSRudWxs1QkKCwwNDg8QERJc + TlNDb21wb25lbnRzVU5TUkdCXE5TQ29sb3JT + cGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYk + Y2xhc3NHMCAwIDAgMUYwIDAgMAAQAYACgAbT + FBUNFhcYVE5TSURVTlNJQ0MQB4ADgAXSGg0b + HFdOUy5kYXRhTxEMSAAADEhMaW5vAhAAAG1u + dHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BN + U0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAA + AAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MA + AAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIE + AAAAFHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAA + FGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRt + ZGQAAALEAAAAiHZ1ZWQAAANMAAAAhnZpZXcA + AAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQM + AAAAJHRlY2gAAAQwAAAADHJUUkMAAAQ8AAAI + DGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRl + eHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhl + d2xldHQtUGFja2FyZCBDb21wYW55AABkZXNj + AAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAA + AAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4x + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVog + AAAAAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAA + AAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAA + A5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAA + AAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAW + SUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAA + AAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNo + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAA + AAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBS + R0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAA + AAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVs + dCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAA + AAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAA + AAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25k + aXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAA + AAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29u + ZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAA + AAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4A + AAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFz + AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAC + jwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAA + BAAAAAAFAAoADwAUABkAHgAjACgALQAyADcA + OwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8 + AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwA + wQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEH + AQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkB + YAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHB + AckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8C + OAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2 + AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MD + TwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APs + A/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoE + qAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVn + BXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcG + SAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcr + Bz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8I + MghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6 + CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQK + agqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuY + C7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM + 8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5J + DmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MP + zw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFP + EW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMT + AxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixSt + FM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwW + jxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhl + GIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEa + dxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7 + HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQe + vh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDw + IRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgj + ZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXH + JfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8o + cSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysC + KzYraSudK9EsBSw5LG4soizXLQwtQS12Last + 4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCk + MNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38z + uDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjau + Nuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5 + +To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0i + PWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRA + pkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQD + REdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tH + wEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtT + S5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBP + SU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MT + U19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdX + RFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtF + W5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ff + s2AFYFdgqmD8YU9homH1YklinGLwY0Njl2Pr + ZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9o + lmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20I + bWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx + 8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnab + dvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7 + wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4Co + gQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauG + DoZyhteHO4efiASIaYjOiTOJmYn+imSKyosw + i5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q + 1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0 + lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+c + HJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2 + oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n + 4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24 + ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660 + JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7 + urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA + 7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dB + x7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXO + Ns62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL + 1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724Dc + BdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb + 42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDq + W+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy + 8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5 + OPnH+lf65/t3/Af8mP0p/br+S/7c/23//4AE + 0h4fICFaJGNsYXNzbmFtZVgkY2xhc3Nlc11O + U011dGFibGVEYXRhoyAiI1ZOU0RhdGFYTlNP + YmplY3TSHh8lJlxOU0NvbG9yU3BhY2WiJyNc + TlNDb2xvclNwYWNl0h4fKSpXTlNDb2xvcqIr + I1dOU0NvbG9yXxAPTlNLZXllZEFyY2hpdmVy + 0S4vVHJvb3SAAQAIABEAGgAjAC0AMgA3AD8A + RQBQAF0AYwBwAIUAjACUAJsAnQCfAKEAqACt + ALMAtQC3ALkAvgDGDRINFA0ZDSQNLQ07DT8N + Rg1PDVQNYQ1kDXENdg1+DYENiQ2bDZ4NowAA + AAAAAAIBAAAAAAAAADAAAAAAAAAAAAAAAAAA + AA2l + b - 1 + 0 g - 1 + 0 r - 1 + 0 Font HiraKakuPro-W3 @@ -3162,6 +4157,153 @@ ShapedGraphic FontInfo + Color + + archive + + YnBsaXN0MDDUAQIDBAUGLC1YJHZlcnNpb25Y + JG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGG + oKcHCBMZHSQoVSRudWxs1QkKCwwNDg8QERJc + TlNDb21wb25lbnRzVU5TUkdCXE5TQ29sb3JT + cGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYk + Y2xhc3NHMCAwIDAgMUYwIDAgMAAQAYACgAbT + FBUNFhcYVE5TSURVTlNJQ0MQB4ADgAXSGg0b + HFdOUy5kYXRhTxEMSAAADEhMaW5vAhAAAG1u + dHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BN + U0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAA + AAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MA + AAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIE + AAAAFHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAA + FGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRt + ZGQAAALEAAAAiHZ1ZWQAAANMAAAAhnZpZXcA + AAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQM + AAAAJHRlY2gAAAQwAAAADHJUUkMAAAQ8AAAI + DGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRl + eHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhl + d2xldHQtUGFja2FyZCBDb21wYW55AABkZXNj + AAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAA + AAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4x + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVog + AAAAAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAA + AAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAA + A5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAA + AAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAW + SUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAA + AAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNo + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAA + AAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBS + R0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAA + AAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVs + dCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAA + AAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAA + AAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25k + aXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAA + AAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29u + ZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAA + AAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4A + AAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFz + AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAC + jwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAA + BAAAAAAFAAoADwAUABkAHgAjACgALQAyADcA + OwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8 + AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwA + wQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEH + AQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkB + YAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHB + AckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8C + OAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2 + AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MD + TwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APs + A/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoE + qAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVn + BXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcG + SAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcr + Bz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8I + MghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6 + CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQK + agqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuY + C7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM + 8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5J + DmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MP + zw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFP + EW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMT + AxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixSt + FM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwW + jxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhl + GIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEa + dxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7 + HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQe + vh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDw + IRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgj + ZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXH + JfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8o + cSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysC + KzYraSudK9EsBSw5LG4soizXLQwtQS12Last + 4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCk + MNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38z + uDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjau + Nuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5 + +To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0i + PWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRA + pkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQD + REdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tH + wEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtT + S5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBP + SU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MT + U19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdX + RFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtF + W5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ff + s2AFYFdgqmD8YU9homH1YklinGLwY0Njl2Pr + ZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9o + lmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20I + bWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx + 8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnab + dvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7 + wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4Co + gQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauG + DoZyhteHO4efiASIaYjOiTOJmYn+imSKyosw + i5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q + 1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0 + lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+c + HJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2 + oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n + 4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24 + ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660 + JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7 + urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA + 7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dB + x7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXO + Ns62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL + 1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724Dc + BdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb + 42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDq + W+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy + 8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5 + OPnH+lf65/t3/Af8mP0p/br+S/7c/23//4AE + 0h4fICFaJGNsYXNzbmFtZVgkY2xhc3Nlc11O + U011dGFibGVEYXRhoyAiI1ZOU0RhdGFYTlNP + YmplY3TSHh8lJlxOU0NvbG9yU3BhY2WiJyNc + TlNDb2xvclNwYWNl0h4fKSpXTlNDb2xvcqIr + I1dOU0NvbG9yXxAPTlNLZXllZEFyY2hpdmVy + 0S4vVHJvb3SAAQAIABEAGgAjAC0AMgA3AD8A + RQBQAF0AYwBwAIUAjACUAJsAnQCfAKEAqACt + ALMAtQC3ALkAvgDGDRINFA0ZDSQNLQ07DT8N + Rg1PDVQNYQ1kDXENdg1+DYENiQ2bDZ4NowAA + AAAAAAIBAAAAAAAAADAAAAAAAAAAAAAAAAAA + AA2l + + b + 0 + g + 0 + r + 0 + Font HiraKakuProN-W3 Size @@ -3213,12 +4355,150 @@ Color + archive + + YnBsaXN0MDDUAQIDBAUGLC1YJHZlcnNpb25Y + JG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGG + oKcHCBMZHSQoVSRudWxs1QkKCwwNDg8QERJc + TlNDb21wb25lbnRzVU5TUkdCXE5TQ29sb3JT + cGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYk + Y2xhc3NHMCAwIDAgMUYwIDAgMAAQAYACgAbT + FBUNFhcYVE5TSURVTlNJQ0MQB4ADgAXSGg0b + HFdOUy5kYXRhTxEMSAAADEhMaW5vAhAAAG1u + dHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BN + U0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAA + AAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MA + AAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIE + AAAAFHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAA + FGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRt + ZGQAAALEAAAAiHZ1ZWQAAANMAAAAhnZpZXcA + AAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQM + AAAAJHRlY2gAAAQwAAAADHJUUkMAAAQ8AAAI + DGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRl + eHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhl + d2xldHQtUGFja2FyZCBDb21wYW55AABkZXNj + AAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAA + AAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4x + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVog + AAAAAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAA + AAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAA + A5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAA + AAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAW + SUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAA + AAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNo + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAA + AAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBS + R0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAA + AAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVs + dCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAA + AAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAA + AAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25k + aXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAA + AAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29u + ZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAA + AAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4A + AAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFz + AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAC + jwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAA + BAAAAAAFAAoADwAUABkAHgAjACgALQAyADcA + OwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8 + AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwA + wQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEH + AQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkB + YAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHB + AckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8C + OAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2 + AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MD + TwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APs + A/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoE + qAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVn + BXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcG + SAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcr + Bz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8I + MghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6 + CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQK + agqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuY + C7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM + 8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5J + DmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MP + zw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFP + EW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMT + AxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixSt + FM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwW + jxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhl + GIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEa + dxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7 + HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQe + vh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDw + IRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgj + ZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXH + JfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8o + cSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysC + KzYraSudK9EsBSw5LG4soizXLQwtQS12Last + 4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCk + MNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38z + uDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjau + Nuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5 + +To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0i + PWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRA + pkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQD + REdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tH + wEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtT + S5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBP + SU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MT + U19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdX + RFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtF + W5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ff + s2AFYFdgqmD8YU9homH1YklinGLwY0Njl2Pr + ZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9o + lmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20I + bWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx + 8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnab + dvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7 + wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4Co + gQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauG + DoZyhteHO4efiASIaYjOiTOJmYn+imSKyosw + i5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q + 1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0 + lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+c + HJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2 + oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n + 4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24 + ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660 + JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7 + urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA + 7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dB + x7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXO + Ns62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL + 1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724Dc + BdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb + 42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDq + W+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy + 8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5 + OPnH+lf65/t3/Af8mP0p/br+S/7c/23//4AE + 0h4fICFaJGNsYXNzbmFtZVgkY2xhc3Nlc11O + U011dGFibGVEYXRhoyAiI1ZOU0RhdGFYTlNP + YmplY3TSHh8lJlxOU0NvbG9yU3BhY2WiJyNc + TlNDb2xvclNwYWNl0h4fKSpXTlNDb2xvcqIr + I1dOU0NvbG9yXxAPTlNLZXllZEFyY2hpdmVy + 0S4vVHJvb3SAAQAIABEAGgAjAC0AMgA3AD8A + RQBQAF0AYwBwAIUAjACUAJsAnQCfAKEAqACt + ALMAtQC3ALkAvgDGDRINFA0ZDSQNLQ07DT8N + Rg1PDVQNYQ1kDXENdg1+DYENiQ2bDZ4NowAA + AAAAAAIBAAAAAAAAADAAAAAAAAAAAAAAAAAA + AA2l + b - 1 + 0 g - 1 + 0 r - 1 + 0 Font HiraKakuPro-W3 @@ -3226,7 +4506,7 @@ 24 ID - 245 + 499 Shape Circle Style @@ -3292,12 +4572,150 @@ Color + archive + + YnBsaXN0MDDUAQIDBAUGLC1YJHZlcnNpb25Y + JG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGG + oKcHCBMZHSQoVSRudWxs1QkKCwwNDg8QERJc + TlNDb21wb25lbnRzVU5TUkdCXE5TQ29sb3JT + cGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYk + Y2xhc3NHMCAwIDAgMUYwIDAgMAAQAYACgAbT + FBUNFhcYVE5TSURVTlNJQ0MQB4ADgAXSGg0b + HFdOUy5kYXRhTxEMSAAADEhMaW5vAhAAAG1u + dHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BN + U0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAA + AAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MA + AAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIE + AAAAFHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAA + FGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRt + ZGQAAALEAAAAiHZ1ZWQAAANMAAAAhnZpZXcA + AAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQM + AAAAJHRlY2gAAAQwAAAADHJUUkMAAAQ8AAAI + DGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRl + eHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhl + d2xldHQtUGFja2FyZCBDb21wYW55AABkZXNj + AAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAA + AAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4x + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVog + AAAAAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAA + AAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAA + A5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAA + AAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAW + SUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAA + AAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNo + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAA + AAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBS + R0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAA + AAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVs + dCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAA + AAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAA + AAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25k + aXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAA + AAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29u + ZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAA + AAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4A + AAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFz + AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAC + jwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAA + BAAAAAAFAAoADwAUABkAHgAjACgALQAyADcA + OwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8 + AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwA + wQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEH + AQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkB + YAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHB + AckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8C + OAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2 + AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MD + TwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APs + A/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoE + qAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVn + BXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcG + SAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcr + Bz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8I + MghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6 + CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQK + agqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuY + C7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM + 8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5J + DmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MP + zw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFP + EW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMT + AxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixSt + FM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwW + jxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhl + GIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEa + dxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7 + HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQe + vh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDw + IRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgj + ZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXH + JfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8o + cSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysC + KzYraSudK9EsBSw5LG4soizXLQwtQS12Last + 4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCk + MNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38z + uDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjau + Nuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5 + +To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0i + PWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRA + pkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQD + REdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tH + wEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtT + S5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBP + SU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MT + U19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdX + RFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtF + W5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ff + s2AFYFdgqmD8YU9homH1YklinGLwY0Njl2Pr + ZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9o + lmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20I + bWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx + 8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnab + dvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7 + wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4Co + gQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauG + DoZyhteHO4efiASIaYjOiTOJmYn+imSKyosw + i5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q + 1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0 + lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+c + HJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2 + oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n + 4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24 + ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660 + JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7 + urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA + 7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dB + x7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXO + Ns62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL + 1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724Dc + BdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb + 42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDq + W+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy + 8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5 + OPnH+lf65/t3/Af8mP0p/br+S/7c/23//4AE + 0h4fICFaJGNsYXNzbmFtZVgkY2xhc3Nlc11O + U011dGFibGVEYXRhoyAiI1ZOU0RhdGFYTlNP + YmplY3TSHh8lJlxOU0NvbG9yU3BhY2WiJyNc + TlNDb2xvclNwYWNl0h4fKSpXTlNDb2xvcqIr + I1dOU0NvbG9yXxAPTlNLZXllZEFyY2hpdmVy + 0S4vVHJvb3SAAQAIABEAGgAjAC0AMgA3AD8A + RQBQAF0AYwBwAIUAjACUAJsAnQCfAKEAqACt + ALMAtQC3ALkAvgDGDRINFA0ZDSQNLQ07DT8N + Rg1PDVQNYQ1kDXENdg1+DYENiQ2bDZ4NowAA + AAAAAAIBAAAAAAAAADAAAAAAAAAAAAAAAAAA + AA2l + b - 1 + 0 g - 1 + 0 r - 1 + 0 Font HiraKakuPro-W3 @@ -3371,12 +4789,150 @@ Color + archive + + YnBsaXN0MDDUAQIDBAUGLC1YJHZlcnNpb25Y + JG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGG + oKcHCBMZHSQoVSRudWxs1QkKCwwNDg8QERJc + TlNDb21wb25lbnRzVU5TUkdCXE5TQ29sb3JT + cGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYk + Y2xhc3NHMCAwIDAgMUYwIDAgMAAQAYACgAbT + FBUNFhcYVE5TSURVTlNJQ0MQB4ADgAXSGg0b + HFdOUy5kYXRhTxEMSAAADEhMaW5vAhAAAG1u + dHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BN + U0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAA + AAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MA + AAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIE + AAAAFHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAA + FGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRt + ZGQAAALEAAAAiHZ1ZWQAAANMAAAAhnZpZXcA + AAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQM + AAAAJHRlY2gAAAQwAAAADHJUUkMAAAQ8AAAI + DGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRl + eHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhl + d2xldHQtUGFja2FyZCBDb21wYW55AABkZXNj + AAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAA + AAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4x + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVog + AAAAAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAA + AAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAA + A5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAA + AAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAW + SUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAA + AAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNo + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAA + AAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBS + R0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAA + AAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVs + dCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAA + AAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAA + AAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25k + aXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAA + AAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29u + ZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAA + AAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4A + AAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFz + AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAC + jwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAA + BAAAAAAFAAoADwAUABkAHgAjACgALQAyADcA + OwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8 + AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwA + wQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEH + AQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkB + YAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHB + AckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8C + OAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2 + AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MD + TwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APs + A/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoE + qAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVn + BXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcG + SAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcr + Bz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8I + MghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6 + CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQK + agqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuY + C7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM + 8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5J + DmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MP + zw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFP + EW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMT + AxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixSt + FM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwW + jxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhl + GIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEa + dxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7 + HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQe + vh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDw + IRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgj + ZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXH + JfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8o + cSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysC + KzYraSudK9EsBSw5LG4soizXLQwtQS12Last + 4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCk + MNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38z + uDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjau + Nuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5 + +To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0i + PWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRA + pkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQD + REdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tH + wEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtT + S5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBP + SU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MT + U19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdX + RFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtF + W5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ff + s2AFYFdgqmD8YU9homH1YklinGLwY0Njl2Pr + ZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9o + lmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20I + bWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx + 8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnab + dvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7 + wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4Co + gQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauG + DoZyhteHO4efiASIaYjOiTOJmYn+imSKyosw + i5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q + 1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0 + lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+c + HJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2 + oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n + 4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24 + ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660 + JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7 + urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA + 7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dB + x7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXO + Ns62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL + 1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724Dc + BdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb + 42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDq + W+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy + 8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5 + OPnH+lf65/t3/Af8mP0p/br+S/7c/23//4AE + 0h4fICFaJGNsYXNzbmFtZVgkY2xhc3Nlc11O + U011dGFibGVEYXRhoyAiI1ZOU0RhdGFYTlNP + YmplY3TSHh8lJlxOU0NvbG9yU3BhY2WiJyNc + TlNDb2xvclNwYWNl0h4fKSpXTlNDb2xvcqIr + I1dOU0NvbG9yXxAPTlNLZXllZEFyY2hpdmVy + 0S4vVHJvb3SAAQAIABEAGgAjAC0AMgA3AD8A + RQBQAF0AYwBwAIUAjACUAJsAnQCfAKEAqACt + ALMAtQC3ALkAvgDGDRINFA0ZDSQNLQ07DT8N + Rg1PDVQNYQ1kDXENdg1+DYENiQ2bDZ4NowAA + AAAAAAIBAAAAAAAAADAAAAAAAAAAAAAAAAAA + AA2l + b - 1 + 0 g - 1 + 0 r - 1 + 0 Font HiraKakuPro-W3 @@ -3526,6 +5082,153 @@ ShapedGraphic FontInfo + Color + + archive + + YnBsaXN0MDDUAQIDBAUGLC1YJHZlcnNpb25Y + JG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGG + oKcHCBMZHSQoVSRudWxs1QkKCwwNDg8QERJc + TlNDb21wb25lbnRzVU5TUkdCXE5TQ29sb3JT + cGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYk + Y2xhc3NHMCAwIDAgMUYwIDAgMAAQAYACgAbT + FBUNFhcYVE5TSURVTlNJQ0MQB4ADgAXSGg0b + HFdOUy5kYXRhTxEMSAAADEhMaW5vAhAAAG1u + dHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BN + U0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAA + AAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MA + AAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIE + AAAAFHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAA + FGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRt + ZGQAAALEAAAAiHZ1ZWQAAANMAAAAhnZpZXcA + AAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQM + AAAAJHRlY2gAAAQwAAAADHJUUkMAAAQ8AAAI + DGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRl + eHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhl + d2xldHQtUGFja2FyZCBDb21wYW55AABkZXNj + AAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAA + AAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4x + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVog + AAAAAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAA + AAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAA + A5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAA + AAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAW + SUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAA + AAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNo + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAA + AAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBS + R0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAA + AAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVs + dCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAA + AAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAA + AAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25k + aXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAA + AAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29u + ZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAA + AAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4A + AAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFz + AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAC + jwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAA + BAAAAAAFAAoADwAUABkAHgAjACgALQAyADcA + OwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8 + AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwA + wQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEH + AQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkB + YAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHB + AckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8C + OAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2 + AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MD + TwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APs + A/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoE + qAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVn + BXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcG + SAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcr + Bz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8I + MghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6 + CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQK + agqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuY + C7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM + 8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5J + DmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MP + zw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFP + EW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMT + AxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixSt + FM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwW + jxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhl + GIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEa + dxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7 + HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQe + vh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDw + IRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgj + ZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXH + JfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8o + cSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysC + KzYraSudK9EsBSw5LG4soizXLQwtQS12Last + 4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCk + MNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38z + uDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjau + Nuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5 + +To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0i + PWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRA + pkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQD + REdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tH + wEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtT + S5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBP + SU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MT + U19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdX + RFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtF + W5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ff + s2AFYFdgqmD8YU9homH1YklinGLwY0Njl2Pr + ZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9o + lmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20I + bWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx + 8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnab + dvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7 + wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4Co + gQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauG + DoZyhteHO4efiASIaYjOiTOJmYn+imSKyosw + i5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q + 1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0 + lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+c + HJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2 + oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n + 4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24 + ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660 + JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7 + urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA + 7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dB + x7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXO + Ns62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL + 1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724Dc + BdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb + 42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDq + W+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy + 8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5 + OPnH+lf65/t3/Af8mP0p/br+S/7c/23//4AE + 0h4fICFaJGNsYXNzbmFtZVgkY2xhc3Nlc11O + U011dGFibGVEYXRhoyAiI1ZOU0RhdGFYTlNP + YmplY3TSHh8lJlxOU0NvbG9yU3BhY2WiJyNc + TlNDb2xvclNwYWNl0h4fKSpXTlNDb2xvcqIr + I1dOU0NvbG9yXxAPTlNLZXllZEFyY2hpdmVy + 0S4vVHJvb3SAAQAIABEAGgAjAC0AMgA3AD8A + RQBQAF0AYwBwAIUAjACUAJsAnQCfAKEAqACt + ALMAtQC3ALkAvgDGDRINFA0ZDSQNLQ07DT8N + Rg1PDVQNYQ1kDXENdg1+DYENiQ2bDZ4NowAA + AAAAAAIBAAAAAAAAADAAAAAAAAAAAAAAAAAA + AA2l + + b + 0 + g + 0 + r + 0 + Font HiraKakuProN-W3 Size @@ -3575,6 +5278,153 @@ ShapedGraphic FontInfo + Color + + archive + + YnBsaXN0MDDUAQIDBAUGLC1YJHZlcnNpb25Y + JG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGG + oKcHCBMZHSQoVSRudWxs1QkKCwwNDg8QERJc + TlNDb21wb25lbnRzVU5TUkdCXE5TQ29sb3JT + cGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYk + Y2xhc3NHMCAwIDAgMUYwIDAgMAAQAYACgAbT + FBUNFhcYVE5TSURVTlNJQ0MQB4ADgAXSGg0b + HFdOUy5kYXRhTxEMSAAADEhMaW5vAhAAAG1u + dHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BN + U0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAA + AAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MA + AAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIE + AAAAFHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAA + FGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRt + ZGQAAALEAAAAiHZ1ZWQAAANMAAAAhnZpZXcA + AAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQM + AAAAJHRlY2gAAAQwAAAADHJUUkMAAAQ8AAAI + DGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRl + eHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhl + d2xldHQtUGFja2FyZCBDb21wYW55AABkZXNj + AAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAA + AAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4x + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVog + AAAAAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAA + AAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAA + A5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAA + AAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAW + SUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAA + AAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNo + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAA + AAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBS + R0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAA + AAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVs + dCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAA + AAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAA + AAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25k + aXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAA + AAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29u + ZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAA + AAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4A + AAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFz + AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAC + jwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAA + BAAAAAAFAAoADwAUABkAHgAjACgALQAyADcA + OwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8 + AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwA + wQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEH + AQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkB + YAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHB + AckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8C + OAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2 + AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MD + TwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APs + A/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoE + qAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVn + BXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcG + SAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcr + Bz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8I + MghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6 + CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQK + agqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuY + C7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM + 8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5J + DmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MP + zw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFP + EW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMT + AxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixSt + FM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwW + jxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhl + GIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEa + dxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7 + HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQe + vh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDw + IRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgj + ZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXH + JfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8o + cSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysC + KzYraSudK9EsBSw5LG4soizXLQwtQS12Last + 4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCk + MNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38z + uDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjau + Nuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5 + +To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0i + PWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRA + pkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQD + REdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tH + wEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtT + S5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBP + SU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MT + U19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdX + RFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtF + W5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ff + s2AFYFdgqmD8YU9homH1YklinGLwY0Njl2Pr + ZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9o + lmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20I + bWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx + 8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnab + dvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7 + wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4Co + gQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauG + DoZyhteHO4efiASIaYjOiTOJmYn+imSKyosw + i5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q + 1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0 + lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+c + HJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2 + oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n + 4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24 + ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660 + JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7 + urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA + 7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dB + x7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXO + Ns62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL + 1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724Dc + BdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb + 42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDq + W+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy + 8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5 + OPnH+lf65/t3/Af8mP0p/br+S/7c/23//4AE + 0h4fICFaJGNsYXNzbmFtZVgkY2xhc3Nlc11O + U011dGFibGVEYXRhoyAiI1ZOU0RhdGFYTlNP + YmplY3TSHh8lJlxOU0NvbG9yU3BhY2WiJyNc + TlNDb2xvclNwYWNl0h4fKSpXTlNDb2xvcqIr + I1dOU0NvbG9yXxAPTlNLZXllZEFyY2hpdmVy + 0S4vVHJvb3SAAQAIABEAGgAjAC0AMgA3AD8A + RQBQAF0AYwBwAIUAjACUAJsAnQCfAKEAqACt + ALMAtQC3ALkAvgDGDRINFA0ZDSQNLQ07DT8N + Rg1PDVQNYQ1kDXENdg1+DYENiQ2bDZ4NowAA + AAAAAAIBAAAAAAAAADAAAAAAAAAAAAAAAAAA + AA2l + + b + 0 + g + 0 + r + 0 + Font HiraKakuProN-W3 Size @@ -3624,6 +5474,153 @@ ShapedGraphic FontInfo + Color + + archive + + YnBsaXN0MDDUAQIDBAUGLC1YJHZlcnNpb25Y + JG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGG + oKcHCBMZHSQoVSRudWxs1QkKCwwNDg8QERJc + TlNDb21wb25lbnRzVU5TUkdCXE5TQ29sb3JT + cGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYk + Y2xhc3NHMCAwIDAgMUYwIDAgMAAQAYACgAbT + FBUNFhcYVE5TSURVTlNJQ0MQB4ADgAXSGg0b + HFdOUy5kYXRhTxEMSAAADEhMaW5vAhAAAG1u + dHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BN + U0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAA + AAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MA + AAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIE + AAAAFHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAA + FGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRt + ZGQAAALEAAAAiHZ1ZWQAAANMAAAAhnZpZXcA + AAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQM + AAAAJHRlY2gAAAQwAAAADHJUUkMAAAQ8AAAI + DGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRl + eHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhl + d2xldHQtUGFja2FyZCBDb21wYW55AABkZXNj + AAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAA + AAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4x + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVog + AAAAAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAA + AAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAA + A5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAA + AAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAW + SUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAA + AAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNo + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAA + AAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBS + R0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAA + AAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVs + dCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAA + AAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAA + AAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25k + aXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAA + AAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29u + ZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAA + AAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4A + AAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFz + AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAC + jwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAA + BAAAAAAFAAoADwAUABkAHgAjACgALQAyADcA + OwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8 + AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwA + wQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEH + AQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkB + YAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHB + AckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8C + OAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2 + AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MD + TwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APs + A/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoE + qAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVn + BXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcG + SAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcr + Bz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8I + MghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6 + CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQK + agqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuY + C7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM + 8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5J + DmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MP + zw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFP + EW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMT + AxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixSt + FM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwW + jxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhl + GIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEa + dxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7 + HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQe + vh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDw + IRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgj + ZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXH + JfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8o + cSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysC + KzYraSudK9EsBSw5LG4soizXLQwtQS12Last + 4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCk + MNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38z + uDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjau + Nuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5 + +To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0i + PWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRA + pkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQD + REdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tH + wEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtT + S5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBP + SU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MT + U19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdX + RFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtF + W5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ff + s2AFYFdgqmD8YU9homH1YklinGLwY0Njl2Pr + ZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9o + lmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20I + bWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx + 8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnab + dvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7 + wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4Co + gQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauG + DoZyhteHO4efiASIaYjOiTOJmYn+imSKyosw + i5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q + 1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0 + lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+c + HJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2 + oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n + 4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24 + ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660 + JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7 + urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA + 7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dB + x7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXO + Ns62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL + 1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724Dc + BdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb + 42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDq + W+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy + 8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5 + OPnH+lf65/t3/Af8mP0p/br+S/7c/23//4AE + 0h4fICFaJGNsYXNzbmFtZVgkY2xhc3Nlc11O + U011dGFibGVEYXRhoyAiI1ZOU0RhdGFYTlNP + YmplY3TSHh8lJlxOU0NvbG9yU3BhY2WiJyNc + TlNDb2xvclNwYWNl0h4fKSpXTlNDb2xvcqIr + I1dOU0NvbG9yXxAPTlNLZXllZEFyY2hpdmVy + 0S4vVHJvb3SAAQAIABEAGgAjAC0AMgA3AD8A + RQBQAF0AYwBwAIUAjACUAJsAnQCfAKEAqACt + ALMAtQC3ALkAvgDGDRINFA0ZDSQNLQ07DT8N + Rg1PDVQNYQ1kDXENdg1+DYENiQ2bDZ4NowAA + AAAAAAIBAAAAAAAAADAAAAAAAAAAAAAAAAAA + AA2l + + b + 0 + g + 0 + r + 0 + Font HiraKakuProN-W3 Size @@ -3665,6 +5662,8 @@ VerticalPad 0 + TextRelativeArea + {{0, 0}, {1, 1}} Bounds @@ -3692,7 +5691,7 @@ 24 ID - 118 + 502 Shape Circle Style @@ -3753,7 +5752,7 @@ Class LineGraphic ID - 117 + 503 Points {352.25993728637695, 103.00321976937084} @@ -3822,7 +5821,7 @@ MasterSheets ModificationDate - 2017-02-07 09:16:06 +0000 + 2017-02-09 08:22:50 +0000 Modifier sister_clown NotesVisible @@ -3912,7 +5911,7 @@ SidebarWidth 120 VisibleRegion - {{16, 0}, {904, 764}} + {{0, 0}, {918, 779}} Zoom 1 ZoomValues diff -r e4da23b04260 -r 33d8077a5d45 figures/badDifTree2.graffle --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/figures/badDifTree2.graffle Thu Feb 09 17:25:56 2017 +0900 @@ -0,0 +1,1974 @@ + + + + + ActiveLayerIndex + 0 + ApplicationVersion + + com.omnigroup.OmniGraffle + 139.16.0.171715 + + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {1118, 783}} + Class + SolidGraphic + ID + 2 + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + BaseZoom + 0 + CanvasOrigin + {0, 0} + ColumnAlign + 1 + ColumnSpacing + 36 + CreationDate + 2017-02-08 19:06:16 +0000 + Creator + sister_clown + DisplayScale + 1 0/72 in = 1 0/72 in + GraphDocumentVersion + 8 + GraphicsList + + + Class + LineGraphic + Head + + ID + 183 + Info + 2 + + ID + 184 + Points + + {490.625, 374.25} + {436, 391.49999151757834} + + Style + + stroke + + Color + + archive + + YnBsaXN0MDDUAQIDBAUGLC1YJHZl + cnNpb25YJG9iamVjdHNZJGFyY2hp + dmVyVCR0b3ASAAGGoKcHCBMZHSQo + VSRudWxs1QkKCwwNDg8QERJcTlND + b21wb25lbnRzVU5TUkdCXE5TQ29s + b3JTcGFjZV8QEk5TQ3VzdG9tQ29s + b3JTcGFjZVYkY2xhc3NPEBMwIDAu + MDE2MDYyNjA4ODcgMSAxTxARMCAw + IDAuOTk4MTkwMDQ1NAAQAYACgAbT + FBUNFhcYVE5TSURVTlNJQ0MQB4AD + gAXSGg0bHFdOUy5kYXRhTxEMSAAA + DEhMaW5vAhAAAG1udHJSR0IgWFla + IAfOAAIACQAGADEAAGFjc3BNU0ZU + AAAAAElFQyBzUkdCAAAAAAAAAAAA + AAAAAAD21gABAAAAANMtSFAgIAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAEWNwcnQAAAFQAAAAM2Rlc2MA + AAGEAAAAbHd0cHQAAAHwAAAAFGJr + cHQAAAIEAAAAFHJYWVoAAAIYAAAA + FGdYWVoAAAIsAAAAFGJYWVoAAAJA + AAAAFGRtbmQAAAJUAAAAcGRtZGQA + AALEAAAAiHZ1ZWQAAANMAAAAhnZp + ZXcAAAPUAAAAJGx1bWkAAAP4AAAA + FG1lYXMAAAQMAAAAJHRlY2gAAAQw + AAAADHJUUkMAAAQ8AAAIDGdUUkMA + AAQ8AAAIDGJUUkMAAAQ8AAAIDHRl + eHQAAAAAQ29weXJpZ2h0IChjKSAx + OTk4IEhld2xldHQtUGFja2FyZCBD + b21wYW55AABkZXNjAAAAAAAAABJz + UkdCIElFQzYxOTY2LTIuMQAAAAAA + AAAAAAAAEnNSR0IgSUVDNjE5NjYt + Mi4xAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAABYWVogAAAAAAAA + 81EAAQAAAAEWzFhZWiAAAAAAAAAA + AAAAAAAAAAAAWFlaIAAAAAAAAG+i + AAA49QAAA5BYWVogAAAAAAAAYpkA + ALeFAAAY2lhZWiAAAAAAAAAkoAAA + D4QAALbPZGVzYwAAAAAAAAAWSUVD + IGh0dHA6Ly93d3cuaWVjLmNoAAAA + AAAAAAAAAAAWSUVDIGh0dHA6Ly93 + d3cuaWVjLmNoAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAGRlc2MAAAAA + AAAALklFQyA2MTk2Ni0yLjEgRGVm + YXVsdCBSR0IgY29sb3VyIHNwYWNl + IC0gc1JHQgAAAAAAAAAAAAAALklF + QyA2MTk2Ni0yLjEgRGVmYXVsdCBS + R0IgY29sb3VyIHNwYWNlIC0gc1JH + QgAAAAAAAAAAAAAAAAAAAAAAAAAA + AABkZXNjAAAAAAAAACxSZWZlcmVu + Y2UgVmlld2luZyBDb25kaXRpb24g + aW4gSUVDNjE5NjYtMi4xAAAAAAAA + AAAAAAAsUmVmZXJlbmNlIFZpZXdp + bmcgQ29uZGl0aW9uIGluIElFQzYx + OTY2LTIuMQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAdmlldwAAAAAA + E6T+ABRfLgAQzxQAA+3MAAQTCwAD + XJ4AAAABWFlaIAAAAAAATAlWAFAA + AABXH+dtZWFzAAAAAAAAAAEAAAAA + AAAAAAAAAAAAAAAAAAACjwAAAAJz + aWcgAAAAAENSVCBjdXJ2AAAAAAAA + BAAAAAAFAAoADwAUABkAHgAjACgA + LQAyADcAOwBAAEUASgBPAFQAWQBe + AGMAaABtAHIAdwB8AIEAhgCLAJAA + lQCaAJ8ApACpAK4AsgC3ALwAwQDG + AMsA0ADVANsA4ADlAOsA8AD2APsB + AQEHAQ0BEwEZAR8BJQErATIBOAE+ + AUUBTAFSAVkBYAFnAW4BdQF8AYMB + iwGSAZoBoQGpAbEBuQHBAckB0QHZ + AeEB6QHyAfoCAwIMAhQCHQImAi8C + OAJBAksCVAJdAmcCcQJ6AoQCjgKY + AqICrAK2AsECywLVAuAC6wL1AwAD + CwMWAyEDLQM4A0MDTwNaA2YDcgN+ + A4oDlgOiA64DugPHA9MD4APsA/kE + BgQTBCAELQQ7BEgEVQRjBHEEfgSM + BJoEqAS2BMQE0wThBPAE/gUNBRwF + KwU6BUkFWAVnBXcFhgWWBaYFtQXF + BdUF5QX2BgYGFgYnBjcGSAZZBmoG + ewaMBp0GrwbABtEG4wb1BwcHGQcr + Bz0HTwdhB3QHhgeZB6wHvwfSB+UH + +AgLCB8IMghGCFoIbgiCCJYIqgi+ + CNII5wj7CRAJJQk6CU8JZAl5CY8J + pAm6Cc8J5Qn7ChEKJwo9ClQKagqB + CpgKrgrFCtwK8wsLCyILOQtRC2kL + gAuYC7ALyAvhC/kMEgwqDEMMXAx1 + DI4MpwzADNkM8w0NDSYNQA1aDXQN + jg2pDcMN3g34DhMOLg5JDmQOfw6b + DrYO0g7uDwkPJQ9BD14Peg+WD7MP + zw/sEAkQJhBDEGEQfhCbELkQ1xD1 + ERMRMRFPEW0RjBGqEckR6BIHEiYS + RRJkEoQSoxLDEuMTAxMjE0MTYxOD + E6QTxRPlFAYUJxRJFGoUixStFM4U + 8BUSFTQVVhV4FZsVvRXgFgMWJhZJ + FmwWjxayFtYW+hcdF0EXZReJF64X + 0hf3GBsYQBhlGIoYrxjVGPoZIBlF + GWsZkRm3Gd0aBBoqGlEadxqeGsUa + 7BsUGzsbYxuKG7Ib2hwCHCocUhx7 + HKMczBz1HR4dRx1wHZkdwx3sHhYe + QB5qHpQevh7pHxMfPh9pH5Qfvx/q + IBUgQSBsIJggxCDwIRwhSCF1IaEh + ziH7IiciVSKCIq8i3SMKIzgjZiOU + I8Ij8CQfJE0kfCSrJNolCSU4JWgl + lyXHJfcmJyZXJocmtyboJxgnSSd6 + J6sn3CgNKD8ocSiiKNQpBik4KWsp + nSnQKgIqNSpoKpsqzysCKzYraSud + K9EsBSw5LG4soizXLQwtQS12Last + 4S4WLkwugi63Lu4vJC9aL5Evxy/+ + MDUwbDCkMNsxEjFKMYIxujHyMioy + YzKbMtQzDTNGM38zuDPxNCs0ZTSe + NNg1EzVNNYc1wjX9Njc2cjauNuk3 + JDdgN5w31zgUOFA4jDjIOQU5Qjl/ + Obw5+To2OnQ6sjrvOy07azuqO+g8 + JzxlPKQ84z0iPWE9oT3gPiA+YD6g + PuA/IT9hP6I/4kAjQGRApkDnQSlB + akGsQe5CMEJyQrVC90M6Q31DwEQD + REdEikTORRJFVUWaRd5GIkZnRqtG + 8Ec1R3tHwEgFSEtIkUjXSR1JY0mp + SfBKN0p9SsRLDEtTS5pL4kwqTHJM + uk0CTUpNk03cTiVObk63TwBPSU+T + T91QJ1BxULtRBlFQUZtR5lIxUnxS + x1MTU19TqlP2VEJUj1TbVShVdVXC + Vg9WXFapVvdXRFeSV+BYL1h9WMtZ + GllpWbhaB1pWWqZa9VtFW5Vb5Vw1 + XIZc1l0nXXhdyV4aXmxevV8PX2Ff + s2AFYFdgqmD8YU9homH1YklinGLw + Y0Njl2PrZEBklGTpZT1lkmXnZj1m + kmboZz1nk2fpaD9olmjsaUNpmmnx + akhqn2r3a09rp2v/bFdsr20IbWBt + uW4SbmtuxG8eb3hv0XArcIZw4HE6 + cZVx8HJLcqZzAXNdc7h0FHRwdMx1 + KHWFdeF2Pnabdvh3VnezeBF4bnjM + eSp5iXnnekZ6pXsEe2N7wnwhfIF8 + 4X1BfaF+AX5ifsJ/I3+Ef+WAR4Co + gQqBa4HNgjCCkoL0g1eDuoQdhICE + 44VHhauGDoZyhteHO4efiASIaYjO + iTOJmYn+imSKyoswi5aL/IxjjMqN + MY2Yjf+OZo7OjzaPnpAGkG6Q1pE/ + kaiSEZJ6kuOTTZO2lCCUipT0lV+V + yZY0lp+XCpd1l+CYTJi4mSSZkJn8 + mmia1ZtCm6+cHJyJnPedZJ3SnkCe + rp8dn4uf+qBpoNihR6G2oiailqMG + o3aj5qRWpMelOKWpphqmi6b9p26n + 4KhSqMSpN6mpqhyqj6sCq3Wr6axc + rNCtRK24ri2uoa8Wr4uwALB1sOqx + YLHWskuywrM4s660JbSctRO1irYB + tnm28Ldot+C4WbjRuUq5wro7urW7 + LrunvCG8m70VvY++Cr6Evv+/er/1 + wHDA7MFnwePCX8Lbw1jD1MRRxM7F + S8XIxkbGw8dBx7/IPci8yTrJuco4 + yrfLNsu2zDXMtc01zbXONs62zzfP + uNA50LrRPNG+0j/SwdNE08bUSdTL + 1U7V0dZV1tjXXNfg2GTY6Nls2fHa + dtr724DcBdyK3RDdlt4c3qLfKd+v + 4DbgveFE4cziU+Lb42Pj6+Rz5Pzl + hOYN5pbnH+ep6DLovOlG6dDqW+rl + 63Dr++yG7RHtnO4o7rTvQO/M8Fjw + 5fFy8f/yjPMZ86f0NPTC9VD13vZt + 9vv3ivgZ+Kj5OPnH+lf65/t3/Af8 + mP0p/br+S/7c/23//4AE0h4fICFa + JGNsYXNzbmFtZVgkY2xhc3Nlc11O + U011dGFibGVEYXRhoyAiI1ZOU0Rh + dGFYTlNPYmplY3TSHh8lJlxOU0Nv + bG9yU3BhY2WiJyNcTlNDb2xvclNw + YWNl0h4fKSpXTlNDb2xvcqIrI1dO + U0NvbG9yXxAPTlNLZXllZEFyY2hp + dmVy0S4vVHJvb3SAAQAIABEAGgAj + AC0AMgA3AD8ARQBQAF0AYwBwAIUA + jACiALYAuAC6ALwAwwDIAM4A0ADS + ANQA2QDhDS0NLw00DT8NSA1WDVoN + YQ1qDW8NfA1/DYwNkQ2ZDZwNpA22 + DbkNvgAAAAAAAAIBAAAAAAAAADAA + AAAAAAAAAAAAAAAAAA3A + + b + 0.99819 + g + 0 + r + 0 + + HeadArrow + 0 + Join + 0 + Legacy + + TailArrow + 0 + + + Tail + + ID + 173 + Info + 1 + + + + Bounds + {{396, 391.50001101757823}, {80, 78}} + Class + ShapedGraphic + FontInfo + + Font + HiraKakuProN-W3 + Size + 12 + + ID + 183 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Circle + Style + + shadow + + Draws + NO + + stroke + + Color + + archive + + YnBsaXN0MDDUAQIDBAUGLC1YJHZl + cnNpb25YJG9iamVjdHNZJGFyY2hp + dmVyVCR0b3ASAAGGoKcHCBMZHSQo + VSRudWxs1QkKCwwNDg8QERJcTlND + b21wb25lbnRzVU5TUkdCXE5TQ29s + b3JTcGFjZV8QEk5TQ3VzdG9tQ29s + b3JTcGFjZVYkY2xhc3NPEBQwLjAw + MTI2NTg2NDM5NSAwIDEgMU8QETAg + MCAwLjk5ODE4OTA5MTcAEAGAAoAG + 0xQVDRYXGFROU0lEVU5TSUNDEAeA + A4AF0hoNGxxXTlMuZGF0YU8RDEgA + AAxITGlubwIQAABtbnRyUkdCIFhZ + WiAHzgACAAkABgAxAABhY3NwTVNG + VAAAAABJRUMgc1JHQgAAAAAAAAAA + AAAAAAAA9tYAAQAAAADTLUhQICAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAABFjcHJ0AAABUAAAADNkZXNj + AAABhAAAAGx3dHB0AAAB8AAAABRi + a3B0AAACBAAAABRyWFlaAAACGAAA + ABRnWFlaAAACLAAAABRiWFlaAAAC + QAAAABRkbW5kAAACVAAAAHBkbWRk + AAACxAAAAIh2dWVkAAADTAAAAIZ2 + aWV3AAAD1AAAACRsdW1pAAAD+AAA + ABRtZWFzAAAEDAAAACR0ZWNoAAAE + MAAAAAxyVFJDAAAEPAAACAxnVFJD + AAAEPAAACAxiVFJDAAAEPAAACAx0 + ZXh0AAAAAENvcHlyaWdodCAoYykg + MTk5OCBIZXdsZXR0LVBhY2thcmQg + Q29tcGFueQAAZGVzYwAAAAAAAAAS + c1JHQiBJRUM2MTk2Ni0yLjEAAAAA + AAAAAAAAABJzUkdCIElFQzYxOTY2 + LTIuMQAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAWFlaIAAAAAAA + APNRAAEAAAABFsxYWVogAAAAAAAA + AAAAAAAAAAAAAFhZWiAAAAAAAABv + ogAAOPUAAAOQWFlaIAAAAAAAAGKZ + AAC3hQAAGNpYWVogAAAAAAAAJKAA + AA+EAAC2z2Rlc2MAAAAAAAAAFklF + QyBodHRwOi8vd3d3LmllYy5jaAAA + AAAAAAAAAAAAFklFQyBodHRwOi8v + d3d3LmllYy5jaAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABkZXNjAAAA + AAAAAC5JRUMgNjE5NjYtMi4xIERl + ZmF1bHQgUkdCIGNvbG91ciBzcGFj + ZSAtIHNSR0IAAAAAAAAAAAAAAC5J + RUMgNjE5NjYtMi4xIERlZmF1bHQg + UkdCIGNvbG91ciBzcGFjZSAtIHNS + R0IAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAZGVzYwAAAAAAAAAsUmVmZXJl + bmNlIFZpZXdpbmcgQ29uZGl0aW9u + IGluIElFQzYxOTY2LTIuMQAAAAAA + AAAAAAAALFJlZmVyZW5jZSBWaWV3 + aW5nIENvbmRpdGlvbiBpbiBJRUM2 + MTk2Ni0yLjEAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAHZpZXcAAAAA + ABOk/gAUXy4AEM8UAAPtzAAEEwsA + A1yeAAAAAVhZWiAAAAAAAEwJVgBQ + AAAAVx/nbWVhcwAAAAAAAAABAAAA + AAAAAAAAAAAAAAAAAAAAAo8AAAAC + c2lnIAAAAABDUlQgY3VydgAAAAAA + AAQAAAAABQAKAA8AFAAZAB4AIwAo + AC0AMgA3ADsAQABFAEoATwBUAFkA + XgBjAGgAbQByAHcAfACBAIYAiwCQ + AJUAmgCfAKQAqQCuALIAtwC8AMEA + xgDLANAA1QDbAOAA5QDrAPAA9gD7 + AQEBBwENARMBGQEfASUBKwEyATgB + PgFFAUwBUgFZAWABZwFuAXUBfAGD + AYsBkgGaAaEBqQGxAbkBwQHJAdEB + 2QHhAekB8gH6AgMCDAIUAh0CJgIv + AjgCQQJLAlQCXQJnAnECegKEAo4C + mAKiAqwCtgLBAssC1QLgAusC9QMA + AwsDFgMhAy0DOANDA08DWgNmA3ID + fgOKA5YDogOuA7oDxwPTA+AD7AP5 + BAYEEwQgBC0EOwRIBFUEYwRxBH4E + jASaBKgEtgTEBNME4QTwBP4FDQUc + BSsFOgVJBVgFZwV3BYYFlgWmBbUF + xQXVBeUF9gYGBhYGJwY3BkgGWQZq + BnsGjAadBq8GwAbRBuMG9QcHBxkH + Kwc9B08HYQd0B4YHmQesB78H0gfl + B/gICwgfCDIIRghaCG4IggiWCKoI + vgjSCOcI+wkQCSUJOglPCWQJeQmP + CaQJugnPCeUJ+woRCicKPQpUCmoK + gQqYCq4KxQrcCvMLCwsiCzkLUQtp + C4ALmAuwC8gL4Qv5DBIMKgxDDFwM + dQyODKcMwAzZDPMNDQ0mDUANWg10 + DY4NqQ3DDd4N+A4TDi4OSQ5kDn8O + mw62DtIO7g8JDyUPQQ9eD3oPlg+z + D88P7BAJECYQQxBhEH4QmxC5ENcQ + 9RETETERTxFtEYwRqhHJEegSBxIm + EkUSZBKEEqMSwxLjEwMTIxNDE2MT + gxOkE8UT5RQGFCcUSRRqFIsUrRTO + FPAVEhU0FVYVeBWbFb0V4BYDFiYW + SRZsFo8WshbWFvoXHRdBF2UXiReu + F9IX9xgbGEAYZRiKGK8Y1Rj6GSAZ + RRlrGZEZtxndGgQaKhpRGncanhrF + GuwbFBs7G2MbihuyG9ocAhwqHFIc + exyjHMwc9R0eHUcdcB2ZHcMd7B4W + HkAeah6UHr4e6R8THz4faR+UH78f + 6iAVIEEgbCCYIMQg8CEcIUghdSGh + Ic4h+yInIlUigiKvIt0jCiM4I2Yj + lCPCI/AkHyRNJHwkqyTaJQklOCVo + JZclxyX3JicmVyaHJrcm6CcYJ0kn + eierJ9woDSg/KHEooijUKQYpOClr + KZ0p0CoCKjUqaCqbKs8rAis2K2kr + nSvRLAUsOSxuLKIs1y0MLUEtdi2r + LeEuFi5MLoIuty7uLyQvWi+RL8cv + /jA1MGwwpDDbMRIxSjGCMbox8jIq + MmMymzLUMw0zRjN/M7gz8TQrNGU0 + njTYNRM1TTWHNcI1/TY3NnI2rjbp + NyQ3YDecN9c4FDhQOIw4yDkFOUI5 + fzm8Ofk6Njp0OrI67zstO2s7qjvo + PCc8ZTykPOM9Ij1hPaE94D4gPmA+ + oD7gPyE/YT+iP+JAI0BkQKZA50Ep + QWpBrEHuQjBCckK1QvdDOkN9Q8BE + A0RHRIpEzkUSRVVFmkXeRiJGZ0ar + RvBHNUd7R8BIBUhLSJFI10kdSWNJ + qUnwSjdKfUrESwxLU0uaS+JMKkxy + TLpNAk1KTZNN3E4lTm5Ot08AT0lP + k0/dUCdQcVC7UQZRUFGbUeZSMVJ8 + UsdTE1NfU6pT9lRCVI9U21UoVXVV + wlYPVlxWqVb3V0RXklfgWC9YfVjL + WRpZaVm4WgdaVlqmWvVbRVuVW+Vc + NVyGXNZdJ114XcleGl5sXr1fD19h + X7NgBWBXYKpg/GFPYaJh9WJJYpxi + 8GNDY5dj62RAZJRk6WU9ZZJl52Y9 + ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp + 8WpIap9q92tPa6dr/2xXbK9tCG1g + bbluEm5rbsRvHm94b9FwK3CGcOBx + OnGVcfByS3KmcwFzXXO4dBR0cHTM + dSh1hXXhdj52m3b4d1Z3s3gReG54 + zHkqeYl553pGeqV7BHtje8J8IXyB + fOF9QX2hfgF+Yn7CfyN/hH/lgEeA + qIEKgWuBzYIwgpKC9INXg7qEHYSA + hOOFR4Wrhg6GcobXhzuHn4gEiGmI + zokziZmJ/opkisqLMIuWi/yMY4zK + jTGNmI3/jmaOzo82j56QBpBukNaR + P5GokhGSepLjk02TtpQglIqU9JVf + lcmWNJaflwqXdZfgmEyYuJkkmZCZ + /JpomtWbQpuvnByciZz3nWSd0p5A + nq6fHZ+Ln/qgaaDYoUehtqImopaj + BqN2o+akVqTHpTilqaYapoum/adu + p+CoUqjEqTepqaocqo+rAqt1q+ms + XKzQrUStuK4trqGvFq+LsACwdbDq + sWCx1rJLssKzOLOutCW0nLUTtYq2 + AbZ5tvC3aLfguFm40blKucK6O7q1 + uy67p7whvJu9Fb2Pvgq+hL7/v3q/ + 9cBwwOzBZ8Hjwl/C28NYw9TEUcTO + xUvFyMZGxsPHQce/yD3IvMk6ybnK + OMq3yzbLtsw1zLXNNc21zjbOts83 + z7jQOdC60TzRvtI/0sHTRNPG1EnU + y9VO1dHWVdbY11zX4Nhk2OjZbNnx + 2nba+9uA3AXcit0Q3ZbeHN6i3ynf + r+A24L3hROHM4lPi2+Nj4+vkc+T8 + 5YTmDeaW5x/nqegy6LzpRunQ6lvq + 5etw6/vshu0R7ZzuKO6070DvzPBY + 8OXxcvH/8ozzGfOn9DT0wvVQ9d72 + bfb794r4Gfio+Tj5x/pX+uf7d/wH + /Jj9Kf26/kv+3P9t//+ABNIeHyAh + WiRjbGFzc25hbWVYJGNsYXNzZXNd + TlNNdXRhYmxlRGF0YaMgIiNWTlNE + YXRhWE5TT2JqZWN00h4fJSZcTlND + b2xvclNwYWNloicjXE5TQ29sb3JT + cGFjZdIeHykqV05TQ29sb3KiKyNX + TlNDb2xvcl8QD05TS2V5ZWRBcmNo + aXZlctEuL1Ryb290gAEACAARABoA + IwAtADIANwA/AEUAUABdAGMAcACF + AIwAowC3ALkAuwC9AMQAyQDPANEA + 0wDVANoA4g0uDTANNQ1ADUkNVw1b + DWINaw1wDX0NgA2NDZINmg2dDaUN + tw26Db8AAAAAAAACAQAAAAAAAAAw + AAAAAAAAAAAAAAAAAAANwQ== + + b + 0.998189 + g + 0 + r + 0 + + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 5\ +\'96\'96\'94\'f6\ +\'83\'6d\'81\'5b\'83\'68} + VerticalPad + 0 + + + + Bounds + {{261, 194.75}, {58, 47}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + HiraKakuPro-W3 + Size + 24 + + ID + 182 + Shape + Circle + Style + + fill + + Color + + b + 0.974573 + g + 0.998064 + r + 1 + + Draws + NO + + shadow + + Color + + a + 0.75 + b + 0.94523 + g + 0.987116 + r + 1 + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuPro-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs48 \cf0 \'95\'db\'8e\'9d} + + TextRelativeArea + {{0, 0}, {1, 1}} + Wrap + NO + + + Class + LineGraphic + ID + 181 + Points + + {490.625, 374.25} + {539.625, 397.74993048242209} + + Style + + stroke + + Color + + archive + + YnBsaXN0MDDUAQIDBAUGLC1YJHZl + cnNpb25YJG9iamVjdHNZJGFyY2hp + dmVyVCR0b3ASAAGGoKcHCBMZHSQo + VSRudWxs1QkKCwwNDg8QERJcTlND + b21wb25lbnRzVU5TUkdCXE5TQ29s + b3JTcGFjZV8QEk5TQ3VzdG9tQ29s + b3JTcGFjZVYkY2xhc3NHMCAwIDAg + MUYwIDAgMAAQAYACgAbTFBUNFhcY + VE5TSURVTlNJQ0MQB4ADgAXSGg0b + HFdOUy5kYXRhTxEMSAAADEhMaW5v + AhAAAG1udHJSR0IgWFlaIAfOAAIA + CQAGADEAAGFjc3BNU0ZUAAAAAElF + QyBzUkdCAAAAAAAAAAAAAAAAAAD2 + 1gABAAAAANMtSFAgIAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAEWNw + cnQAAAFQAAAAM2Rlc2MAAAGEAAAA + bHd0cHQAAAHwAAAAFGJrcHQAAAIE + AAAAFHJYWVoAAAIYAAAAFGdYWVoA + AAIsAAAAFGJYWVoAAAJAAAAAFGRt + bmQAAAJUAAAAcGRtZGQAAALEAAAA + iHZ1ZWQAAANMAAAAhnZpZXcAAAPU + AAAAJGx1bWkAAAP4AAAAFG1lYXMA + AAQMAAAAJHRlY2gAAAQwAAAADHJU + UkMAAAQ8AAAIDGdUUkMAAAQ8AAAI + DGJUUkMAAAQ8AAAIDHRleHQAAAAA + Q29weXJpZ2h0IChjKSAxOTk4IEhl + d2xldHQtUGFja2FyZCBDb21wYW55 + AABkZXNjAAAAAAAAABJzUkdCIElF + QzYxOTY2LTIuMQAAAAAAAAAAAAAA + EnNSR0IgSUVDNjE5NjYtMi4xAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAABYWVogAAAAAAAA81EAAQAA + AAEWzFhZWiAAAAAAAAAAAAAAAAAA + AAAAWFlaIAAAAAAAAG+iAAA49QAA + A5BYWVogAAAAAAAAYpkAALeFAAAY + 2lhZWiAAAAAAAAAkoAAAD4QAALbP + ZGVzYwAAAAAAAAAWSUVDIGh0dHA6 + Ly93d3cuaWVjLmNoAAAAAAAAAAAA + AAAWSUVDIGh0dHA6Ly93d3cuaWVj + LmNoAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAGRlc2MAAAAAAAAALklF + QyA2MTk2Ni0yLjEgRGVmYXVsdCBS + R0IgY29sb3VyIHNwYWNlIC0gc1JH + QgAAAAAAAAAAAAAALklFQyA2MTk2 + Ni0yLjEgRGVmYXVsdCBSR0IgY29s + b3VyIHNwYWNlIC0gc1JHQgAAAAAA + AAAAAAAAAAAAAAAAAAAAAABkZXNj + AAAAAAAAACxSZWZlcmVuY2UgVmll + d2luZyBDb25kaXRpb24gaW4gSUVD + NjE5NjYtMi4xAAAAAAAAAAAAAAAs + UmVmZXJlbmNlIFZpZXdpbmcgQ29u + ZGl0aW9uIGluIElFQzYxOTY2LTIu + MQAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAdmlldwAAAAAAE6T+ABRf + LgAQzxQAA+3MAAQTCwADXJ4AAAAB + WFlaIAAAAAAATAlWAFAAAABXH+dt + ZWFzAAAAAAAAAAEAAAAAAAAAAAAA + AAAAAAAAAAACjwAAAAJzaWcgAAAA + AENSVCBjdXJ2AAAAAAAABAAAAAAF + AAoADwAUABkAHgAjACgALQAyADcA + OwBAAEUASgBPAFQAWQBeAGMAaABt + AHIAdwB8AIEAhgCLAJAAlQCaAJ8A + pACpAK4AsgC3ALwAwQDGAMsA0ADV + ANsA4ADlAOsA8AD2APsBAQEHAQ0B + EwEZAR8BJQErATIBOAE+AUUBTAFS + AVkBYAFnAW4BdQF8AYMBiwGSAZoB + oQGpAbEBuQHBAckB0QHZAeEB6QHy + AfoCAwIMAhQCHQImAi8COAJBAksC + VAJdAmcCcQJ6AoQCjgKYAqICrAK2 + AsECywLVAuAC6wL1AwADCwMWAyED + LQM4A0MDTwNaA2YDcgN+A4oDlgOi + A64DugPHA9MD4APsA/kEBgQTBCAE + LQQ7BEgEVQRjBHEEfgSMBJoEqAS2 + BMQE0wThBPAE/gUNBRwFKwU6BUkF + WAVnBXcFhgWWBaYFtQXFBdUF5QX2 + BgYGFgYnBjcGSAZZBmoGewaMBp0G + rwbABtEG4wb1BwcHGQcrBz0HTwdh + B3QHhgeZB6wHvwfSB+UH+AgLCB8I + MghGCFoIbgiCCJYIqgi+CNII5wj7 + CRAJJQk6CU8JZAl5CY8JpAm6Cc8J + 5Qn7ChEKJwo9ClQKagqBCpgKrgrF + CtwK8wsLCyILOQtRC2kLgAuYC7AL + yAvhC/kMEgwqDEMMXAx1DI4MpwzA + DNkM8w0NDSYNQA1aDXQNjg2pDcMN + 3g34DhMOLg5JDmQOfw6bDrYO0g7u + DwkPJQ9BD14Peg+WD7MPzw/sEAkQ + JhBDEGEQfhCbELkQ1xD1ERMRMRFP + EW0RjBGqEckR6BIHEiYSRRJkEoQS + oxLDEuMTAxMjE0MTYxODE6QTxRPl + FAYUJxRJFGoUixStFM4U8BUSFTQV + VhV4FZsVvRXgFgMWJhZJFmwWjxay + FtYW+hcdF0EXZReJF64X0hf3GBsY + QBhlGIoYrxjVGPoZIBlFGWsZkRm3 + Gd0aBBoqGlEadxqeGsUa7BsUGzsb + YxuKG7Ib2hwCHCocUhx7HKMczBz1 + HR4dRx1wHZkdwx3sHhYeQB5qHpQe + vh7pHxMfPh9pH5Qfvx/qIBUgQSBs + IJggxCDwIRwhSCF1IaEhziH7Iici + VSKCIq8i3SMKIzgjZiOUI8Ij8CQf + JE0kfCSrJNolCSU4JWgllyXHJfcm + JyZXJocmtyboJxgnSSd6J6sn3CgN + KD8ocSiiKNQpBik4KWspnSnQKgIq + NSpoKpsqzysCKzYraSudK9EsBSw5 + LG4soizXLQwtQS12Last4S4WLkwu + gi63Lu4vJC9aL5Evxy/+MDUwbDCk + MNsxEjFKMYIxujHyMioyYzKbMtQz + DTNGM38zuDPxNCs0ZTSeNNg1EzVN + NYc1wjX9Njc2cjauNuk3JDdgN5w3 + 1zgUOFA4jDjIOQU5Qjl/Obw5+To2 + OnQ6sjrvOy07azuqO+g8JzxlPKQ8 + 4z0iPWE9oT3gPiA+YD6gPuA/IT9h + P6I/4kAjQGRApkDnQSlBakGsQe5C + MEJyQrVC90M6Q31DwEQDREdEikTO + RRJFVUWaRd5GIkZnRqtG8Ec1R3tH + wEgFSEtIkUjXSR1JY0mpSfBKN0p9 + SsRLDEtTS5pL4kwqTHJMuk0CTUpN + k03cTiVObk63TwBPSU+TT91QJ1Bx + ULtRBlFQUZtR5lIxUnxSx1MTU19T + qlP2VEJUj1TbVShVdVXCVg9WXFap + VvdXRFeSV+BYL1h9WMtZGllpWbha + B1pWWqZa9VtFW5Vb5Vw1XIZc1l0n + XXhdyV4aXmxevV8PX2Ffs2AFYFdg + qmD8YU9homH1YklinGLwY0Njl2Pr + ZEBklGTpZT1lkmXnZj1mkmboZz1n + k2fpaD9olmjsaUNpmmnxakhqn2r3 + a09rp2v/bFdsr20IbWBtuW4Sbmtu + xG8eb3hv0XArcIZw4HE6cZVx8HJL + cqZzAXNdc7h0FHRwdMx1KHWFdeF2 + Pnabdvh3VnezeBF4bnjMeSp5iXnn + ekZ6pXsEe2N7wnwhfIF84X1BfaF+ + AX5ifsJ/I3+Ef+WAR4CogQqBa4HN + gjCCkoL0g1eDuoQdhICE44VHhauG + DoZyhteHO4efiASIaYjOiTOJmYn+ + imSKyoswi5aL/IxjjMqNMY2Yjf+O + Zo7OjzaPnpAGkG6Q1pE/kaiSEZJ6 + kuOTTZO2lCCUipT0lV+VyZY0lp+X + Cpd1l+CYTJi4mSSZkJn8mmia1ZtC + m6+cHJyJnPedZJ3SnkCerp8dn4uf + +qBpoNihR6G2oiailqMGo3aj5qRW + pMelOKWpphqmi6b9p26n4KhSqMSp + N6mpqhyqj6sCq3Wr6axcrNCtRK24 + ri2uoa8Wr4uwALB1sOqxYLHWskuy + wrM4s660JbSctRO1irYBtnm28Ldo + t+C4WbjRuUq5wro7urW7LrunvCG8 + m70VvY++Cr6Evv+/er/1wHDA7MFn + wePCX8Lbw1jD1MRRxM7FS8XIxkbG + w8dBx7/IPci8yTrJuco4yrfLNsu2 + zDXMtc01zbXONs62zzfPuNA50LrR + PNG+0j/SwdNE08bUSdTL1U7V0dZV + 1tjXXNfg2GTY6Nls2fHadtr724Dc + BdyK3RDdlt4c3qLfKd+v4DbgveFE + 4cziU+Lb42Pj6+Rz5PzlhOYN5pbn + H+ep6DLovOlG6dDqW+rl63Dr++yG + 7RHtnO4o7rTvQO/M8Fjw5fFy8f/y + jPMZ86f0NPTC9VD13vZt9vv3ivgZ + +Kj5OPnH+lf65/t3/Af8mP0p/br+ + S/7c/23//4AE0h4fICFaJGNsYXNz + bmFtZVgkY2xhc3Nlc11OU011dGFi + bGVEYXRhoyAiI1ZOU0RhdGFYTlNP + YmplY3TSHh8lJlxOU0NvbG9yU3Bh + Y2WiJyNcTlNDb2xvclNwYWNl0h4f + KSpXTlNDb2xvcqIrI1dOU0NvbG9y + XxAPTlNLZXllZEFyY2hpdmVy0S4v + VHJvb3SAAQAIABEAGgAjAC0AMgA3 + AD8ARQBQAF0AYwBwAIUAjACUAJsA + nQCfAKEAqACtALMAtQC3ALkAvgDG + DRINFA0ZDSQNLQ07DT8NRg1PDVQN + YQ1kDXENdg1+DYENiQ2bDZ4NowAA + AAAAAAIBAAAAAAAAADAAAAAAAAAA + AAAAAAAAAA2l + + b + 0 + g + 0 + r + 0 + + HeadArrow + 0 + Join + 0 + Legacy + + TailArrow + 0 + + + Tail + + ID + 173 + + + + Class + LineGraphic + ID + 180 + Points + + {539.625, 475.74994574121115} + {539.625, 499.24990674121136} + + Style + + stroke + + Color + + archive + + YnBsaXN0MDDUAQIDBAUGLC1YJHZl + cnNpb25YJG9iamVjdHNZJGFyY2hp + dmVyVCR0b3ASAAGGoKcHCBMZHSQo + VSRudWxs1QkKCwwNDg8QERJcTlND + b21wb25lbnRzVU5TUkdCXE5TQ29s + b3JTcGFjZV8QEk5TQ3VzdG9tQ29s + b3JTcGFjZVYkY2xhc3NHMCAwIDAg + MUYwIDAgMAAQAYACgAbTFBUNFhcY + VE5TSURVTlNJQ0MQB4ADgAXSGg0b + HFdOUy5kYXRhTxEMSAAADEhMaW5v + AhAAAG1udHJSR0IgWFlaIAfOAAIA + CQAGADEAAGFjc3BNU0ZUAAAAAElF + QyBzUkdCAAAAAAAAAAAAAAAAAAD2 + 1gABAAAAANMtSFAgIAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAEWNw + cnQAAAFQAAAAM2Rlc2MAAAGEAAAA + bHd0cHQAAAHwAAAAFGJrcHQAAAIE + AAAAFHJYWVoAAAIYAAAAFGdYWVoA + AAIsAAAAFGJYWVoAAAJAAAAAFGRt + bmQAAAJUAAAAcGRtZGQAAALEAAAA + iHZ1ZWQAAANMAAAAhnZpZXcAAAPU + AAAAJGx1bWkAAAP4AAAAFG1lYXMA + AAQMAAAAJHRlY2gAAAQwAAAADHJU + UkMAAAQ8AAAIDGdUUkMAAAQ8AAAI + DGJUUkMAAAQ8AAAIDHRleHQAAAAA + Q29weXJpZ2h0IChjKSAxOTk4IEhl + d2xldHQtUGFja2FyZCBDb21wYW55 + AABkZXNjAAAAAAAAABJzUkdCIElF + QzYxOTY2LTIuMQAAAAAAAAAAAAAA + EnNSR0IgSUVDNjE5NjYtMi4xAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAABYWVogAAAAAAAA81EAAQAA + AAEWzFhZWiAAAAAAAAAAAAAAAAAA + AAAAWFlaIAAAAAAAAG+iAAA49QAA + A5BYWVogAAAAAAAAYpkAALeFAAAY + 2lhZWiAAAAAAAAAkoAAAD4QAALbP + ZGVzYwAAAAAAAAAWSUVDIGh0dHA6 + Ly93d3cuaWVjLmNoAAAAAAAAAAAA + AAAWSUVDIGh0dHA6Ly93d3cuaWVj + LmNoAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAGRlc2MAAAAAAAAALklF + QyA2MTk2Ni0yLjEgRGVmYXVsdCBS + R0IgY29sb3VyIHNwYWNlIC0gc1JH + QgAAAAAAAAAAAAAALklFQyA2MTk2 + Ni0yLjEgRGVmYXVsdCBSR0IgY29s + b3VyIHNwYWNlIC0gc1JHQgAAAAAA + AAAAAAAAAAAAAAAAAAAAAABkZXNj + AAAAAAAAACxSZWZlcmVuY2UgVmll + d2luZyBDb25kaXRpb24gaW4gSUVD + NjE5NjYtMi4xAAAAAAAAAAAAAAAs + UmVmZXJlbmNlIFZpZXdpbmcgQ29u + ZGl0aW9uIGluIElFQzYxOTY2LTIu + MQAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAdmlldwAAAAAAE6T+ABRf + LgAQzxQAA+3MAAQTCwADXJ4AAAAB + WFlaIAAAAAAATAlWAFAAAABXH+dt + ZWFzAAAAAAAAAAEAAAAAAAAAAAAA + AAAAAAAAAAACjwAAAAJzaWcgAAAA + AENSVCBjdXJ2AAAAAAAABAAAAAAF + AAoADwAUABkAHgAjACgALQAyADcA + OwBAAEUASgBPAFQAWQBeAGMAaABt + AHIAdwB8AIEAhgCLAJAAlQCaAJ8A + pACpAK4AsgC3ALwAwQDGAMsA0ADV + ANsA4ADlAOsA8AD2APsBAQEHAQ0B + EwEZAR8BJQErATIBOAE+AUUBTAFS + AVkBYAFnAW4BdQF8AYMBiwGSAZoB + oQGpAbEBuQHBAckB0QHZAeEB6QHy + AfoCAwIMAhQCHQImAi8COAJBAksC + VAJdAmcCcQJ6AoQCjgKYAqICrAK2 + AsECywLVAuAC6wL1AwADCwMWAyED + LQM4A0MDTwNaA2YDcgN+A4oDlgOi + A64DugPHA9MD4APsA/kEBgQTBCAE + LQQ7BEgEVQRjBHEEfgSMBJoEqAS2 + BMQE0wThBPAE/gUNBRwFKwU6BUkF + WAVnBXcFhgWWBaYFtQXFBdUF5QX2 + BgYGFgYnBjcGSAZZBmoGewaMBp0G + rwbABtEG4wb1BwcHGQcrBz0HTwdh + B3QHhgeZB6wHvwfSB+UH+AgLCB8I + MghGCFoIbgiCCJYIqgi+CNII5wj7 + CRAJJQk6CU8JZAl5CY8JpAm6Cc8J + 5Qn7ChEKJwo9ClQKagqBCpgKrgrF + CtwK8wsLCyILOQtRC2kLgAuYC7AL + yAvhC/kMEgwqDEMMXAx1DI4MpwzA + DNkM8w0NDSYNQA1aDXQNjg2pDcMN + 3g34DhMOLg5JDmQOfw6bDrYO0g7u + DwkPJQ9BD14Peg+WD7MPzw/sEAkQ + JhBDEGEQfhCbELkQ1xD1ERMRMRFP + EW0RjBGqEckR6BIHEiYSRRJkEoQS + oxLDEuMTAxMjE0MTYxODE6QTxRPl + FAYUJxRJFGoUixStFM4U8BUSFTQV + VhV4FZsVvRXgFgMWJhZJFmwWjxay + FtYW+hcdF0EXZReJF64X0hf3GBsY + QBhlGIoYrxjVGPoZIBlFGWsZkRm3 + Gd0aBBoqGlEadxqeGsUa7BsUGzsb + YxuKG7Ib2hwCHCocUhx7HKMczBz1 + HR4dRx1wHZkdwx3sHhYeQB5qHpQe + vh7pHxMfPh9pH5Qfvx/qIBUgQSBs + IJggxCDwIRwhSCF1IaEhziH7Iici + VSKCIq8i3SMKIzgjZiOUI8Ij8CQf + JE0kfCSrJNolCSU4JWgllyXHJfcm + JyZXJocmtyboJxgnSSd6J6sn3CgN + KD8ocSiiKNQpBik4KWspnSnQKgIq + NSpoKpsqzysCKzYraSudK9EsBSw5 + LG4soizXLQwtQS12Last4S4WLkwu + gi63Lu4vJC9aL5Evxy/+MDUwbDCk + MNsxEjFKMYIxujHyMioyYzKbMtQz + DTNGM38zuDPxNCs0ZTSeNNg1EzVN + NYc1wjX9Njc2cjauNuk3JDdgN5w3 + 1zgUOFA4jDjIOQU5Qjl/Obw5+To2 + OnQ6sjrvOy07azuqO+g8JzxlPKQ8 + 4z0iPWE9oT3gPiA+YD6gPuA/IT9h + P6I/4kAjQGRApkDnQSlBakGsQe5C + MEJyQrVC90M6Q31DwEQDREdEikTO + RRJFVUWaRd5GIkZnRqtG8Ec1R3tH + wEgFSEtIkUjXSR1JY0mpSfBKN0p9 + SsRLDEtTS5pL4kwqTHJMuk0CTUpN + k03cTiVObk63TwBPSU+TT91QJ1Bx + ULtRBlFQUZtR5lIxUnxSx1MTU19T + qlP2VEJUj1TbVShVdVXCVg9WXFap + VvdXRFeSV+BYL1h9WMtZGllpWbha + B1pWWqZa9VtFW5Vb5Vw1XIZc1l0n + XXhdyV4aXmxevV8PX2Ffs2AFYFdg + qmD8YU9homH1YklinGLwY0Njl2Pr + ZEBklGTpZT1lkmXnZj1mkmboZz1n + k2fpaD9olmjsaUNpmmnxakhqn2r3 + a09rp2v/bFdsr20IbWBtuW4Sbmtu + xG8eb3hv0XArcIZw4HE6cZVx8HJL + cqZzAXNdc7h0FHRwdMx1KHWFdeF2 + Pnabdvh3VnezeBF4bnjMeSp5iXnn + ekZ6pXsEe2N7wnwhfIF84X1BfaF+ + AX5ifsJ/I3+Ef+WAR4CogQqBa4HN + gjCCkoL0g1eDuoQdhICE44VHhauG + DoZyhteHO4efiASIaYjOiTOJmYn+ + imSKyoswi5aL/IxjjMqNMY2Yjf+O + Zo7OjzaPnpAGkG6Q1pE/kaiSEZJ6 + kuOTTZO2lCCUipT0lV+VyZY0lp+X + Cpd1l+CYTJi4mSSZkJn8mmia1ZtC + m6+cHJyJnPedZJ3SnkCerp8dn4uf + +qBpoNihR6G2oiailqMGo3aj5qRW + pMelOKWpphqmi6b9p26n4KhSqMSp + N6mpqhyqj6sCq3Wr6axcrNCtRK24 + ri2uoa8Wr4uwALB1sOqxYLHWskuy + wrM4s660JbSctRO1irYBtnm28Ldo + t+C4WbjRuUq5wro7urW7LrunvCG8 + m70VvY++Cr6Evv+/er/1wHDA7MFn + wePCX8Lbw1jD1MRRxM7FS8XIxkbG + w8dBx7/IPci8yTrJuco4yrfLNsu2 + zDXMtc01zbXONs62zzfPuNA50LrR + PNG+0j/SwdNE08bUSdTL1U7V0dZV + 1tjXXNfg2GTY6Nls2fHadtr724Dc + BdyK3RDdlt4c3qLfKd+v4DbgveFE + 4cziU+Lb42Pj6+Rz5PzlhOYN5pbn + H+ep6DLovOlG6dDqW+rl63Dr++yG + 7RHtnO4o7rTvQO/M8Fjw5fFy8f/y + jPMZ86f0NPTC9VD13vZt9vv3ivgZ + +Kj5OPnH+lf65/t3/Af8mP0p/br+ + S/7c/23//4AE0h4fICFaJGNsYXNz + bmFtZVgkY2xhc3Nlc11OU011dGFi + bGVEYXRhoyAiI1ZOU0RhdGFYTlNP + YmplY3TSHh8lJlxOU0NvbG9yU3Bh + Y2WiJyNcTlNDb2xvclNwYWNl0h4f + KSpXTlNDb2xvcqIrI1dOU0NvbG9y + XxAPTlNLZXllZEFyY2hpdmVy0S4v + VHJvb3SAAQAIABEAGgAjAC0AMgA3 + AD8ARQBQAF0AYwBwAIUAjACUAJsA + nQCfAKEAqACtALMAtQC3ALkAvgDG + DRINFA0ZDSQNLQ07DT8NRg1PDVQN + YQ1kDXENdg1+DYENiQ2bDZ4NowAA + AAAAAAIBAAAAAAAAADAAAAAAAAAA + AAAAAAAAAA2l + + b + 0 + g + 0 + r + 0 + + HeadArrow + 0 + Join + 0 + Legacy + + TailArrow + 0 + + + + + Bounds + {{499.625, 499.24992624121126}, {80, 78}} + Class + ShapedGraphic + FontInfo + + Font + HiraKakuProN-W3 + Size + 12 + + ID + 179 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Circle + Style + + shadow + + Draws + NO + + stroke + + Color + + archive + + YnBsaXN0MDDUAQIDBAUGLC1YJHZl + cnNpb25YJG9iamVjdHNZJGFyY2hp + dmVyVCR0b3ASAAGGoKcHCBMZHSQo + VSRudWxs1QkKCwwNDg8QERJcTlND + b21wb25lbnRzVU5TUkdCXE5TQ29s + b3JTcGFjZV8QEk5TQ3VzdG9tQ29s + b3JTcGFjZVYkY2xhc3NHMCAwIDAg + MUYwIDAgMAAQAYACgAbTFBUNFhcY + VE5TSURVTlNJQ0MQB4ADgAXSGg0b + HFdOUy5kYXRhTxEMSAAADEhMaW5v + AhAAAG1udHJSR0IgWFlaIAfOAAIA + CQAGADEAAGFjc3BNU0ZUAAAAAElF + QyBzUkdCAAAAAAAAAAAAAAAAAAD2 + 1gABAAAAANMtSFAgIAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAEWNw + cnQAAAFQAAAAM2Rlc2MAAAGEAAAA + bHd0cHQAAAHwAAAAFGJrcHQAAAIE + AAAAFHJYWVoAAAIYAAAAFGdYWVoA + AAIsAAAAFGJYWVoAAAJAAAAAFGRt + bmQAAAJUAAAAcGRtZGQAAALEAAAA + iHZ1ZWQAAANMAAAAhnZpZXcAAAPU + AAAAJGx1bWkAAAP4AAAAFG1lYXMA + AAQMAAAAJHRlY2gAAAQwAAAADHJU + UkMAAAQ8AAAIDGdUUkMAAAQ8AAAI + DGJUUkMAAAQ8AAAIDHRleHQAAAAA + Q29weXJpZ2h0IChjKSAxOTk4IEhl + d2xldHQtUGFja2FyZCBDb21wYW55 + AABkZXNjAAAAAAAAABJzUkdCIElF + QzYxOTY2LTIuMQAAAAAAAAAAAAAA + EnNSR0IgSUVDNjE5NjYtMi4xAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAABYWVogAAAAAAAA81EAAQAA + AAEWzFhZWiAAAAAAAAAAAAAAAAAA + AAAAWFlaIAAAAAAAAG+iAAA49QAA + A5BYWVogAAAAAAAAYpkAALeFAAAY + 2lhZWiAAAAAAAAAkoAAAD4QAALbP + ZGVzYwAAAAAAAAAWSUVDIGh0dHA6 + Ly93d3cuaWVjLmNoAAAAAAAAAAAA + AAAWSUVDIGh0dHA6Ly93d3cuaWVj + LmNoAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAGRlc2MAAAAAAAAALklF + QyA2MTk2Ni0yLjEgRGVmYXVsdCBS + R0IgY29sb3VyIHNwYWNlIC0gc1JH + QgAAAAAAAAAAAAAALklFQyA2MTk2 + Ni0yLjEgRGVmYXVsdCBSR0IgY29s + b3VyIHNwYWNlIC0gc1JHQgAAAAAA + AAAAAAAAAAAAAAAAAAAAAABkZXNj + AAAAAAAAACxSZWZlcmVuY2UgVmll + d2luZyBDb25kaXRpb24gaW4gSUVD + NjE5NjYtMi4xAAAAAAAAAAAAAAAs + UmVmZXJlbmNlIFZpZXdpbmcgQ29u + ZGl0aW9uIGluIElFQzYxOTY2LTIu + MQAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAdmlldwAAAAAAE6T+ABRf + LgAQzxQAA+3MAAQTCwADXJ4AAAAB + WFlaIAAAAAAATAlWAFAAAABXH+dt + ZWFzAAAAAAAAAAEAAAAAAAAAAAAA + AAAAAAAAAAACjwAAAAJzaWcgAAAA + AENSVCBjdXJ2AAAAAAAABAAAAAAF + AAoADwAUABkAHgAjACgALQAyADcA + OwBAAEUASgBPAFQAWQBeAGMAaABt + AHIAdwB8AIEAhgCLAJAAlQCaAJ8A + pACpAK4AsgC3ALwAwQDGAMsA0ADV + ANsA4ADlAOsA8AD2APsBAQEHAQ0B + EwEZAR8BJQErATIBOAE+AUUBTAFS + AVkBYAFnAW4BdQF8AYMBiwGSAZoB + oQGpAbEBuQHBAckB0QHZAeEB6QHy + AfoCAwIMAhQCHQImAi8COAJBAksC + VAJdAmcCcQJ6AoQCjgKYAqICrAK2 + AsECywLVAuAC6wL1AwADCwMWAyED + LQM4A0MDTwNaA2YDcgN+A4oDlgOi + A64DugPHA9MD4APsA/kEBgQTBCAE + LQQ7BEgEVQRjBHEEfgSMBJoEqAS2 + BMQE0wThBPAE/gUNBRwFKwU6BUkF + WAVnBXcFhgWWBaYFtQXFBdUF5QX2 + BgYGFgYnBjcGSAZZBmoGewaMBp0G + rwbABtEG4wb1BwcHGQcrBz0HTwdh + B3QHhgeZB6wHvwfSB+UH+AgLCB8I + MghGCFoIbgiCCJYIqgi+CNII5wj7 + CRAJJQk6CU8JZAl5CY8JpAm6Cc8J + 5Qn7ChEKJwo9ClQKagqBCpgKrgrF + CtwK8wsLCyILOQtRC2kLgAuYC7AL + yAvhC/kMEgwqDEMMXAx1DI4MpwzA + DNkM8w0NDSYNQA1aDXQNjg2pDcMN + 3g34DhMOLg5JDmQOfw6bDrYO0g7u + DwkPJQ9BD14Peg+WD7MPzw/sEAkQ + JhBDEGEQfhCbELkQ1xD1ERMRMRFP + EW0RjBGqEckR6BIHEiYSRRJkEoQS + oxLDEuMTAxMjE0MTYxODE6QTxRPl + FAYUJxRJFGoUixStFM4U8BUSFTQV + VhV4FZsVvRXgFgMWJhZJFmwWjxay + FtYW+hcdF0EXZReJF64X0hf3GBsY + QBhlGIoYrxjVGPoZIBlFGWsZkRm3 + Gd0aBBoqGlEadxqeGsUa7BsUGzsb + YxuKG7Ib2hwCHCocUhx7HKMczBz1 + HR4dRx1wHZkdwx3sHhYeQB5qHpQe + vh7pHxMfPh9pH5Qfvx/qIBUgQSBs + IJggxCDwIRwhSCF1IaEhziH7Iici + VSKCIq8i3SMKIzgjZiOUI8Ij8CQf + JE0kfCSrJNolCSU4JWgllyXHJfcm + JyZXJocmtyboJxgnSSd6J6sn3CgN + KD8ocSiiKNQpBik4KWspnSnQKgIq + NSpoKpsqzysCKzYraSudK9EsBSw5 + LG4soizXLQwtQS12Last4S4WLkwu + gi63Lu4vJC9aL5Evxy/+MDUwbDCk + MNsxEjFKMYIxujHyMioyYzKbMtQz + DTNGM38zuDPxNCs0ZTSeNNg1EzVN + NYc1wjX9Njc2cjauNuk3JDdgN5w3 + 1zgUOFA4jDjIOQU5Qjl/Obw5+To2 + OnQ6sjrvOy07azuqO+g8JzxlPKQ8 + 4z0iPWE9oT3gPiA+YD6gPuA/IT9h + P6I/4kAjQGRApkDnQSlBakGsQe5C + MEJyQrVC90M6Q31DwEQDREdEikTO + RRJFVUWaRd5GIkZnRqtG8Ec1R3tH + wEgFSEtIkUjXSR1JY0mpSfBKN0p9 + SsRLDEtTS5pL4kwqTHJMuk0CTUpN + k03cTiVObk63TwBPSU+TT91QJ1Bx + ULtRBlFQUZtR5lIxUnxSx1MTU19T + qlP2VEJUj1TbVShVdVXCVg9WXFap + VvdXRFeSV+BYL1h9WMtZGllpWbha + B1pWWqZa9VtFW5Vb5Vw1XIZc1l0n + XXhdyV4aXmxevV8PX2Ffs2AFYFdg + qmD8YU9homH1YklinGLwY0Njl2Pr + ZEBklGTpZT1lkmXnZj1mkmboZz1n + k2fpaD9olmjsaUNpmmnxakhqn2r3 + a09rp2v/bFdsr20IbWBtuW4Sbmtu + xG8eb3hv0XArcIZw4HE6cZVx8HJL + cqZzAXNdc7h0FHRwdMx1KHWFdeF2 + Pnabdvh3VnezeBF4bnjMeSp5iXnn + ekZ6pXsEe2N7wnwhfIF84X1BfaF+ + AX5ifsJ/I3+Ef+WAR4CogQqBa4HN + gjCCkoL0g1eDuoQdhICE44VHhauG + DoZyhteHO4efiASIaYjOiTOJmYn+ + imSKyoswi5aL/IxjjMqNMY2Yjf+O + Zo7OjzaPnpAGkG6Q1pE/kaiSEZJ6 + kuOTTZO2lCCUipT0lV+VyZY0lp+X + Cpd1l+CYTJi4mSSZkJn8mmia1ZtC + m6+cHJyJnPedZJ3SnkCerp8dn4uf + +qBpoNihR6G2oiailqMGo3aj5qRW + pMelOKWpphqmi6b9p26n4KhSqMSp + N6mpqhyqj6sCq3Wr6axcrNCtRK24 + ri2uoa8Wr4uwALB1sOqxYLHWskuy + wrM4s660JbSctRO1irYBtnm28Ldo + t+C4WbjRuUq5wro7urW7LrunvCG8 + m70VvY++Cr6Evv+/er/1wHDA7MFn + wePCX8Lbw1jD1MRRxM7FS8XIxkbG + w8dBx7/IPci8yTrJuco4yrfLNsu2 + zDXMtc01zbXONs62zzfPuNA50LrR + PNG+0j/SwdNE08bUSdTL1U7V0dZV + 1tjXXNfg2GTY6Nls2fHadtr724Dc + BdyK3RDdlt4c3qLfKd+v4DbgveFE + 4cziU+Lb42Pj6+Rz5PzlhOYN5pbn + H+ep6DLovOlG6dDqW+rl63Dr++yG + 7RHtnO4o7rTvQO/M8Fjw5fFy8f/y + jPMZ86f0NPTC9VD13vZt9vv3ivgZ + +Kj5OPnH+lf65/t3/Af8mP0p/br+ + S/7c/23//4AE0h4fICFaJGNsYXNz + bmFtZVgkY2xhc3Nlc11OU011dGFi + bGVEYXRhoyAiI1ZOU0RhdGFYTlNP + YmplY3TSHh8lJlxOU0NvbG9yU3Bh + Y2WiJyNcTlNDb2xvclNwYWNl0h4f + KSpXTlNDb2xvcqIrI1dOU0NvbG9y + XxAPTlNLZXllZEFyY2hpdmVy0S4v + VHJvb3SAAQAIABEAGgAjAC0AMgA3 + AD8ARQBQAF0AYwBwAIUAjACUAJsA + nQCfAKEAqACtALMAtQC3ALkAvgDG + DRINFA0ZDSQNLQ07DT8NRg1PDVQN + YQ1kDXENdg1+DYENiQ2bDZ4NowAA + AAAAAAIBAAAAAAAAADAAAAAAAAAA + AAAAAAAAAA2l + + b + 0 + g + 0 + r + 0 + + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 4\ +} + VerticalPad + 0 + + + + Bounds + {{499.625, 397.74991522363302}, {80, 78}} + Class + ShapedGraphic + FontInfo + + Font + HiraKakuProN-W3 + Size + 12 + + ID + 178 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Circle + Style + + shadow + + Draws + NO + + stroke + + Color + + archive + + YnBsaXN0MDDUAQIDBAUGLC1YJHZl + cnNpb25YJG9iamVjdHNZJGFyY2hp + dmVyVCR0b3ASAAGGoKcHCBMZHSQo + VSRudWxs1QkKCwwNDg8QERJcTlND + b21wb25lbnRzVU5TUkdCXE5TQ29s + b3JTcGFjZV8QEk5TQ3VzdG9tQ29s + b3JTcGFjZVYkY2xhc3NHMCAwIDAg + MUYwIDAgMAAQAYACgAbTFBUNFhcY + VE5TSURVTlNJQ0MQB4ADgAXSGg0b + HFdOUy5kYXRhTxEMSAAADEhMaW5v + AhAAAG1udHJSR0IgWFlaIAfOAAIA + CQAGADEAAGFjc3BNU0ZUAAAAAElF + QyBzUkdCAAAAAAAAAAAAAAAAAAD2 + 1gABAAAAANMtSFAgIAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAEWNw + cnQAAAFQAAAAM2Rlc2MAAAGEAAAA + bHd0cHQAAAHwAAAAFGJrcHQAAAIE + AAAAFHJYWVoAAAIYAAAAFGdYWVoA + AAIsAAAAFGJYWVoAAAJAAAAAFGRt + bmQAAAJUAAAAcGRtZGQAAALEAAAA + iHZ1ZWQAAANMAAAAhnZpZXcAAAPU + AAAAJGx1bWkAAAP4AAAAFG1lYXMA + AAQMAAAAJHRlY2gAAAQwAAAADHJU + UkMAAAQ8AAAIDGdUUkMAAAQ8AAAI + DGJUUkMAAAQ8AAAIDHRleHQAAAAA + Q29weXJpZ2h0IChjKSAxOTk4IEhl + d2xldHQtUGFja2FyZCBDb21wYW55 + AABkZXNjAAAAAAAAABJzUkdCIElF + QzYxOTY2LTIuMQAAAAAAAAAAAAAA + EnNSR0IgSUVDNjE5NjYtMi4xAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAABYWVogAAAAAAAA81EAAQAA + AAEWzFhZWiAAAAAAAAAAAAAAAAAA + AAAAWFlaIAAAAAAAAG+iAAA49QAA + A5BYWVogAAAAAAAAYpkAALeFAAAY + 2lhZWiAAAAAAAAAkoAAAD4QAALbP + ZGVzYwAAAAAAAAAWSUVDIGh0dHA6 + Ly93d3cuaWVjLmNoAAAAAAAAAAAA + AAAWSUVDIGh0dHA6Ly93d3cuaWVj + LmNoAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAGRlc2MAAAAAAAAALklF + QyA2MTk2Ni0yLjEgRGVmYXVsdCBS + R0IgY29sb3VyIHNwYWNlIC0gc1JH + QgAAAAAAAAAAAAAALklFQyA2MTk2 + Ni0yLjEgRGVmYXVsdCBSR0IgY29s + b3VyIHNwYWNlIC0gc1JHQgAAAAAA + AAAAAAAAAAAAAAAAAAAAAABkZXNj + AAAAAAAAACxSZWZlcmVuY2UgVmll + d2luZyBDb25kaXRpb24gaW4gSUVD + NjE5NjYtMi4xAAAAAAAAAAAAAAAs + UmVmZXJlbmNlIFZpZXdpbmcgQ29u + ZGl0aW9uIGluIElFQzYxOTY2LTIu + MQAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAdmlldwAAAAAAE6T+ABRf + LgAQzxQAA+3MAAQTCwADXJ4AAAAB + WFlaIAAAAAAATAlWAFAAAABXH+dt + ZWFzAAAAAAAAAAEAAAAAAAAAAAAA + AAAAAAAAAAACjwAAAAJzaWcgAAAA + AENSVCBjdXJ2AAAAAAAABAAAAAAF + AAoADwAUABkAHgAjACgALQAyADcA + OwBAAEUASgBPAFQAWQBeAGMAaABt + AHIAdwB8AIEAhgCLAJAAlQCaAJ8A + pACpAK4AsgC3ALwAwQDGAMsA0ADV + ANsA4ADlAOsA8AD2APsBAQEHAQ0B + EwEZAR8BJQErATIBOAE+AUUBTAFS + AVkBYAFnAW4BdQF8AYMBiwGSAZoB + oQGpAbEBuQHBAckB0QHZAeEB6QHy + AfoCAwIMAhQCHQImAi8COAJBAksC + VAJdAmcCcQJ6AoQCjgKYAqICrAK2 + AsECywLVAuAC6wL1AwADCwMWAyED + LQM4A0MDTwNaA2YDcgN+A4oDlgOi + A64DugPHA9MD4APsA/kEBgQTBCAE + LQQ7BEgEVQRjBHEEfgSMBJoEqAS2 + BMQE0wThBPAE/gUNBRwFKwU6BUkF + WAVnBXcFhgWWBaYFtQXFBdUF5QX2 + BgYGFgYnBjcGSAZZBmoGewaMBp0G + rwbABtEG4wb1BwcHGQcrBz0HTwdh + B3QHhgeZB6wHvwfSB+UH+AgLCB8I + MghGCFoIbgiCCJYIqgi+CNII5wj7 + CRAJJQk6CU8JZAl5CY8JpAm6Cc8J + 5Qn7ChEKJwo9ClQKagqBCpgKrgrF + CtwK8wsLCyILOQtRC2kLgAuYC7AL + yAvhC/kMEgwqDEMMXAx1DI4MpwzA + DNkM8w0NDSYNQA1aDXQNjg2pDcMN + 3g34DhMOLg5JDmQOfw6bDrYO0g7u + DwkPJQ9BD14Peg+WD7MPzw/sEAkQ + JhBDEGEQfhCbELkQ1xD1ERMRMRFP + EW0RjBGqEckR6BIHEiYSRRJkEoQS + oxLDEuMTAxMjE0MTYxODE6QTxRPl + FAYUJxRJFGoUixStFM4U8BUSFTQV + VhV4FZsVvRXgFgMWJhZJFmwWjxay + FtYW+hcdF0EXZReJF64X0hf3GBsY + QBhlGIoYrxjVGPoZIBlFGWsZkRm3 + Gd0aBBoqGlEadxqeGsUa7BsUGzsb + YxuKG7Ib2hwCHCocUhx7HKMczBz1 + HR4dRx1wHZkdwx3sHhYeQB5qHpQe + vh7pHxMfPh9pH5Qfvx/qIBUgQSBs + IJggxCDwIRwhSCF1IaEhziH7Iici + VSKCIq8i3SMKIzgjZiOUI8Ij8CQf + JE0kfCSrJNolCSU4JWgllyXHJfcm + JyZXJocmtyboJxgnSSd6J6sn3CgN + KD8ocSiiKNQpBik4KWspnSnQKgIq + NSpoKpsqzysCKzYraSudK9EsBSw5 + LG4soizXLQwtQS12Last4S4WLkwu + gi63Lu4vJC9aL5Evxy/+MDUwbDCk + MNsxEjFKMYIxujHyMioyYzKbMtQz + DTNGM38zuDPxNCs0ZTSeNNg1EzVN + NYc1wjX9Njc2cjauNuk3JDdgN5w3 + 1zgUOFA4jDjIOQU5Qjl/Obw5+To2 + OnQ6sjrvOy07azuqO+g8JzxlPKQ8 + 4z0iPWE9oT3gPiA+YD6gPuA/IT9h + P6I/4kAjQGRApkDnQSlBakGsQe5C + MEJyQrVC90M6Q31DwEQDREdEikTO + RRJFVUWaRd5GIkZnRqtG8Ec1R3tH + wEgFSEtIkUjXSR1JY0mpSfBKN0p9 + SsRLDEtTS5pL4kwqTHJMuk0CTUpN + k03cTiVObk63TwBPSU+TT91QJ1Bx + ULtRBlFQUZtR5lIxUnxSx1MTU19T + qlP2VEJUj1TbVShVdVXCVg9WXFap + VvdXRFeSV+BYL1h9WMtZGllpWbha + B1pWWqZa9VtFW5Vb5Vw1XIZc1l0n + XXhdyV4aXmxevV8PX2Ffs2AFYFdg + qmD8YU9homH1YklinGLwY0Njl2Pr + ZEBklGTpZT1lkmXnZj1mkmboZz1n + k2fpaD9olmjsaUNpmmnxakhqn2r3 + a09rp2v/bFdsr20IbWBtuW4Sbmtu + xG8eb3hv0XArcIZw4HE6cZVx8HJL + cqZzAXNdc7h0FHRwdMx1KHWFdeF2 + Pnabdvh3VnezeBF4bnjMeSp5iXnn + ekZ6pXsEe2N7wnwhfIF84X1BfaF+ + AX5ifsJ/I3+Ef+WAR4CogQqBa4HN + gjCCkoL0g1eDuoQdhICE44VHhauG + DoZyhteHO4efiASIaYjOiTOJmYn+ + imSKyoswi5aL/IxjjMqNMY2Yjf+O + Zo7OjzaPnpAGkG6Q1pE/kaiSEZJ6 + kuOTTZO2lCCUipT0lV+VyZY0lp+X + Cpd1l+CYTJi4mSSZkJn8mmia1ZtC + m6+cHJyJnPedZJ3SnkCerp8dn4uf + +qBpoNihR6G2oiailqMGo3aj5qRW + pMelOKWpphqmi6b9p26n4KhSqMSp + N6mpqhyqj6sCq3Wr6axcrNCtRK24 + ri2uoa8Wr4uwALB1sOqxYLHWskuy + wrM4s660JbSctRO1irYBtnm28Ldo + t+C4WbjRuUq5wro7urW7LrunvCG8 + m70VvY++Cr6Evv+/er/1wHDA7MFn + wePCX8Lbw1jD1MRRxM7FS8XIxkbG + w8dBx7/IPci8yTrJuco4yrfLNsu2 + zDXMtc01zbXONs62zzfPuNA50LrR + PNG+0j/SwdNE08bUSdTL1U7V0dZV + 1tjXXNfg2GTY6Nls2fHadtr724Dc + BdyK3RDdlt4c3qLfKd+v4DbgveFE + 4cziU+Lb42Pj6+Rz5PzlhOYN5pbn + H+ep6DLovOlG6dDqW+rl63Dr++yG + 7RHtnO4o7rTvQO/M8Fjw5fFy8f/y + jPMZ86f0NPTC9VD13vZt9vv3ivgZ + +Kj5OPnH+lf65/t3/Af8mP0p/br+ + S/7c/23//4AE0h4fICFaJGNsYXNz + bmFtZVgkY2xhc3Nlc11OU011dGFi + bGVEYXRhoyAiI1ZOU0RhdGFYTlNP + YmplY3TSHh8lJlxOU0NvbG9yU3Bh + Y2WiJyNcTlNDb2xvclNwYWNl0h4f + KSpXTlNDb2xvcqIrI1dOU0NvbG9y + XxAPTlNLZXllZEFyY2hpdmVy0S4v + VHJvb3SAAQAIABEAGgAjAC0AMgA3 + AD8ARQBQAF0AYwBwAIUAjACUAJsA + nQCfAKEAqACtALMAtQC3ALkAvgDG + DRINFA0ZDSQNLQ07DT8NRg1PDVQN + YQ1kDXENdg1+DYENiQ2bDZ4NowAA + AAAAAAIBAAAAAAAAADAAAAAAAAAA + AAAAAAAAAA2l + + b + 0 + g + 0 + r + 0 + + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 3} + VerticalPad + 0 + + + + Class + LineGraphic + Head + + ID + 171 + + ID + 177 + Points + + {490.625, 90.750020749999891} + {490.625, 93.249980500000106} + + Style + + stroke + + HeadArrow + FilledArrow + Join + 0 + Legacy + + TailArrow + 0 + + + Tail + + ID + 175 + + + + Class + LineGraphic + Head + + ID + 183 + Info + 3 + + ID + 176 + Points + + {448.6271292501275, 48.828757565196867} + {366, 48} + {364.375, 429} + {395.51512446545888, 429.41845931841215} + + Style + + stroke + + HeadArrow + FilledArrow + Join + 0 + Legacy + + TailArrow + 0 + + + Tail + + ID + 175 + + + + Bounds + {{448.625, 7.75}, {84, 83}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + HiraKakuPro-W3 + Size + 24 + + ID + 175 + Shape + Circle + Style + + fill + + Color + + b + 0.974573 + g + 0.998064 + r + 1 + + Draws + NO + + shadow + + Color + + a + 0.75 + b + 0.94523 + g + 0.987116 + r + 1 + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuPro-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs48 \cf0 Tree\ +ver `2} + + TextRelativeArea + {{0, 0}, {1, 1}} + Wrap + NO + + + Class + LineGraphic + ID + 174 + Points + + {490.625, 272.75} + {490.625, 296.24996100000021} + + Style + + stroke + + HeadArrow + 0 + Join + 0 + Legacy + + TailArrow + 0 + + + + + Bounds + {{450.625, 296.24998050000011}, {80, 78}} + Class + ShapedGraphic + FontInfo + + Font + HiraKakuProN-W3 + Size + 12 + + ID + 173 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Circle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 \'82\'51} + VerticalPad + 0 + + + + Class + LineGraphic + ID + 172 + Points + + {490.625, 171.25001949999989} + {490.625, 194.74998050000011} + + Style + + stroke + + HeadArrow + 0 + Join + 0 + Legacy + + TailArrow + 0 + + + Tail + + ID + 171 + Info + 1 + + + + Bounds + {{450.625, 93.25}, {80, 78}} + Class + ShapedGraphic + FontInfo + + Font + HiraKakuProN-W3 + Size + 12 + + ID + 171 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Circle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 0\ +(root)} + VerticalPad + 0 + + + + Bounds + {{450.625, 194.75}, {80, 78}} + Class + ShapedGraphic + FontInfo + + Font + HiraKakuProN-W3 + Size + 12 + + ID + 170 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Circle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 1} + VerticalPad + 0 + + + + GridInfo + + GuidesLocked + NO + GuidesVisible + YES + HPages + 2 + ImageCounter + 1 + KeepToScale + + Layers + + + Lock + NO + Name + レイヤー 1 + Print + YES + View + YES + + + LayoutInfo + + Animate + NO + circoMinDist + 18 + circoSeparation + 0.0 + layoutEngine + dot + neatoSeparation + 0.0 + twopiSeparation + 0.0 + + LinksVisible + NO + MagnetsVisible + NO + MasterSheets + + ModificationDate + 2017-02-09 03:17:48 +0000 + Modifier + sister_clown + NotesVisible + NO + Orientation + 2 + OriginVisible + NO + PageBreaks + YES + PrintInfo + + NSBottomMargin + + float + 41 + + NSHorizonalPagination + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG + + NSLeftMargin + + float + 18 + + NSPaperSize + + size + {595, 842} + + NSPrintReverseOrientation + + int + 0 + + NSRightMargin + + float + 18 + + NSTopMargin + + float + 18 + + + PrintOnePage + + ReadOnly + NO + RowAlign + 1 + RowSpacing + 36 + SheetTitle + キャンバス 1 + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UniqueID + 1 + UseEntirePage + + VPages + 1 + WindowInfo + + CurrentSheet + 0 + ExpandedCanvases + + Frame + {{655, 67}, {1063, 1088}} + ListView + + OutlineWidth + 142 + RightSidebar + + ShowRuler + + Sidebar + + SidebarWidth + 120 + VisibleRegion + {{0, -81}, {928, 946}} + Zoom + 1 + ZoomValues + + + キャンバス 1 + 1 + 1 + + + + + diff -r e4da23b04260 -r 33d8077a5d45 figures/badDifTree2.pdf Binary file figures/badDifTree2.pdf has changed diff -r e4da23b04260 -r 33d8077a5d45 figures/findDifTree.graffle --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/figures/findDifTree.graffle Thu Feb 09 17:25:56 2017 +0900 @@ -0,0 +1,1871 @@ + + + + + ActiveLayerIndex + 0 + ApplicationVersion + + com.omnigroup.OmniGraffle + 139.16.0.171715 + + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {1118, 783}} + Class + SolidGraphic + ID + 2 + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + BaseZoom + 0 + CanvasOrigin + {0, 0} + ColumnAlign + 1 + ColumnSpacing + 36 + CreationDate + 2017-02-08 16:19:42 +0000 + Creator + sister_clown + DisplayScale + 1 0/72 in = 1 0/72 in + GraphDocumentVersion + 8 + GraphicsList + + + Class + LineGraphic + Head + + ID + 168 + Info + 2 + + ID + 169 + Points + + {456, 374.25} + {406.5, 397.74996100000021} + + Style + + stroke + + Color + + archive + + YnBsaXN0MDDUAQIDBAUGLC1YJHZl + cnNpb25YJG9iamVjdHNZJGFyY2hp + dmVyVCR0b3ASAAGGoKcHCBMZHSQo + VSRudWxs1QkKCwwNDg8QERJcTlND + b21wb25lbnRzVU5TUkdCXE5TQ29s + b3JTcGFjZV8QEk5TQ3VzdG9tQ29s + b3JTcGFjZVYkY2xhc3NPEBMwIDAu + MDE2MDYyNjA4ODcgMSAxTxARMCAw + IDAuOTk4MTkwMDQ1NAAQAYACgAbT + FBUNFhcYVE5TSURVTlNJQ0MQB4AD + gAXSGg0bHFdOUy5kYXRhTxEMSAAA + DEhMaW5vAhAAAG1udHJSR0IgWFla + IAfOAAIACQAGADEAAGFjc3BNU0ZU + AAAAAElFQyBzUkdCAAAAAAAAAAAA + AAAAAAD21gABAAAAANMtSFAgIAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAEWNwcnQAAAFQAAAAM2Rlc2MA + AAGEAAAAbHd0cHQAAAHwAAAAFGJr + cHQAAAIEAAAAFHJYWVoAAAIYAAAA + FGdYWVoAAAIsAAAAFGJYWVoAAAJA + AAAAFGRtbmQAAAJUAAAAcGRtZGQA + AALEAAAAiHZ1ZWQAAANMAAAAhnZp + ZXcAAAPUAAAAJGx1bWkAAAP4AAAA + FG1lYXMAAAQMAAAAJHRlY2gAAAQw + AAAADHJUUkMAAAQ8AAAIDGdUUkMA + AAQ8AAAIDGJUUkMAAAQ8AAAIDHRl + eHQAAAAAQ29weXJpZ2h0IChjKSAx + OTk4IEhld2xldHQtUGFja2FyZCBD + b21wYW55AABkZXNjAAAAAAAAABJz + UkdCIElFQzYxOTY2LTIuMQAAAAAA + AAAAAAAAEnNSR0IgSUVDNjE5NjYt + Mi4xAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAABYWVogAAAAAAAA + 81EAAQAAAAEWzFhZWiAAAAAAAAAA + AAAAAAAAAAAAWFlaIAAAAAAAAG+i + AAA49QAAA5BYWVogAAAAAAAAYpkA + ALeFAAAY2lhZWiAAAAAAAAAkoAAA + D4QAALbPZGVzYwAAAAAAAAAWSUVD + IGh0dHA6Ly93d3cuaWVjLmNoAAAA + AAAAAAAAAAAWSUVDIGh0dHA6Ly93 + d3cuaWVjLmNoAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAGRlc2MAAAAA + AAAALklFQyA2MTk2Ni0yLjEgRGVm + YXVsdCBSR0IgY29sb3VyIHNwYWNl + IC0gc1JHQgAAAAAAAAAAAAAALklF + QyA2MTk2Ni0yLjEgRGVmYXVsdCBS + R0IgY29sb3VyIHNwYWNlIC0gc1JH + QgAAAAAAAAAAAAAAAAAAAAAAAAAA + AABkZXNjAAAAAAAAACxSZWZlcmVu + Y2UgVmlld2luZyBDb25kaXRpb24g + aW4gSUVDNjE5NjYtMi4xAAAAAAAA + AAAAAAAsUmVmZXJlbmNlIFZpZXdp + bmcgQ29uZGl0aW9uIGluIElFQzYx + OTY2LTIuMQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAdmlldwAAAAAA + E6T+ABRfLgAQzxQAA+3MAAQTCwAD + XJ4AAAABWFlaIAAAAAAATAlWAFAA + AABXH+dtZWFzAAAAAAAAAAEAAAAA + AAAAAAAAAAAAAAAAAAACjwAAAAJz + aWcgAAAAAENSVCBjdXJ2AAAAAAAA + BAAAAAAFAAoADwAUABkAHgAjACgA + LQAyADcAOwBAAEUASgBPAFQAWQBe + AGMAaABtAHIAdwB8AIEAhgCLAJAA + lQCaAJ8ApACpAK4AsgC3ALwAwQDG + AMsA0ADVANsA4ADlAOsA8AD2APsB + AQEHAQ0BEwEZAR8BJQErATIBOAE+ + AUUBTAFSAVkBYAFnAW4BdQF8AYMB + iwGSAZoBoQGpAbEBuQHBAckB0QHZ + AeEB6QHyAfoCAwIMAhQCHQImAi8C + OAJBAksCVAJdAmcCcQJ6AoQCjgKY + AqICrAK2AsECywLVAuAC6wL1AwAD + CwMWAyEDLQM4A0MDTwNaA2YDcgN+ + A4oDlgOiA64DugPHA9MD4APsA/kE + BgQTBCAELQQ7BEgEVQRjBHEEfgSM + BJoEqAS2BMQE0wThBPAE/gUNBRwF + KwU6BUkFWAVnBXcFhgWWBaYFtQXF + BdUF5QX2BgYGFgYnBjcGSAZZBmoG + ewaMBp0GrwbABtEG4wb1BwcHGQcr + Bz0HTwdhB3QHhgeZB6wHvwfSB+UH + +AgLCB8IMghGCFoIbgiCCJYIqgi+ + CNII5wj7CRAJJQk6CU8JZAl5CY8J + pAm6Cc8J5Qn7ChEKJwo9ClQKagqB + CpgKrgrFCtwK8wsLCyILOQtRC2kL + gAuYC7ALyAvhC/kMEgwqDEMMXAx1 + DI4MpwzADNkM8w0NDSYNQA1aDXQN + jg2pDcMN3g34DhMOLg5JDmQOfw6b + DrYO0g7uDwkPJQ9BD14Peg+WD7MP + zw/sEAkQJhBDEGEQfhCbELkQ1xD1 + ERMRMRFPEW0RjBGqEckR6BIHEiYS + RRJkEoQSoxLDEuMTAxMjE0MTYxOD + E6QTxRPlFAYUJxRJFGoUixStFM4U + 8BUSFTQVVhV4FZsVvRXgFgMWJhZJ + FmwWjxayFtYW+hcdF0EXZReJF64X + 0hf3GBsYQBhlGIoYrxjVGPoZIBlF + GWsZkRm3Gd0aBBoqGlEadxqeGsUa + 7BsUGzsbYxuKG7Ib2hwCHCocUhx7 + HKMczBz1HR4dRx1wHZkdwx3sHhYe + QB5qHpQevh7pHxMfPh9pH5Qfvx/q + IBUgQSBsIJggxCDwIRwhSCF1IaEh + ziH7IiciVSKCIq8i3SMKIzgjZiOU + I8Ij8CQfJE0kfCSrJNolCSU4JWgl + lyXHJfcmJyZXJocmtyboJxgnSSd6 + J6sn3CgNKD8ocSiiKNQpBik4KWsp + nSnQKgIqNSpoKpsqzysCKzYraSud + K9EsBSw5LG4soizXLQwtQS12Last + 4S4WLkwugi63Lu4vJC9aL5Evxy/+ + MDUwbDCkMNsxEjFKMYIxujHyMioy + YzKbMtQzDTNGM38zuDPxNCs0ZTSe + NNg1EzVNNYc1wjX9Njc2cjauNuk3 + JDdgN5w31zgUOFA4jDjIOQU5Qjl/ + Obw5+To2OnQ6sjrvOy07azuqO+g8 + JzxlPKQ84z0iPWE9oT3gPiA+YD6g + PuA/IT9hP6I/4kAjQGRApkDnQSlB + akGsQe5CMEJyQrVC90M6Q31DwEQD + REdEikTORRJFVUWaRd5GIkZnRqtG + 8Ec1R3tHwEgFSEtIkUjXSR1JY0mp + SfBKN0p9SsRLDEtTS5pL4kwqTHJM + uk0CTUpNk03cTiVObk63TwBPSU+T + T91QJ1BxULtRBlFQUZtR5lIxUnxS + x1MTU19TqlP2VEJUj1TbVShVdVXC + Vg9WXFapVvdXRFeSV+BYL1h9WMtZ + GllpWbhaB1pWWqZa9VtFW5Vb5Vw1 + XIZc1l0nXXhdyV4aXmxevV8PX2Ff + s2AFYFdgqmD8YU9homH1YklinGLw + Y0Njl2PrZEBklGTpZT1lkmXnZj1m + kmboZz1nk2fpaD9olmjsaUNpmmnx + akhqn2r3a09rp2v/bFdsr20IbWBt + uW4SbmtuxG8eb3hv0XArcIZw4HE6 + cZVx8HJLcqZzAXNdc7h0FHRwdMx1 + KHWFdeF2Pnabdvh3VnezeBF4bnjM + eSp5iXnnekZ6pXsEe2N7wnwhfIF8 + 4X1BfaF+AX5ifsJ/I3+Ef+WAR4Co + gQqBa4HNgjCCkoL0g1eDuoQdhICE + 44VHhauGDoZyhteHO4efiASIaYjO + iTOJmYn+imSKyoswi5aL/IxjjMqN + MY2Yjf+OZo7OjzaPnpAGkG6Q1pE/ + kaiSEZJ6kuOTTZO2lCCUipT0lV+V + yZY0lp+XCpd1l+CYTJi4mSSZkJn8 + mmia1ZtCm6+cHJyJnPedZJ3SnkCe + rp8dn4uf+qBpoNihR6G2oiailqMG + o3aj5qRWpMelOKWpphqmi6b9p26n + 4KhSqMSpN6mpqhyqj6sCq3Wr6axc + rNCtRK24ri2uoa8Wr4uwALB1sOqx + YLHWskuywrM4s660JbSctRO1irYB + tnm28Ldot+C4WbjRuUq5wro7urW7 + LrunvCG8m70VvY++Cr6Evv+/er/1 + wHDA7MFnwePCX8Lbw1jD1MRRxM7F + S8XIxkbGw8dBx7/IPci8yTrJuco4 + yrfLNsu2zDXMtc01zbXONs62zzfP + uNA50LrRPNG+0j/SwdNE08bUSdTL + 1U7V0dZV1tjXXNfg2GTY6Nls2fHa + dtr724DcBdyK3RDdlt4c3qLfKd+v + 4DbgveFE4cziU+Lb42Pj6+Rz5Pzl + hOYN5pbnH+ep6DLovOlG6dDqW+rl + 63Dr++yG7RHtnO4o7rTvQO/M8Fjw + 5fFy8f/yjPMZ86f0NPTC9VD13vZt + 9vv3ivgZ+Kj5OPnH+lf65/t3/Af8 + mP0p/br+S/7c/23//4AE0h4fICFa + JGNsYXNzbmFtZVgkY2xhc3Nlc11O + U011dGFibGVEYXRhoyAiI1ZOU0Rh + dGFYTlNPYmplY3TSHh8lJlxOU0Nv + bG9yU3BhY2WiJyNcTlNDb2xvclNw + YWNl0h4fKSpXTlNDb2xvcqIrI1dO + U0NvbG9yXxAPTlNLZXllZEFyY2hp + dmVy0S4vVHJvb3SAAQAIABEAGgAj + AC0AMgA3AD8ARQBQAF0AYwBwAIUA + jACiALYAuAC6ALwAwwDIAM4A0ADS + ANQA2QDhDS0NLw00DT8NSA1WDVoN + YQ1qDW8NfA1/DYwNkQ2ZDZwNpA22 + DbkNvgAAAAAAAAIBAAAAAAAAADAA + AAAAAAAAAAAAAAAAAA3A + + b + 0.99819 + g + 0 + r + 0 + + HeadArrow + 0 + Join + 0 + Legacy + + TailArrow + 0 + + + Tail + + ID + 106 + Info + 1 + + + + Bounds + {{366.5, 397.74998050000011}, {80, 78}} + Class + ShapedGraphic + FontInfo + + Font + HiraKakuProN-W3 + Size + 12 + + ID + 168 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Circle + Style + + shadow + + Draws + NO + + stroke + + Color + + archive + + YnBsaXN0MDDUAQIDBAUGLC1YJHZl + cnNpb25YJG9iamVjdHNZJGFyY2hp + dmVyVCR0b3ASAAGGoKcHCBMZHSQo + VSRudWxs1QkKCwwNDg8QERJcTlND + b21wb25lbnRzVU5TUkdCXE5TQ29s + b3JTcGFjZV8QEk5TQ3VzdG9tQ29s + b3JTcGFjZVYkY2xhc3NPEBQwLjAw + MTI2NTg2NDM5NSAwIDEgMU8QETAg + MCAwLjk5ODE4OTA5MTcAEAGAAoAG + 0xQVDRYXGFROU0lEVU5TSUNDEAeA + A4AF0hoNGxxXTlMuZGF0YU8RDEgA + AAxITGlubwIQAABtbnRyUkdCIFhZ + WiAHzgACAAkABgAxAABhY3NwTVNG + VAAAAABJRUMgc1JHQgAAAAAAAAAA + AAAAAAAA9tYAAQAAAADTLUhQICAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAABFjcHJ0AAABUAAAADNkZXNj + AAABhAAAAGx3dHB0AAAB8AAAABRi + a3B0AAACBAAAABRyWFlaAAACGAAA + ABRnWFlaAAACLAAAABRiWFlaAAAC + QAAAABRkbW5kAAACVAAAAHBkbWRk + AAACxAAAAIh2dWVkAAADTAAAAIZ2 + aWV3AAAD1AAAACRsdW1pAAAD+AAA + ABRtZWFzAAAEDAAAACR0ZWNoAAAE + MAAAAAxyVFJDAAAEPAAACAxnVFJD + AAAEPAAACAxiVFJDAAAEPAAACAx0 + ZXh0AAAAAENvcHlyaWdodCAoYykg + MTk5OCBIZXdsZXR0LVBhY2thcmQg + Q29tcGFueQAAZGVzYwAAAAAAAAAS + c1JHQiBJRUM2MTk2Ni0yLjEAAAAA + AAAAAAAAABJzUkdCIElFQzYxOTY2 + LTIuMQAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAWFlaIAAAAAAA + APNRAAEAAAABFsxYWVogAAAAAAAA + AAAAAAAAAAAAAFhZWiAAAAAAAABv + ogAAOPUAAAOQWFlaIAAAAAAAAGKZ + AAC3hQAAGNpYWVogAAAAAAAAJKAA + AA+EAAC2z2Rlc2MAAAAAAAAAFklF + QyBodHRwOi8vd3d3LmllYy5jaAAA + AAAAAAAAAAAAFklFQyBodHRwOi8v + d3d3LmllYy5jaAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABkZXNjAAAA + AAAAAC5JRUMgNjE5NjYtMi4xIERl + ZmF1bHQgUkdCIGNvbG91ciBzcGFj + ZSAtIHNSR0IAAAAAAAAAAAAAAC5J + RUMgNjE5NjYtMi4xIERlZmF1bHQg + UkdCIGNvbG91ciBzcGFjZSAtIHNS + R0IAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAZGVzYwAAAAAAAAAsUmVmZXJl + bmNlIFZpZXdpbmcgQ29uZGl0aW9u + IGluIElFQzYxOTY2LTIuMQAAAAAA + AAAAAAAALFJlZmVyZW5jZSBWaWV3 + aW5nIENvbmRpdGlvbiBpbiBJRUM2 + MTk2Ni0yLjEAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAHZpZXcAAAAA + ABOk/gAUXy4AEM8UAAPtzAAEEwsA + A1yeAAAAAVhZWiAAAAAAAEwJVgBQ + AAAAVx/nbWVhcwAAAAAAAAABAAAA + AAAAAAAAAAAAAAAAAAAAAo8AAAAC + c2lnIAAAAABDUlQgY3VydgAAAAAA + AAQAAAAABQAKAA8AFAAZAB4AIwAo + AC0AMgA3ADsAQABFAEoATwBUAFkA + XgBjAGgAbQByAHcAfACBAIYAiwCQ + AJUAmgCfAKQAqQCuALIAtwC8AMEA + xgDLANAA1QDbAOAA5QDrAPAA9gD7 + AQEBBwENARMBGQEfASUBKwEyATgB + PgFFAUwBUgFZAWABZwFuAXUBfAGD + AYsBkgGaAaEBqQGxAbkBwQHJAdEB + 2QHhAekB8gH6AgMCDAIUAh0CJgIv + AjgCQQJLAlQCXQJnAnECegKEAo4C + mAKiAqwCtgLBAssC1QLgAusC9QMA + AwsDFgMhAy0DOANDA08DWgNmA3ID + fgOKA5YDogOuA7oDxwPTA+AD7AP5 + BAYEEwQgBC0EOwRIBFUEYwRxBH4E + jASaBKgEtgTEBNME4QTwBP4FDQUc + BSsFOgVJBVgFZwV3BYYFlgWmBbUF + xQXVBeUF9gYGBhYGJwY3BkgGWQZq + BnsGjAadBq8GwAbRBuMG9QcHBxkH + Kwc9B08HYQd0B4YHmQesB78H0gfl + B/gICwgfCDIIRghaCG4IggiWCKoI + vgjSCOcI+wkQCSUJOglPCWQJeQmP + CaQJugnPCeUJ+woRCicKPQpUCmoK + gQqYCq4KxQrcCvMLCwsiCzkLUQtp + C4ALmAuwC8gL4Qv5DBIMKgxDDFwM + dQyODKcMwAzZDPMNDQ0mDUANWg10 + DY4NqQ3DDd4N+A4TDi4OSQ5kDn8O + mw62DtIO7g8JDyUPQQ9eD3oPlg+z + D88P7BAJECYQQxBhEH4QmxC5ENcQ + 9RETETERTxFtEYwRqhHJEegSBxIm + EkUSZBKEEqMSwxLjEwMTIxNDE2MT + gxOkE8UT5RQGFCcUSRRqFIsUrRTO + FPAVEhU0FVYVeBWbFb0V4BYDFiYW + SRZsFo8WshbWFvoXHRdBF2UXiReu + F9IX9xgbGEAYZRiKGK8Y1Rj6GSAZ + RRlrGZEZtxndGgQaKhpRGncanhrF + GuwbFBs7G2MbihuyG9ocAhwqHFIc + exyjHMwc9R0eHUcdcB2ZHcMd7B4W + HkAeah6UHr4e6R8THz4faR+UH78f + 6iAVIEEgbCCYIMQg8CEcIUghdSGh + Ic4h+yInIlUigiKvIt0jCiM4I2Yj + lCPCI/AkHyRNJHwkqyTaJQklOCVo + JZclxyX3JicmVyaHJrcm6CcYJ0kn + eierJ9woDSg/KHEooijUKQYpOClr + KZ0p0CoCKjUqaCqbKs8rAis2K2kr + nSvRLAUsOSxuLKIs1y0MLUEtdi2r + LeEuFi5MLoIuty7uLyQvWi+RL8cv + /jA1MGwwpDDbMRIxSjGCMbox8jIq + MmMymzLUMw0zRjN/M7gz8TQrNGU0 + njTYNRM1TTWHNcI1/TY3NnI2rjbp + NyQ3YDecN9c4FDhQOIw4yDkFOUI5 + fzm8Ofk6Njp0OrI67zstO2s7qjvo + PCc8ZTykPOM9Ij1hPaE94D4gPmA+ + oD7gPyE/YT+iP+JAI0BkQKZA50Ep + QWpBrEHuQjBCckK1QvdDOkN9Q8BE + A0RHRIpEzkUSRVVFmkXeRiJGZ0ar + RvBHNUd7R8BIBUhLSJFI10kdSWNJ + qUnwSjdKfUrESwxLU0uaS+JMKkxy + TLpNAk1KTZNN3E4lTm5Ot08AT0lP + k0/dUCdQcVC7UQZRUFGbUeZSMVJ8 + UsdTE1NfU6pT9lRCVI9U21UoVXVV + wlYPVlxWqVb3V0RXklfgWC9YfVjL + WRpZaVm4WgdaVlqmWvVbRVuVW+Vc + NVyGXNZdJ114XcleGl5sXr1fD19h + X7NgBWBXYKpg/GFPYaJh9WJJYpxi + 8GNDY5dj62RAZJRk6WU9ZZJl52Y9 + ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp + 8WpIap9q92tPa6dr/2xXbK9tCG1g + bbluEm5rbsRvHm94b9FwK3CGcOBx + OnGVcfByS3KmcwFzXXO4dBR0cHTM + dSh1hXXhdj52m3b4d1Z3s3gReG54 + zHkqeYl553pGeqV7BHtje8J8IXyB + fOF9QX2hfgF+Yn7CfyN/hH/lgEeA + qIEKgWuBzYIwgpKC9INXg7qEHYSA + hOOFR4Wrhg6GcobXhzuHn4gEiGmI + zokziZmJ/opkisqLMIuWi/yMY4zK + jTGNmI3/jmaOzo82j56QBpBukNaR + P5GokhGSepLjk02TtpQglIqU9JVf + lcmWNJaflwqXdZfgmEyYuJkkmZCZ + /JpomtWbQpuvnByciZz3nWSd0p5A + nq6fHZ+Ln/qgaaDYoUehtqImopaj + BqN2o+akVqTHpTilqaYapoum/adu + p+CoUqjEqTepqaocqo+rAqt1q+ms + XKzQrUStuK4trqGvFq+LsACwdbDq + sWCx1rJLssKzOLOutCW0nLUTtYq2 + AbZ5tvC3aLfguFm40blKucK6O7q1 + uy67p7whvJu9Fb2Pvgq+hL7/v3q/ + 9cBwwOzBZ8Hjwl/C28NYw9TEUcTO + xUvFyMZGxsPHQce/yD3IvMk6ybnK + OMq3yzbLtsw1zLXNNc21zjbOts83 + z7jQOdC60TzRvtI/0sHTRNPG1EnU + y9VO1dHWVdbY11zX4Nhk2OjZbNnx + 2nba+9uA3AXcit0Q3ZbeHN6i3ynf + r+A24L3hROHM4lPi2+Nj4+vkc+T8 + 5YTmDeaW5x/nqegy6LzpRunQ6lvq + 5etw6/vshu0R7ZzuKO6070DvzPBY + 8OXxcvH/8ozzGfOn9DT0wvVQ9d72 + bfb794r4Gfio+Tj5x/pX+uf7d/wH + /Jj9Kf26/kv+3P9t//+ABNIeHyAh + WiRjbGFzc25hbWVYJGNsYXNzZXNd + TlNNdXRhYmxlRGF0YaMgIiNWTlNE + YXRhWE5TT2JqZWN00h4fJSZcTlND + b2xvclNwYWNloicjXE5TQ29sb3JT + cGFjZdIeHykqV05TQ29sb3KiKyNX + TlNDb2xvcl8QD05TS2V5ZWRBcmNo + aXZlctEuL1Ryb290gAEACAARABoA + IwAtADIANwA/AEUAUABdAGMAcACF + AIwAowC3ALkAuwC9AMQAyQDPANEA + 0wDVANoA4g0uDTANNQ1ADUkNVw1b + DWINaw1wDX0NgA2NDZINmg2dDaUN + tw26Db8AAAAAAAACAQAAAAAAAAAw + AAAAAAAAAAAAAAAAAAANwQ== + + b + 0.998189 + g + 0 + r + 0 + + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 5} + VerticalPad + 0 + + + + Class + LineGraphic + ID + 126 + Points + + {164, 374.25} + {164, 397.74996100000021} + + Style + + stroke + + Color + + b + 0 + g + 0.0381768 + r + 1 + + HeadArrow + 0 + Join + 0 + Legacy + + TailArrow + 0 + + + + + Class + LineGraphic + ID + 125 + Points + + {164, 475.74997625878927} + {164, 499.24993725878949} + + Style + + stroke + + Color + + b + 0 + g + 0.0381768 + r + 1 + + HeadArrow + 0 + Join + 0 + Legacy + + TailArrow + 0 + + + + + Bounds + {{124, 499.24995675878938}, {80, 78}} + Class + ShapedGraphic + FontInfo + + Font + HiraKakuProN-W3 + Size + 12 + + ID + 124 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Circle + Style + + shadow + + Draws + NO + + stroke + + Color + + b + 0 + g + 0.0381768 + r + 1 + + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 4} + VerticalPad + 0 + + + + Bounds + {{124, 397.74994574121115}, {80, 78}} + Class + ShapedGraphic + FontInfo + + Font + HiraKakuProN-W3 + Size + 12 + + ID + 123 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Circle + Style + + shadow + + Draws + NO + + stroke + + Color + + b + 0 + g + 0.0381768 + r + 1 + + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 3\ +(subTreeRoot)} + VerticalPad + 0 + + + + Bounds + {{548.5, 397.74996948242188}, {58, 47}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + HiraKakuPro-W3 + Size + 24 + + ID + 120 + Shape + Circle + Style + + fill + + Color + + b + 0.974573 + g + 0.998064 + r + 1 + + Draws + NO + + shadow + + Color + + a + 0.75 + b + 0.94523 + g + 0.987116 + r + 1 + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuPro-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs48 \cf0 \'95\'db\'8e\'9d} + + TextRelativeArea + {{0, 0}, {1, 1}} + Wrap + NO + + + Bounds + {{266, 194.75}, {58, 47}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + HiraKakuPro-W3 + Size + 24 + + ID + 119 + Shape + Circle + Style + + fill + + Color + + b + 0.974573 + g + 0.998064 + r + 1 + + Draws + NO + + shadow + + Color + + a + 0.75 + b + 0.94523 + g + 0.987116 + r + 1 + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuPro-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs48 \cf0 \'95\'db\'8e\'9d} + + TextRelativeArea + {{0, 0}, {1, 1}} + Wrap + NO + + + Class + LineGraphic + ID + 118 + Points + + {456, 374.25} + {505, 397.74993048242209} + + Style + + stroke + + Color + + b + 0 + g + 0.0381768 + r + 1 + + HeadArrow + 0 + Join + 0 + Legacy + + TailArrow + 0 + + + Tail + + ID + 106 + + + + Class + LineGraphic + ID + 117 + Points + + {505, 475.74994574121115} + {505, 499.24990674121136} + + Style + + stroke + + Color + + b + 0 + g + 0.0381768 + r + 1 + + HeadArrow + 0 + Join + 0 + Legacy + + TailArrow + 0 + + + + + Bounds + {{465, 499.24992624121126}, {80, 78}} + Class + ShapedGraphic + FontInfo + + Font + HiraKakuProN-W3 + Size + 12 + + ID + 116 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Circle + Style + + shadow + + Draws + NO + + stroke + + Color + + b + 0 + g + 0.0381768 + r + 1 + + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 4\ +(\'96\'96\'94\'f6\ +\'83\'6d\'81\'5b\'83\'68)} + VerticalPad + 0 + + + + Bounds + {{465, 397.74991522363302}, {80, 78}} + Class + ShapedGraphic + FontInfo + + Font + HiraKakuProN-W3 + Size + 12 + + ID + 115 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Circle + Style + + shadow + + Draws + NO + + stroke + + Color + + b + 0 + g + 0.0381768 + r + 1 + + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 3\ +(subTreeRoot)} + VerticalPad + 0 + + + + Class + LineGraphic + Head + + ID + 104 + + ID + 114 + Points + + {456, 90.750020749999891} + {456, 93.249980500000106} + + Style + + stroke + + HeadArrow + FilledArrow + Join + 0 + Legacy + + TailArrow + 0 + + + Tail + + ID + 112 + + + + Class + LineGraphic + Head + + ID + 116 + Info + 3 + + ID + 113 + Points + + {487.99919946335871, 49.54739032958512} + {590.5, 50.5} + {583.5, 538.5} + {545.00001999999984, 538.24992624121126} + + Style + + stroke + + HeadArrow + FilledArrow + Join + 0 + Legacy + + TailArrow + 0 + + + Tail + + ID + 112 + + + + Bounds + {{424, 7.75}, {64, 83}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + HiraKakuPro-W3 + Size + 24 + + ID + 112 + Shape + Circle + Style + + fill + + Color + + b + 0.974573 + g + 0.998064 + r + 1 + + Draws + NO + + shadow + + Color + + a + 0.75 + b + 0.94523 + g + 0.987116 + r + 1 + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuPro-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs48 \cf0 Tree\ +ver2} + + TextRelativeArea + {{0, 0}, {1, 1}} + Wrap + NO + + + Class + LineGraphic + ID + 107 + Points + + {456, 272.75} + {456, 296.24996100000021} + + Style + + stroke + + HeadArrow + 0 + Join + 0 + Legacy + + TailArrow + 0 + + + + + Bounds + {{416, 296.24998050000011}, {80, 78}} + Class + ShapedGraphic + FontInfo + + Font + HiraKakuProN-W3 + Size + 12 + + ID + 106 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Circle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 \'82\'51} + VerticalPad + 0 + + + + Class + LineGraphic + ID + 105 + Points + + {456, 171.25001949999989} + {456, 194.74998050000011} + + Style + + stroke + + HeadArrow + 0 + Join + 0 + Legacy + + TailArrow + 0 + + + Tail + + ID + 104 + Info + 1 + + + + Bounds + {{416, 93.25}, {80, 78}} + Class + ShapedGraphic + FontInfo + + Font + HiraKakuProN-W3 + Size + 12 + + ID + 104 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Circle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 0\ +(root)} + VerticalPad + 0 + + + + Bounds + {{416, 194.75}, {80, 78}} + Class + ShapedGraphic + FontInfo + + Font + HiraKakuProN-W3 + Size + 12 + + ID + 103 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Circle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 1} + VerticalPad + 0 + + + + Class + LineGraphic + Head + + ID + 62 + + ID + 86 + Points + + {164, 88.250020749999891} + {164, 90.749980500000106} + + Style + + stroke + + HeadArrow + FilledArrow + Join + 0 + Legacy + + TailArrow + 0 + + + Tail + + ID + 82 + + + + Class + LineGraphic + Head + + ID + 64 + Info + 3 + + ID + 84 + Points + + {195.999297031726, 46.470936363095412} + {250, 46} + {249, 333} + {204.00001999999989, 332.74998050000011} + + Style + + stroke + + HeadArrow + FilledArrow + Join + 0 + Legacy + + TailArrow + 0 + + + Tail + + ID + 82 + + + + Bounds + {{132, 5.25}, {64, 83}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + HiraKakuPro-W3 + Size + 24 + + ID + 82 + Shape + Circle + Style + + fill + + Color + + b + 0.974573 + g + 0.998064 + r + 1 + + Draws + NO + + shadow + + Color + + a + 0.75 + b + 0.94523 + g + 0.987116 + r + 1 + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuPro-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs48 \cf0 Tree\ +ver1} + + TextRelativeArea + {{0, 0}, {1, 1}} + Wrap + NO + + + Class + LineGraphic + ID + 65 + Points + + {164, 270.25} + {164, 293.74996100000021} + + Style + + stroke + + HeadArrow + 0 + Join + 0 + Legacy + + TailArrow + 0 + + + + + Bounds + {{124, 293.74998050000011}, {80, 78}} + Class + ShapedGraphic + FontInfo + + Font + HiraKakuProN-W3 + Size + 12 + + ID + 64 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Circle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 \'82\'51\ +(\'96\'96\'94\'f6\ +\'83\'6d\'81\'5b\'83\'68)} + VerticalPad + 0 + + + + Class + LineGraphic + ID + 63 + Points + + {164, 168.75001949999989} + {164, 192.24998050000011} + + Style + + stroke + + HeadArrow + 0 + Join + 0 + Legacy + + TailArrow + 0 + + + Tail + + ID + 62 + Info + 1 + + + + Bounds + {{124, 90.75}, {80, 78}} + Class + ShapedGraphic + FontInfo + + Font + HiraKakuProN-W3 + Size + 12 + + ID + 62 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Circle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 0\ +(root)} + VerticalPad + 0 + + + + Bounds + {{124, 192.25}, {80, 78}} + Class + ShapedGraphic + FontInfo + + Font + HiraKakuProN-W3 + Size + 12 + + ID + 61 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Circle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs24 \cf0 1} + VerticalPad + 0 + + + + GridInfo + + GuidesLocked + NO + GuidesVisible + YES + HPages + 2 + ImageCounter + 1 + KeepToScale + + Layers + + + Lock + NO + Name + レイヤー 1 + Print + YES + View + YES + + + LayoutInfo + + Animate + NO + circoMinDist + 18 + circoSeparation + 0.0 + layoutEngine + dot + neatoSeparation + 0.0 + twopiSeparation + 0.0 + + LinksVisible + NO + MagnetsVisible + NO + MasterSheets + + ModificationDate + 2017-02-08 19:05:18 +0000 + Modifier + sister_clown + NotesVisible + NO + Orientation + 2 + OriginVisible + NO + PageBreaks + YES + PrintInfo + + NSBottomMargin + + float + 41 + + NSHorizonalPagination + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG + + NSLeftMargin + + float + 18 + + NSPaperSize + + size + {595, 842} + + NSPrintReverseOrientation + + int + 0 + + NSRightMargin + + float + 18 + + NSTopMargin + + float + 18 + + + PrintOnePage + + ReadOnly + NO + RowAlign + 1 + RowSpacing + 36 + SheetTitle + キャンバス 1 + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UniqueID + 1 + UseEntirePage + + VPages + 1 + WindowInfo + + CurrentSheet + 0 + ExpandedCanvases + + Frame + {{417, 163}, {1373, 992}} + ListView + + OutlineWidth + 142 + RightSidebar + + ShowRuler + + Sidebar + + SidebarWidth + 120 + VisibleRegion + {{-60, -33}, {1238, 850}} + Zoom + 1 + ZoomValues + + + キャンバス 1 + 1 + 1 + + + + + diff -r e4da23b04260 -r 33d8077a5d45 figures/findDifTree.pdf Binary file figures/findDifTree.pdf has changed diff -r e4da23b04260 -r 33d8077a5d45 indexupdate.tex --- a/indexupdate.tex Wed Feb 08 17:26:22 2017 +0900 +++ b/indexupdate.tex Thu Feb 09 17:25:56 2017 +0900 @@ -1,16 +1,17 @@ \chapter{Indexの差分Update} -Jungleの木はIndexを持っており、木のCommit時に、Full Updateを行っている。 -そのため、Commitを行うたび、O(n)のIndexのUpdateが入り、木の編集時大きなネックとなっていた。 -なので、高速にIndexの更新を行う差分アップデートを実装した。 +Jungleの木はIndexを持っており、木のCommit時にFull Updateを行っている。 +そのため、Commitを行うたびO(n)のIndexのUpdateが入り、木の編集時大きなネックとなっていた。 +なので、高速にIndexの更新を行うため、Index の差分アップデートを実装した。 \section{差分 Updateの実装} Indexの差分 Updateを行うためには、編集を行ったノードを覚えておく必要がある。 -Jungleの木に編集を行ったノードをリストに格納する。 -そして、Commit時にリストにあるノードと、そのノードまでの経路にあるノードに対して、IndexをのUpdateを行う。 +そこで、Jungle Tree Editor 内に、編集を加えたノードを覚えておくためのリストを定義した。 +Editor は、木に編集を加えたら、リストに編集前のノードを保存する。 +そして、Commit 時にリストにあるノードを使って Index の Update を行う。 -Indexの Update は、ノードの削除とノードの挿入の2つのプロセスで行われる。 +Indexの Update は、削除と挿入の2つのプロセスで行われる。 -\section{Indexの中身の削除} +\section{Indexの削除} IndexのUpdateを行う際、初めに、編集後の木に存在しないノードをIndexから削除する。 削除の対象は、変更を加えたノードと、ルートから変更を加えたノードまでの経路にあるノードである。 ノードの削除は、以下の手順で行われる。 @@ -24,6 +25,9 @@ \item 1 - 5をリストからノードが無くなるまで続ける。 \end{enumerate} +Parent Index から値が取得できない場合は、以降ルートまでのノードは Index から削除されていることが保証されているため、削除を終えて次のノードに行っても構わない。 + + \section{Indexへのノードの挿入} Indexから不要なノードを削除した後は、新しく作られたノードをIndexに挿入する。 diff -r e4da23b04260 -r 33d8077a5d45 introduciton.tex --- a/introduciton.tex Wed Feb 08 17:26:22 2017 +0900 +++ b/introduciton.tex Thu Feb 09 17:25:56 2017 +0900 @@ -34,9 +34,10 @@ \section{本論文の構成} 本論文では、初めに既存のデータベースについて記述する。 第 3 章では、Jungleの基本的な機能・APIについて記述する。 -第 4 章では、改良後のIndexの実装に使用する非破壊 TreeMap の実装について記述する。 -第 5 章では、Indexの差分 Update の実装について記述する。 -第 6 章では、線形の木を、正順でO(1)で構築することが可能な、Differential Jungle Tree の実装について記述する。 -第 7 章では、自身が Index としての機能を持つ、 Red Black Jungle Treeの実装について記述する。 -第 8 章では、実際に Jungle を使用した、例題アプリケーションの実装について記述する。 -第 9 章では、今回実装した機能の測定について記述する。 +第 4 章では、Jungleに新しく加えた構成要素について述べる。 +第 5 章では、改良後のIndexの実装に使用する非破壊 TreeMap の実装について記述する。 +第 6 章では、Indexの差分 Update の実装について記述する。 +第 7 章では、線形の木を、正順でO(1)で構築することが可能な、Differential Jungle Tree の実装について記述する。 +第 8 章では、自身が Index としての機能を持つ、 Red Black Jungle Treeの実装について記述する。 +第 9 章では、実際に Jungle を使用した、例題アプリケーションの実装について記述する。 +第 10 章では、今回実装した機能の測定について記述する。 diff -r e4da23b04260 -r 33d8077a5d45 jungle.tex --- a/jungle.tex Wed Feb 08 17:26:22 2017 +0900 +++ b/jungle.tex Thu Feb 09 17:25:56 2017 +0900 @@ -1,30 +1,11 @@ \chapter{非破壊的木構造データベースJungle} -本章では、当研究室で開発を行っているデータベース Jungle について記述する。 - -\section{概要} -Jungleは、当研究室で開発を行っているデータベースで、Javaを用いて実装されている。 -Jungleは名前付きの複数の木の集合からなり、木は複数のノードの集合で出来ている。 -ノードは自身の子のリストと属性名と属性値の組でデータを持ち、データベースのレコードに相当する。 -通常のレコードと異なるのは、ノードに子供となる複数のノードが付くところである。 -Jungleでは、親から子への片方向の参照しか持たない。 +本章では、Jungleの基本的な解説を行う。 +初めに Jungle の特徴である非破壊的木構造の説明をし、その後提供しているAPIについて述べる。 -通常のRDBと異なり、Jungleは木構造をそのまま読み込むことができる。例えば、XMLやJsonで記述された構造を、データベースを設計することなく読み込むことが可能である。 -また、この木を、そのままデータベースとして使用することも可能である。しかし、木の変更の手間は木の構造に依存する。 -%特に非破壊木構造を採用しているJungleでは木構造の変更にo(1)からo(n)の様々な選択肢がある。つまり、アプリケーションに合わせて木を設計しない限り、 -特に非破壊木構造を採用しているJungleでは、木構造の変更の手間はO(1)からO(n)となりえる。つまり、アプリケーションに合わせて木を設計しない限り、 -十分な性能を出すことはできない。逆に、正しい木の設計を行えば高速な処理が可能である。 - -Jungleは基本的にon memoryで使用することを考えており、一度、木のルートを取得すれば、その上で木構造として自由にアクセスして良い。 -Jungleは分散データベースを構成するように設計されており、分散ノード間の通信は木の変更のログを交換することによって行われる。 -持続性のある分散ノードを用いることでJungleの持続性を保証することができる。本論文では基本的に分散実装部分ではなく on memory DBの -部分について考察する。 -本章ではまず破壊的木構造と、非破壊的木構造の説明をし、その後Jungleの提供しているAPIについて述べる。 - -\newpage \section{非破壊的木構造} Jungle は、非破壊的木構造という特殊な木構造を持つ。 -本節では、初めに破壊的木構造と非破壊的木構造の編集・メリットデメリットについて記述する。 +本節では、破壊的木構造と非破壊的木構造の編集・メリットデメリットについて記述する。 \vspace{0.3in} {\Large 破壊的木構造の編集} @@ -61,7 +42,6 @@ \end{center} \end{figure} -\newpage 非破壊的木構造においてデータのロックが必要となる部分は、木のコピーを作り終えた後に ルートノードを更新するときだけである。 データ編集を行っている間ロックが必要な破壊的木構造に比べ、編集中においてもデータの読み込みが可能であるが、 @@ -103,10 +83,10 @@ \begin{center} \caption{Eitherに実装されているAPI} \begin{tabular}{|p{15em}|p{24em}|} \hline -{\tt boolean isA()} & EitherがAを持っているかどうかを調べる。持っている場合trueを返す。\\ \hline -{\tt boolean isB()} & EitherがBを持っているかどうかを調べる。持っている場合trueを返す。\\ \hline -{\tt A a()} & Aの値を取得する。\\ \hline -{\tt B b()} & Bの値を取得する。\\ \hline +{\small{\tt boolean isA()}} & {\small EitherがAを持っているかどうかを調べる。持っている場合trueを返す。}\\ \hline +{\small{\tt boolean isB()}} & {\small EitherがBを持っているかどうかを調べる。持っている場合trueを返す。}\\ \hline +{\small{\tt A a()}} &{\small Aの値を取得する。}\\ \hline +{\small{\tt B b()}} &{\small Bの値を取得する。}\\ \hline \end{tabular} \label{EitherAPI} \end{center} @@ -125,8 +105,8 @@ \begin{center} \caption{Jungleに実装されているAPI} \begin{tabular}{|p{15em}|p{24em}|} \hline - {\tt JungleTree createNewTree(String treeName) } & Jungleに新しく木を生成する。木の名前が重複した場合、生成に失敗しnullを返す。 \\ \hline - {\tt JungleTree getTreeByName(String treeName)} & JungleからtreeNameと名前が一致するtreeを取得する。名前が一致するTreeがない場合取得は失敗しnullを返す \\ \hline + {\small {\tt JungleTree createNewTree(String treeName)}} &{\small Jungleに新しく木を生成する。木の名前が重複した場合、生成に失敗しnullを返す。} \\ \hline + {\small {\tt JungleTree getTreeByName(String treeName)}} &{\small JungleからtreeNameと名前が一致するtreeを取得する。名前が一致するTreeがない場合取得は失敗しnullを返す。} \\ \hline \end{tabular} \label{jungleAPI} \end{center} @@ -135,20 +115,40 @@ \section{JungleTree} Jungleは複数の木の集合で出来ている。 -Jungleの木は、変更を加えるためのEditor・検索を行うTraversreなどを保持しており、ユーザーはそれらを用いてデータにアクセスする。 -過去のバージョンの木に対するアクセスや、特定のノードのPathを検索する機能も持っている。 +Jungleの木は、自身の情報をTreeContext というオブジェクトに保持している。 +TreeContextとは、木構造のデータ(表\ref{TreeContext1})を持つクラスである。 + +\newpage +\begin{table}[htb] +\begin{center} +\caption{TreeContextが保持している値} +\begin{tabular}{|l|} \hline +{\tt } 自身のルートノード\\ \hline +{\tt } 1つ前のバージョンのTreeContext\\ \hline +{\tt } 編集のログ\\ \hline +{\tt } 木のuuid \\ \hline +{\tt } 木の名前 \\ \hline +{\tt } 木のversion \\ \hline +{\tt } 木の検索に使うTraverser \\ \hline +\end{tabular} +\label{TreeContext1} +\end{center} +\end{table} + +Jungle の木は、自身の木構造に編集を行う Editor や 検索に使用する Traverser を提供しており、ユーザーはそれを用いて木構造にアクセスする。 +また、過去のバージョンの木に対するアクセスや、特定のノードのPathを検索する機能も持っている。 以下にJungleTreeクラスが提供しているAPI(表\ref{JungleTreeAPI})を記す \begin{table}[htb] \begin{center} \caption{JungleTreeに実装されているAPI} \begin{tabular}{|p{15em}|p{24em}|} \hline -{\tt TreeNode getRootNode()} &木のルートノードを取得する。 \\ \hline -{\tt long revision()} & 木のバーションを取得する。初めは0から始まり、木への変更がCommitされる度に1上昇する。 \\ \hline -{\tt JungleTreeEditor getJungleTreeEditor()} & 木へ変更を加えるEditorを取得する。\\ \hline -{\tt Either getOldTree(long revision)} & 引数で指定したint revisionに等しいバージョンの木を取得する。 \\ \hline -{\tt InterfaceTraverser getTraverser()} & 木の検索を行うTraverserを取得する。 \\ \hline -{\tt Either getNodeOfPath(NodePath path)} & {\tt NodePathで指定した位置と値なるノードを取得する。} \\ \hline -{\tt NodePath getNodePath(TreeNode node)} & 引数で渡したノードの位置を表す{\tt NodePath}を返す。\\ \hline +{\small {\tt TreeNode getRootNode()}} &{\small 木のルートノードを取得する。} \\ \hline +{\small {\tt long revision()}} & {\small 木のバーションを取得する。初めは0から始まり、木への変更がCommitされる度に1上昇する。} \\ \hline +{\small {\tt JungleTreeEditor getJungleTreeEditor()}} &{\small 木へ変更を加えるEditorを取得する。}\\ \hline +{\small {\tt Either getOldTree(long revision)}} & {\small 引数で指定したint revisionに等しいバージョンの木を取得する。} \\ \hline +{\small {\tt InterfaceTraverser getTraverser()}} & {\small 木の検索を行うTraverserを取得する。} \\ \hline +{\small {\tt Either getNodeOfPath(NodePath path)}} &{\small {\tt NodePathで指定した位置と値なるノードを取得する。}} \\ \hline +{\small {\tt NodePath getNodePath(TreeNode node)}} & {\small 引数で渡したノードの位置を表す{\tt NodePath}を返す。}\\ \hline \end{tabular} \label{JungleTreeAPI} \end{center} @@ -164,8 +164,8 @@ \begin{center} \caption{TreeNodeに実装されているAPI} \begin{tabular}{|p{15em}|p{24em}|} \hline - {\tt Children getChildren()} & ノードの子供を扱うChildrenオブジェクトを返す。\\ \hline - {\tt Attribute getAttribute()} &ノードが保持しているデータを扱うAttribteオブジェクトを返す。 \\ \hline + {\small {\tt Children getChildren()}} &{\small ノードの子供を扱うChildrenオブジェクトを返す} \\ \hline + {\small {\tt Attribute getAttribute()}} &{\small ノードが保持しているデータを扱うAttribteオブジェクトを返す。} \\ \hline \end{tabular} \label{TreeNodeAPI} \end{center} @@ -177,8 +177,8 @@ \begin{center} \caption{Childrenに実装されているAPI} \begin{tabular}{|p{15em}|p{24em}|} \hline - {\tt int size()} & 子供の数を返す。\\ \hline - {\tt at(int num)} &ノードが持つ子供の中から、 変数{\tt num}で指定された位置にある子ノードを返す。存在しない位置を指定した場合、{\tt Error} を返す。 \\ \hline + {\small{\tt int size()}} & {\small 子供の数を返す。}\\ \hline + {\small{\tt at(int num)}} &{\small ノードが持つ子供の中から、 変数{\tt num}で指定された位置にある子ノードを返す。存在しない位置を指定した場合、{\tt Error} を返す。} \\ \hline \end{tabular} \label{Children} \end{center} @@ -190,8 +190,8 @@ \begin{center} \caption{Attributeに実装されているAPI} \begin{tabular}{|p{15em}|p{24em}|} \hline - {\tt ByteBuffer get(String key)} &ノードが持つ値から、属性名 {\tt key}とペアの属性値を{\tt ByteBuffer}型で返す。ノードが保持していない{\tt key}を渡した場合エラーを返す。 \\ \hline - {\tt String getString(String key)} &ノードが持つ値から、属性名 {\tt key} とペアの属性値を{\tt String}型で返す。ノードが保持していない{\tt key}を渡した場合エラーを返す。 \\ \hline + {\small{\tt ByteBuffer get(String key)}} &{\small ノードが持つ値から、属性名 {\tt key}とペアの属性値を{\tt ByteBuffer}型で返す。ノードが保持していない{\tt key}を渡した場合エラーを返す。} \\ \hline + {\small{\tt String getString(String key)}} &{\small ノードが持つ値から、属性名 {\tt key} とペアの属性値を{\tt String}型で返す。ノードが保持していない{\tt key}を渡した場合エラーを返す。} \\ \hline \end{tabular} \label{Attribute} \end{center} @@ -212,7 +212,11 @@ \end{lstlisting} ソースコード\ref{getAttributeCode}の説明を行う。 -1行目から2行目で + +1行目で Jungle から木を取得し、 +2行目で、取得した木のルートノードを取得している。 +3 - 7行目でルートノードの1番目の子ノードを取得し、 +8 - 9行目で、ルートの1番目の子ノードから、属性名 "name" とペアの属性値を取得している。 \section{木の編集API} Jungleの木の編集は{\tt Default Jungle Tree Editor}クラスを用いて行われる。 @@ -220,22 +224,21 @@ Default Jungle Tree Editorは、Jungle Tree から、{\tt getTreeEditor()}を用いて取得する。 表\ref{editor}にJungle Tree Editorインターフェースに定義されているAPIを記述する。 また、表\ref{editor}に記述しているAPIは全て、{\tt Either} を返す。 -\newpage \begin{table}[htb] \begin{center} \caption{Editorに実装されているAPI} \begin{tabular*}{\textwidth}{|p{15em}|p{22em}|} \hline {\small\tt addNewChildAt( NodePath path, int pos)} & - {\tt path}で指定したノードの{\tt pos}番目の子の後にノードを追加する。\\ \hline + {\small\tt path}で指定したノードの{\tt pos}番目の子の後にノードを追加する。\\ \hline {\small\tt deleteChildAt( NodePath path,int pos)} & - {\tt path}で指定したノードの{\tt pos}番目の子ノードを削除する。 \\ \hline + {\small\tt path}で指定したノードの{\tt pos}番目の子ノードを削除する。 \\ \hline {\small\tt putAttribute( NodePath path,String key,ByteBuffer value)} & - {\tt path}で指定したノードに属性名 {\tt key} 属性値 {\tt value} のペアで値を挿入する。 \\ \hline + {\small\tt path}で指定したノードに属性名 {\tt key} 属性値 {\tt value} のペアで値を挿入する。 \\ \hline {\small\tt deleteAttribute( NodePath path,String key)}& - {\tt path}で指定したノードが持つ、属性名 {\tt key}とペアで保存されている属性値を削除する。\\ \hline + {\small\tt path}で指定したノードが持つ、属性名 {\tt key}とペアで保存されている属性値を削除する。\\ \hline {\small\tt moveChild( NodePath path,int num,String move)} & - {\tt path}で指定したノードの{\tt num}番目の子供を{\tt move}の方向に移動させる。 \\ \hline %あとで直す + {\small\tt path}で指定したノードの{\tt num}番目の子供を{\tt move}の方向に移動させる。 \\ \hline %あとで直す {\small\tt pushPop()} & ルートノードの上に新しいルートノードを追加する。線形の木を作る際に使用することで木の変更の手間をO(n)からO(1)にできる。\\ \hline {\small\tt success()} & @@ -247,14 +250,12 @@ -編集後に返される{\tt JungleTreeEditor}クラスは、編集後の木構造を保持しているため、編集前の木構造を保持している{\tt JungleTreeEditor}クラスとは別のオブジェクトである。 -編集を行った後は、関数{\tt editor.success()}で今までの編集をコミットすることができる。他の{\tt JungleTreeEditor}クラスによって木が更新されていた場合はコミットは失敗し、{\tt success()}は{\tt Error}を返す。 +編集後に返される{\tt Default Jungle Tree Editor}クラスは、編集後の木構造を保持しているため、編集前の木構造を保持している{\tt Default Jungle Tree Editor}クラスとは別のオブジェクトである。 +編集を行った後は、関数{\tt editor.success()}で今までの編集をコミットすることができる。他の{\tt Default Jungle Tree Editor}クラスによって木が更新されていた場合はコミットは失敗し、{\tt success()}は{\tt Error}を返す。 その場合は、木の編集を最初からやり直す必要がある。 以下に{\tt JungleTreeEditor}クラスを用いて、木の編集を行うサンプルコードを記述する。 -\newpage - \begin{lstlisting}[frame=lrbt,numbers=left,label=editorCode] JungleTreeEditor editor = tree.getTreeEditor(); DefaultNodePath editNodePath = new DefaultNodePath(); @@ -265,6 +266,12 @@ editor.success(); \end{lstlisting} +1行目で、木から Editor を取得している。 +2行目で、編集を行うノードの Path を作成している。Default Node Path は、生成時はルートノードを指しているため、今回はルートノードに対する変更であることがわかる。 +3行目で、実際にルートノードに対して、子ノードの追加を行っている。 +4行目以降で、編集が成功したかどうかを {\tt Either }を使って確かめ、成功していた場合7行目で変更を木に Commit している。 + +\begin{comment} \begin{enumerate} \item 関数{\tt tree.getEditor()}で編集を行う木から、{\tt JungleTreeEditor}クラスを取得する。 \item 次に変更するノードの場所を示す、{\tt NodePath}クラスを作成する。 @@ -274,8 +281,27 @@ \item 編集に成功していた場合、編集後木を持った、{\tt JungleTreeEditor}クラスを取得する。 \item 取得した{\tt JungleTreeEditor}クラスを用いて木の変更をコミットする。 \end{enumerate} +\end{comment} また、木に対して行われた変更は、Logとして書き出される。 + +\section{Commit} +Jungle Tree Editor を用いて木に変更を加えた後は、Commit を行う必要がある。 +Commit は、前節で記述した Jungle Tree Editor が持つ関数 {\tt success()} を使用することで行われる。 + +Commit を行うと、Jungle Tree Editor が保持している編集後の木構造のデータを持つ TreeContext を作成する。 +そして、編集前の木が持つ TreeContext と 新しく作った TreeContext を置き換えることで Commit は完了する。 +TreeContext の置き換えは、編集を行っている他の Thread と競合した際に、木の整合性を保つために以下の手順で行われる。 + +\begin{enumerate} +\item 新しく作った TreeContext が持つ、1つ前のバージョンの TreeContext と、編集前の木構造の TreeContext を比較する。 + +\item 一致しなかった場合、他のが Thread が Commit をすでに行っているため、失敗する(競合に負けた)。 + +\item 一致した場合、TreeContext を Atomic に入れ替える(競合に勝った)。 +\end{enumerate} + +競合に負けた場合は、新しい木に対してもう一度同じ変更を行う必要がある。 これらのAPIにより、Jungleは木構造を格納、編集する機能を持っている。 \section{Log} @@ -287,9 +313,9 @@ \begin{lstlisting}[frame=lrbt,label=src:treeoperationlog,caption=TreeOperationLogの仕様,numbers=left] public interface TreeOperationLog extends Iterable { - public TreeOperationLog add(NodePath _p,NodeOperation _op); - public TreeOperationLog append(TreeOperationLog _log); - public int length(); + public TreeOperationLog add(NodePath _p,NodeOperation _op); + public TreeOperationLog append(TreeOperationLog _log); + public int length(); } \end{lstlisting} @@ -303,43 +329,54 @@ \section{検索API} これまでに紹介したAPIにより、Jungleは木構造を構築できるようになった。 -しかし、木に問い合わせを行う検索APIが実装されていなかったため、木の走査を行う{\tt Traverser}クラス内に、lambda式を用いて実装した。 +しかし、木に問い合わせを行う検索APIが実装されていなかったため、木の走査を行う{\tt Interface Traverser}クラス内に、lambda式を用いて実装した。 以下に検索を行う関数{\tt find}の定義を記述する。 \begin{lstlisting}[frame=lrbt,label=query,numbers=left] public Iterator find(Query query, String key, String searchValue); \end{lstlisting} -関数{\tt find}は、第一引数には、探索の条件を記述する関数{\tt boolean comdition(TreeNode)}を定義した{\tt Query}を。 +関数{\tt find}は、第一引数には、探索の条件を記述する関数{\tt boolean comdition(TreeNode)}を定義した{\tt Query}を、 第二、第三引数には、Indexを用いた絞込に使用する{\tt String key、String value}を取り、条件に一致したノードの{\tt Iterator}を返す。 {\tt 関数find}の使用例を以下に記す。 \begin{lstlisting}[frame=lrbt,label=find,numbers=left] InterfaceTraverser traverser = tree.getTraverser(true); Iterator resultNodeIterator = traverser.find((TreeNode node) -> { - String personId = node.getAttributes().getString("name"); - if (personId == null) return false; - return personId.equals("kanagawa"); -}, "belong", "ryukyu"); + String name = node.getAttributes().getString("name"); + if (name == null) return false; + return name.equals("kanagawa"); + }, "belong", "ryukyu"); \end{lstlisting} 上記コードについて解説する。 -\begin{enumerate} - \item 木の走査を行う{\tt Traverser}クラスを取得する。 + +1行目で検索対象の木から、検索に使用する {\tt Interface Traverser} を取得する。 +2行目で、検索を行う関数 {\tt find()} を使用する。 +今回は、Index を使って、属性名 {\tt "belong"} 属性値 {\tt "ryukyu"} を持つノード取得し、 +3 - 5行目で定義されたクエリに渡す。 - \item Indexから{\tt find}の第2、第3引数である、属性名 {\tt belong}、属性値 {\tt ryukyu}の組のデータを持つノードを取得し、Queryに渡す(ノードの絞込を行う)。 +そして、クエリの中で属性名 {\tt "name"} 属性値 {\tt "kanagawa"} を持つノードかどうかを確かめる。 + +結果として、属性名 {\tt "belong"} 属性値{\tt "ryukyu"}と、属性名 {\tt "name"} 属性値{\tt kanagawa}の2つのデータを持つノードの {\tt Iterator} が取得できる。 + +検索の際に使用する Index の実装については次節に記述する。 - \item 引数のノードから関数{\tt getAttributes().getString("name")}で属性名 {\tt name}とペアになっている属性値を取得する。 - - \item 属性値が{\tt null}だった場合、このノードには属性名が{\tt name}の組のデータは存在しないので、{\tt false}を返し次のノードの評価を行う。 +\begin{comment} +\begin{enumerate} +\item 木の走査を行う{\tt Traverser}クラスを取得する。 + +\item Indexから{\tt find}の第2、第3引数である、属性名 {\tt belong}、属性値 {\tt ryukyu}の組のデータを持つノードを取得し、Queryに渡す(ノードの絞込を行う)。 - \item 属性値が{\tt null}でなかった場合、{\tt kanagawa}と一致するかどうかを調べ結果を返す。 +\item 引数のノードから関数{\tt getAttributes().getString("name")}で属性名 {\tt name}とペアになっている属性値を取得する。 + +\item 属性値が{\tt null}だった場合、このノードには属性名が{\tt name}の組のデータは存在しないので、{\tt false}を返し次のノードの評価を行う。 + +\item 属性値が{\tt null}でなかった場合、{\tt kanagawa}と一致するかどうかを調べ結果を返す。 \end{enumerate} +\end{comment} -結果として、{\tt ryukyu}に所属する、名前が{\tt kanagawa}のデータを持つノードが取得できる。 - -検索の際に使用する Index の実装については次節に記述する。 \section{Index} Jungleは、非破壊的木構造というデータ構造上、過去の版の木構造を全て保持している。 @@ -364,33 +401,38 @@ Optional>> indexOp = indexMap.get("name"); if (!indexOp.isPresent()) return new NulIterator(); -TreeMap> index = indexOp.get(); -Optional> nodeListOp = index.get("kanagawa"); + TreeMap> index = indexOp.get(); + Optional> nodeListOp = index.get("kanagawa"); if (!nodeListOp.isPresent()) return new NulIterator(); return nodeListOp.get().iterator(); -\end{lstlisting} + \end{lstlisting} + +1 - 4行目で IndexMap から 属性名 "name" に対する値を持つ Index を取得している。 +5 - 8行目で 取得した Index から、 属性名 "kanagawa" を持つノードの{ \tt Iterator}を取得している。 -\begin{enumerate} -\item {\tt indexMap}に、今回検索で使用する属性名 {\tt name}を使用して{\tt get("name")}を行う。すると属性名 {\tt "name"}に対応したIndexが、{\tt Optional}クラスで包まれて返ってくる。 +\begin{comment} + \begin{enumerate} + \item {\tt indexMap}に、今回検索で使用する属性名 {\tt name}を使用して{\tt get("name")}を行う。すると属性名 {\tt "name"}に対応したIndexが、{\tt Optional}クラスで包まれて返ってくる。 -\item {\tt Optional}オブジェクトに対して、中身を保持しているか(属性名 {\tt name}に対応したIndexを木が持っているか)を調べる。 + \item {\tt Optional}オブジェクトに対して、中身を保持しているか(属性名 {\tt name}に対応したIndexを木が持っているか)を調べる。 -\item 持っていなかった場合、空の{\tt Iterator}オブジェクトを返す。 + \item 持っていなかった場合、空の{\tt Iterator}オブジェクトを返す。 -\item 持っていた場合、{\tt Optional}オブジェクトからIndexを取得する。 + \item 持っていた場合、{\tt Optional}オブジェクトからIndexを取得する。 -\item 取得したIndexに、検索で使用する属性値{\tt "kanagawa"}で{\tt get()}を行う。すると、属性名 {\tt "name"} 属性値{\tt "kanagawa"}の値を持つノードのリストが、{\tt Optional}クラスに包まれて返ってくる。 + \item 取得したIndexに、検索で使用する属性値{\tt "kanagawa"}で{\tt get()}を行う。すると、属性名 {\tt "name"} 属性値{\tt "kanagawa"}の値を持つノードのリストが、{\tt Optional}クラスに包まれて返ってくる。 -\item {\tt Optional}オブジェクトに対して中身を保持しているか(属性名 {\tt "name"} 属性値 {\tt "kanagawa"}を持つノードを木が持っているか)を調べる。 + \item {\tt Optional}オブジェクトに対して中身を保持しているか(属性名 {\tt "name"} 属性値 {\tt "kanagawa"}を持つノードを木が持っているか)を調べる。 -\item 持っていなかった場合、空の{\tt Iterator}オブジェクトを返す。 + \item 持っていなかった場合、空の{\tt Iterator}オブジェクトを返す。 -\item 持っていた場合{\tt Optional}オブジェクトからノードリストの{\tt Iterator}を返す。 + \item 持っていた場合{\tt Optional}オブジェクトからノードリストの{\tt Iterator}を返す。 -\end{enumerate} + \end{enumerate} +\end{comment} -JungleはこれらのAPIにより、木構造を格納、編集、検索する機能を持っている。 + JungleはこれらのAPIにより、木構造を格納、編集、検索する機能を持っている。 -\newpage + \newpage diff -r e4da23b04260 -r 33d8077a5d45 jungleUpdatePoint.tex --- a/jungleUpdatePoint.tex Wed Feb 08 17:26:22 2017 +0900 +++ b/jungleUpdatePoint.tex Thu Feb 09 17:25:56 2017 +0900 @@ -1,5 +1,5 @@ -\chapter{データベースJungleの構成要素} -本章では、本研究で既存のJungleに行った大まかな変更概要を記述する。 +\chapter{データベースJungleに\\新たに追加した構成要素} +本章では、本研究で既存のJungleに追加した、大まかな構成要素の概要を記述する。 \section{非破壊 Red Black Treeの実装} JungleのIndexは、Java上で関数型プログラミングが行えるFunctional Java の非破壊 TreeMapを使って実装されていた。 diff -r e4da23b04260 -r 33d8077a5d45 master_paper.pdf Binary file master_paper.pdf has changed diff -r e4da23b04260 -r 33d8077a5d45 redBlackJungleTree.tex --- a/redBlackJungleTree.tex Wed Feb 08 17:26:22 2017 +0900 +++ b/redBlackJungleTree.tex Thu Feb 09 17:25:56 2017 +0900 @@ -1,25 +1,53 @@ \chapter{Red Black Jungle Tree} -Default Jungle Treeにおいて、Indexの更新は大きな手間となっている。 -Indexに使用する属性名が1種類で、木構造の形がデータを表現していない場合、Jungle Tree自身をIndexとしたほうが、効率的に木構造を変更できる。 -そこで、Red Black Treeの性質を組み込んだRed Black Jungle Treeの実装を行った。 -Red Black Jungle Tree は、木にノードの削除・追加を行った際、前述した、非破壊 Tree Map のバランスと同じアルゴリズムで木のバランスを取る。 +Jungle は、木に編集を加えた際、編集を加えたノードと、経路にあるノードの複製を取る。 +その為、木の編集の手間は、木の大きさにも依存している。 +最適なバランスの取れた木構造を構築することで、編集の手間をn(logN)にすることは可能だが、 +Default Jungle Tree だと、ユーザーが Path を用いて、木のバランスを取る必要ある。 +しかし、ユーザーが全ての木構造の形を把握し、バランスの取れた木を構築するのは難しい。 +そこで、自動で木のバランスを取り、最適な木構造を構築する機能を Jungle Tree に実装した。 +バランスは、木の生成時に{\tt Balance Key} 決定し、それを使って行う。 +木のバランスを取るアルゴリズムは、前述した非破壊 TreeMap と同じものを使用する。 + +しかし、木の編集を加えた際、木がどのようにバランスを取るか予想するのは困難であるため、木の構造で、組織構造等のデータを表現するのは難しい。 +なので、この機能が使えるのは、木の構造自体がデータを表現していない場合に限る。 + +また、自身の木構造が、{\tt Balance Key} を使った Index と同じ働きを持つため、木の Commit 時に別途 Index を構築する必要が無い、といったメリットもある。 + \section{Red Black Jungle Treeの作成} -Red Black Jungle Treeを作成するため、Jungleに{\tt createNewRedBlackTree(String treeName, String balanceKey)}を実装した。 -これは、第一引数{\tt treeName}で受け取った名前の、第二引数{\tt balanceKey}とペアになる属性値でバランスを取るRed Black Treeを構築する。 -その際、名前が重複した場合は木の生成に失敗する。 +Red Black Jungle Treeを作成するため、Jungle に新しい API を実装した(表\ref{createRedBlackTreeAPI})。 -またこれ以降の説明で使用するBalanceKeyとは、Red Black Jungle Treeを作成する時に設定したKey、BalanceValueは属性名 BalanceKeyとペアの属性値のことである。 +\begin{table}[htb] +\begin{center} +\caption{Jungleに新しく実装したAPI} +\begin{tabular}{|p{15em}|p{24em}|} \hline +{\small {\tt createNewRedBlackTree(String treeName, String balanceKey)}} &{\small Jungleに新しく Red Black Jungle Tree を生成する。第一引数に木の名前、第二引数に木のバランスを取る時に使用する {\tt Blance Key} を受け取る。木の名前が重複した場合、生成に失敗しnullを返す。} \\ \hline +\end{tabular} +\label{createRedBlackTreeAPI} +\end{center} +\end{table} + +{\tt createNewRedBlackTree} を使用したサンプルコード\ref{createRedBlackTree}を記述する。 + +\begin{lstlisting}[frame=lrbt,numbers=left,label=createRedBlackTree,caption=Red Black Jungle Treeの生成] +Jungle jungle = new DefaultJungle(null, "hogehoge", new DefaultTraverser()); +String treeName = "redBlackTree"; +String balanceKey = "balanceKey"; +JungleTree tree = jungle.createNewRedBlackTree(treeName,balanceKey); +\end{lstlisting} + +サンプルコード\ref{createRedBlackTree}では、3行目で指定した {\tt balance Key} を用いて木のバランスを取る、Red Black Jungle Tree が構築される。 \section{NodePath の拡張} Red Black Jungle Treeは、ノードを追加・削除するたびに木のバランスが行われ、各ノードの Path が変わってしまう。 その為、数字を使った NodePath では、編集を加える際、編集対象のノードの Path をいちいち調べる必要がある。 -その問題を解決するために、NodePath を拡張した RedBlackTreeNodePath を作成し 属性名 BalanceKey 属性値 valueのペアでノードを指定できるようにした。 -RedBlackTreeNodePathは、引数にString型のBalanceKeyとByteBuffer型のBalanceValueを取る。 +その問題を解決するために、NodePath を拡張した Red Black Tree Node Path を作成し 属性名 BalanceKey 属性値 value のペアでノードを指定できるようにした。 +RedBlackTreeNodePathは、引数にString型のBalanceKeyとByteBuffer型のvalueを取る。 \section{Red Black Jungle Treeの編集} -Red Black Jungle Treeへノードの追加を行う際は、追加するノードに、木のバランスを取るために必要な属性名 BalanceKeyとそのペアの属性値 BalanceValue が必要になる。 +\begin{comment} +Red Black Jungle Treeへノードの追加を行う際は、追加するノードに、木のバランスを取るために必要な属性名 BalanceKey が必要になる。 しかし、JungleTreeEditorには、ノードと値を同時に追加するAPIは存在しなかったため、新しく実装した。 表\ref{NewEditorAPI}に新しく実装したAPIを記述する。 @@ -32,20 +60,20 @@ \label{NewEditorAPI} \end{center} \end{table} - +\end{comment} -Red Black Jungle Tree Editorは、既存のJungle Tree EditorとくらべてAPIの使い方が異なる。 -具体的にはaddNewChildAtでPathが使われなかったりする。 +Red Black Jungle Tree Editorは、既存のJungle Tree Editorと比較しAPIの使い方が異なる。 表\ref{EditorDifference}にDefault Jungle Tree EditorとRed Black Jungle Tree EditorのAPIの使い方の違いを記述する。 +また、これらの API の返り値は全て \verb|Either| である。 +表中では省略して記述する。 \begin{table}[htb] \begin{center} \caption{Red Black Jungle TreeとDefault Jungle TreeのAPIの違い} \begin{tabular}{|p{16em}|p{24em}|} \hline -{\tt Either addNewChildAt(NodePath path, int pos)} & pathとposは使用せず、属性名 balanceKey 属性値 "Default Value"を持ったノードを、Red Black Treeの挿入アルゴリズムに則って挿入し、バランスを取る。 \\ \hline -{\tt Either addNewChildAndPutAttribute (NodePath path, int pos, String key, ByteBuffer value)} & pathとposは使用せず、属性名 key 属性値 valueを持ったノードを、Red Black Treeの挿入アルゴリズムに則って挿入し、バランスを取る。 第二引数にBalanceKey以外の値を渡した場合、バランスが取れない為、ノードの挿入は失敗する。\\ \hline -{\tt Either replaceNewRootNode()} & 赤黒木では使用しない。実行した場合エラーを返す。\\ \hline -{\tt Either moveChild(NodePath path, int childNum, String move)} & ノードを動かすと木のバランスが崩れるため使用しない。実行した場合エラーを返す。 \\ \hline +{\tt addNewChildAt(NodePath path, int pos)} &前節に記述した Red Black Tree Node Path を使用する。 Path 生成時に指定した、{\tt Key} と {\tt Value} の組のデータを持つノードを Red Black Treeの挿入アルゴリズムに則って挿入し、バランスを取る。pos は使用しない。 \\ \hline +{\tt replaceNewRootNode()} & 赤黒木では使用しない。実行した場合エラーを返す。\\ \hline +{\tt moveChild(NodePath path, int childNum, String move)} & ノードを動かすと木のバランスが崩れるため使用しない。実行した場合エラーを返す。 \\ \hline \end{tabular} \label{EditorDifference} \end{center} @@ -56,23 +84,23 @@ \begin{lstlisting}[frame=lrbt,label=src:rbtEdit,caption=RedBlackJungleTreeの編集例,numbers=left] String balanceKey = "balanceKey"; -JungleTree tree = jungle.createNewRedBlackTree("TreeName", balanceKey) +String treeName = "treeName"; +JungleTree tree = jungle.createNewRedBlackTree(treeName, balanceKey) JungleTreeEditor editor = tree.getJungleTreeEditor(); -NodePath path = new RedBlackTreeNodePath(); -ByteBuffer balanceValue = ByteBuffer.wrap(("Elphelt").getBytes()); -Either either = editor.addNewChildAndPutAttribute(path, 0, balanceKey, balanceValue); -if (either.isA()) return either.a(); -editor = either.b(); -NodePath rbtPath = new RedBlackTreeNodePath(balanceKey,balanceValue)); -String key = "key"; -ByteBuffer value = ByteBuffer.wrap(("value").getBytes()) -Either either = editor.putAttribute(rbtPath, key, testPutValue); +ByteBuffer value = ByteBuffer.wrap(("Elphelt").getBytes()); +NodePath path = new RedBlackTreeNodePath(balanceKey,value); +Either either = editor.addNewChildAt(path, 0); if (either.isA()) return either.a(); editor = either.b(); either = editor.success(); \end{lstlisting} +1 - 2行目で木の名前と、バランスを取る際に使用する Key を宣言している。 +3 - 4行目で実際に Red Black Jungle Tree を作り、Editor を取得している。 +5行目で実際にノードが持つ値を作り、6行目で、ノードを挿入する際に使用するRed Black Tree Node Path を作る。 +7行目では実際に{\tt addNewChildAt} でノードを挿入している。 +\begin{comment} ソースコード\ref{src:rbtEdit}の解説を以下に記す。 \begin{enumerate} \item 木のバランスに使用するbalanceKeyを宣言する。 @@ -91,8 +119,9 @@ \item 成功していた場合{\tt either}から、編集後の木を持つEditorを取得する。 \item 編集を木にCommitする。 \end{enumerate} +\end{comment} -Red Black Jungle Tree は、木の編集時 Index を更新しないので、Default Jungle Tree より高速に木の変更を行える。 +また、Red Black Jungle Tree は、木の編集時 Index を更新しないので、Default Jungle Tree より高速に木の変更を行える。 \section{Jungle Red Black Treeの検索} diff -r e4da23b04260 -r 33d8077a5d45 redBlackTree.tex --- a/redBlackTree.tex Wed Feb 08 17:26:22 2017 +0900 +++ b/redBlackTree.tex Thu Feb 09 17:25:56 2017 +0900 @@ -18,7 +18,7 @@ \end{enumerate} Red Black Treeは、データの挿入、削除時に、上記の条件を崩さないように木のバランスを取る。 -この条件により、Red Black Treeはデータの検索、削除、探索をO(log n)で行える。 +この条件を守っている限り、Red Black Treeはデータの検索、削除、探索をO(log n)で行える。 \section{非破壊 TreeMap の定義} 非破壊 TreeMapは、Javaのジェネリクスを用いて、{\tt TreeMapKey}と定義される。 @@ -41,8 +41,10 @@ \begin{tabular}{|p{15em}|p{24em}|} \hline {\tt Node getRoot()} & TreeMap のルートノードを返す。 \\ \hline {\tt boolean isEmpty()} & TreeMap が値を保持していないなら{\tt true}を返す。 \\ \hline -{\tt TreeMap put(K key, V value)} & TreeMap に{\tt key:value} の組で値を挿入し、新しい TreeMap を返す。 \\ \hline -{\tt TreeMap delete(K key)} & TreeMap に{\tt key} とペアで格納されている値を削除し、新しい TreeMap を返す。\\ \hline +{\tt TreeMap put(K key, V value)} & TreeMap に{\tt key:value} の組で値を挿入した、新しい TreeMap を返す。 \\ \hline +{\tt TreeMap delete(K key)} & TreeMap に{\tt key} とペアで格納されている値を削除した、新しい TreeMap を返す。\\ \hline +{\tt V get(K key)} & TreeMap に{\tt key} とペアで格納されている値を返す。\\ \hline +{\tt boolean contain(K key)} &TreeMapに {\tt key} とペアで格納されている値があるなら{\tt true}を返す 。\\ \hline {\tt Iterator keys()} & TreeMap が保持している全ての {\tt key} を Iteratorで返す。 \\ \hline \end{tabular} \label{RedBlackTreeAPI} @@ -71,21 +73,19 @@ Red Black Treeのデータ挿入時のバランスは、次の5パターンに分けられる。 これ以降の説明では、挿入したノードは、ノードinsと記述する。 -\section{データ挿入時のバランス ケース1} +\vspace{0.4in} +{\LARGE データ挿入時のバランス ケース1} +\vspace{0.2in} -\begin{enumerate} -\item ノードを挿入した位置がルート -\end{enumerate} -挿入時上記の条件を満たしている場合、ルートノードの色を黒に変更することで木のバランスを取る。 +バランス時、ノードを挿入した位置がルートだった場合、ルートノードの色を黒に変更することで木のバランスを取る。 ルートノードの色を黒に変更しても、左右のSub Treeの黒の個数が一つ増えるだけなので、Red Black Treeの条件は守られる。 -\section{データ挿入時のバランス ケース2} -\begin{enumerate} -\item 挿入したノードinsの親ノードBが黒。 -\end{enumerate} +\vspace{0.4in} +{\LARGE データ挿入時のバランス ケース2} +\vspace{0.2in} -バランス時、上記の条件を満たしている場合、Red Black Treeの条件は崩れないため、赤色でノードを挿入して問題はない。%(図\ref{fig:RedBlackTreeInsert1})。 +バランス時、ノードinsの親ノードBが黒だった場合、Red Black Treeの条件は崩れないため、赤色でノードを挿入して問題はない。%(図\ref{fig:RedBlackTreeInsert1})。 %\begin{figure}[htpb] %\begin{center} @@ -95,13 +95,11 @@ %\end{center} %\end{figure} -\section{データ挿入時のバランス ケース3} -\begin{enumerate} -\item 挿入したノードinsの親の親ノードAが黒。 -\item ノードAの両方の子ノードB・Cが赤。 -\end{enumerate} +\vspace{0.4in} +{\LARGE データ挿入時のバランス ケース3} +\vspace{0.2in} -バランス時、上記の条件を満たしている場合、ノードB・Cを黒に、ノードAを赤に変更する(図\ref{fig:RedBlackTreeInsert2})。 +バランス時、ノードinsの親の親ノードAが黒かつ、ノードAの両方の子ノードB・Cが赤の場合、ノードB・Cを黒に、ノードAを赤に変更する(図\ref{fig:RedBlackTreeInsert2})。 また、本章の図に表記されている四角のノードの色は、Red Black Treeの条件を守られているなら問わず、それ以下の子ノードは省略してあるものとする。 \begin{figure}[htpb] @@ -116,15 +114,11 @@ バランス後、ノードAの色が変わってしまったため、ノードAを新しくノードinsとして再帰的に木のバランスを行う。 この変更は最悪の場合ルートまで続く。 -\section{データ挿入時のバランス ケース4} -\begin{enumerate} -\item 挿入したノードinsの親の親ノードAが黒。 -\item ノードAの、挿入したノード側の子ノードBが赤。 -\item 逆側の子ノードCが黒。 -\item ノードinsがノードBの木の中心側の子。 -\end{enumerate} +\vspace{0.4in} +{\LARGE データ挿入時のバランス ケース4} +\vspace{0.2in} -バランス時、上記の条件を満たしている場合、ノードBを中心に外側に回転処理を行い(図\ref{fig:RedBlackTreeInsert3})、次節に記述するバランス5を行う。 +バランス時、ノードinsの親の親ノードAが黒かつ、ノードAのノードins側の子ノードBが赤かつ、逆側の子ノードCが黒かつ、ノードinsがノードBの木の中心側にある場合、ノードBを中心に外側に回転処理を行い(図\ref{fig:RedBlackTreeInsert3})、次節に記述するバランス5を行う。 その際、ノードBをノードinsとして扱う。 \begin{figure}[htpb] @@ -137,15 +131,11 @@ -\section{データ挿入時のバランス ケース5} -\begin{enumerate} -\item 挿入したノードinsの親の親ノードAが黒。 -\item ノードAの、挿入したノード側の子ノードBが赤。 -\item 逆側の子ノードCが黒 -\item ノードinsがノードBの木の外側の子。 -\end{enumerate} +\vspace{0.4in} +{\LARGE データ挿入時のバランス ケース5} +\vspace{0.2in} -バランス時、上記の条件を満たしている場合、ノードAを中心に内側に回転処理を行い、回転後ノードAとノードBの色を入れ替える。 +バランス時、ノードinsの親の親ノードAが黒かつ、ノードAのノードins側の子ノードBが赤かつ、逆側の子ノードCが黒かつ、ノードinsが木の外側の子の場合、ノードAを中心に内側に回転処理を行い、回転後ノードAとノードBの色を入れ替える。 \begin{figure}[htpb] \begin{center} @@ -158,7 +148,8 @@ 赤黒木は、データ挿入時にこれらの処理を行うことで、木のバランスを取る。 -\section{Red Black Treeのノード削除} +\newpage +\section{非破壊Red Black Tree のノード削除} Red Black Treeのノード削除は、以下の手順で行われる。 \begin{enumerate} @@ -176,21 +167,18 @@ RedBlackTreeのバランスは、ノード削除時の状態によって、次の6パターンに分けられる。 また。これ以降削除したノードを、ノードdelと記述する。 +\newpage +\vspace{0.4in} +{\LARGE データ削除時のバランス ケース1} -\section{データ削除時のバランス ケース1} -\begin{enumerate} -\item ノードdelがルート。 -\end{enumerate} - -上記の条件を満たしている場合、全ての経路の黒ノード数が1つ減った状態で条件が成立しバランスは終了する。 +バランス時、ノードdelがルートだった場合、全ての経路の黒ノード数が1つ減った状態で条件が成立しバランスは終了する。 -\section{データ削除時のバランス ケース2} -\begin{enumerate} -\item ノードdelが黒。 -\item ノードA・B・C・D・E・Fが黒。 -\end{enumerate} +\vspace{0.4in} +{\LARGE データ削除時のバランス ケース2} +\vspace{0.2in} -バランス時、上記の条件を満たしている場合、ノードBを赤に変える(図\ref{fig:RedBlackTreeDelete1})。 + +バランス時、ノードdelが黒かつ、ノードA・B・C・D・E・Fが黒の場合、ノードBを赤に変える(図\ref{fig:RedBlackTreeDelete1})。 そうすることで、ノードB・E・F以下の黒ノードの階層が減って、ノードA以下の木のバランスが回復する。 その後、Aを新たなノードdelとして木のバランスを行う。 このバランスは最悪の場合ルートまで続き、ケース2で終了する。 @@ -204,15 +192,11 @@ \end{figure} -\newpage -\section{データ削除時のバランス ケース3} -\begin{enumerate} -\item ノードdelが黒。 -\item ノードA・C・D・E・Fが黒 -\item ノードBが赤。 -\end{enumerate} +\vspace{0.4in} +{\LARGE データ削除時のバランス ケース3} +\vspace{0.2in} -上記の条件を満たしている場合、ノードAを中心に外側に回転、その後ノードAを赤に、ノードBを黒に変更する(図\ref{fig:RedBlackTreeDelete2})。 +バランス時、ノードdelが黒かつ、ノードA・C・D・E・Fが黒かつ、ノードBが赤の場合、ノードAを中心に外側に回転、その後ノードAを赤に、ノードBを黒に変更する(図\ref{fig:RedBlackTreeDelete2})。 その後、ノードdelを基準に再び木のバランスを行う。 この時のバランスは、図\ref{fig:RedBlackTreeDelete2}における、ノードEの子供の色に応じてケース4・5・6のどれかに帰着する。 @@ -226,14 +210,11 @@ \newpage -\section{データ削除時のバランス ケース4} -\begin{enumerate} -\item ノードdelが黒。 -\item ノードB・C・D・E・Fが黒 -\item ノードAが赤。 -\end{enumerate} +\vspace{0.4in} +{\LARGE データ削除時のバランス ケース4} +\vspace{0.2in} -上記の条件を満たしている場合、ノードAを黒に、ノードBを赤に変更する(図\ref{fig:RedBlackTreeDelete3})。 +バランス時、ノードdelが黒かつ、ノードB・C・D・E・Fが黒かつノードAが赤の場合、ノードAを黒に、ノードBを赤に変更する(図\ref{fig:RedBlackTreeDelete3})。 そうすることで、ノードA側の右側のSub Treeの黒の深さを変えることなく、左側のSub Treeの黒の深さが1つ増え、バランスが取れる。 \begin{figure}[htpb] \begin{center} @@ -245,14 +226,12 @@ \newpage -\section{データ削除時のバランス ケース5} -\begin{enumerate} -\item ノードdelが黒。 -\item ノードB・C・D・Fが黒。 -\item ノードEの色が赤。 -\end{enumerate} +\vspace{0.4in} +{\LARGE データ削除時のバランス ケース5} +\vspace{0.2in} -上記の条件を満たしている場合、ノードBを中心に外側に回転、その後、ノードEを黒に、ノードBを赤に変更する(図\ref{fig:RedBlackTreeDelete4})。 + +バランス時、ノードdelが黒かつ、ノードB・C・D・Fが黒かつ、ノードEの色が赤の場合、ノードBを中心に外側に回転、その後、ノードEを黒に、ノードBを赤に変更する(図\ref{fig:RedBlackTreeDelete4})。 そして、データ削除時のバランス ケース7に帰着する。 \begin{figure}[htpb] @@ -264,15 +243,12 @@ \end{figure} -\newpage -\section{データ削除時のバランス ケース6} -\begin{enumerate} -\item ノードdelが黒。 -\item ノードB・C・Dが黒。 -\item ノードFの色が赤。 -\end{enumerate} +\vspace{0.4in} +{\LARGE データ削除時のバランス ケース6} +\vspace{0.2in} -上記の条件を満たしている場合、ノードAを中心にノードdel側に回転、その後、ノードAとノードBの色を交換し、ノードFを黒にする(図\ref{fig:RedBlackTreeDelete5})。 + +バランス時、ノードdelがかつ、ノードB・C・Dが黒かつ、ノードFの色が赤の場合、ノードAを中心にノードdel側に回転、その後、ノードAとノードBの色を交換し、ノードFを黒にする(図\ref{fig:RedBlackTreeDelete5})。 そうすることで、ノードE・Fの黒の深さを変えること無く、ノードrepの黒の深さを1増やせるため、木のバランスが取れる。 \begin{figure}[htpb] @@ -283,6 +259,8 @@ \end{center} \end{figure} +\newpage + Red Black Treeは、削除時に上記のバランスを行うことで、木のバランスを保っている。 これらの機能を実装することで、非破壊TreeMapは完成した。 diff -r e4da23b04260 -r 33d8077a5d45 renderingEngine.tex --- a/renderingEngine.tex Wed Feb 08 17:26:22 2017 +0900 +++ b/renderingEngine.tex Thu Feb 09 17:25:56 2017 +0900 @@ -151,6 +151,6 @@ 一方、図\ref{badLayoutTree}の木はレンダリングする際に必要な値が複数ノードに分散されて保存されている。 そのため、全てのノードを参照し、値を集める処理を行う必要があり、コードの可読性が下がり余計な処理も増えてしまう。 -これより、Jungleの木構造を効率的に扱うためには、設計手法を確立する必要があることがわかる。 +これより、Jungleの木構造を効率的に扱うためには、設計手法を確立する必要があることがわかった。