changeset 7:f542388881a9 default tip

added slides beta
author Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
date Sun, 25 Sep 2011 03:42:16 +0900
parents bd7d39a4e57f
children
files jssst-shoshi.pdf jssst2011/fig/AVL.png jssst2011/fig/CMSDESC.png jssst2011/fig/NDT01.png jssst2011/fig/NDTAVL01.png jssst2011/fig/NDTAVL02.png jssst2011/fig/cluster.png jssst2011/fig/treeexample.png jssst2011/graffle/avl.graffle jssst2011/graffle/treeexample.graffle jssst2011/index.html jssst2011/ui/audio_support/license.txt jssst2011/ui/audio_support/null.mp3 jssst2011/ui/audio_support/soundmanager2.js jssst2011/ui/audio_support/soundmanager2.swf jssst2011/ui/default_utf/bodybg.gif jssst2011/ui/default_utf/framing.css jssst2011/ui/default_utf/opera.css jssst2011/ui/default_utf/outline.css jssst2011/ui/default_utf/pattern.png jssst2011/ui/default_utf/pretty.css jssst2011/ui/default_utf/print.css jssst2011/ui/default_utf/s5-core.css jssst2011/ui/default_utf/slides.css jssst2011/ui/default_utf/slides.js jssst2011/ui/graphic_support/blank.gif jssst2011/ui/graphic_support/finish.gif jssst2011/ui/graphic_support/fixed.js jssst2011/ui/graphic_support/help.jpg jssst2011/ui/graphic_support/iepngfix.htc jssst2011/ui/graphic_support/numeric.png jssst2011/ui/graphic_support/progress.gif jssst2011/ui/s5-notes.html
diffstat 33 files changed, 7065 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
Binary file jssst-shoshi.pdf has changed
Binary file jssst2011/fig/AVL.png has changed
Binary file jssst2011/fig/CMSDESC.png has changed
Binary file jssst2011/fig/NDT01.png has changed
Binary file jssst2011/fig/NDTAVL01.png has changed
Binary file jssst2011/fig/NDTAVL02.png has changed
Binary file jssst2011/fig/cluster.png has changed
Binary file jssst2011/fig/treeexample.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jssst2011/graffle/avl.graffle	Sun Sep 25 03:42:16 2011 +0900
@@ -0,0 +1,1767 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>ActiveLayerIndex</key>
+	<integer>0</integer>
+	<key>ApplicationVersion</key>
+	<array>
+		<string>com.omnigroup.OmniGraffle</string>
+		<string>138.30.0.155892</string>
+	</array>
+	<key>AutoAdjust</key>
+	<true/>
+	<key>BackgroundGraphic</key>
+	<dict>
+		<key>Bounds</key>
+		<string>{{0, 0}, {559, 783}}</string>
+		<key>Class</key>
+		<string>SolidGraphic</string>
+		<key>ID</key>
+		<integer>2</integer>
+		<key>Style</key>
+		<dict>
+			<key>shadow</key>
+			<dict>
+				<key>Draws</key>
+				<string>NO</string>
+			</dict>
+			<key>stroke</key>
+			<dict>
+				<key>Draws</key>
+				<string>NO</string>
+			</dict>
+		</dict>
+	</dict>
+	<key>CanvasOrigin</key>
+	<string>{0, 0}</string>
+	<key>ColumnAlign</key>
+	<integer>1</integer>
+	<key>ColumnSpacing</key>
+	<real>36</real>
+	<key>CreationDate</key>
+	<string>2011-09-25 02:03:31 +0900</string>
+	<key>Creator</key>
+	<string>shoshi</string>
+	<key>DisplayScale</key>
+	<string>1 0/72 in = 1 0/72 in</string>
+	<key>GraphDocumentVersion</key>
+	<integer>6</integer>
+	<key>GraphicsList</key>
+	<array>
+		<dict>
+			<key>Bounds</key>
+			<string>{{354.393, 268}, {129, 20}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FitText</key>
+			<string>YES</string>
+			<key>Flow</key>
+			<string>Resize</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>HiraKakuProN-W3</string>
+				<key>Size</key>
+				<real>12</real>
+			</dict>
+			<key>ID</key>
+			<integer>76</integer>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Pad</key>
+				<integer>0</integer>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs26 \cf0 \'83\'6f\'83\'89\'83\'93\'83\'58\'82\'aa\'8e\'e6\'82\'ea\'82\'c4\'82\'a2\'82\'e9}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+			<key>Wrap</key>
+			<string>NO</string>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{36.6963, 268}, {142, 20}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FitText</key>
+			<string>YES</string>
+			<key>Flow</key>
+			<string>Resize</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>HiraKakuProN-W3</string>
+				<key>Size</key>
+				<real>12</real>
+			</dict>
+			<key>ID</key>
+			<integer>75</integer>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Pad</key>
+				<integer>0</integer>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs26 \cf0 \'83\'6f\'83\'89\'83\'93\'83\'58\'82\'aa\'8e\'e6\'82\'ea\'82\'c4\'82\'a2\'82\'c8\'82\'a2}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+			<key>Wrap</key>
+			<string>NO</string>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{227.974, 112.367}, {56, 21}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FitText</key>
+			<string>YES</string>
+			<key>Flow</key>
+			<string>Resize</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>HiraKakuProN-W3</string>
+				<key>Size</key>
+				<real>13</real>
+			</dict>
+			<key>ID</key>
+			<integer>74</integer>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Pad</key>
+				<integer>0</integer>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs28 \cf0 \'96\'d8\'82\'cc\'89\'f1\'93\'5d}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+			<key>Wrap</key>
+			<string>NO</string>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>Helvetica</string>
+				<key>Size</key>
+				<real>14</real>
+			</dict>
+			<key>ID</key>
+			<integer>73</integer>
+			<key>Points</key>
+			<array>
+				<string>{287.066, 146.629}</string>
+				<string>{236, 146.629}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>HeadArrow</key>
+					<string>0</string>
+					<key>TailArrow</key>
+					<string>FilledArrow</string>
+					<key>Width</key>
+					<real>4</real>
+				</dict>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>46</integer>
+			</dict>
+			<key>ID</key>
+			<integer>71</integer>
+			<key>Points</key>
+			<array>
+				<string>{527.258, 126.235}</string>
+				<string>{486.181, 94.5807}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>HeadArrow</key>
+					<string>0</string>
+					<key>TailArrow</key>
+					<string>FilledArrow</string>
+				</dict>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>46</integer>
+			</dict>
+			<key>ID</key>
+			<integer>70</integer>
+			<key>Points</key>
+			<array>
+				<string>{429.258, 126.235}</string>
+				<string>{460.252, 96.1232}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>HeadArrow</key>
+					<string>0</string>
+					<key>TailArrow</key>
+					<string>FilledArrow</string>
+				</dict>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>47</integer>
+			</dict>
+			<key>ID</key>
+			<integer>69</integer>
+			<key>Points</key>
+			<array>
+				<string>{457.052, 77.3244}</string>
+				<string>{411.916, 57.6034}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>HeadArrow</key>
+					<string>0</string>
+					<key>TailArrow</key>
+					<string>FilledArrow</string>
+				</dict>
+			</dict>
+			<key>Tail</key>
+			<dict>
+				<key>ID</key>
+				<integer>46</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>Group</string>
+			<key>Graphics</key>
+			<array>
+				<dict>
+					<key>Bounds</key>
+					<string>{{518.373, 182.885}, {15.2533, 21.326}}</string>
+					<key>Class</key>
+					<string>ShapedGraphic</string>
+					<key>FontInfo</key>
+					<dict>
+						<key>Font</key>
+						<string>Helvetica</string>
+						<key>Size</key>
+						<real>18</real>
+					</dict>
+					<key>HFlip</key>
+					<string>YES</string>
+					<key>ID</key>
+					<integer>67</integer>
+					<key>Shape</key>
+					<string>Rectangle</string>
+					<key>Style</key>
+					<dict>
+						<key>fill</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+						<key>stroke</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+					</dict>
+					<key>Text</key>
+					<dict>
+						<key>Pad</key>
+						<integer>0</integer>
+						<key>Text</key>
+						<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs38 \cf0 Z}</string>
+						<key>VerticalPad</key>
+						<integer>0</integer>
+					</dict>
+				</dict>
+				<dict>
+					<key>Bounds</key>
+					<string>{{477.386, 150.063}, {97.2269, 50.2183}}</string>
+					<key>Class</key>
+					<string>ShapedGraphic</string>
+					<key>ID</key>
+					<integer>68</integer>
+					<key>Rotation</key>
+					<real>269.25225830078125</real>
+					<key>Shape</key>
+					<string>HorizontalTriangle</string>
+					<key>Style</key>
+					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+					</dict>
+					<key>Text</key>
+					<dict>
+						<key>VerticalPad</key>
+						<integer>0</integer>
+					</dict>
+				</dict>
+			</array>
+			<key>ID</key>
+			<integer>66</integer>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>Group</string>
+			<key>Graphics</key>
+			<array>
+				<dict>
+					<key>Bounds</key>
+					<string>{{423.741, 188.055}, {15.2533, 21.326}}</string>
+					<key>Class</key>
+					<string>ShapedGraphic</string>
+					<key>FontInfo</key>
+					<dict>
+						<key>Font</key>
+						<string>Helvetica</string>
+						<key>Size</key>
+						<real>18</real>
+					</dict>
+					<key>HFlip</key>
+					<string>YES</string>
+					<key>ID</key>
+					<integer>61</integer>
+					<key>Shape</key>
+					<string>Rectangle</string>
+					<key>Style</key>
+					<dict>
+						<key>fill</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+						<key>stroke</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+					</dict>
+					<key>Text</key>
+					<dict>
+						<key>Pad</key>
+						<integer>0</integer>
+						<key>Text</key>
+						<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs38 \cf0 Y}</string>
+						<key>VerticalPad</key>
+						<integer>0</integer>
+					</dict>
+				</dict>
+				<dict>
+					<key>Bounds</key>
+					<string>{{382.755, 153.84}, {97.2259, 42.7629}}</string>
+					<key>Class</key>
+					<string>ShapedGraphic</string>
+					<key>ID</key>
+					<integer>62</integer>
+					<key>Rotation</key>
+					<real>269.25225830078125</real>
+					<key>Shape</key>
+					<string>HorizontalTriangle</string>
+					<key>Style</key>
+					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+					</dict>
+					<key>Text</key>
+					<dict>
+						<key>VerticalPad</key>
+						<integer>0</integer>
+					</dict>
+				</dict>
+			</array>
+			<key>ID</key>
+			<integer>60</integer>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>Group</string>
+			<key>Graphics</key>
+			<array>
+				<dict>
+					<key>Bounds</key>
+					<string>{{326.571, 163.926}, {15.2533, 21.326}}</string>
+					<key>Class</key>
+					<string>ShapedGraphic</string>
+					<key>FontInfo</key>
+					<dict>
+						<key>Font</key>
+						<string>Helvetica</string>
+						<key>Size</key>
+						<real>18</real>
+					</dict>
+					<key>HFlip</key>
+					<string>YES</string>
+					<key>ID</key>
+					<integer>64</integer>
+					<key>Shape</key>
+					<string>Rectangle</string>
+					<key>Style</key>
+					<dict>
+						<key>fill</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+						<key>stroke</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+					</dict>
+					<key>Text</key>
+					<dict>
+						<key>Pad</key>
+						<integer>0</integer>
+						<key>Text</key>
+						<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs38 \cf0 X}</string>
+						<key>VerticalPad</key>
+						<integer>0</integer>
+					</dict>
+				</dict>
+				<dict>
+					<key>Bounds</key>
+					<string>{{266.101, 130.663}, {136.087, 50.1624}}</string>
+					<key>Class</key>
+					<string>ShapedGraphic</string>
+					<key>ID</key>
+					<integer>65</integer>
+					<key>Rotation</key>
+					<real>269.25225830078125</real>
+					<key>Shape</key>
+					<string>HorizontalTriangle</string>
+					<key>Style</key>
+					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+					</dict>
+					<key>Text</key>
+					<dict>
+						<key>Text</key>
+						<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0   }</string>
+						<key>VerticalPad</key>
+						<integer>0</integer>
+					</dict>
+				</dict>
+			</array>
+			<key>ID</key>
+			<integer>63</integer>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>47</integer>
+			</dict>
+			<key>ID</key>
+			<integer>54</integer>
+			<key>Points</key>
+			<array>
+				<string>{333.258, 87.3793}</string>
+				<string>{380.593, 59.4942}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>HeadArrow</key>
+					<string>0</string>
+					<key>TailArrow</key>
+					<string>FilledArrow</string>
+				</dict>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{378.672, 33.3973}, {34.2045, 34.3071}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>47</integer>
+			<key>Shape</key>
+			<string>Circle</string>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs48 \cf0 B}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{456.258, 66.9667}, {32.6962, 34.3071}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>46</integer>
+			<key>Shape</key>
+			<string>Circle</string>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs48 \cf0 A}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{185, 194.045}, {48, 36}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FitText</key>
+			<string>YES</string>
+			<key>Flow</key>
+			<string>Resize</string>
+			<key>ID</key>
+			<integer>45</integer>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Pad</key>
+				<integer>0</integer>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 \'8d\'82\'82\'b3\'82\'aa\'82\'51\
+\'88\'d9\'82\'c8\'82\'e9}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+			<key>Wrap</key>
+			<string>NO</string>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>ID</key>
+			<integer>42</integer>
+			<key>Points</key>
+			<array>
+				<string>{178.53, 175.089}</string>
+				<string>{177.53, 249}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>HeadArrow</key>
+					<string>FilledArrow</string>
+					<key>TailArrow</key>
+					<string>FilledArrow</string>
+				</dict>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{170.404, 136.466}, {15.2533, 21.326}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>Helvetica</string>
+				<key>Size</key>
+				<real>18</real>
+			</dict>
+			<key>HFlip</key>
+			<string>YES</string>
+			<key>ID</key>
+			<integer>38</integer>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Pad</key>
+				<integer>0</integer>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs38 \cf0 Z}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{94.5696, 174.089}, {15.2533, 21.326}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>Helvetica</string>
+				<key>Size</key>
+				<real>18</real>
+			</dict>
+			<key>HFlip</key>
+			<string>YES</string>
+			<key>ID</key>
+			<integer>37</integer>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Pad</key>
+				<integer>0</integer>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs38 \cf0 Y}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{27.3941, 188.817}, {15.2533, 21.326}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>Helvetica</string>
+				<key>Size</key>
+				<real>18</real>
+			</dict>
+			<key>HFlip</key>
+			<string>YES</string>
+			<key>ID</key>
+			<integer>36</integer>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Pad</key>
+				<integer>0</integer>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs38 \cf0 X}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>29</integer>
+			</dict>
+			<key>ID</key>
+			<integer>35</integer>
+			<key>Points</key>
+			<array>
+				<string>{33.96, 110.504}</string>
+				<string>{56.8825, 91.5867}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>HeadArrow</key>
+					<string>0</string>
+					<key>TailArrow</key>
+					<string>FilledArrow</string>
+				</dict>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{-33.0765, 155.554}, {136.087, 50.1624}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>34</integer>
+			<key>Rotation</key>
+			<real>269.25225830078125</real>
+			<key>Shape</key>
+			<string>HorizontalTriangle</string>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0   }</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>29</integer>
+			</dict>
+			<key>ID</key>
+			<integer>33</integer>
+			<key>Points</key>
+			<array>
+				<string>{103.293, 112.358}</string>
+				<string>{83.0983, 92.6728}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>HeadArrow</key>
+					<string>0</string>
+					<key>TailArrow</key>
+					<string>FilledArrow</string>
+				</dict>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{53.5833, 139.874}, {97.2259, 42.7629}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>32</integer>
+			<key>Rotation</key>
+			<real>269.25225830078125</real>
+			<key>Shape</key>
+			<string>HorizontalTriangle</string>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>28</integer>
+			</dict>
+			<key>ID</key>
+			<integer>31</integer>
+			<key>Points</key>
+			<array>
+				<string>{176.325, 79.8164}</string>
+				<string>{138.599, 44.0059}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>HeadArrow</key>
+					<string>0</string>
+					<key>TailArrow</key>
+					<string>FilledArrow</string>
+				</dict>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>28</integer>
+			</dict>
+			<key>ID</key>
+			<integer>30</integer>
+			<key>Points</key>
+			<array>
+				<string>{83.795, 68.8262}</string>
+				<string>{113.129, 43.4052}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>HeadArrow</key>
+					<string>0</string>
+					<key>TailArrow</key>
+					<string>FilledArrow</string>
+				</dict>
+			</dict>
+			<key>Tail</key>
+			<dict>
+				<key>ID</key>
+				<integer>29</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{129.417, 103.644}, {97.2269, 50.2183}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>13</integer>
+			<key>Rotation</key>
+			<real>269.25225830078125</real>
+			<key>Shape</key>
+			<string>HorizontalTriangle</string>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{53.3734, 63.2153}, {34.2045, 34.3071}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>29</integer>
+			<key>Shape</key>
+			<string>Circle</string>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs48 \cf0 B}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{109.764, 15}, {32.6962, 34.3071}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>28</integer>
+			<key>Shape</key>
+			<string>Circle</string>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs48 \cf0 A}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+		</dict>
+	</array>
+	<key>GridInfo</key>
+	<dict/>
+	<key>GuidesLocked</key>
+	<string>NO</string>
+	<key>GuidesVisible</key>
+	<string>YES</string>
+	<key>HPages</key>
+	<integer>1</integer>
+	<key>ImageCounter</key>
+	<integer>1</integer>
+	<key>KeepToScale</key>
+	<false/>
+	<key>Layers</key>
+	<array>
+		<dict>
+			<key>Lock</key>
+			<string>NO</string>
+			<key>Name</key>
+			<string>レイヤー 1</string>
+			<key>Print</key>
+			<string>YES</string>
+			<key>View</key>
+			<string>YES</string>
+		</dict>
+	</array>
+	<key>LayoutInfo</key>
+	<dict>
+		<key>Animate</key>
+		<string>NO</string>
+		<key>circoMinDist</key>
+		<real>18</real>
+		<key>circoSeparation</key>
+		<real>0.0</real>
+		<key>layoutEngine</key>
+		<string>dot</string>
+		<key>neatoSeparation</key>
+		<real>0.0</real>
+		<key>twopiSeparation</key>
+		<real>0.0</real>
+	</dict>
+	<key>LinksVisible</key>
+	<string>NO</string>
+	<key>MagnetsVisible</key>
+	<string>NO</string>
+	<key>MasterSheets</key>
+	<array/>
+	<key>ModificationDate</key>
+	<string>2011-09-25 02:20:53 +0900</string>
+	<key>Modifier</key>
+	<string>shoshi</string>
+	<key>NotesVisible</key>
+	<string>NO</string>
+	<key>Orientation</key>
+	<integer>2</integer>
+	<key>OriginVisible</key>
+	<string>NO</string>
+	<key>PageBreaks</key>
+	<string>YES</string>
+	<key>PrintInfo</key>
+	<dict>
+		<key>NSBottomMargin</key>
+		<array>
+			<string>float</string>
+			<string>41</string>
+		</array>
+		<key>NSLeftMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+		<key>NSPaperSize</key>
+		<array>
+			<string>coded</string>
+			<string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAx7X05TU2l6ZT1mZn2WgVMCgUoDhg==</string>
+		</array>
+		<key>NSRightMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+		<key>NSTopMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+	</dict>
+	<key>PrintOnePage</key>
+	<false/>
+	<key>QuickLookPreview</key>
+	<data>
+	JVBERi0xLjMKJcTl8uXrp/Og0MTGCjUgMCBvYmoKPDwgL0xlbmd0aCA2IDAgUiAvRmls
+	dGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAGdmU2PHLkNhu/6FTpuDqPV9wcQLBAb
+	yWFvCw+Qj2N6Z2AYngCOD/n7eagqqdTT1WOvbYy7rSmKFEW+fMn6on/TX7Tlb0pNlxr0
+	f5/03/V/9M/vvzp9+apd//v1oh+sSVp+lgeftQvF5OKjLtmbVlJVL9rFaGzKVZeUjS9l
+	WYjJRJcXqVBNcUVfWHLG1+p0Cd5YxxfnrWmhOHWsuGhS8oVnppitxuWK/rH1XBjKp9Cw
+	EGX71ljdMD9i4lR/rLw6GUZyXv0rP58297z/oMRzVn94jxNd//ogH+LHC44YzkGd9ZFz
+	Ls7x2RQfrJ/eUTydarTpkMORvvqWV/8kvFJdxeRxiGNlP6pa5YY/jt3HymHBcNG083CR
+	csEEn7xc2n5Dy8ruokXuAwFF7HiJHauJm8UxDo2OfwgMa2rMUeGkd4+a8BEvPvD5UI21
+	odmsK6H2+KJ//pszFt8+Puuf/vIn/fhJ//VxU3EVnqp6Q8iVoAuHKRkvvujajI9F4poj
+	20zgzZXcivFW1Ay53Ahu64q6YJ6ptdWqcw2mWs+XJPIhHyupmlB9CnrIcUfJmWJD5ql9
+	dzVXpgVTbtp5OXYv3pmYGtE8LBgrJ+eTcFycO6PuOFE1PrRrR0RSqkavpiNqMqWxdjii
+	eRMbUceBphmtGdeKPywdC+M4apGah557z5Wy69dDDoduRh5eUNmZRBpwbcMLc+XmbBf9
+	VsAVa7j/7AkAb3Jw7g8G3Ls3As6lABgVYsMmEyxJSnKXYgLfRF0VnPysvQ2mFLc91nKU
+	tY/6RhjYPL/N+aTsTazFRU21Bqx1qxZ5yobk1JWWRVbcdRY1jeQuOUUNSoboixM9ZLrz
+	zakYDBfiEppEfgM9cpsLBsIAu+IE2AHtF90CSed8Yo0UaVbMI9pwfuUePFXCx9jNO5N+
+	ZvNf+fl0auSUyAKVrqFPTX05mmxbzau+DPCWlGTt42HtId2Ps2O6OnOLoxzgYzIyAEwW
+	fBFYB5sEHqTO2dQ1ilucRHck/YuNpJDLUgsLfsUqvOGNK0m84dBvC8YXW0z1IXbrbqTR
+	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
+	X5zWjSkhM7nmXOwjhF2fk5cLtaPA0McR6Oeknl3pG9JYO52hzieyCR/wRi/2t1GuMfbl
+	hFQtusMko6lUbfe+7CNRW1LwihGkTIFllpowiqaSoQcndxViQxpiFEWW1MSrwMIWGUMa
+	X07pZ1Dk/rR4SjCNljGwjPmmPjk52Ch7D31kaX8ZtPV+Z9Jyiqj/92Z4cI80VKkpR8Bl
+	z4u6F7p5Xp+N/26h4aEeNP+EhoQTJFUe20V1hqswOZY0GWsK9IAk97WP+kz67dCYEsMO
+	QmPsjW1MdsTUQx+vKAiXbW3RN6SxVpyxz+RuwJzCSq/OCE2u0AV5mbQB1P6mDyh4gHZx
+	oq2eUixHP/z0BLwU5l+0rpdQf1Hjld+CVDLqzH3uQ5TtO4d9kBRosnEteXXbEofLxYYn
+	+uyn5x/ZV3hpON333+xJH8gIknY7/cDevCu5Y3Kmi4+/b518/P10a968gKBQcOnZb93B
+	ixGZz/xxd3xjXylCP+yOt/dm6zsmD3cw1JiR8dv/ARsdqqIKZW5kc3RyZWFtCmVuZG9i
+	ago2IDAgb2JqCjI5MTUKZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVu
+	dCA0IDAgUiAvUmVzb3VyY2VzIDcgMCBSIC9Db250ZW50cyA1IDAgUiAvTWVkaWFCb3gg
+	WzAgMCA1NTkgNzgzXQo+PgplbmRvYmoKNyAwIG9iago8PCAvUHJvY1NldCBbIC9QREYg
+	L1RleHQgXSAvQ29sb3JTcGFjZSA8PCAvQ3MyIDkgMCBSIC9DczEgOCAwIFIgPj4gL0Zv
+	bnQgPDwKL0Y0LjEgMTQgMCBSIC9GMi4wIDExIDAgUiAvRjMuMSAxMiAwIFIgL0YxLjAg
+	MTAgMCBSID4+ID4+CmVuZG9iagoxNiAwIG9iago8PCAvTGVuZ3RoIDE3IDAgUiAvTiAx
+	IC9BbHRlcm5hdGUgL0RldmljZUdyYXkgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3Ry
+	ZWFtCngBhVJPSBRRHP7NNhKEiEGFeIh3CgmVKaysoNp2dVmVbVuV0qIYZ9+6o7Mz05vZ
+	NcWTBF2iPHUPomN07NChm5eiwKxL1yCpIAg8dej7zezqKIRveTvf+/39ft97RG2dpu87
+	KUFUc0OVK6Wnbk5Ni4MfKUUd1E5YphX46WJxjLHruZK/u9fWZ9LYst7HtXb79j21lWVg
+	IeottrcQ+iGRZgAfmZ8oZYCzwB2Wr9g+ATxYDqwa8COiAw+auTDT0Zx0pbItkVPmoigq
+	r2I7Sa77+bnGvou1iYP+XI9m1o69s+qq0UzUtPdEobwPrkQZz19U9mw1FKcN45xIQxop
+	8q7V3ytMxxGRKxBKBlI1ZLmfak6ddeB1GLtdupPj+PYQpT7JYKiJtemymR2FfQB2Ksvs
+	EPAF6PGyYg/ngXth/1tRw5PAJ2E/ZId51q0f9heuU+B7hD014M4UrsXx2oofXi0BQ/dU
+	I2iMc03E09c5c6SI7zHUGZj3RjmmCzF3lqoTN4A7YR9ZqmYKsV37ruol7nsCd9PjO9Gb
+	OQtcoBxJcrEV2RTQPAlYFH2LsEkOPD7OHlXgd6iYwBy5idzNKPce1REbZ6NSgVZ6jVfG
+	T+O58cX4ZWwYz4B+rHbXe3z/6eMVdde2Pjz5jXrcOa69nRtVYVZxZQvd/8cyhI/ZJzmm
+	wdOhWVhr2HbkD5rMTLAMKMR/BT6X+pITVdzV7u24RRLMUD4sbCW6S1RuKdTqPYNKrBwr
+	2AB2cJLELFocuFNrujl4d9giem35TVey64b++vZ6+9ryHm3KqCkoE82zRGaUsVuj5N14
+	2/1mkRGfODq+572KWsn+SUUQP4U5WiryFFX0VlDWxG9nDn4btn5cP6Xn9UH9PAk9rZ/R
+	r+ijEb4MdEnPwnNRH6NJ8LBpIeISoIqDM9ROVGONA+Ip8fK0W2SR/Q9AGf1mCmVuZHN0
+	cmVhbQplbmRvYmoKMTcgMCBvYmoKNzA0CmVuZG9iago5IDAgb2JqClsgL0lDQ0Jhc2Vk
+	IDE2IDAgUiBdCmVuZG9iagoxOCAwIG9iago8PCAvTGVuZ3RoIDE5IDAgUiAvTiAzIC9B
+	bHRlcm5hdGUgL0RldmljZVJHQiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0K
+	eAGFVM9rE0EU/jZuqdAiCFprDrJ4kCJJWatoRdQ2/RFiawzbH7ZFkGQzSdZuNuvuJrWl
+	iOTi0SreRe2hB/+AHnrwZC9KhVpFKN6rKGKhFy3xzW5MtqXqwM5+8943731vdt8ADXLS
+	NPWABOQNx1KiEWlsfEJq/IgAjqIJQTQlVdvsTiQGQYNz+Xvn2HoPgVtWw3v7d7J3rZrS
+	tpoHhP1A4Eea2Sqw7xdxClkSAog836Epx3QI3+PY8uyPOU55eMG1Dys9xFkifEA1Lc5/
+	TbhTzSXTQINIOJT1cVI+nNeLlNcdB2luZsbIEL1PkKa7zO6rYqGcTvYOkL2d9H5Os94+
+	wiHCCxmtP0a4jZ71jNU/4mHhpObEhj0cGDX0+GAVtxqp+DXCFF8QTSeiVHHZLg3xmK79
+	VvJKgnCQOMpkYYBzWkhP10xu+LqHBX0m1xOv4ndWUeF5jxNn3tTd70XaAq8wDh0MGgya
+	DUhQEEUEYZiwUECGPBoxNLJyPyOrBhuTezJ1JGq7dGJEsUF7Ntw9t1Gk3Tz+KCJxlEO1
+	CJL8Qf4qr8lP5Xn5y1yw2Fb3lK2bmrry4DvF5Zm5Gh7X08jjc01efJXUdpNXR5aseXq8
+	muwaP+xXlzHmgjWPxHOw+/EtX5XMlymMFMXjVfPqS4R1WjE3359sfzs94i7PLrXWc62J
+	izdWm5dn/WpI++6qvJPmVflPXvXx/GfNxGPiKTEmdornIYmXxS7xkthLqwviYG3HCJ2V
+	hinSbZH6JNVgYJq89S9dP1t4vUZ/DPVRlBnM0lSJ93/CKmQ0nbkOb/qP28f8F+T3iuef
+	KAIvbODImbptU3HvEKFlpW5zrgIXv9F98LZua6N+OPwEWDyrFq1SNZ8gvAEcdod6Hugp
+	mNOWls05Uocsn5O66cpiUsxQ20NSUtcl12VLFrOZVWLpdtiZ0x1uHKE5QvfEp0plk/qv
+	8RGw/bBS+fmsUtl+ThrWgZf6b8C8/UUKZW5kc3RyZWFtCmVuZG9iagoxOSAwIG9iago3
+	MzcKZW5kb2JqCjggMCBvYmoKWyAvSUNDQmFzZWQgMTggMCBSIF0KZW5kb2JqCjQgMCBv
+	YmoKPDwgL1R5cGUgL1BhZ2VzIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db3VudCAx
+	IC9LaWRzIFsgMyAwIFIgXSA+PgplbmRvYmoKMjAgMCBvYmoKPDwgL1R5cGUgL0NhdGFs
+	b2cgL091dGxpbmVzIDIgMCBSIC9QYWdlcyA0IDAgUiA+PgplbmRvYmoKMiAwIG9iago8
+	PCAvTGFzdCAyMSAwIFIgL0ZpcnN0IDIyIDAgUiA+PgplbmRvYmoKMjIgMCBvYmoKPDwg
+	L1BhcmVudCAyMyAwIFIgL0NvdW50IDAgL0Rlc3QgWyAzIDAgUiAvWFlaIDAgNzgzIDAg
+	XSAvVGl0bGUgKP7/MK0w4zDzMNAwuVwwMDAgXDAwMDEpCj4+CmVuZG9iagoyMyAwIG9i
+	ago8PCA+PgplbmRvYmoKMjEgMCBvYmoKPDwgL1BhcmVudCAyMyAwIFIgL0NvdW50IDAg
+	L0Rlc3QgWyAzIDAgUiAvWFlaIDAgNzgzIDAgXSAvVGl0bGUgKP7/MK0w4zDzMNAwuVww
+	MDAgXDAwMDEpCj4+CmVuZG9iagoyNiAwIG9iago8PCAvTGVuZ3RoIDI3IDAgUiAvU3Vi
+	dHlwZSAvQ0lERm9udFR5cGUwQyAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0K
+	eAGFlH1MU1cYxu+l9N6K16rAFe2tt1eRIQIFxI8p21BRxxQmioBMhhQo0AItbUHBGd2c
+	od8ffkXFD0AKMjB81RlhKkUtlCCiMreRmZhhMgPOAMuSc+uFuWL2xyJb9sc5Oed33udN
+	nicnLwx5ekAwDPvt2Zz8SWJMcKxEKdouyi9JUMo/DU2JnH5KoAmafxwj6cUwTXroMZYe
+	85xcMDmL7/mQ7/k7e/EyCOpfvEytXPp2457EBIuhYccSzJ/PfYEt5bOjsGV8WDqfD2dj
+	AXx471wIhWEE01e0dD/dmC3PFG8TFYlkETHyojKlJDevmEpbnpUWREWsWxcZujI8fC21
+	WSSRSYqK5DIqMUspFsuo+JxcIRUjF4ZQccXZQmpjQQG1a1qponaJVWLlfnG2cNpGrkQm
+	pyQqSkQVK0XZ4kKRMp+S5/xHu3d8J+/cmBy349003tKEf6U736UQBLEOsFXY+9xfIQj2
+	8PCA2O6goXjoOaxnLWLdDex0/dYJj3W64jpZY65x/M/drmuvd6NrUnDmwaQfM0D7sV0r
+	pu65b7QfcC/2VNDUHdx9WgD6Jxewp1a04a6LKBiYXMTmPvkeHn/oChxk0bddwfgtbf2x
+	li844+mOMAbhMXNjKcYjlUwrSTu86cgl1fGvTksfVrSeuXGJAwJ6nwFfEMZ7KRmOc5J9
+	24KaGE+C4TFwemSUIHaDeHkAj6Ee+48OdveAhQ7yxh+tILQCCDgxOvww45vDLM8M5QRl
+	ZKWJiCTRk5dgXi9gjzsF7Veun+uxcLgHHWDNHXDiDgh3wCP3QXAvsPSC8Pss3ze0kO7D
+	U+UGk0JgUhpKpTxGhubrSjTFpKn+gsFBgM1Ie51O0yDQ1OguNPOADG02VJqqSI1Crksl
+	GOluHFiYE4wFoVuZYVxt1TY5eC4Y7TReNbeS6hyZLpmY/AVJkRnMuQKz2JiXypt8gyZo
+	C9SF5ONuV3QCMhXtsuGu6KmPpqIR7kTXi9sT35Xc67n9vCvV4f3KPnJ3zO77yu7rDfm8
+	soOuCXwYaavSqWsFfahaWabLIiJe3Ec6qnWaaoG2Sld/kwfWoO2GK8ZKUnOgRJdObH0+
+	ily/+LdAUarbRwjPIo3GGksDuQWxFBiVBbzDQjTjgMGsFGxHzdZqg40YidyJ7FMZTEqB
+	SWEoyuAxq9B9OplGQZrqLhs6iK6wAES032BWTQtqrIY2Ynw9ItGqyqXkI6T8G219Aw80
+	ek6MBaCBYAU+OhaCMuGjeEjoKDrC+OMBoROoj4+dPliLH0k8Ki2NL4o4WryX8eKoc7/U
+	y4nzWy6ZzxhrzIvAjronZ19WnVLo9bXRjsaFceCDkpsbgH+SamH72qr0ptWryhK/ZuYd
+	coIg6w9tIJgDViO2y9NGB9Dyt0aZa4jbl0Uh+Njtq9bQQnwGTuLm2mrDNQJIkTqrTndW
+	4MO2ayv0+pPEAOrDspcrDrojY6RIetm0jks7umE6/QHL5aQdeGurVt0sGETLCwu0KQTT
+	ATyRBmO9O8f1iCXfqJDwGBbTiGbkGy0SQQxqbm002ghQjSQGZsTviI1ZL/xwZVLlofOl
+	FarBWz2dzt4fh7qGOoEHR5up3eP+dEPo51pJeR75FClv1DZ38MAQ2qK9oekgbRsuFl5N
+	t2+6mvfzlpsZ1lJn5vkrp05brSH2KGfUs/i+PY8SJjhciOUem6ExtAB7Tz/nHwPxWz77
+	mDdNzaRN3vSSmfQnb8ak57O36hHSi61ZmhWGzbJ52WbbMMyGzTFg89303JmkSsz79SHf
+	GZXdXv2zuzGs//8ru7ycs7swzDmj8i8xwYfnCmVuZHN0cmVhbQplbmRvYmoKMjcgMCBv
+	YmoKMTM1MwplbmRvYmoKMjUgMCBvYmoKPDwgL1R5cGUgL0ZvbnREZXNjcmlwdG9yIC9B
+	c2NlbnQgMTI2NiAvQ2FwSGVpZ2h0IDExMjUgL0Rlc2NlbnQgLTM3MyAvRmxhZ3MKMzIg
+	L0ZvbnRCQm94IFstNDE4IC00MDUgMTI2NCAxMjk4XSAvRm9udE5hbWUgL1hEVklTQytI
+	aXJhS2FrdVByb04tVzMgL0l0YWxpY0FuZ2xlCjAgL1N0ZW1WIDQwIC9BdmdXaWR0aCAx
+	MDAwIC9NYXhXaWR0aCAxNjE4IC9TdGVtSCA0MCAvWEhlaWdodCA4NDQgL0ZvbnRGaWxl
+	MwoyNiAwIFIgPj4KZW5kb2JqCjI4IDAgb2JqClsgXQplbmRvYmoKMjQgMCBvYmoKPDwg
+	L1R5cGUgL0ZvbnQgL1N1YnR5cGUgL0NJREZvbnRUeXBlMCAvQmFzZUZvbnQgL1hEVklT
+	QytIaXJhS2FrdVByb04tVzMgL0NJRFN5c3RlbUluZm8KPDwgL1JlZ2lzdHJ5IChBZG9i
+	ZSkgL09yZGVyaW5nIChKYXBhbjEpIC9TdXBwbGVtZW50IDYgPj4gL0ZvbnREZXNjcmlw
+	dG9yIDI1IDAgUgovVyAyOCAwIFIgL0RXIDEwMDAgPj4KZW5kb2JqCjE0IDAgb2JqCjw8
+	IC9UeXBlIC9Gb250IC9TdWJ0eXBlIC9UeXBlMCAvRW5jb2RpbmcgL0lkZW50aXR5LUgg
+	L0Jhc2VGb250IC9YRFZJU0MrSGlyYUtha3VQcm9OLVczCi9EZXNjZW5kYW50Rm9udHMg
+	WyAyNCAwIFIgXSA+PgplbmRvYmoKMjkgMCBvYmoKPDwgL0xlbmd0aCAzMCAwIFIgL0xl
+	bmd0aDEgNTA1NiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAG9WHtwVNUd
+	/p372N2QUJMAsnks924vS14bIag0EEqWsBsSAhgI4C6C7CbZmMREMhhSwYHuWLCyINUi
+	VMFR6cMKFLlsMvQGlEZGq06roo5UrTNKfXU6MvZFR0Vz+527yUoYZfIH4z1z7u95zvnO
+	d86ee+92r1sfpbEUI5HqV0a6Wsi6xj0A4W3qjHQl7eynIHOberrVpC0XEokdLV23dCZt
+	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
+	L0ZvbnREZXNjcmlwdG9yIC9Bc2NlbnQgNzcwIC9DYXBIZWlnaHQgNjg0IC9EZXNjZW50
+	IC0yMzAgL0ZsYWdzIDMyCi9Gb250QkJveCBbLTk1MSAtNDgxIDE0NDUgMTEyMl0gL0Zv
+	bnROYW1lIC9QRFlXS04rSGVsdmV0aWNhIC9JdGFsaWNBbmdsZSAwCi9TdGVtViAwIC9N
+	YXhXaWR0aCAxNTAwIC9YSGVpZ2h0IDUxMyAvRm9udEZpbGUyIDI5IDAgUiA+PgplbmRv
+	YmoKMzIgMCBvYmoKWyAyNzggXQplbmRvYmoKMTEgMCBvYmoKPDwgL1R5cGUgL0ZvbnQg
+	L1N1YnR5cGUgL1RydWVUeXBlIC9CYXNlRm9udCAvUERZV0tOK0hlbHZldGljYSAvRm9u
+	dERlc2NyaXB0b3IKMzEgMCBSIC9XaWR0aHMgMzIgMCBSIC9GaXJzdENoYXIgMzIgL0xh
+	c3RDaGFyIDMyIC9FbmNvZGluZyAvTWFjUm9tYW5FbmNvZGluZwo+PgplbmRvYmoKMzUg
+	MCBvYmoKPDwgL0xlbmd0aCAzNiAwIFIgL1N1YnR5cGUgL0NJREZvbnRUeXBlMEMgL0Zp
+	bHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngBhZd5XBNZtscJgaTQkG6F0pCCFHaP
+	+zK0jDrt0qLY4oIbuItohAQQJAsQFtlEAqktCwlEdiEsMYCyiQsiiIrIIoi9uLU6ds+M
+	n/d6tMfXMzfpi29e7H/mve55793P51ad+tap+znn3N+nPueyXNxcXVgs1syDBzfv2Re8
+	cFOcUrxVHJ+yUynbvnhf4PtXO+2Y3dfAE9n9WHaRK8VjUzy3yRmTHr5u475ub939WC4u
+	o36s8KLiny98Iw/3c3l5exbvY18PlPeRr6eM9xtfVu00X5aBN9uXpfzABWGxODyqrHXg
+	6dt10bJjki1iuTjxk2CZPF0ZFxOb7B8xLypivv8nn34auHhpQMAK/w3iuMQ4uVyW6B8e
+	pZRIEv23SWOW+AfLlizyD02OXuK/LiHBP+z9l0n+YZIkiVIliV7yPo+YuESZf1ySv9g/
+	WSmOlpwQK+P9ZdL/ZblfJL5x845NIQd/WY6f6YF/RTet+5d0/S+pi4sLm8/ext7DjmTL
+	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
+	fT5s5/DBH/rAwt5Ht803nR3eEAgfYns/dbZ6Kejkd9y83ZmECqveUKov01XrfABmfVQ9
+	VIVAD26UM51E0VecQgtx/pLQcYjbqKOIDvwuV5OcTsZh8D7nRBKjTXpf7Loauh6bmAHC
+	4TwYztnn5jQWOg2nVsLhTE6QKjrvs0zE7mUfQaUptE6Jh3CrtCbaRltgRCvkfwlnbA3Y
+	umthWEVGSbpZ+eru3TvD395Z1rf/bbDZaq4qq0BmD+26EfbsG+DXC+bXgbXaal0DU4xo
+	kpSkAqN3oXK4KgayN0HkxK2kgbTx9NHTl3JeI3wXN+dRa3HwAbs/bw7l+d9OUR2+nmPT
+	7fgv6EVfTzDdPutXlD9ruv2jX9Ot00+W2y+UA3E5RzTFXfNR1G95HkNTHk4d4vEe8jyd
+	qNS8p5o3/adMb6ilfN03Uv9065jSMbWDx+vgedK8af+n58CU0akDPN7o/+95Y8rg1Bs8
+	3uCvPP8LLZCznAplbmRzdHJlYW0KZW5kb2JqCjM2IDAgb2JqCjMzNDgKZW5kb2JqCjM0
+	IDAgb2JqCjw8IC9UeXBlIC9Gb250RGVzY3JpcHRvciAvQXNjZW50IDEyNjYgL0NhcEhl
+	aWdodCAxMTI1IC9EZXNjZW50IC0zNzMgL0ZsYWdzCjMyIC9Gb250QkJveCBbLTQxOCAt
+	NDA1IDEyNjQgMTI5OF0gL0ZvbnROYW1lIC9aWklVV0MrSGlyYUtha3VQcm9OLVczIC9J
+	dGFsaWNBbmdsZQowIC9TdGVtViA3NyAvQXZnV2lkdGggMTAwMCAvTWF4V2lkdGggMTYx
+	OCAvU3RlbUggNjMgL1hIZWlnaHQgODQ0IC9Gb250RmlsZTMKMzUgMCBSID4+CmVuZG9i
+	agozNyAwIG9iagpbIF0KZW5kb2JqCjMzIDAgb2JqCjw8IC9UeXBlIC9Gb250IC9TdWJ0
+	eXBlIC9DSURGb250VHlwZTAgL0Jhc2VGb250IC9aWklVV0MrSGlyYUtha3VQcm9OLVcz
+	IC9DSURTeXN0ZW1JbmZvCjw8IC9SZWdpc3RyeSAoQWRvYmUpIC9PcmRlcmluZyAoSmFw
+	YW4xKSAvU3VwcGxlbWVudCA2ID4+IC9Gb250RGVzY3JpcHRvciAzNCAwIFIKL1cgMzcg
+	MCBSIC9EVyAxMDAwID4+CmVuZG9iagoxMiAwIG9iago8PCAvVHlwZSAvRm9udCAvU3Vi
+	dHlwZSAvVHlwZTAgL0VuY29kaW5nIC9JZGVudGl0eS1IIC9CYXNlRm9udCAvWlpJVVdD
+	K0hpcmFLYWt1UHJvTi1XMwovRGVzY2VuZGFudEZvbnRzIFsgMzMgMCBSIF0gPj4KZW5k
+	b2JqCjM4IDAgb2JqCjw8IC9MZW5ndGggMzkgMCBSIC9MZW5ndGgxIDYzNTYgL0ZpbHRl
+	ciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngBvVh9dBPXlb/3vZnRSLKDLEMs29iSKoS/
+	MSZ82KDgwZaMAdsxGIjk4CDZlrFdnHiJMYEs1KUhgCFOUgpJSUtCu2UDlDLYNBFQqMO6
+	m+ZsmpL2JLvNcjZl89Hunvqk3YVsEpC1d0a2izlNDn9wMk937tf7uO/3rt7MvK4NG8OQ
+	CD3AobY+1NkC+mXzE/v7po5QZ1y3vkG8qqm7yxHXxWwAvr6lc11HXJe/A2DKWLd+82j7
+	ZPILl1vDoea4H24Qn9tKhriOs4lPa+3oejSuW08Tt61/uGnUn2wj/a6O0KOj48Nl0h0P
+	hTrC8fo2vX3nw490jeoC8ZmdG8Kj9ZHi578GJKsED4MRvg4GYGCh0gBg+KMpAwTyan66
+	mvPN+9ZO8lyDJFnX11Y/pfN/dv7snU/DN7LMz8ifkcE4Vl/jUs5IDkACkn/Y/My4R29H
+	NykCdXkRWEJUSjSHKC9vkQ168Ag8TfQiEYc23AObiXYTfZdIGJeOknYG9/QLsnIWN0Ma
+	LlXMgn3l5FS7zWS2/yaC0ulD9t/Z3j+HqbR6VzC1PxGMi0z4Ir4AzWDHH4Ebt0AlZOPB
+	gZz19iC5jkInUQ8R1++IR/szZ9kvYD64BaQ20yFTwJftfygqsH9YFGHYb7+YFRGIvZpJ
+	mjLJPphxyP7zjHX2C0TH465jOVTjZfvRjPX2fZkRPNhv/3ZGBKnNM3G2MYOavmzvyDlg
+	by7S/VUHIux4v72E/KsVs31usdM+J+MDe2FWREbSCzKq7LlFv7JPo4ZUzUGdupUk+9SM
+	ffb55MrM8GXNJzqHx/B5yMXn+91L7WdJpOkOLMkpPhDBxwYqs4vcEdyizK3MPpBTmeXO
+	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
+	9mFFmQGySRJAs8pGNBjTEjlSbkQwYcDZN5oe1bYhS03qJ8SSrCkl8fzweDQZd1bPyJMt
+	gyLlhs4sN7GimbT2DU6XEe/Rfy7EtD+zu0aSP8NN2DU8kszE/xvpYn9hb0TfZLOis6OT
+	2Br6N2jzXkzzlukt9ykld5eAk7MFt5UzDm4rIkXKZAP9BSjJaXbcaBTATFnNBXozVIwS
+	Y6LkRu14D34KqSZtDqk1lqvVVz0ltqin5N5CS+rVEj3XafVthVBaSvlOCT7DI2qT0ZKa
+	zsFeEQXGZUAm7NxqGdJvWjYnazPBJFdScu4f8Qge+a/o26+1iOejC9nFG/uiKqvl2kk5
+	0/Yo4TTNwUhZ3KTMTRFtEkNRkrQVQJS4ICLLpAUwgJQpG2UTN5m4QRTSEnibEVLNCS86
+	+y6P5u0HlLaeIcpXipSyuIT+mzQN/W9JoO/cOqTFNQ+dc5xT0DnFiYV8x43zQvmNbt57
+	/THW/COh7eTx698/ScFQXPoVC9N5y9+6JDJOAzedD3ngXr0C0gkSHV3SJdGZOlT5Vnnv
+	r8yrDK/vDne1NYXIHvdqNRxE+UQeoiqiNUTrY6MXyTAuI+3XE3Xacyf46Vx/gh64Ra/X
+	9P8H7c+FBwplbmRzdHJlYW0KZW5kb2JqCjM5IDAgb2JqCjM3MDUKZW5kb2JqCjQwIDAg
+	b2JqCjw8IC9UeXBlIC9Gb250RGVzY3JpcHRvciAvQXNjZW50IDc3MCAvQ2FwSGVpZ2h0
+	IDY4NCAvRGVzY2VudCAtMjMwIC9GbGFncyAzMgovRm9udEJCb3ggWy05NTEgLTQ4MSAx
+	NDQ1IDExMjJdIC9Gb250TmFtZSAvTEVVRFdIK0hlbHZldGljYSAvSXRhbGljQW5nbGUg
+	MAovU3RlbVYgMCAvTWF4V2lkdGggMTUwMCAvWEhlaWdodCA1MTMgL0ZvbnRGaWxlMiAz
+	OCAwIFIgPj4KZW5kb2JqCjQxIDAgb2JqClsgNjY3IDY2NyAwIDAgMCAwIDAgMCAwIDAg
+	MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA2NjcgNjY3IDYxMSBdCmVuZG9iagoxMCAw
+	IG9iago8PCAvVHlwZSAvRm9udCAvU3VidHlwZSAvVHJ1ZVR5cGUgL0Jhc2VGb250IC9M
+	RVVEV0grSGVsdmV0aWNhIC9Gb250RGVzY3JpcHRvcgo0MCAwIFIgL1dpZHRocyA0MSAw
+	IFIgL0ZpcnN0Q2hhciA2NSAvTGFzdENoYXIgOTAgL0VuY29kaW5nIC9NYWNSb21hbkVu
+	Y29kaW5nCj4+CmVuZG9iago0MiAwIG9iagooTWFjIE9TIFggMTAuNi44IFF1YXJ0eiBQ
+	REZDb250ZXh0KQplbmRvYmoKNDMgMCBvYmoKKEQ6MjAxMTA5MjQxNzIxMDlaMDAnMDAn
+	KQplbmRvYmoKMSAwIG9iago8PCAvUHJvZHVjZXIgNDIgMCBSIC9DcmVhdGlvbkRhdGUg
+	NDMgMCBSIC9Nb2REYXRlIDQzIDAgUiA+PgplbmRvYmoKeHJlZgowIDQ0CjAwMDAwMDAw
+	MDAgNjU1MzUgZiAKMDAwMDAxOTI4NyAwMDAwMCBuIAowMDAwMDA1MTkzIDAwMDAwIG4g
+	CjAwMDAwMDMwMzEgMDAwMDAgbiAKMDAwMDAwNTA0NCAwMDAwMCBuIAowMDAwMDAwMDIy
+	IDAwMDAwIG4gCjAwMDAwMDMwMTEgMDAwMDAgbiAKMDAwMDAwMzEzNSAwMDAwMCBuIAow
+	MDAwMDA1MDA4IDAwMDAwIG4gCjAwMDAwMDQxMTIgMDAwMDAgbiAKMDAwMDAxOTAxOSAw
+	MDAwMCBuIAowMDAwMDEwNjM1IDAwMDAwIG4gCjAwMDAwMTQ3NjIgMDAwMDAgbiAKMDAw
+	MDAwMDAwMCAwMDAwMCBuIAowMDAwMDA3NDM1IDAwMDAwIG4gCjAwMDAwMDAwMDAgMDAw
+	MDAgbiAKMDAwMDAwMzI4NCAwMDAwMCBuIAowMDAwMDA0MDkyIDAwMDAwIG4gCjAwMDAw
+	MDQxNDggMDAwMDAgbiAKMDAwMDAwNDk4OCAwMDAwMCBuIAowMDAwMDA1MTI3IDAwMDAw
+	IG4gCjAwMDAwMDUzNzAgMDAwMDAgbiAKMDAwMDAwNTI0MSAwMDAwMCBuIAowMDAwMDA1
+	MzQ4IDAwMDAwIG4gCjAwMDAwMDcyMzAgMDAwMDAgbiAKMDAwMDAwNjk1MSAwMDAwMCBu
+	IAowMDAwMDA1NDc3IDAwMDAwIG4gCjAwMDAwMDY5MzAgMDAwMDAgbiAKMDAwMDAwNzIx
+	MCAwMDAwMCBuIAowMDAwMDA3NTY5IDAwMDAwIG4gCjAwMDAwMTAzNjUgMDAwMDAgbiAK
+	MDAwMDAxMDM4NiAwMDAwMCBuIAowMDAwMDEwNjExIDAwMDAwIG4gCjAwMDAwMTQ1NTcg
+	MDAwMDAgbiAKMDAwMDAxNDI3OCAwMDAwMCBuIAowMDAwMDEwODA5IDAwMDAwIG4gCjAw
+	MDAwMTQyNTcgMDAwMDAgbiAKMDAwMDAxNDUzNyAwMDAwMCBuIAowMDAwMDE0ODk2IDAw
+	MDAwIG4gCjAwMDAwMTg2OTEgMDAwMDAgbiAKMDAwMDAxODcxMiAwMDAwMCBuIAowMDAw
+	MDE4OTM3IDAwMDAwIG4gCjAwMDAwMTkxOTMgMDAwMDAgbiAKMDAwMDAxOTI0NSAwMDAw
+	MCBuIAp0cmFpbGVyCjw8IC9TaXplIDQ0IC9Sb290IDIwIDAgUiAvSW5mbyAxIDAgUiAv
+	SUQgWyA8MjY4N2YwZWFiYzU3YWZiMjFjMjIyNDkwYzVlMmFkMDc+CjwyNjg3ZjBlYWJj
+	NTdhZmIyMWMyMjI0OTBjNWUyYWQwNz4gXSA+PgpzdGFydHhyZWYKMTkzNjIKJSVFT0YK
+	MSAwIG9iago8PC9BdXRob3IgKHNob3NoaSkvQ3JlYXRpb25EYXRlIChEOjIwMTEwOTI0
+	MTcwMzAwWikvQ3JlYXRvciAoT21uaUdyYWZmbGUgNS4zLjQpL01vZERhdGUgKEQ6MjAx
+	MTA5MjQxNzIwMDBaKS9Qcm9kdWNlciA0MiAwIFIgPj4KZW5kb2JqCnhyZWYKMSAxCjAw
+	MDAwMjA0MDAgMDAwMDAgbiAKdHJhaWxlcgo8PC9JRCBbPDI2ODdmMGVhYmM1N2FmYjIx
+	YzIyMjQ5MGM1ZTJhZDA3PiA8MjY4N2YwZWFiYzU3YWZiMjFjMjIyNDkwYzVlMmFkMDc+
+	XSAvSW5mbyAxIDAgUiAvUHJldiAxOTM2MiAvUm9vdCAyMCAwIFIgL1NpemUgNDQ+Pgpz
+	dGFydHhyZWYKMjA1NDIKJSVFT0YK
+	</data>
+	<key>QuickLookThumbnail</key>
+	<data>
+	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
+	AAEAAQ==
+	</data>
+	<key>ReadOnly</key>
+	<string>NO</string>
+	<key>RowAlign</key>
+	<integer>1</integer>
+	<key>RowSpacing</key>
+	<real>36</real>
+	<key>SheetTitle</key>
+	<string>キャンバス 1</string>
+	<key>SmartAlignmentGuidesActive</key>
+	<string>YES</string>
+	<key>SmartDistanceGuidesActive</key>
+	<string>YES</string>
+	<key>UniqueID</key>
+	<integer>1</integer>
+	<key>UseEntirePage</key>
+	<false/>
+	<key>VPages</key>
+	<integer>1</integer>
+	<key>WindowInfo</key>
+	<dict>
+		<key>CurrentSheet</key>
+		<integer>0</integer>
+		<key>ExpandedCanvases</key>
+		<array/>
+		<key>Frame</key>
+		<string>{{-1538, 40}, {797, 979}}</string>
+		<key>ListView</key>
+		<true/>
+		<key>OutlineWidth</key>
+		<integer>142</integer>
+		<key>RightSidebar</key>
+		<false/>
+		<key>ShowRuler</key>
+		<true/>
+		<key>Sidebar</key>
+		<true/>
+		<key>SidebarWidth</key>
+		<integer>120</integer>
+		<key>VisibleRegion</key>
+		<string>{{-52, -21}, {662, 825}}</string>
+		<key>Zoom</key>
+		<real>1</real>
+		<key>ZoomValues</key>
+		<array>
+			<array>
+				<string>キャンバス 1</string>
+				<real>1</real>
+				<real>1</real>
+			</array>
+		</array>
+	</dict>
+	<key>saveQuickLookFiles</key>
+	<string>YES</string>
+</dict>
+</plist>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jssst2011/graffle/treeexample.graffle	Sun Sep 25 03:42:16 2011 +0900
@@ -0,0 +1,1248 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>ActiveLayerIndex</key>
+	<integer>0</integer>
+	<key>ApplicationVersion</key>
+	<array>
+		<string>com.omnigroup.OmniGraffle</string>
+		<string>138.30.0.155892</string>
+	</array>
+	<key>AutoAdjust</key>
+	<true/>
+	<key>BackgroundGraphic</key>
+	<dict>
+		<key>Bounds</key>
+		<string>{{0, 0}, {559, 783}}</string>
+		<key>Class</key>
+		<string>SolidGraphic</string>
+		<key>ID</key>
+		<integer>2</integer>
+		<key>Style</key>
+		<dict>
+			<key>shadow</key>
+			<dict>
+				<key>Draws</key>
+				<string>NO</string>
+			</dict>
+			<key>stroke</key>
+			<dict>
+				<key>Draws</key>
+				<string>NO</string>
+			</dict>
+		</dict>
+	</dict>
+	<key>CanvasOrigin</key>
+	<string>{0, 0}</string>
+	<key>ColumnAlign</key>
+	<integer>1</integer>
+	<key>ColumnSpacing</key>
+	<real>36</real>
+	<key>CreationDate</key>
+	<string>2011-09-25 00:44:22 +0900</string>
+	<key>Creator</key>
+	<string>shoshi</string>
+	<key>DisplayScale</key>
+	<string>1 0/72 in = 1 0/72 in</string>
+	<key>GraphDocumentVersion</key>
+	<integer>6</integer>
+	<key>GraphicsList</key>
+	<array>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>42</integer>
+			</dict>
+			<key>ID</key>
+			<integer>54</integer>
+			<key>Points</key>
+			<array>
+				<string>{86.5, 232.25}</string>
+				<string>{86.5, 207.75}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>HeadArrow</key>
+					<string>0</string>
+					<key>TailArrow</key>
+					<string>FilledArrow</string>
+				</dict>
+			</dict>
+			<key>Tail</key>
+			<dict>
+				<key>ID</key>
+				<integer>41</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>40</integer>
+			</dict>
+			<key>ID</key>
+			<integer>53</integer>
+			<key>Points</key>
+			<array>
+				<string>{187.024, 171.968}</string>
+				<string>{154.976, 135.032}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>HeadArrow</key>
+					<string>0</string>
+					<key>TailArrow</key>
+					<string>FilledArrow</string>
+				</dict>
+			</dict>
+			<key>Tail</key>
+			<dict>
+				<key>ID</key>
+				<integer>44</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>40</integer>
+			</dict>
+			<key>ID</key>
+			<integer>50</integer>
+			<key>Points</key>
+			<array>
+				<string>{142.905, 167.258}</string>
+				<string>{142.095, 139.742}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>HeadArrow</key>
+					<string>0</string>
+					<key>TailArrow</key>
+					<string>FilledArrow</string>
+				</dict>
+			</dict>
+			<key>Tail</key>
+			<dict>
+				<key>ID</key>
+				<integer>43</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>40</integer>
+			</dict>
+			<key>ID</key>
+			<integer>49</integer>
+			<key>Points</key>
+			<array>
+				<string>{99.4162, 171.531}</string>
+				<string>{128.584, 135.469}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>HeadArrow</key>
+					<string>0</string>
+					<key>TailArrow</key>
+					<string>FilledArrow</string>
+				</dict>
+			</dict>
+			<key>Tail</key>
+			<dict>
+				<key>ID</key>
+				<integer>42</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>28</integer>
+			</dict>
+			<key>ID</key>
+			<integer>48</integer>
+			<key>Points</key>
+			<array>
+				<string>{127.849, 104.111}</string>
+				<string>{100.151, 72.8886}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>HeadArrow</key>
+					<string>0</string>
+					<key>TailArrow</key>
+					<string>FilledArrow</string>
+				</dict>
+			</dict>
+			<key>Tail</key>
+			<dict>
+				<key>ID</key>
+				<integer>40</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>28</integer>
+			</dict>
+			<key>ID</key>
+			<integer>47</integer>
+			<key>Points</key>
+			<array>
+				<string>{86.5, 99.25}</string>
+				<string>{86.5, 77.75}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>HeadArrow</key>
+					<string>0</string>
+					<key>TailArrow</key>
+					<string>FilledArrow</string>
+				</dict>
+			</dict>
+			<key>Tail</key>
+			<dict>
+				<key>ID</key>
+				<integer>38</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>28</integer>
+			</dict>
+			<key>ID</key>
+			<integer>46</integer>
+			<key>Points</key>
+			<array>
+				<string>{45.1512, 104.111}</string>
+				<string>{72.8488, 72.8886}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>HeadArrow</key>
+					<string>0</string>
+					<key>TailArrow</key>
+					<string>FilledArrow</string>
+				</dict>
+			</dict>
+			<key>Tail</key>
+			<dict>
+				<key>ID</key>
+				<integer>39</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{180, 167.75}, {41, 39.5}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>44</integer>
+			<key>Shape</key>
+			<string>Circle</string>
+			<key>Style</key>
+			<dict/>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 li}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{123, 167.75}, {41, 39.5}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>43</integer>
+			<key>Shape</key>
+			<string>Circle</string>
+			<key>Style</key>
+			<dict/>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 li}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{66, 167.75}, {41, 39.5}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>42</integer>
+			<key>Shape</key>
+			<string>Circle</string>
+			<key>Style</key>
+			<dict/>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 li}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{66, 232.75}, {41, 39.5}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>41</integer>
+			<key>Shape</key>
+			<string>Circle</string>
+			<key>Style</key>
+			<dict/>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 a}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{121, 99.75}, {41, 39.5}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>40</integer>
+			<key>Shape</key>
+			<string>Circle</string>
+			<key>Style</key>
+			<dict/>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 ul}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{11, 99.75}, {41, 39.5}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>39</integer>
+			<key>Shape</key>
+			<string>Circle</string>
+			<key>Style</key>
+			<dict/>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 h1}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{66, 99.75}, {41, 39.5}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>38</integer>
+			<key>Shape</key>
+			<string>Circle</string>
+			<key>Style</key>
+			<dict/>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 img}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{66, 37.75}, {41, 39.5}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>28</integer>
+			<key>Shape</key>
+			<string>Circle</string>
+			<key>Style</key>
+			<dict/>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf0 html}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{274, 52}, {285, 204}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FitText</key>
+			<string>YES</string>
+			<key>Flow</key>
+			<string>Resize</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>Helvetica</string>
+				<key>Size</key>
+				<real>13</real>
+			</dict>
+			<key>ID</key>
+			<integer>3</integer>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Align</key>
+				<integer>0</integer>
+				<key>Pad</key>
+				<integer>0</integer>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+
+\f0\fs28 \cf0 &lt;html lang="ja"&gt;\
+ &lt;h1&gt;Hello!&lt;/h1&gt;\
+ &lt;img src="a.png" \
+          style="float: left;" alt="test"/&gt;\
+ &lt;ul&gt;\
+  &lt;li&gt;text1&lt;/li&gt;\
+  &lt;li&gt;text2&lt;/li&gt;\
+  &lt;li&gt;\
+   &lt;a href="http://www.google.co.jp"&gt;text3&lt;/a&gt;\
+  &lt;/li&gt;\
+ &lt;/ul&gt;\
+&lt;/html&gt;}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+			<key>Wrap</key>
+			<string>NO</string>
+		</dict>
+	</array>
+	<key>GridInfo</key>
+	<dict/>
+	<key>GuidesLocked</key>
+	<string>NO</string>
+	<key>GuidesVisible</key>
+	<string>YES</string>
+	<key>HPages</key>
+	<integer>1</integer>
+	<key>ImageCounter</key>
+	<integer>1</integer>
+	<key>KeepToScale</key>
+	<false/>
+	<key>Layers</key>
+	<array>
+		<dict>
+			<key>Lock</key>
+			<string>NO</string>
+			<key>Name</key>
+			<string>レイヤー 1</string>
+			<key>Print</key>
+			<string>YES</string>
+			<key>View</key>
+			<string>YES</string>
+		</dict>
+	</array>
+	<key>LayoutInfo</key>
+	<dict>
+		<key>Animate</key>
+		<string>NO</string>
+		<key>circoMinDist</key>
+		<real>18</real>
+		<key>circoSeparation</key>
+		<real>0.0</real>
+		<key>layoutEngine</key>
+		<string>dot</string>
+		<key>neatoSeparation</key>
+		<real>0.0</real>
+		<key>twopiSeparation</key>
+		<real>0.0</real>
+	</dict>
+	<key>LinksVisible</key>
+	<string>NO</string>
+	<key>MagnetsVisible</key>
+	<string>NO</string>
+	<key>MasterSheets</key>
+	<array/>
+	<key>ModificationDate</key>
+	<string>2011-09-25 01:58:05 +0900</string>
+	<key>Modifier</key>
+	<string>shoshi</string>
+	<key>NotesVisible</key>
+	<string>NO</string>
+	<key>Orientation</key>
+	<integer>2</integer>
+	<key>OriginVisible</key>
+	<string>NO</string>
+	<key>PageBreaks</key>
+	<string>YES</string>
+	<key>PrintInfo</key>
+	<dict>
+		<key>NSBottomMargin</key>
+		<array>
+			<string>float</string>
+			<string>41</string>
+		</array>
+		<key>NSLeftMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+		<key>NSPaperSize</key>
+		<array>
+			<string>coded</string>
+			<string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAx7X05TU2l6ZT1mZn2WgVMCgUoDhg==</string>
+		</array>
+		<key>NSRightMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+		<key>NSTopMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+	</dict>
+	<key>PrintOnePage</key>
+	<false/>
+	<key>QuickLookPreview</key>
+	<data>
+	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
+	91hzQTmsJ/iAtxdLGXCoAKVMuA6ELCIO2PTsBIZGEJbRteB1SCJ0BYsFx288hyUVQ2Pj
+	gPdJNoCtzUfZTSFU9nk+l/GXKz5SCZL5qGeNKTc29r1/gTZqQfLeg3vEtnyD7ncLIZ2m
+	c8JotRDSn/FoIZRvrVQtz2Ks05EuM+F0ucxLZbChaEVQvrVx6Rxbn6X8fv8zJ899Tgpl
+	bmRzdHJlYW0KZW5kb2JqCjYgMCBvYmoKMjY3NAplbmRvYmoKMyAwIG9iago8PCAvVHlw
+	ZSAvUGFnZSAvUGFyZW50IDQgMCBSIC9SZXNvdXJjZXMgNyAwIFIgL0NvbnRlbnRzIDUg
+	MCBSIC9NZWRpYUJveCBbMCAwIDU1OSA3ODNdCj4+CmVuZG9iago3IDAgb2JqCjw8IC9Q
+	cm9jU2V0IFsgL1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUMgL0ltYWdlSSBdIC9Db2xv
+	clNwYWNlIDw8IC9DczIgMTEgMCBSCi9DczEgOCAwIFIgPj4gL0ZvbnQgPDwgL0YxLjAg
+	MTIgMCBSID4+IC9YT2JqZWN0IDw8IC9JbTEgOSAwIFIgPj4gPj4KZW5kb2JqCjkgMCBv
+	YmoKPDwgL0xlbmd0aCAxMCAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdl
+	IC9XaWR0aCAxMjYgL0hlaWdodCAxMjQgL0ludGVycG9sYXRlCnRydWUgL0NvbG9yU3Bh
+	Y2UgMTMgMCBSIC9JbnRlbnQgL1BlcmNlcHR1YWwgL1NNYXNrIDE0IDAgUiAvQml0c1Bl
+	ckNvbXBvbmVudAo4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae3QAQ0A
+	AADCoPdPbQ43iEBhwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
+	AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
+	wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
+	GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
+	AwYMGDBgwIABA08DA7cYAAEKZW5kc3RyZWFtCmVuZG9iagoxMCAwIG9iagoyMjgKZW5k
+	b2JqCjE0IDAgb2JqCjw8IC9MZW5ndGggMTUgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0
+	eXBlIC9JbWFnZSAvV2lkdGggMTI2IC9IZWlnaHQgMTI0IC9Db2xvclNwYWNlCi9EZXZp
+	Y2VHcmF5IC9JbnRlcnBvbGF0ZSB0cnVlIC9CaXRzUGVyQ29tcG9uZW50IDggL0ZpbHRl
+	ciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7ZvnWxNrE8atIL2FTkJIILREurQTUMFE
+	aVIEgUAOEARDEYKCQJQikWgAkWoEAYMUDaIUEdRzrvOvvTPPbqjBco6y7wfngyQrF7+5
+	75l5drP75Nix3/Hbgd8O/F87cBzjxJ4gh3550ibsyZMnT+0KeEuSgf/+ZSlQgoF7GsLC
+	wsKSDniJR05RKfySBAiakAF75swZK2traxsS8MIKDlhiDlQGPzkBCn0KRFsg18bG1tbO
+	HsPBgfyws7W1scEcMIFTWIWflwDNPn0aNCMZoI5OTs4uLiwSLi7OTk6OkAZmAB6gAz+N
+	j2wsNai2tgHJjsBlubq5u3t40uHh7u7myoIcHO3tbDEBUoKfod/EtkTDEe3CcnP38PLy
+	YbM5vr5cCF9fDpvt4+Xl4e7GcsEEsAS0Af/Rfxzrk2i5FRjuAGgge7M5XD8e3z9AQEeA
+	P5/nx+WwvSEDSMABSkD4xP9/P4G0cAvCdnRmuXl4+XC4PH6AICg4RCgUic5CiERCYUhw
+	kCCAz+NyfLw83FjOjoRvQer/r+VTBd9mu3t6s7k8fwGAz4ZFREZFR8ecg4iJjo6KjAg7
+	CykI/Hlctren+z7+v5JPwS2h1+xBt7unD8ePLwgWng2PjD4XG5/wh1iclJScnJQkFv+R
+	EB97Ljoy/KwwWMD34/hQfOg/S0r+j+OJ69DoVjZ2Dk7I9uUFBIWKwqNi4hLEyecvplyS
+	SKWXIaRSyaWUi+eTxQlxMVHhotCgAJ4v8p0c7KD8Fqeh+j/sPsJPARyEO7m4eXgDO1gY
+	FhkTl5h0IUVyOS0j82p2Ti6JnOyrmRlplyUpF5IS42Iiw4TBwPf2cHNxsgf5UP0fxgMc
+	ZtzyjI0tCvdi+wUECcOiYhPEF1KlaZnZufkFhcWyktJSuby0tERWXFiQn5udmSZNvSBO
+	iI0KEwYF+LG9UL6tDeX+D6mnSw6uOzq7evpw+YHITkxOkaZn5eYXykr/LFdUVlVV34So
+	rqqqVJT/WSorzM/NSpemJCciP5DP9fF0dXYE93+0+LRyK3AdhHN4gpCzkbGJ51MvZ2QD
+	Wl5eWa2srW9oVDWRUDU21NcqqyvL5ZBAdsbl1POJsZFnQwQ8Dsq3p/HfrZ6CQ78h3NuX
+	HySMiElITrmSmVtQLK+4oaxrUN1uvtvarlbfg1Cr21vvNt9WNdQpb1TIiwtyM6+kJCfE
+	RAiD+L7eFP4Mtv734knNKbiHDzcgOCwqTpwizcgtkJUpbtY1NDW3qu93dHX3aDQPITSa
+	nu6ujvvq1uamhrqbijJZQW6GNEUcFxUWHMD18SDqKfx3Dd4O3NWT7ScIDY9JOC9Jz86X
+	lVUq61WA7ujueah9rOvrHyDR36d7rH3Y090BCajqlZVlsvzsdMn5hJjwUIEf29MVzf9u
+	PBk1S7Qd4LxAYUSs+OLlrLwiuUJZ39TS3tGt0er6BwafDg+Pjo5BjI4ODz8dHOjXaTXd
+	He0tTfVKhbwoL+vyRXFshDCQR+Oh9WDwvql+D5wfKIqMS0pNyy4oqaiua2pRd/b06gYG
+	h0bGxvXPJybpmHiuHx8bGRoc0PX2dKpbmuqqK0oKstNSk+IiRYH8H8KD77DIUMr5QaKo
+	+GRJRm6hvLKmobm9o0erezI0Oq6feDE9/dJgMMxCwI+X09MvJvTjo0NPdNqejvbmhppK
+	eWFuhiQ5PkoUROPJqvct8dtwFtgOcCh55rXisqr6ptaOB9q+weEx/eTUjGF2bm5+YZGO
+	hfm5uVnDzNSkfmx4sE/7oKO1qb6qrPhaJhQf8GA+tt534InvZ6ztHFkeUHOES7PyZRXK
+	hmZ110Pdk+Gx5y+mDa/mFhbfGI1Lb5dJvF0yGt8sLsy9Mky/eD42/ET3sEvd3KCskOVn
+	SREPtfdgOdpZQ+d9o/Qo3dLK1sHF3cdPIIyKR3iJokZ1936PdmAI2DOzc4uvjUvLy+9X
+	VlZWScCL98vLS8bXi3OzM8AfGtD23L+rqlGUID4+Sijw83F3cbCFRQ+m/iuNZ/Ld2c2L
+	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
+	KFMqV65QqVQ5qVqlecr0dMCZsrMTNSy1Bue86iLOp9TnNhxvrLxwrqmlufPi7ZbRS5+v
+	CFyNujbSJtEe1lHW2db16Prsja1u1lsKPS69hX1z/eYDlXce3n07uHgf+0BkyOyh/3Ds
+	o7AR58dqo7xjNGNrT6afPhy/9axr4sbzWy96J7tftrw6/jrsjeEUx9Ty25F3ndP17ytn
+	jn3YP5s8Fz7v89Hmk9ICeeHT5ztfav/KXQxZsl1W/ir4TWLF63v3D/m14p9vNjg23bZq
+	t7d34gQQARdySnQAKaAJfIDEoEioB+aCs+FlVBTqB/ogRgAzgI3DyeK+4vsIVTRpRH9a
+	N5IjnRu9L0M8Yz65nmmE+QerGJsXexHHIy4StzXPYd5hfpKAveBxoRERoqiJWIJ4ncRj
+	yW/SDDLisspyGvIaCkqKEkq8ygwqkMo31RlktxrU6NRs0KrQztdJ1Q3R261va2BoqGYk
+	ayxswmnKYIY1WzdftJixnLAasu62uWRbvavILsc+1oHiaOek6yzlwu6KcV1ye+k+6HF1
+	92nPPK/YPV7eJj7SFCbKD99Xfr3+tQEHA0ODbILlqIzUryFPQ9vCysKTI9wiVaPIUfPR
+	t2KKYv3jVOIx8eMJ5xLjk0ySmZOnU66kZu61TeNO+5jelXEkMyTLIdsYiQzN/aq58gek
+	Dork8R3iyCcfJh5BH9ks+H506djy8bUiXDH7CfEStVLjMrvy3RVBlTEn06oOnCo8ffLM
+	+bMd1aM1a+ck6jzP59e3Nrxo3GoSaDa5GNxy5FL75S9XVa7tb33cTurQ6aR2lV9/cGO7
+	W+VWWE9t78vbjP36A9Q7+XcbBwfvzT8gDSk99BjOftQ08mwUO6b8xPtpznjts/6JDy9o
+	JuVeOr1Kfn3qzd2p1XcK0zHvr84sz0rPBc3XfHyzwPXZ7cvJvxaXEr7KrJBXadbgn582
+	rm9R//Y/DWAD0sAcqU1LwX0IC5lBx6FpWAc+iyKh9qNx6EKMKKYH648j4+7hDxJsafho
+	1ohPaDtI5+jK6QsZjjIWkiuYzjG3sQyyvmZb4yBzynCZclN49vKW8l3k7xN4Ijgj9Fl4
+	WWQROTVNiPdJnJPcJ+UhLScDyYzK1solylsq8CusKg4r1SmnqzirSqvBahPqzRrZmi5a
+	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
+	Z6NSgVZ6jVfGT+O58cX4ZWwYz4B+rHbXe3z/6eMVdde2Pjz5jXrcOa69nRtVYVZxZQvd
+	/8cyhI/ZJzmmwdOhWVhr2HbkD5rMTLAMKMR/BT6X+pITVdzV7u24RRLMUD4sbCW6S1Ru
+	KdTqPYNKrBwr2AB2cJLELFocuFNrujl4d9giem35TVey64b++vZ6+9ryHm3KqCkoE82z
+	RGaUsVuj5N142/1mkRGfODq+572KWsn+SUUQP4U5WiryFFX0VlDWxG9nDn4btn5cP6Xn
+	9UH9PAk9rZ/Rr+ijEb4MdEnPwnNRH6NJ8LBpIeISoIqDM9ROVGONA+Ip8fK0W2SR/Q9A
+	Gf1mCmVuZHN0cmVhbQplbmRvYmoKMTkgMCBvYmoKNzA0CmVuZG9iagoxMSAwIG9iagpb
+	IC9JQ0NCYXNlZCAxOCAwIFIgXQplbmRvYmoKMjAgMCBvYmoKPDwgL0xlbmd0aCAyMSAw
+	IFIgL04gMyAvQWx0ZXJuYXRlIC9EZXZpY2VSR0IgL0ZpbHRlciAvRmxhdGVEZWNvZGUg
+	Pj4Kc3RyZWFtCngBhVTPaxNBFP42bqnQIghaaw6yeJAiSVmraEXUNv0RYmsM2x+2RZBk
+	M0nWbjbr7ia1pYjk4tEq3kXtoQf/gB568GQvSoVaRSjeqyhioRct8c1uTLal6sDOfvPe
+	N+99b3bfAA1y0jT1gATkDcdSohFpbHxCavyIAI6iCUE0JVXb7E4kBkGDc/l759h6D4Fb
+	VsN7+3eyd62a0raaB4T9QOBHmtkqsO8XcQpZEgKIPN+hKcd0CN/j2PLsjzlOeXjBtQ8r
+	PcRZInxANS3Of024U80l00CDSDiU9XFSPpzXi5TXHQdpbmbGyBC9T5Cmu8zuq2KhnE72
+	DpC9nfR+TrPePsIhwgsZrT9GuI2e9YzVP+Jh4aTmxIY9HBg19PhgFbcaqfg1whRfEE0n
+	olRx2S4N8Ziu/VbySoJwkDjKZGGAc1pIT9dMbvi6hwV9JtcTr+J3VlHheY8TZ97U3e9F
+	2gKvMA4dDBoMmg1IUBBFBGGYsFBAhjwaMTSycj8jqwYbk3sydSRqu3RiRLFBezbcPbdR
+	pN08/igicZRDtQiS/EH+Kq/JT+V5+ctcsNhW95Stm5q68uA7xeWZuRoe19PI43NNXnyV
+	1HaTV0eWrHl6vJrsGj/sV5cx5oI1j8RzsPvxLV+VzJcpjBTF41Xz6kuEdVoxN9+fbH87
+	PeIuzy611nOtiYs3VpuXZ/1qSPvuqryT5lX5T1718fxnzcRj4ikxJnaK5yGJl8Uu8ZLY
+	S6sL4mBtxwidlYYp0m2R+iTVYGCavPUvXT9beL1Gfwz1UZQZzNJUifd/wipkNJ25Dm/6
+	j9vH/Bfk94rnnygCL2zgyJm6bVNx7xChZaVuc64CF7/RffC2bmujfjj8BFg8qxatUjWf
+	ILwBHHaHeh7oKZjTlpbNOVKHLJ+TuunKYlLMUNtDUlLXJddlSxazmVVi6XbYmdMdbhyh
+	OUL3xKdKZZP6r/ERsP2wUvn5rFLZfk4a1oGX+m/AvP1FCmVuZHN0cmVhbQplbmRvYmoK
+	MjEgMCBvYmoKNzM3CmVuZG9iago4IDAgb2JqClsgL0lDQ0Jhc2VkIDIwIDAgUiBdCmVu
+	ZG9iago0IDAgb2JqCjw8IC9UeXBlIC9QYWdlcyAvTWVkaWFCb3ggWzAgMCA2MTIgNzky
+	XSAvQ291bnQgMSAvS2lkcyBbIDMgMCBSIF0gPj4KZW5kb2JqCjIyIDAgb2JqCjw8IC9U
+	eXBlIC9DYXRhbG9nIC9PdXRsaW5lcyAyIDAgUiAvUGFnZXMgNCAwIFIgL1ZlcnNpb24g
+	LzEuNCA+PgplbmRvYmoKMiAwIG9iago8PCAvTGFzdCAyMyAwIFIgL0ZpcnN0IDI0IDAg
+	UiA+PgplbmRvYmoKMjQgMCBvYmoKPDwgL1BhcmVudCAyNSAwIFIgL0NvdW50IDAgL0Rl
+	c3QgWyAzIDAgUiAvWFlaIDAgNzgzIDAgXSAvVGl0bGUgKP7/MK0w4zDzMNAwuVwwMDAg
+	XDAwMDEpCj4+CmVuZG9iagoyNSAwIG9iago8PCA+PgplbmRvYmoKMjMgMCBvYmoKPDwg
+	L1BhcmVudCAyNSAwIFIgL0NvdW50IDAgL0Rlc3QgWyAzIDAgUiAvWFlaIDAgNzgzIDAg
+	XSAvVGl0bGUgKP7/MK0w4zDzMNAwuVwwMDAgXDAwMDEpCj4+CmVuZG9iagoyNiAwIG9i
+	ago8PCAvTGVuZ3RoIDI3IDAgUiAvTGVuZ3RoMSAxMjg2NCAvRmlsdGVyIC9GbGF0ZURl
+	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
+	5BxN8ZSsXORjzfwCOPGG1aBp8azv/gVlT3U95QvEZyTrsjN07CRtuP3X2IWZjMXh7eGv
+	Xg4v6uOE5zWcaBUeT2RmDPbQ9xFeQexGt0PsRkOuQcqiwH/XmZ0a7OCKbAoOscp4mCYK
+	YLvNEVBwei7G7rJT9kHe5ox/T1w8HAWN6pRLI84fHOwPh3GlOCtTBJ8aR2M3ojOHzRXP
+	OcHaeuj2vr6hryGK2/ETq98GQd10W0zUgYVA7rU776CZvRROtRVt3kbolX+RNviO8B/9
+	EqGQBjli5Tdk0fdj0fdh5G1YCipHlfCl4hT4OJd8j1iDbpa/mKyDryBvQbPRHNSA5sJ3
+	hfOGv5EjmgHLw3DkrdvMsrmVU6tSqttWdLS1L13YAjXRWtIEjCt854ngGztE3lugiwBX
+	AK5CIwbACJAIkAtQDjALoBWgHWATwOMAzwP0AfQDXAS4AnAVJs0AGAESAXIBygFmAbQC
+	tANsAngc4HmAPoD+yPAPxkejeYzc43BxHC6/Lbyhffq4etjQY/rLGodnj8NzxuETxuHk
+	y9ob6SsZh08ch08ah1ePw8mK3NjfwnG4LDM3zG/RuPrF4/Al4/Cl4/Bl43DyDeSN48v/
+	S3HDeLePq181Dl89Dl87Dr9jHA5rP2a8dePwO8fhd43DO8fi1+Xd9d8TKNh8CmVuZHN0
+	cmVhbQplbmRvYmoKMjcgMCBvYmoKODI5MgplbmRvYmoKMjggMCBvYmoKPDwgL1R5cGUg
+	L0ZvbnREZXNjcmlwdG9yIC9Bc2NlbnQgNzcwIC9DYXBIZWlnaHQgNzE3IC9EZXNjZW50
+	IC0yMzAgL0ZsYWdzIDMyCi9Gb250QkJveCBbLTk1MSAtNDgxIDE0NDUgMTEyMl0gL0Zv
+	bnROYW1lIC9RQlpGSkcrSGVsdmV0aWNhIC9JdGFsaWNBbmdsZSAwCi9TdGVtViAwIC9N
+	YXhXaWR0aCAxNTAwIC9YSGVpZ2h0IDU0MCAvRm9udEZpbGUyIDI2IDAgUiA+PgplbmRv
+	YmoKMjkgMCBvYmoKWyAyNzggMjc4IDM1NSAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMjc4
+	IDI3OCAwIDU1NiA1NTYgNTU2IDAgMCAwIDAgMCAwIDI3OAoyNzggNTg0IDU4NCA1ODQg
+	MCAwIDAgMCAwIDAgMCAwIDAgNzIyIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw
+	IDAgMCAwCjAgMCAwIDAgMCAwIDU1NiAwIDUwMCAwIDU1NiAyNzggNTU2IDU1NiAyMjIg
+	MjIyIDAgMjIyIDgzMyA1NTYgNTU2IDU1NiAwIDMzMwo1MDAgMjc4IDU1NiAwIDcyMiA1
+	MDAgNTAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg
+	MCAwCjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw
+	IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAKMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg
+	MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMAow
+	IDAgMCA1MDAgXQplbmRvYmoKMTIgMCBvYmoKPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUg
+	L1RydWVUeXBlIC9CYXNlRm9udCAvUUJaRkpHK0hlbHZldGljYSAvRm9udERlc2NyaXB0
+	b3IKMjggMCBSIC9XaWR0aHMgMjkgMCBSIC9GaXJzdENoYXIgMzIgL0xhc3RDaGFyIDIy
+	MyAvRW5jb2RpbmcgL01hY1JvbWFuRW5jb2RpbmcKPj4KZW5kb2JqCjMwIDAgb2JqCihN
+	YWMgT1MgWCAxMC42LjggUXVhcnR6IFBERkNvbnRleHQpCmVuZG9iagozMSAwIG9iagoo
+	RDoyMDExMDkyNDE3MjExNlowMCcwMCcpCmVuZG9iagoxIDAgb2JqCjw8IC9Qcm9kdWNl
+	ciAzMCAwIFIgL0NyZWF0aW9uRGF0ZSAzMSAwIFIgL01vZERhdGUgMzEgMCBSID4+CmVu
+	ZG9iagp4cmVmCjAgMzIKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDI0OTIwIDAwMDAw
+	IG4gCjAwMDAwMTUyNjQgMDAwMDAgbiAKMDAwMDAwMjc5MCAwMDAwMCBuIAowMDAwMDE1
+	MTAxIDAwMDAwIG4gCjAwMDAwMDAwMjIgMDAwMDAgbiAKMDAwMDAwMjc3MCAwMDAwMCBu
+	IAowMDAwMDAyODk0IDAwMDAwIG4gCjAwMDAwMTUwNjUgMDAwMDAgbiAKMDAwMDAwMzA1
+	NSAwMDAwMCBuIAowMDAwMDAzNTAzIDAwMDAwIG4gCjAwMDAwMTQxNjggMDAwMDAgbiAK
+	MDAwMDAyNDY1MSAwMDAwMCBuIAowMDAwMDEzMzAzIDAwMDAwIG4gCjAwMDAwMDM1MjMg
+	MDAwMDAgbiAKMDAwMDAwNzIwMiAwMDAwMCBuIAowMDAwMDA3MjIzIDAwMDAwIG4gCjAw
+	MDAwMTMyODIgMDAwMDAgbiAKMDAwMDAxMzM0MCAwMDAwMCBuIAowMDAwMDE0MTQ4IDAw
+	MDAwIG4gCjAwMDAwMTQyMDUgMDAwMDAgbiAKMDAwMDAxNTA0NSAwMDAwMCBuIAowMDAw
+	MDE1MTg0IDAwMDAwIG4gCjAwMDAwMTU0NDEgMDAwMDAgbiAKMDAwMDAxNTMxMiAwMDAw
+	MCBuIAowMDAwMDE1NDE5IDAwMDAwIG4gCjAwMDAwMTU1NDggMDAwMDAgbiAKMDAwMDAy
+	MzkzMSAwMDAwMCBuIAowMDAwMDIzOTUyIDAwMDAwIG4gCjAwMDAwMjQxNzcgMDAwMDAg
+	biAKMDAwMDAyNDgyNiAwMDAwMCBuIAowMDAwMDI0ODc4IDAwMDAwIG4gCnRyYWlsZXIK
+	PDwgL1NpemUgMzIgL1Jvb3QgMjIgMCBSIC9JbmZvIDEgMCBSIC9JRCBbIDwyOWQwZmY4
+	MzQ4NTFjZjVlMmU4M2MyMmZmMDI3MWU4Yz4KPDI5ZDBmZjgzNDg1MWNmNWUyZTgzYzIy
+	ZmYwMjcxZThjPiBdID4+CnN0YXJ0eHJlZgoyNDk5NQolJUVPRgoxIDAgb2JqCjw8L0F1
+	dGhvciAoc2hvc2hpKS9DcmVhdGlvbkRhdGUgKEQ6MjAxMTA5MjQxNTQ0MDBaKS9DcmVh
+	dG9yIChPbW5pR3JhZmZsZSA1LjMuNCkvTW9kRGF0ZSAoRDoyMDExMDkyNDE2NTgwMFop
+	L1Byb2R1Y2VyIDMwIDAgUiAvVGl0bGUgKHRyZWVleGFtcGxlKT4+CmVuZG9iagp4cmVm
+	CjEgMQowMDAwMDI1NzkzIDAwMDAwIG4gCnRyYWlsZXIKPDwvSUQgWzwyOWQwZmY4MzQ4
+	NTFjZjVlMmU4M2MyMmZmMDI3MWU4Yz4gPDI5ZDBmZjgzNDg1MWNmNWUyZTgzYzIyZmYw
+	MjcxZThjPl0gL0luZm8gMSAwIFIgL1ByZXYgMjQ5OTUgL1Jvb3QgMjIgMCBSIC9TaXpl
+	IDMyPj4Kc3RhcnR4cmVmCjI1OTU1CiUlRU9GCg==
+	</data>
+	<key>QuickLookThumbnail</key>
+	<data>
+	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
+	CzYAAAAAAAgACAAIAAgAAQABAAEAAQ==
+	</data>
+	<key>ReadOnly</key>
+	<string>NO</string>
+	<key>RowAlign</key>
+	<integer>1</integer>
+	<key>RowSpacing</key>
+	<real>36</real>
+	<key>SheetTitle</key>
+	<string>キャンバス 1</string>
+	<key>SmartAlignmentGuidesActive</key>
+	<string>YES</string>
+	<key>SmartDistanceGuidesActive</key>
+	<string>YES</string>
+	<key>UniqueID</key>
+	<integer>1</integer>
+	<key>UseEntirePage</key>
+	<false/>
+	<key>VPages</key>
+	<integer>1</integer>
+	<key>WindowInfo</key>
+	<dict>
+		<key>CurrentSheet</key>
+		<integer>0</integer>
+		<key>ExpandedCanvases</key>
+		<array/>
+		<key>Frame</key>
+		<string>{{-1613, 117}, {801, 932}}</string>
+		<key>ListView</key>
+		<true/>
+		<key>OutlineWidth</key>
+		<integer>142</integer>
+		<key>RightSidebar</key>
+		<false/>
+		<key>ShowRuler</key>
+		<true/>
+		<key>Sidebar</key>
+		<true/>
+		<key>SidebarWidth</key>
+		<integer>120</integer>
+		<key>VisibleRegion</key>
+		<string>{{-46, 0}, {652, 778}}</string>
+		<key>Zoom</key>
+		<real>1</real>
+		<key>ZoomValues</key>
+		<array>
+			<array>
+				<string>キャンバス 1</string>
+				<real>1</real>
+				<real>1</real>
+			</array>
+		</array>
+	</dict>
+	<key>saveQuickLookFiles</key>
+	<string>YES</string>
+</dict>
+</plist>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jssst2011/index.html	Sun Sep 25 03:42:16 2011 +0900
@@ -0,0 +1,347 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<title>S5: An Introduction</title>
+<!-- metadata -->
+<meta name="generator" content="S5" />
+<meta name="version" content="S5 1.3" />
+<meta name="presdate" content="[YYYYMMDD]" />
+<meta name="author" content="[your name]" />
+<meta name="company" content="[your company]" />
+<!-- meta extensions -->
+<meta name="subject" content="[subject]" />
+<meta name="creator" content="[creator]" />
+<meta name="contributor" content="[contributor]" />
<meta name="publisher" content="[publisher]" />
<!-- meta temporary -->
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<meta http-equiv="Content-Script-Type" content="text/javascript" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<!-- configuration parameters -->
+<meta name="defaultView" content="slideshow" />
+<meta name="controlVis" content="hidden" />
+<!-- configuration extensions -->
+<meta name="tranSitions" content="true" />
+<meta name="fadeDuration" content="500" />
+<meta name="incrDuration" content="250" />
+<!-- configuration autoplay extension -->
+<meta name="autoMatic" content="false" />
+<meta name="playLoop" content="false" />
+<meta name="playDelay" content="10" />
+<!-- configuration audio extension -->
+<meta name="audioSupport" content="false" />
+<meta name="audioVolume" content="100" />
+<meta name="audioError" content="false" />
+<!-- configuration audio debug -->
+<meta name="audioDebug" content="false" />
+<!-- style sheet links -->
+<link rel="stylesheet" href="ui/default_utf/slides.css" type="text/css" media="projection" id="slideProj" />
+<link rel="stylesheet" href="ui/default_utf/outline.css" type="text/css" media="screen" id="outlineStyle" />
+<link rel="stylesheet" href="ui/default_utf/print.css" type="text/css" media="print" id="slidePrint" />
+<link rel="stylesheet" href="ui/default_utf/opera.css" type="text/css" media="projection" id="operaFix" />
+<!-- embedded styles -->
+<style type="text/css" media="all">
+/* embedded styles */
+</style>
+<!-- S5 JS -->
+<script src="ui/default_utf/slides.js" type="text/javascript"></script>
+</head>
+<body>
+
+<div class="layout">
+<div id="controls"><!-- DO NOT EDIT --></div>
+<div id="currentSlide"><!-- DO NOT EDIT --></div>
+<div id="header"></div>
+<div id="footer">
+<h1>Cassandraと非破壊的構造を用いたCMSのスケーラビリティ検証環境の構築</h1>
+<h2>2011/09/27 ソフトウェア科学会</h2>
+</div>
+</div>
+
+<div class="presentation">
+<div class="slide">
+<h1>Cassandraと非破壊的構造を用いたCMSのスケーラビリティ検証環境の構築</h1>
+<h3>琉球大学 玉城 将士</h3>
+<h4>琉球大学 情報工学科 河野 真治</h4>
+</div>
+
+<div class="slide">
+<h1>はじめに</h1>
+<p>本研究では,スケーラビリティのあるCMSを開発するため非破壊的木構造とCassandraを用いた設計と実装を行って来た.</p>
+<p>今回は,CMSの非破壊的に編集する際に必要となる,効率的な二分木辞書の開発と</p>
+<p></p>システムの検証を仮想マシンクラスタ上で行うために環境構築と管理ツールの開発を行った.</p>
+</div>
+</div>
+
+<div class="slide">
+<h1>非破壊木構造を用いたCMS</h1>
+<small>
+<p>本研究では,スケーラビリティのあるCMSを開発するために,コンテンツを非破壊的木構造を用いて管理する方法を採用した.</p>
+<p>非破壊的木構造とは,木構造を並列に編集することの出来る方法である.</p>
+<p>また,木構造を保存するためのバックエンドに分散データベースであるCassandraを使用することで,スケーラビリティを確保している.</p>
+</small>
+<center>
+<img class="scale" width="582" height="209" src="./fig/CMSDESC.png"/>
+</center>
+</div>
+
+<div class="slide">
+<h1>非破壊木構造を用いたCMS</h1>
+<small>
+<p>本CMSでは,コンテンツを木構造を用いて管理する.</p>
+<p>木構造のノードは辞書と子供のリストを保持しており,辞書には自由に値を設定することが出来る.</p>
+<p>非破壊的木構造は基本的なアイディアとして木構造を再編集せずに編集の際に木のノードの一部をコピーすることで元木構造の不変性を保証する.</p>
+</small>
+<center>
+	<img class="scale" width="645" height="247" src="./fig/NDT01.png"/>
+</center>
+</div>
+
+<div class="slide">
+<h1>非破壊木構造を用いたCMS</h1>
+<p>木構造を用いたコンテンツを表すには以下のような例があげられる.</p>
+<center>
+<img class="scale" width="692" height="331" src="./fig/treeexample.png"/>
+</center>
+</div>
+
+<div class="slide">
+<h1>CMSの問題点</h1>
+<p>例で示したとおり,ノードはそれぞれ要素の辞書と子供のリストを保持する.編集の際に一部のノードをコピーするため,辞書とリストのコピーが必要となる.</p>
+<p>通常のHashTableのコピー自体には要素数分のコピーが必要になり,これは非効率的である.</p>
+<p>そのため,本研究ではこれを改良するために,AVLと非破壊的木構造を利用したコピーの計算量がO(1)であり,挿入・削除がO(log n)な辞書を開発する.</p>
+</div>
+
+<div class="slide">
+<h1>AVLとは?</h1>
+<small>
+<p>バランス木の一つで,<span style="color:red">すべての節において,左部分木と右部分木の高さの差が1以内に収まらなければならない</span>という制約のある二分木である.</p>
+<p>ある節において制約が崩れる場合,木の回転を行うことによりバランスを回復させることが出来る.</p>
+</small>
+<center>
+<img class="scale" width="679" height="351" src="./fig/AVL.png"/>
+</center>
+</div>
+
+<div class="slide">
+<h1>非破壊的木構造</h1>
+<small>
+<p>編集元の木構造を破壊することなく,必要な部分のみコピーオンライトで新しい木構造を構成する方法である.</p>
+<p>編集元の木構造は不変なため,並列に読み書きすることが可能である.</p>
+</small>
+<center>
+	<img class="scale" width="645" height="247" src="./fig/NDT01.png"/>
+	<p style="font-size: small;">FをGに書き換えた場合の例</p>
+</center>
+</div>
+
+<div class="slide">
+<h1>NDAVLTreeMap</h1>
+<small>
+<p>非破壊的木構造(Non-Destructive Tree)とAVLを組み合わせた辞書であり,以下の特徴がある.</p>
+<ul>
+	<li>並列に読み書きができる.</li>
+	<li>AVLの特徴である検索・挿入のO(logN)は崩さない.</li>
+	<li>辞書のコピー自体は二分木のルートを共有するだけで良い.</li>
+</ul>
+</small>
+</div>
+
+<div class="slide">
+<h1>NDAVLTreeMap</h1>
+<p>例:挿入の操作</p>
+<small>
+<p>二分木辞書に7を挿入する.挿入位置を検索する同時にノードの複製を行い,挿入位置に7を挿入する.</p>
+</small>
+<center>
+<img class="scale" width="646" height="284" src="./fig/NDTAVL01.png"/>
+</center>
+</div>
+
+<div class="slide">
+<h1>NDAVLTreeMap</h1>
+<p>例:挿入の操作</p>
+<small>
+<p>挿入したノードより親ノードへと辿り,回転が必要な場合は回転処理を行う.</p>
+</small>
+<center>
+<img class="scale" width="757" height="352" src="./fig/NDTAVL02.png"/>
+</center>
+</div>
+
+<div class="slide">
+<h1>NDAVLTreeMap</h1>
+<p>例:挿入の操作</p>
+<small>
+<ul>
+	<li>最後にCAS(CompareAndSwap)を用いて辞書の二分木への参照を置き換える.</li>
+	<li>CASに失敗した場合は,最新の二分木を用いて再度編集を行う.</li>
+</ul>
+</small>
+</div>
+
+<div class="slide">
+<h1>NDAVLTreeMap</h1>
+<p>例:辞書のコピー</p>
+<small>
+<p>非破壊的木構造は編集が完了した木構造は破壊されない,そのため不変であり,複数の辞書で二分木を共有しても問題はない.</p>
+</small>
+</div>
+
+<div class="slide">
+<h1>ここまでのまとめ</h1>
+<small>
+<ul>
+	<li>本研究では,木構造を用いたCMSの開発を行なってきた.</li>
+	<li>CMSはコンテンツを編集する際に,モデルである木構造を非破壊的に編集する.</li>
+	<li>非破壊編集時に,ノードのコピー内部で辞書のコピーが発生するため,通常の辞書では非効率的.</li>
+	<li>非破壊的木構造とAVLを合わせた辞書を用いることによりコピーのコストを抑えることが出来る.</li>
+</ul>
+</small>
+</div>
+
+<div class="slide">
+<h1>スケーラビリティ検証環境の構築</h1>
+<small>
+<p>システムのスケーラビリティ検証を行うためには,並列に負荷をかけてスループットの計測を行う必要があり,クラスタ環境が必要となる.</p>
+<p>そこで,高性能サーバーと仮想化を用いて,ベンチマークを行う仮想クラスタ環境の構築が必要となった.</p>
+</small>
+<center>
+<img class="scale" width="698" height="329" src="./fig/cluster.png"/>
+</center>
+</div>
+
+<div class="slide">
+<h1>スケーラビリティ検証環境の構築</h1>
+<small>
+<p>仮想化を用いたクラスタ環境の構築の際には,一つの仮想マシンが物理マシンのリソースを占有してしまうと,同一の物理マシンで動作している仮想マシンの動作に影響が出てくると考えられる.</p>
+<p>そのため,仮想マシンのリソースを制限して他の仮想マシンに影響が出ないようにする必要がある.</p>
+<p>以上の点を考慮しつつ以下の環境を用いてサーバー用・クライアント用の2つ仮想クラスタ環境の構築を行った.</p>
+</small>
+</div>
+
+<div class="slide">
+<h1>スケーラビリティ検証環境の構築</h1>
+<p>クライアント用クラスタ</p>
+<div style="width: 50%; float: left;">
+<ul>
+	<li>物理マシン</li>
+	<ul>
+		<li>CPU: Xeon X5660 2.67GHz(6/HT)</br>※CPUを2個搭載</li>
+		<li>メモリ: 130GB</li>
+		<li>ハイパーバイザ: WMWare vShpare4</li>
+		<li>仮想マシン数: 6台</li>
+	</ul>
+</ul>
+</div>
+<div style="width: 50%; float: left;">
+<ul>
+	<li>仮想マシン</li>
+	<ul>
+		<li>CPU: 仮想CPU 4Core</li>
+		<li>メモリ: 8GB</li>
+		<li>OS: CentOS5.5</li>
+	</ul>
+</ul>
+</div>
+<br style="clear: both;"/>
+<small>
+<p>クライアント用クラスタでは物理サーバーが8台用意されており合計48台のVMを利用することが出来る.</p>
+</small>
+</div>
+
+<div class="slide">
+<h1>スケーラビリティ検証環境の構築</h1>
+<p>サーバー用クラスタ</p>
+<div style="width: 50%; float: left;">
+<ul>
+	<li>物理マシン</li>
+	<ul>
+		<li>CPU: Xeon X5660 2.67GHz(6/HT)</br>※CPUを2個搭載</li>
+		<li>メモリ: 130GB</li>
+		<li>ハイパーバイザ: KVM</li>
+		<li>仮想マシン数: 任意</li>
+	</ul>
+</ul>
+</div>
+<div style="width: 50%; float: left;">
+<ul>
+	<li>仮想マシン</li>
+	<ul>
+		<li>CPU: 仮想CPU 4-8Core</li>
+		<li>メモリ: 8GB</li>
+		<li>OS: Fedora 14</li>
+	</ul>
+</ul>
+</div>
+<br style="clear: both;"/>
+<small>
+<p>サーバー用クラスタはサーバーの性能を変化させて検証を行うため,決まったリソースを割り振ったVMを用意していない.</p>
+</small>
+</div>
+
+<div class="slide">
+<h1>スケーラビリティ検証環境管理ツールの開発</h1>
+<p>以上で仮想クラスタ環境を構築することができたが,クラスタの整備は単純作業の繰り返しで,管理ソフトを起動しての作業は効率が悪い.</p>
+<p>仮想マシンは仮想環境が提供するAPIなどを用いて設定をプログラミングすることができる.</p>
+<p>本研究では,設定を簡略化するためlibvirtを用いて仮想化クラスタの管理ツールの開発を行った.</p>
+</div>
+
+<div class="slide">
+<h1>libvirt</h1>
+<p>libvirtとは,様々な仮想環境を操作するための共通なAPIを提供するライブラリである.</p>
+<p>仮想・物理マシン両方の情報や設定を共通のAPIを用いて操作することが出来る.</p>
+<ul>
+	<li>対応言語: C,Python,PHP,Java</li>
+	<li>対応環境: Xen,KVM,VMware ESX,...</li>
+</ul>
+<p>今回の検証環境ではKVMとVMWareの2つの仮想環境を利用しているため,共通の操作を提供するlibvirtを採用した.</p>
+</div>
+
+<div class="slide">
+<h1>php-webvirt</h1>
+<small>
+<p>libvirtを用いた管理ツールはいくつか存在するが,どれもインストールが大変であったり,不要な機能があったりする.</p>
+<p>そこで,本研究ではインストールが容易で簡易な仮想化管理環境であるphp-webvirtの開発を行った.</p>
+<p>php-webvirtはCakePHPとlibvirtで作成されており,主に以下の機能を提供する.</p>
+<ul>
+	<li>仮想マシンの起動・終了</li>
+	<li>仮想マシンの作成・破棄</li>
+	<li>ストレージプールの管理</li>
+	<li>VNCを用いた画面の表示</li>
+</ul>
+</small>
+</div>
+
+<div class="slide">
+<h1>php-webvirt</h1>
+<p>ここにphp-webvirtの動作画面(1)を載せる予定</p>
+</div>
+
+<div class="slide">
+<h1>php-webvirt</h1>
+<p>ここにphp-webvirtの動作画面(2)を載せる予定</p>
+</div>
+
+<div class="slide">
+<h1>まとめ</h1>
+<small>
+<ul>
+	<li>本研究では,スケーラビリティの検証環境を仮想環境を用いて行った.</li>
+	<li>仮想環境においては複数の仮想マシンが物理マシンで動作するため,リソースの制限が重要だと考えられる.</li>
+	<li>また,クラスタの整備は単純作業の繰り返しでありハイパーバイザが提供するライブラリを用いて自動化することが出来る.</li>
+	<li>そのため,複数のハイパーバイザで共通の操作を行えるlibvirtを用いた管理ツールを開発した.</li>
+</ul>
+</small>
+</div>
+
+<div class="slide">
+<h1>全体のまとめ</h1>
+<p>書いたほうがいいかなー?</p>
+</div>
+
+</div>
+
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jssst2011/ui/audio_support/license.txt	Sun Sep 25 03:42:16 2011 +0900
@@ -0,0 +1,29 @@
+Software License Agreement (BSD License)
+
+Copyright (c) 2007, Scott Schiller (schillmania.com)
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this 
+  list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+
+* Neither the name of schillmania.com nor the names of its contributors may be
+  used to endorse or promote products derived from this software without
+  specific prior written permission from schillmania.com.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
Binary file jssst2011/ui/audio_support/null.mp3 has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jssst2011/ui/audio_support/soundmanager2.js	Sun Sep 25 03:42:16 2011 +0900
@@ -0,0 +1,658 @@
+/*
+   SoundManager 2: Javascript Sound for the Web.
+   --------------------------------------------------
+   http://www.schillmania.com/projects/soundmanager2/
+   
+   Copyright (c) 2007, Scott Schiller. All rights reserved.
+   Code licensed under the BSD License:
+   http://www.schillmania.com/projects/soundmanager2/license.txt
+
+   Beta V2.0b.20070118
+*/
+
+function SoundManager(smURL,smID) {
+  var self = this;
+  this.enabled = false;
+  this.o = null;
+  this.url = (smURL||'ui/audio_support/soundmanager2.swf');
+  this.id = (smID||'sm2movie');
+  this.oMC = null;
+  this.sounds = [];
+  this.soundIDs = [];
+  this.allowPolling = true; // allow flash to poll for status update (required for "while playing", "progress" etc. to work.)
+  this.isIE = (navigator.userAgent.match(/MSIE/));
+  this.isSafari = (navigator.userAgent.match(/safari/i));
+  this._didAppend = false;
+  this._didInit = false;
+  this._disabled = false;
+  this.version = 'V2.0b.20070118';
+
+  this.defaultOptions = {
+    // -----------------
+    'debugMode': false,            // enable debug/status messaging, handy for development/troubleshooting - will be written to a DIV with an ID of "soundmanager-debug", you can use CSS to make it pretty
+    'autoLoad': false,             // enable automatic loading (otherwise .load() will be called on demand with .play(), the latter being nicer on bandwidth - if you want to .load yourself, you also can)
+    'stream': true,                // allows playing before entire file has loaded (recommended)
+    'autoPlay': false,             // enable playing of file as soon as possible (much faster if "stream" is true)
+    'onid3': null,                 // callback function for "ID3 data is added/available"
+    'onload': null,                // callback function for "load finished"
+    'whileloading': null,          // callback function for "download progress update" (X of Y bytes received)
+    'onplay': null,                // callback for "play" start
+    'whileplaying': null,          // callback during play (position update)
+    'onstop': null,                // callback for "user stop"
+    'onfinish': null,              // callback function for "sound finished playing"
+    'onbeforefinish': null,        // callback for "before sound finished playing (at [time])"
+    'onbeforefinishtime': 2000,    // offset (milliseconds) before end of sound to trigger beforefinish (eg. 1000 msec = 1 second)
+    'onbeforefinishcomplete':null, // function to call when said sound finishes playing
+    'onjustbeforefinish':null,     // callback for [n] msec before end of current sound
+    'onjustbeforefinishtime':200,  // [n] - if not using, set to 0 (or null handler) and event will not fire.
+    'multiShot': true,             // let sounds "restart" or layer on top of each other when played multiple times, rather than one-shot/one at a time
+    'pan': 0,                      // "pan" settings, left-to-right, -100 to 100
+    'volume': 100,                 // self-explanatory. 0-100, the latter being the max.
+    // -----------------
+    'foo': 'bar' // you don't need to change this one - it's actually an intentional filler.
+  }
+
+  // --- public methods ---
+
+  this.getMovie = function(smID) {
+    // return self.isIE?window[smID]:document[smID];
+    return self.isIE?window[smID]:(self.isSafari?document[smID+'-embed']:document.getElementById(smID+'-embed'));
+  }
+
+  this.loadFromXML = function(sXmlUrl) {
+    try {
+      self.o._loadFromXML(sXmlUrl);
+    } catch(e) {
+      self._failSafely();
+      return true;
+    }
+  }
+
+  this.createSound = function(oOptions) {
+    if (!self._didInit) throw new Error('soundManager.createSound(): Not loaded yet - wait for soundManager.onload() before calling sound-related methods');
+    if (arguments.length==2) {
+      // function overloading in JS! :) ..assume simple createSound(id,url) use case
+      oOptions = {'id':arguments[0],'url':arguments[1]}
+    }
+    var thisOptions = self._mergeObjects(oOptions);
+    self._writeDebug('soundManager.createSound(): "<a href="#" onclick="soundManager.play(\''+thisOptions.id+'\');return false" title="play this sound">'+thisOptions.id+'</a>" ('+thisOptions.url+')');
+    if (self._idCheck(thisOptions.id,true)) {
+      self._writeDebug('sound '+thisOptions.id+' already defined - exiting');
+      return false;
+    }
+    self.sounds[thisOptions.id] = new SMSound(self,thisOptions);
+    self.soundIDs[self.soundIDs.length] = thisOptions.id;
+    try {
+      self.o._createSound(thisOptions.id,thisOptions.onjustbeforefinishtime);
+    } catch(e) {
+      self._failSafely();
+      return true;
+    }
+    if (thisOptions.autoLoad || thisOptions.autoPlay) self.sounds[thisOptions.id].load(thisOptions);
+    if (thisOptions.autoPlay) self.sounds[thisOptions.id].playState = 1; // we can only assume this sound will be playing soon.
+  }
+
+  this.load = function(sID,oOptions) {
+    if (!self._idCheck(sID)) return false;
+    self.sounds[sID].load(oOptions);
+  }
+
+  this.unload = function(sID) {
+    if (!self._idCheck(sID)) return false;
+    self.sounds[sID].unload();
+  }
+
+  this.play = function(sID,oOptions) {
+    if (!self._idCheck(sID)) {
+      if (typeof oOptions != 'Object') oOptions = {url:oOptions}; // overloading use case: play('mySound','/path/to/some.mp3');
+      if (oOptions && oOptions.url) {
+        // overloading use case, creation + playing of sound: .play('someID',{url:'/path/to.mp3'});
+        self._writeDebug('soundController.play(): attempting to create "'+sID+'"');
+        oOptions.id = sID;
+        self.createSound(oOptions);
+      } else {
+        return false;
+      }
+    }
+    self.sounds[sID].play(oOptions);
+  }
+
+  this.start = this.play; // just for convenience
+
+  this.setPosition = function(sID,nMsecOffset) {
+    if (!self._idCheck(sID)) return false;
+    self.sounds[sID].setPosition(nMsecOffset);
+  }
+
+  this.stop = function(sID) {
+    if (!self._idCheck(sID)) return false;
+    self._writeDebug('soundManager.stop('+sID+')');
+    self.sounds[sID].stop(); 
+  }
+
+  this.stopAll = function() {
+    for (var oSound in self.sounds) {
+      if (oSound instanceof SMSound) oSound.stop(); // apply only to sound objects
+    }
+  }
+
+  this.pause = function(sID) {
+    if (!self._idCheck(sID)) return false;
+    self.sounds[sID].pause();
+  }
+
+  this.resume = function(sID) {
+    if (!self._idCheck(sID)) return false;
+    self.sounds[sID].resume();
+  }
+
+  this.togglePause = function(sID) {
+    if (!self._idCheck(sID)) return false;
+    self.sounds[sID].togglePause();
+  }
+
+  this.setPan = function(sID,nPan) {
+    if (!self._idCheck(sID)) return false;
+    self.sounds[sID].setPan(nPan);
+  }
+
+  this.setVolume = function(sID,nVol) {
+    if (!self._idCheck(sID)) return false;
+    self.sounds[sID].setVolume(nVol);
+  }
+
+  this.setPolling = function(bPolling) {
+    if (!self.o || !self.allowPolling) return false;
+    self._writeDebug('soundManager.setPolling('+bPolling+')');
+    self.o._setPolling(bPolling);
+  }
+
+  this.disable = function() {
+    // destroy all functions
+    if (self._disabled) return false;
+    self._disabled = true;
+    self._writeDebug('soundManager.disable(): Disabling all functions - future calls will return false.');
+    for (var i=self.soundIDs.length; i--;) {
+      self._disableObject(self.sounds[self.soundIDs[i]]);
+    }
+    self.initComplete(); // fire "complete", despite fail
+    self._disableObject(self);
+  }
+
+  this.getSoundById = function(sID,suppressDebug) {
+    if (!sID) throw new Error('SoundManager.getSoundById(): sID is null/undefined');
+    var result = self.sounds[sID];
+    if (!result && !suppressDebug) {
+      self._writeDebug('"'+sID+'" is an invalid sound ID.');
+      // soundManager._writeDebug('trace: '+arguments.callee.caller);
+    }
+    return result;
+  }
+
+  this.onload = function() {
+  	onloadSM2();
+    // window.onload() equivalent for SM2, ready to create sounds etc.
+    // this is a stub - you can override this in your own external script, eg. soundManager.onload = function() {}
+    // soundManager._writeDebug('<em>Warning</em>: soundManager.onload() is undefined.');
+  }
+
+  this.onerror = function() {
+  	onerrorSM2();
+    // stub for user handler, called when SM2 fails to load/init
+  }
+  
+  // --- "private" methods ---
+
+  this._idCheck = this.getSoundById;
+
+  this._disableObject = function(o) {
+    for (var oProp in o) {
+      if (typeof o[oProp] == 'function') o[oProp] = function(){return false;}
+    }
+    oProp = null;
+  }
+
+  this._failSafely = function() {
+    // exception handler for "object doesn't support this property or method"
+    var flashCPLink = 'http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html';
+    var fpgssTitle = 'You may need to whitelist this location/domain eg. file://C:/ or C:/ or mysite.com, or set ALWAYS ALLOW under the Flash Player Global Security Settings page. Note that this seems to apply only to file system viewing.';
+    var flashCPL = '<a href="'+flashCPLink+'" title="'+fpgssTitle+'">view/edit</a>';
+    var FPGSS = '<a href="'+flashCPLink+'" title="Flash Player Global Security Settings">FPGSS</a>';
+    if (!self._disabled) {
+      self._writeDebug('soundManager: JS-&gt;Flash communication failed. Possible causes: flash/browser security restrictions ('+flashCPL+'), insufficient browser/plugin support, or .swf not found');
+      self._writeDebug('Verify that the movie path of <em>'+self.url+'</em> is correct (<a href="'+self.url+'" title="If you get a 404/not found, fix it!">test link</a>)');
+      if (self._didAppend) {
+        if (!document.domain) {
+          self._writeDebug('Loading from local file system? (document.domain appears to be null, this location may need whitelisting by '+FPGSS+')');
+          self._writeDebug('Possible security/domain restrictions ('+flashCPL+'), should work when served by http on same domain');
+        }
+        // self._writeDebug('Note: Movie added via JS method, static object/embed in-page markup method may work instead.');
+      }
+      self.disable();
+    }
+  }
+
+  this._createMovie = function(smID,smURL) {
+    var useDOM = !self.isIE; // IE needs document.write() to work, long story short - lame
+    if (window.location.href.indexOf('debug=1')+1) self.defaultOptions.debugMode = true; // allow force of debug mode via URL
+    var html = ['<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="16" height="16" id="'+smID+'"><param name="movie" value="'+smURL+'"><param name="quality" value="high"><param name="allowScriptAccess" value="always" /></object>','<embed name="'+smID+'-embed" id="'+smID+'-embed" src="'+smURL+'" width="1" height="1" quality="high" allowScriptAccess="always" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"></embed>'];
+    var debugID = 'soundmanager-debug';
+    var debugHTML = '<div id="'+debugID+'" style="display:'+(self.defaultOptions.debugMode?'block':'none')+'"></div>';
+    if (useDOM) {
+      self.oMC = document.createElement('div');
+      self.oMC.className = 'movieContainer';
+      // "hide" flash movie
+      self.oMC.style.position = 'absolute';
+      self.oMC.style.left = '-256px';
+      self.oMC.style.width = '1px';
+      self.oMC.style.height = '1px';
+      self.oMC.innerHTML = html[self.isIE?0:1];
+      var oTarget = (!self.isIE && document.body?document.body:document.getElementsByTagName('div')[0]);
+      oTarget.appendChild(self.oMC); // append to body here can throw "operation aborted" under IE
+      if (!document.getElementById(debugID)) {
+        var oDebug = document.createElement('div');
+        oDebug.id = debugID;
+        oDebug.style.display = (self.defaultOptions.debugMode?'block':'none');
+        oTarget.appendChild(oDebug); 
+      }
+       oTarget = null;
+    } else {
+      // IE method - local file system, may cause strange JS error at line 53?
+      // I hate this method, but it appears to be the only one that will work (createElement works, but JS->Flash communication oddly fails when viewing locally.)
+      // Finally, IE doesn't do application/xhtml+xml yet (thus document.write() is still minimally acceptable here.)
+      if (document.getElementById(debugID)) debugHTML = ''; // avoid overwriting
+      document.write('<div style="position:absolute;left:-256px;top:-256px;width:1px;height:1px" class="movieContainer">'+html[self.isIE?0:1]+'</div>'+debugHTML);
+    }
+    self._didAppend = true;
+    self._writeDebug('-- SoundManager 2 Version '+self.version.substr(1)+' --');
+    self._writeDebug('soundManager._createMovie(): trying to load <a href="'+smURL+'" title="Test this link (404=bad)">'+smURL+'</a>');
+  }
+
+  this._writeDebug = function(sText) {
+    if (!self.defaultOptions.debugMode) return false;
+    var sDID = 'soundmanager-debug';
+    try {
+      var o = document.getElementById(sDID);
+      if (!o) {
+        // attempt to create soundManager debug element
+        var oNew = document.createElement('div');
+        oNew.id = sDID;
+        // o = document.body.appendChild(oNew);
+        o = null;
+        if (!o) return false;
+      }
+      var p = document.createElement('div');
+      p.innerHTML = sText;
+      // o.appendChild(p); // top-to-bottom
+      o.insertBefore(p,o.firstChild); // bottom-to-top
+    } catch(e) {
+      // oh well
+    }
+    o = null;
+  }
+
+  this._debug = function() {
+    self._writeDebug('soundManager._debug(): sounds by id/url:');
+    for (var i=0,j=self.soundIDs.length; i<j; i++) {
+      self._writeDebug(self.sounds[self.soundIDs[i]].sID+' | '+self.sounds[self.soundIDs[i]].url);
+    }
+  }
+
+  this._mergeObjects = function(oMain,oAdd) {
+    // non-destructive merge
+    var o1 = oMain;
+    var o2 = (typeof oAdd == 'undefined'?self.defaultOptions:oAdd);
+    for (var o in o2) {
+      if (typeof o1[o] == 'undefined') o1[o] = o2[o];
+    }
+    return o1;
+  }
+
+  this.createMovie = function(sURL) {
+    self._writeDebug('soundManager.createMovie('+(sURL||'')+')');
+    if (sURL) self.url = sURL;
+    self._initMovie();
+  }
+
+  this._initMovie = function() {
+    // attempt to get, or create, movie
+    if (self.o) return false; // pre-init may have fired this function before window.onload(), may already exist
+    self.o = self.getMovie(self.id); // try to get flash movie (inline markup)
+    if (!self.o) {
+      // try to create
+      self._createMovie(self.id,self.url);
+      self.o = self.getMovie(self.id);
+    }
+    if (!self.o) {
+      self._writeDebug('SoundManager(): Could not find object/embed element. Sound will be disabled.');
+      self.disable();
+    } else {
+      self._writeDebug('SoundManager(): Got '+self.o.nodeName+' element ('+(self._didAppend?'created via JS':'static HTML')+')');
+    }
+  }
+
+  this.initComplete = function() {
+    if (self._didInit) return false;
+    self._didInit = true;
+    self._writeDebug('-- SoundManager 2 '+(self._disabled?'failed to load':'loaded')+' ('+(self._disabled?'security/load error':'OK')+') --');
+    if (self._disabled) {
+      self._writeDebug('soundManager.initComplete(): calling soundManager.onerror()');
+      self.onerror.apply(window);
+      return false;
+    }
+    self._writeDebug('soundManager.initComplete(): calling soundManager.onload()');
+    try {
+      // call user-defined "onload", scoped to window
+      self.onload.apply(window);
+    } catch(e) {
+      // something broke (likely JS error in user function)
+      self._writeDebug('soundManager.onload() threw an exception: '+e.message);
+      throw e; // (so browser/console gets message)
+    }
+    self._writeDebug('soundManager.onload() complete');
+  }
+
+  this.init = function() {
+    // called after onload()
+    self._initMovie();
+    // event cleanup
+    if (window.removeEventListener) {
+      window.removeEventListener('load',self.beginInit,false);
+    } else if (window.detachEvent) {
+      window.detachEvent('onload',self.beginInit);
+    }
+    try {
+      self.o._externalInterfaceTest(); // attempt to talk to Flash
+      self._writeDebug('Flash ExternalInterface call (JS -&gt; Flash) succeeded.');
+      if (!self.allowPolling) self._writeDebug('Polling (whileloading/whileplaying support) is disabled.');
+      self.setPolling(true);
+      self.enabled = true;
+    }  catch(e) {
+      self._failSafely();
+      self.initComplete();
+      return false;
+    }
+    self.initComplete();
+  }
+
+  this.beginInit = function() {
+    self._initMovie();
+    setTimeout(self.init,1000); // some delay required, otherwise JS<->Flash/ExternalInterface communication fails under non-IE (?!)
+  }
+
+  this.destruct = function() {
+    if (self.isSafari) {
+      /* --
+        Safari 1.3.2 (v312.6)/OSX 10.3.9 and perhaps newer will crash if a sound is actively loading when user exits/refreshes/leaves page
+       (Apparently related to ExternalInterface making calls to an unloading/unloaded page?)
+       Unloading sounds (detaching handlers and so on) may help to prevent this
+      -- */
+      for (var i=self.soundIDs.length; i--;) {
+        if (self.sounds[self.soundIDs[i]].readyState == 1) self.sounds[self.soundIDs[i]].unload();
+      }
+    }
+    self.disable();
+    // self.o = null;
+    // self.oMC = null;
+  }
+
+}
+
+function SMSound(oSM,oOptions) {
+  var self = this;
+  var sm = oSM;
+  this.sID = oOptions.id;
+  this.url = oOptions.url;
+  this.options = sm._mergeObjects(oOptions);
+  this.id3 = {
+   /* 
+    Name/value pairs set via Flash when available - see reference for names:
+    http://livedocs.macromedia.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00001567.html
+    (eg., this.id3.songname or this.id3['songname'])
+   */
+  }
+
+  self.resetProperties = function(bLoaded) {
+    self.bytesLoaded = null;
+    self.bytesTotal = null;
+    self.position = null;
+    self.duration = null;
+    self.durationEstimate = null;
+    self.loaded = false;
+    self.loadSuccess = null;
+    self.playState = 0;
+    self.paused = false;
+    self.readyState = 0; // 0 = uninitialised, 1 = loading, 2 = failed/error, 3 = loaded/success
+    self.didBeforeFinish = false;
+    self.didJustBeforeFinish = false;
+  }
+
+  self.resetProperties();
+
+  // --- public methods ---
+
+  this.load = function(oOptions) {
+    self.loaded = false;
+    self.loadSuccess = null;
+    self.readyState = 1;
+    self.playState = (oOptions.autoPlay||false); // if autoPlay, assume "playing" is true (no way to detect when it actually starts in Flash unless onPlay is watched?)
+    var thisOptions = sm._mergeObjects(oOptions);
+    if (typeof thisOptions.url == 'undefined') thisOptions.url = self.url;
+    try {
+      sm._writeDebug('loading '+thisOptions.url);
+      sm.o._load(self.sID,thisOptions.url,thisOptions.stream,thisOptions.autoPlay,thisOptions.whileloading?1:0);
+    } catch(e) {
+      sm._writeDebug('SMSound().load(): JS-&gt;Flash communication failed.');
+    }
+  }
+
+  this.unload = function() {
+    // Flash 8/AS2 can't "close" a stream - fake it by loading an empty MP3
+    sm._writeDebug('SMSound().unload()');
+    self.setPosition(0); // reset current sound positioning
+    sm.o._unload(self.sID,'ui/audio_support/null.mp3');
+    // reset load/status flags
+    self.resetProperties();
+  }
+
+  this.play = function(oOptions) {
+    if (!oOptions) oOptions = {};
+
+    // --- TODO: make event handlers specified via oOptions only apply to this instance of play() (eg. onfinish applies but will reset to default on finish)
+    if (oOptions.onfinish) self.options.onfinish = oOptions.onfinish;
+    if (oOptions.onbeforefinish) self.options.onbeforefinish = oOptions.onbeforefinish;
+    if (oOptions.onjustbeforefinish) self.options.onjustbeforefinish = oOptions.onjustbeforefinish;
+    // ---
+
+    var thisOptions = sm._mergeObjects(oOptions);
+    if (self.playState == 1) {
+      // var allowMulti = typeof oOptions.multiShot!='undefined'?oOptions.multiShot:sm.defaultOptions.multiShot;
+      var allowMulti = thisOptions.multiShot;
+      if (!allowMulti) {
+        sm._writeDebug('SMSound.play(): "'+self.sID+'" already playing? (one-shot)');
+        return false;
+      } else {
+        sm._writeDebug('SMSound.play(): "'+self.sID+'" already playing (multi-shot)');
+      }
+    }
+    if (!self.loaded) {
+      if (self.readyState == 0) {
+        sm._writeDebug('SMSound.play(): .play() before load request. Attempting to load "'+self.sID+'"');
+        // try to get this sound playing ASAP
+        thisOptions.stream = true;
+        thisOptions.autoPlay = true;
+        // TODO: need to investigate when false, double-playing
+        // if (typeof oOptions.autoPlay=='undefined') thisOptions.autoPlay = true; // only set autoPlay if unspecified here
+        self.load(thisOptions); // try to get this sound playing ASAP
+      } else if (self.readyState == 2) {
+        sm._writeDebug('SMSound.play(): Could not load "'+self.sID+'" - exiting');
+        return false;
+      } else {
+        sm._writeDebug('SMSound.play(): "'+self.sID+'" is loading - attempting to play..');
+      }
+    } else {
+      sm._writeDebug('SMSound.play(): "'+self.sID+'"');
+    }
+    if (self.paused) {
+      self.resume();
+    } else {
+      self.playState = 1;
+      self.position = (thisOptions.offset||0);
+      if (thisOptions.onplay) thisOptions.onplay.apply(self);
+      self.setVolume(thisOptions.volume);
+      self.setPan(thisOptions.pan);
+      if (!thisOptions.autoPlay) {
+        sm._writeDebug('starting sound '+self.sID);
+        sm.o._start(self.sID,thisOptions.loop||1,self.position); // TODO: verify !autoPlay doesn't cause issue
+      }
+    }
+  }
+
+  this.start = this.play; // just for convenience
+
+  this.stop = function(bAll) {
+    if (self.playState == 1) {
+      self.playState = 0;
+      self.paused = false;
+      if (sm.defaultOptions.onstop) sm.defaultOptions.onstop.apply(self);
+      sm.o._stop(self.sID);
+    }
+  }
+
+  this.setPosition = function(nMsecOffset) {
+    // sm._writeDebug('setPosition('+nMsecOffset+')');
+    sm.o._setPosition(self.sID,nMsecOffset/1000,self.paused||!self.playState); // if paused or not playing, will not resume (by playing)
+  }
+
+  this.pause = function() {
+    if (self.paused) return false;
+    sm._writeDebug('SMSound.pause()');
+    self.paused = true;
+    sm.o._pause(self.sID);
+  }
+
+  this.resume = function() {
+    if (!self.paused) return false;
+    sm._writeDebug('SMSound.resume()');
+    self.paused = false;
+    sm.o._pause(self.sID); // flash method is toggle-based (pause/resume)
+  }
+
+  this.togglePause = function() {
+    // if playing, pauses - if paused, resumes playing.
+    sm._writeDebug('SMSound.togglePause()');
+    if (!self.playState) {
+      // self.setPosition();
+      self.play({offset:self.position/1000});
+      return false;
+    }
+    if (self.paused) {
+      sm._writeDebug('SMSound.togglePause(): resuming..');
+      self.resume();
+    } else {
+      sm._writeDebug('SMSound.togglePause(): pausing..');
+      self.pause();
+    }
+  }
+
+  this.setPan = function(nPan) {
+    if (typeof nPan == 'undefined') nPan = 0;
+    sm.o._setPan(self.sID,nPan);
+    self.options.pan = nPan;
+  }
+
+  this.setVolume = function(nVol) {
+    if (typeof nVol == 'undefined') nVol = 100;
+    sm.o._setVolume(self.sID,nVol);
+    self.options.volume = nVol;
+  }
+
+  // --- "private" methods called by Flash ---
+
+  this._whileloading = function(nBytesLoaded,nBytesTotal,nDuration) {
+    self.bytesLoaded = nBytesLoaded;
+    self.bytesTotal = nBytesTotal;
+    self.duration = nDuration;
+    self.durationEstimate = parseInt((self.bytesTotal/self.bytesLoaded)*self.duration); // estimate total time (will only be accurate with CBR MP3s.)
+    if (self.readyState != 3 && self.options.whileloading) self.options.whileloading.apply(self);
+    // soundManager._writeDebug('duration/durationEst: '+self.duration+' / '+self.durationEstimate);
+  }
+
+  this._onid3 = function(oID3PropNames,oID3Data) {
+    // oID3PropNames: string array (names)
+    // ID3Data: string array (data)
+    sm._writeDebug('SMSound()._onid3(): "'+this.sID+'" ID3 data received.');
+    var oData = [];
+    for (var i=0,j=oID3PropNames.length; i<j; i++) {
+      oData[oID3PropNames[i]] = oID3Data[i];
+      // sm._writeDebug(oID3PropNames[i]+': '+oID3Data[i]);
+    }
+    self.id3 = sm._mergeObjects(self.id3,oData);
+    if (self.options.onid3) self.options.onid3.apply(self);
+  }
+
+  this._whileplaying = function(nPosition) {
+    if (isNaN(nPosition) || nPosition == null) return false; // Flash may return NaN at times
+    self.position = nPosition;
+    if (self.playState == 1) {
+      if (self.options.whileplaying) self.options.whileplaying.apply(self); // flash may call after actual finish
+      if (self.loaded && self.options.onbeforefinish && self.options.onbeforefinishtime && !self.didBeforeFinish && self.duration-self.position <= self.options.onbeforefinishtime) {
+        sm._writeDebug('duration-position &lt;= onbeforefinishtime: '+self.duration+' - '+self.position+' &lt= '+self.options.onbeforefinishtime+' ('+(self.duration-self.position)+')');
+        self._onbeforefinish();
+      }
+    }
+  }
+
+  this._onload = function(bSuccess) {
+    bSuccess = (bSuccess==1?true:false);
+    sm._writeDebug('SMSound._onload(): "'+self.sID+'"'+(bSuccess?' loaded.':' failed to load (or loaded from cache - weird bug) - [<a href="'+self.url+'">test URL</a>]'));
+    self.loaded = bSuccess;
+    self.loadSuccess = bSuccess;
+    self.readyState = bSuccess?3:2;
+    if (self.options.onload) self.options.onload.apply(self);
+  }
+
+  this._onbeforefinish = function() {
+    if (!self.didBeforeFinish) {
+      self.didBeforeFinish = true;
+      if (self.options.onbeforefinish) self.options.onbeforefinish.apply(self);
+    }
+  }
+
+  this._onjustbeforefinish = function(msOffset) {
+    // msOffset: "end of sound" delay actual value (eg. 200 msec, value at event fire time was 187)
+    if (!self.didJustBeforeFinish) {
+      self.didJustBeforeFinish = true;
+      soundManager._writeDebug('SMSound._onjustbeforefinish()');
+      if (self.options.onjustbeforefinish) self.options.onjustbeforefinish.apply(self);;
+    }
+  }
+
+  this._onfinish = function() {
+    // sound has finished playing
+    sm._writeDebug('SMSound._onfinish(): "'+self.sID+'" finished playing');
+    self.playState = 0;
+    self.paused = false;
+    if (self.options.onfinish) self.options.onfinish.apply(self);
+    if (self.options.onbeforefinishcomplete) self.options.onbeforefinishcomplete.apply(self);
+    // reset some state items
+    self.setPosition(0);
+    self.didBeforeFinish = false;
+    self.didJustBeforeFinish = false;
+  }
+
+}
+
+var soundManager = new SoundManager();
+
+// attach onload handler
+if (window.addEventListener) {
+  window.addEventListener('load',soundManager.beginInit,false);
+  window.addEventListener('beforeunload',soundManager.destruct,false);
+} else if (window.attachEvent) {
+  window.attachEvent('onload',soundManager.beginInit);
+  window.attachEvent('beforeunload',soundManager.destruct);
+} else {
+  // no add/attachevent support - safe to assume no JS->Flash either.
+  soundManager.disable();
+}
\ No newline at end of file
Binary file jssst2011/ui/audio_support/soundmanager2.swf has changed
Binary file jssst2011/ui/default_utf/bodybg.gif has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jssst2011/ui/default_utf/framing.css	Sun Sep 25 03:42:16 2011 +0900
@@ -0,0 +1,22 @@
+/* The following styles size, place, and layer the slide components.
+   Edit these if you want to change the overall slide layout.
+   The commented lines can be uncommented (and modified, if necessary) 
+   to help you with the rearrangement process. */
+
+/* target = 1024x768 */
+
+div#header, div#footer, .slide {width: 100%; top: 0; left: 0;}
+div#header {top: 0; height: 3em; z-index: 1;}
+div#footer {top: auto; bottom: 0; height: 0.5em; z-index: 5;}
+.slide {top: 0; width: 92%; padding: 3.5em 4% 4%; z-index: 2;  list-style: none;}
+div#controls {left: 50%; bottom: 0; width: 50%; z-index: 100;}
+div#controls form {text-align: right; width: 100%; margin: 0;}
+#currentSlide {position: absolute; width: 12%; left: 44%; bottom: 1em; z-index: 10;}
+html>body #currentSlide {position: fixed;}
+
+/*
+div#header {background: #FCC;}
+div#footer {background: #CCF;}
+div#controls {background: #BBD;}
+div#currentSlide {background: #FFC;}
+*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jssst2011/ui/default_utf/opera.css	Sun Sep 25 03:42:16 2011 +0900
@@ -0,0 +1,7 @@
+/* DO NOT CHANGE THESE unless you really want to break Opera Show */
+.slide {
+	visibility: visible !important;
+	position: static !important;
+	page-break-before: always;
+}
+#slide0 {page-break-before: avoid;}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jssst2011/ui/default_utf/outline.css	Sun Sep 25 03:42:16 2011 +0900
@@ -0,0 +1,13 @@
+/* don't change this unless you want the layout stuff to show up in the outline view! */
+
+.hide, .layout div, #footer *, #controlForm * {display: none;}
+#footer, #controls, #controlForm, #navLinks, #sheet {display: block; visibility: visible; margin: 0; padding: 0;}
+#sheet {float: right; padding: 0.5em;}
+html>body #sheet {position: fixed; top: 0; right: 0;}
+
+/* making the outline look pretty-ish */
+
+#slide0 h1, #slide0 h2, #slide0 h3, #slide0 h4 {border: none; margin: 0;}
+#slide0 h1 {padding-top: 1.5em;}
+.slide h1 {margin: 1.5em 0 0; padding-top: 0.25em; border-top: 1px solid #888; border-bottom: 1px solid #AAA;}
+#sheet {border: 1px solid; border-width: 0 0 1px 1px; background: #FFF;}
Binary file jssst2011/ui/default_utf/pattern.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jssst2011/ui/default_utf/pretty.css	Sun Sep 25 03:42:16 2011 +0900
@@ -0,0 +1,95 @@
+/* Following are the presentation styles -- edit away! */
+
+body {background: #FFF url(bodybg.gif) -16px 0 no-repeat; color: #000; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 2.25em;}
+a:link, a:visited {text-decoration: none; color: #00C;}
+
+h1, h2, h3, h4 {font-size: 100%; margin: 0; padding: 0; font-weight: inherit;}
+h1 {text-shadow: 0.1em 0.1em 0.1em #666;}
+
+ul, pre {margin: 0; line-height: 1em;}
+html, body {margin: 0; padding: 0;}
+
+blockquote, q {font-style: italic;}
+blockquote {padding: 0 2em 0.5em; margin: 0 1.5em 0.5em; text-align: center; font-size: 1em;}
+blockquote p {margin: 0;}
+blockquote i {font-style: normal;}
+blockquote b {display: block; margin-top: 0.5em; font-weight: normal; font-size: smaller; font-style: normal;}
+blockquote b i {font-style: italic;}
+
+img {border: 0;}
+kbd {font-weight: bold; font-size: 1em;}
+sup {font-size: smaller; line-height: 1px;}
+
+.slide code {padding: 2px 0.25em; font-weight: bold; color: #c00;}
+.slide code.bad, code del {color: red;}
+.slide code.old {color: silver;}
+.slide pre {padding: 0; margin: 0.25em 0 0.5em 0.5em; color: #533; font-size: 90%;}
+.slide pre code {display: block;}
+.slide ul {margin-left: 5%; margin-right: 7%; list-style: disc;}
+.slide li {margin-top: 0.75em; margin-right: 0;}
+.slide ul ul {line-height: 1;}
+.slide ul ul li {margin: .2em; font-size: 85%; list-style: square;}
+.slide img.leader {display: block; margin: 0 auto;}
+
+div#header, div#footer {background: #005; color: #AAB; font-family: Verdana, Arial, Helvetica, sans-serif;}
+div#header {background: #005 url(bodybg.gif) -16px 0 no-repeat; line-height: 1px;}
+div#footer {font-size: 0.5em; font-weight: bold; padding: 1em 0;}
+#footer h1, #footer h2 {border: none; display: block; padding: 0; position:absolute; bottom:0.5em;}
+#footer h1 {left:1em;}
+#footer h2 {right:1em; font-style: italic;}
+
+div.long {font-size: 0.75em;}
+.slide h1 {position: absolute; top: 0.7em; left: 87px; z-index: 1; margin: 0; padding: 0.3em 0 0 50px; white-space: nowrap; font: bold 150%/1em Arial, Helvetica, sans-serif; text-transform: capitalize; color: #DDE; background-color: transparent;}
+.slide h3 {font-size: 130%;}
+h1 abbr {font-variant: small-caps;}
+
+div#controls {position: absolute; left: 25%; bottom: 0; width: 50%; text-align: center; font: bold 1em Verdana, Arial, Helvetica, sans-serif;}
+html>body div#controls {background: transparent; position: fixed; padding: 0; top: auto; text-align: center;}
+#controls #sheet {display: none;}
+#controls #controlForm {height: 3.0em; text-align: center; vertical-align: middle;}
+#controls #navLinks {padding: 0 0 0.2em 0; margin: 0; background: url(pattern.png) gray bottom repeat-x; border: 2px outset gray; border-top-color: silver; border-left-color: silver; text-align: center; vertical-align: middle; white-space: nowrap;}
+#controls #navLinks a {text-shadow: #444 0.1em 0.1em 0.1em; padding: 0; margin: 0em 0.36em; background: transparent; border: none; color: white; cursor: pointer;}
+#controls #navLinks a:focus, #controls #navLinks a:hover {text-decoration: none; color: black !important;}
+#controls #navLinks a:link, #controls #navLinks a:visited {text-decoration: none; color: white;}
+#controls #navLinks .subLinks {display: inline; border: 1px inset gray; border-bottom-color: silver; border-right-color: silver; font-size: 75%; padding: 0 0.25em; margin: -0.2em 0 0 0; background-color: #666; text-align: center; vertical-align: middle; white-space: nowrap;}
+#controls #navLinks .subLinks a {text-shadow: none; font-weight: normal; padding: 0; margin: 0; border: none; color: white; cursor: pointer;}
+
+#jumplist, #volumelist {padding: 0; margin: 0; width: 1.5em; height: 2.25em; cursor: pointer;}
+
+#currentSlide {white-space: nowrap; text-align: center; margin-bottom: -0.5em; font-size: 0.5em; background-color: transparent; color: #666;}
+
+#guru {position: absolute; visibility: visible; left: 0px; top: 0px; padding: 4px; width: 99%; height: auto; text-align: center; background-color: black; z-index: 10;}
+#guru div {border: solid 3px red; padding: 4px; font-family: monospace; font-size: 60%; width: auto; height: auto; color: red; text-align: center;}
+
+#slide0 {padding-top: 3.5em; font-size: 90%;}
+#slide0 h1 {position: static; margin: 1em 0 0; padding: 0; font: bold 2em Arial, Helvetica, sans-serif; white-space: normal; color: #000; background-color: transparent;}
+#slide0 h2 {font: bold italic 1em Arial, Helvetica, sans-serif; margin: 0.25em;}
+#slide0 h3 {margin-top: 1.5em; font-size: 1.5em;}
+#slide0 h4 {margin-top: 0; font-size: 1em;}
+
+ul.urls {list-style: none; display: inline; margin: 0;}
+.urls li {display: inline; margin: 0;}
+.note {display: none;}
+.external {border-bottom: 1px dotted gray;}
+html>body .external {border-bottom: none;}
+.external:after {content: " \274F"; font-size: smaller; color: #77B;}
+
+.incremental, .incremental *, .incremental *:after {color: #DDE; visibility: visible;}
+img.incremental, canvas.incremental {visibility: hidden;}
+.slide .current {color: #B02;}
+
+/* diagnostics
+li:after {content: " [" attr(class) "]"; color: #F88;}
+*/
+
+table.piechart, table.barchart, table.linechart { border-spacing: 0.3em 0.15em;  }
+table.piechart tr th, table.barchart tr th, table.linechart tr th { white-space: nowrap; }
+table.piechart tr td, table.barchart tr td, table.linechart tr td { vertical-align: top; white-space: nowrap; }
+table.piechart tr td.col, table.barchart tr td.col, table.linechart tr td.col { border-bottom: 1px solid #555; border-right: 1px solid #555; }
+table.fs90 tr td, table.fs90 tr th, div.fs90, pre.fs90, p.fs90 ,ul.fs90 {font-size: 0.9em; }
+table.fs75 tr td, table.fs75 tr th, div.fs75, pre.fs75, p.fs75 ,ul.fs75 {font-size: 0.75em; }
+table.fs66 tr td, table.fs66 tr th, div.fs66, pre.fs66, p.fs66 ,ul.fs66 {font-size: 0.66em; }
+table.fs50 tr td, table.fs50 tr th, div.fs50, pre.fs50, p.fs50 ,ul.fs50 {font-size: 0.5em; }
+
+#soundmanager-debug {position:fixed; top:0px; right:0px; width:30em; height:20em; overflow:auto; border:1px solid red; padding:1em; margin:2em; font-family:"sans serif"; font-size: 12px;color: black; background-color:#f6f6f6; z-index: 100;}
+#soundmanager-debug code {font-size: 11px;}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jssst2011/ui/default_utf/print.css	Sun Sep 25 03:42:16 2011 +0900
@@ -0,0 +1,3 @@
+/* The following rule is necessary to have all slides appear in print! DO NOT REMOVE IT! */
.slide, ul, p {page-break-inside: avoid; visibility: visible !important;}
h1 {page-break-after: avoid;}
+img {page-break-inside: avoid; page-break-after: avoid;}
+/*.slide {page-break-after: always;}*/

body {font-size: 12pt; background: white;}
* {color: black;}

#slide0 h1 {font-size: 200%; border: none; margin: 0.5em 0 0.25em;}
#slide0 h3 {margin: 0; padding: 0;}
#slide0 h4 {margin: 0 0 0.5em; padding: 0;}
#slide0 {margin-bottom: 3em;}

h1 {border-top: 2pt solid gray; border-bottom: 1px dotted silver;}
.extra {background: transparent !important;}
div.extra, pre.extra, .example {font-size: 10pt; color: #333;}
ul.extra a {font-weight: bold;}
p.example {display: none;}

#header {display: none;}
#footer h1 {margin: 0; border-bottom: 1px solid; color: gray; font-style: italic;}
#footer h2, #controls {display: none;}

/* The following rule keeps the layout stuff out of print.  Remove at your own risk! */
.hide, .layout, .layout * {display: none !important;}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jssst2011/ui/default_utf/s5-core.css	Sun Sep 25 03:42:16 2011 +0900
@@ -0,0 +1,8 @@
+/* Do not edit or override these styles! The system will likely break if you do. */
+
+div#header, div#footer, div#controls, .slide {position: absolute;}
+html>body div#header, html>body div#footer, html>body div#controls, html>body .slide {position: fixed;}
+.handout, .notes, .hide {display: none;}
+.layout {display: block;}
+.slide, .hideme, .incremental {visibility: hidden;}
+#slide0 {visibility: visible;}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jssst2011/ui/default_utf/slides.css	Sun Sep 25 03:42:16 2011 +0900
@@ -0,0 +1,3 @@
+@import url(s5-core.css); /* required to make the slide show run at all */
+@import url(framing.css); /* sets basic placement and size of slide components */
+@import url(pretty.css);  /* stuff that makes the slides look better than blah */
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jssst2011/ui/default_utf/slides.js	Sun Sep 25 03:42:16 2011 +0900
@@ -0,0 +1,2665 @@
+// S5 1.3beta7 (18-Apr-2007) advanced version by C. Effenberger 
+// Please see http://s5.netzgesta.de/ for more information
+// based on S5 v1.2a1 slides.js -- released into the Public Domain
+// Please see http://www.meyerweb.com/eric/tools/s5/credits.html for information 
+// about all the wonderful and talented contributors to this code!
+// audio extension: soundmanager2 is NOT Public Domain
+// Please see http://www.schillmania.com/projects/soundmanager2/ for information
+
+var undef;
+var slideCSS = '';
+var snum = 0;
+var smax = 1;
+var incpos = 0;
+var number = undef;
+var firstTime = 1;
+var s5mode = true;
+var helpmode = false;
+var defaultView = 'slideshow'; //outline
+var controlVis = 'visible';
+
+// scalable images extension
+var empx = 0;
+var images = new Array();
+var canvas = new Array();
+var medias = new Array();
+var piecharts = new Array(); 
+var barcharts = new Array();
+var linecharts = new Array();  
+// scalable images extension
+
+// transition extension
+var tranSitions = false;
+var fadeModus = false;
+var fadeDuration = 500;
+var incrDuration = 250;
+var opac = 1;
+var cid = '';
+var nid = '';
+var tid = '';
+var jl = '';
+// transition extension
+
+// autoplay extension
+var autoMatic = false;
+var playLoop = false;
+var playPause = false;
+var autoRun = false;
+var playDelay = 5000;
+var remainDer = 0;
+var incrDelay = 0;
+// autoplay extension
+
+// audio extension
+var sound = new Array();
+var audioSupport = false;
+var audioVolume = 100;
+var audioError = false;
+var swfUnloaded = true;
+var bgSoundItem = 9999;
+var curSoundID = -1;
+// audio extension
+
+// panel extension
+var highLight = "rgb(255, 204, 0)";
+// panel extension
+
+// canvas chart extension
+var canvasSupport = false;
+var ChartData = new Array();
+var colorSlice = new Array();
+var font = document.createElement("img");
+font.setAttribute("src", "ui/graphic_support/numeric.png");
+signs = {
+	'0': {sx: 0, sy: 0, sw: 48, sh: 64},
+	'1': {sx: 48, sy: 0, sw: 48, sh: 64},
+	'2': {sx: 96, sy: 0, sw: 48, sh: 64},
+	'3': {sx: 144, sy: 0, sw: 48, sh: 64},
+	'4': {sx: 192, sy: 0, sw: 48, sh: 64},
+	'5': {sx: 240, sy: 0, sw: 48, sh: 64},
+	'6': {sx: 288, sy: 0, sw: 48, sh: 64},
+	'7': {sx: 336, sy: 0, sw: 48, sh: 64},
+	'8': {sx: 384, sy: 0, sw: 48, sh: 64},
+	'9': {sx: 432, sy: 0, sw: 48, sh: 64},
+	'%': {sx: 480, sy: 0, sw: 48, sh: 64},
+	'.': {sx: 528, sy: 0, sw: 24, sh: 64}
+};
+var colorNames= new Array(); 
+colorNames["black"]="#000000"; colorNames["maroon"]="#800000";
colorNames["green"]="#008000"; colorNames["olive"]="#808000";
colorNames["navy"]="#000080"; colorNames["purple"]="#800080";
colorNames["teal"]="#008080"; colorNames["gray"]="#808080";
colorNames["silver"]="#C0C0C0"; colorNames["red"]="#FF0000";
colorNames["lime"]="#00FF00"; colorNames["yellow"]="#FFFF00";
colorNames["blue"]="#0000FF"; colorNames["fuchsia"]="#FF00FF";
colorNames["aqua"]="#00FFFF"; colorNames["white"]="#FFFFFF";
colorNames["aliceblue"]="#F0F8FF"; colorNames["antiquewhite"]="#FAEBD7";
colorNames["aquamarine"]="#7FFFD4"; colorNames["azure"]="#F0FFFF";
colorNames["beige"]="#F5F5DC"; colorNames["blueviolet"]="#8A2BE2";
colorNames["brown"]="#A52A2A"; colorNames["burlywood"]="#DEB887";
colorNames["cadetblue"]="#5F9EA0"; colorNames["chartreuse"]="#7FFF00";
colorNames["chocolate"]="#D2691E"; colorNames["coral"]="#FF7F50";
colorNames["cornflowerblue"]="#6495ED"; colorNames["cornsilk"]="#FFF8DC";
colorNames["crimson"]="#DC143C"; colorNames["darkblue"]="#00008B";
colorNames["darkcyan"]="#008B8B"; colorNames["darkgoldenrod"]="#B8860B";
colorNames["darkgray"]="#A9A9A9"; colorNames["darkgreen"]="#006400";
colorNames["darkkhaki"]="#BDB76B"; colorNames["darkmagenta"]="#8B008B";
colorNames["darkolivegreen"]="#556B2F"; colorNames["darkorange"]="#FF8C00";
colorNames["darkorchid"]="#9932CC"; colorNames["darkred"]="#8B0000";
colorNames["darksalmon"]="#E9967A"; colorNames["darkseagreen"]="#8FBC8F";
colorNames["darkslateblue"]="#483D8B"; colorNames["darkslategray"]="#2F4F4F";
colorNames["darkturquoise"]="#00CED1"; colorNames["darkviolet"]="#9400D3";
colorNames["deeppink"]="#FF1493"; colorNames["deepskyblue"]="#00BFFF";
colorNames["dimgray"]="#696969"; colorNames["dodgerblue"]="#1E90FF";
colorNames["firebrick"]="#B22222"; colorNames["floralwhite"]="#FFFAF0";
colorNames["forestgreen"]="#228B22"; colorNames["gainsboro"]="#DCDCDC";
colorNames["ghostwhite"]="#F8F8FF"; colorNames["gold"]="#FFD700";
colorNames["goldenrod"]="#DAA520"; colorNames["greenyellow"]="#ADFF2F";
colorNames["honeydew"]="#F0FFF0"; colorNames["hotpink"]="#FF69B4";
colorNames["indianred"]="#CD5C5C"; colorNames["indigo"]="#4B0082";
colorNames["ivory"]="#FFFFF0"; colorNames["khaki"]="#F0E68C";
colorNames["lavender"]="#E6E6FA"; colorNames["lavenderblush"]="#FFF0F5";
colorNames["lawngreen"]="#7CFC00"; colorNames["lemonchiffon"]="#FFFACD";
colorNames["lightblue"]="#ADD8E6"; colorNames["lightcoral"]="#F08080";
colorNames["lightcyan"]="#E0FFFF"; colorNames["lightgoldenrodyellow"]="#FAFAD2";
colorNames["lightgreen"]="#90EE90"; colorNames["lightgrey"]="#D3D3D3";
colorNames["lightpink"]="#FFB6C1"; colorNames["lightsalmon"]="#FFA07A";
colorNames["lightseagreen"]="#20B2AA"; colorNames["lightskyblue"]="#87CEFA";
colorNames["lightslategray"]="#778899"; colorNames["lightsteelblue"]="#B0C4DE";
colorNames["lightyellow"]="#FFFFE0"; colorNames["limegreen"]="#32CD32";
colorNames["linen"]="#FAF0E6"; colorNames["mediumaquamarine"]="#66CDAA";
colorNames["mediumblue"]="#0000CD"; colorNames["mediumorchid"]="#BA55D3";
colorNames["ediumpurple"]="#9370D"; colorNames["mediumseagreen"]="#3CB371";
colorNames["mediumslateblue"]="#7B68EE"; colorNames["mediumspringgreen"]="#00FA9A";
colorNames["mediumturquoise"]="#48D1CC"; colorNames["mediumvioletred"]="#C71585";
colorNames["midnightblue"]="#191970"; colorNames["mintcream"]="#F5FFFA";
colorNames["mistyrose"]="#FFE4E1"; colorNames["moccasin"]="#FFE4B5";
colorNames["navajowhite"]="#FFDEAD"; colorNames["oldlace"]="#FDF5E6";
colorNames["olivedrab"]="#6B8E23"; colorNames["orange"]="#FFA500";
colorNames["orangered"]="#FF4500"; colorNames["orchid"]="#DA70D6";
colorNames["palegoldenrod"]="#EEE8AA"; colorNames["palegreen"]="#98FB98";
colorNames["paleturquoise"]="#AFEEEE"; colorNames["palevioletred"]="#DB7093";
colorNames["papayawhip"]="#FFEFD5"; colorNames["peachpuff"]="#FFDAB9";
colorNames["peru"]="#CD853F"; colorNames["pink"]="#FFC0CB";
colorNames["plum"]="#DDA0DD"; colorNames["powderblue"]="#B0E0E6";
colorNames["rosybrown"]="#BC8F8F"; colorNames["royalblue"]="#4169E1";
colorNames["saddlebrown"]="#8B4513"; colorNames["salmon"]="#FA8072";
colorNames["sandybrown"]="#F4A460"; colorNames["seagreen"]="#2E8B57";
colorNames["seashell"]="#FFF5EE"; colorNames["sienna"]="#A0522D";
colorNames["skyblue"]="#87CEEB"; colorNames["slateblue"]="#6A5ACD";
colorNames["slategray"]="#708090"; colorNames["snow"]="#FFFAFA";
colorNames["springgreen"]="#00FF7F"; colorNames["steelblue"]="#4682B4";
colorNames["tan"]="#D2B48C"; colorNames["thistle"]="#D8BFD8";
colorNames["tomato"]="#FF6347"; colorNames["turquoise"]="#40E0D0";
colorNames["violet"]="#EE82EE"; colorNames["wheat"]="#F5DEB3";
colorNames["whitesmoke"]="#F5F5F5"; colorNames["yellowgreen"]="#9ACD32";
+var canvas_bgcolor = "";
+var canvas_width = 200;
+var canvas_height = 200;
+var canvas_noshade = 0;
+var canvas_nofill = 0;
+var canvas_noshadow = 0;
+var canvas_htmltext = 0;
+var canvas_imgtext = 0;
+var canvas_notext = 0;
+// canvas chart extension
+
+var s5NotesWindow;
+var s5NotesWindowLoaded = false;
+var previousSlide = 0;
+var presentationStart = new Date();
+var slideStart = new Date();
+
+var countdown = {
+	timer: 0,
+	state: 'pause',
+	start: new Date(),
+	end: 0,
+	remaining: 0
+};
+
+var isIE = navigator.appName == 'Microsoft Internet Explorer' && navigator.userAgent.indexOf('Opera') < 1 ? 1 : 0;
+if(isIE) var notIE7 = parseInt(navigator.appVersion) < 7 ? 1 : 0;
+var isOp = navigator.userAgent.indexOf('Opera') > -1 ? 1 : 0;
+var isGe = navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('Safari') < 1 ? 1 : 0;
+var isS2 = navigator.userAgent.indexOf('Safari') >= 2 ? 1 : 0;
+
+function hasClass(object, className) {
+	if (!object.className) return false;
+	return (object.className.search('(^|\\s)' + className + '(\\s|$)') != -1);
+}
+
+function hasValue(object, value) {
+	if (!object) return false;
+	return (object.search('(^|\\s)' + value + '(\\s|$)') != -1);
+}
+
+function removeClass(object,className) {
+	if (!object || !hasClass(object,className)) return;
+	object.className = object.className.replace(new RegExp('(^|\\s)'+className+'(\\s|$)'), RegExp.$1+RegExp.$2);
+}
+
+function addClass(object,className) {
+	if (!object || hasClass(object, className)) return;
+	if (object.className) {
+		object.className += ' '+className;
+	} else {
+		object.className = className;
+	}
+}
+
+function changeClass(object,className) {
+	if (!object) return;
+	object.firstChild.className = className;
+}
+
+function GetElementsWithClassName(elementName,className) {
+	var allElements = document.getElementsByTagName(elementName);
+	var elemColl = new Array();
+	for (var i = 0; i< allElements.length; i++) {
+		if (hasClass(allElements[i], className)) {
+			elemColl[elemColl.length] = allElements[i];
+		}
+	}
+	return elemColl;
+}
+
+function isParentOrSelf(element, id) {
+	if (element == null || element.nodeName=='BODY') return false;
+	else if (element.id == id) return true;
+	else return isParentOrSelf(element.parentNode, id);
+}
+
+function nodeValue(node) {
+	var result = "";
+	if (node.nodeType == 1) {
+		var children = node.childNodes;
+		for (var i = 0; i < children.length; ++i) {
+			result += nodeValue(children[i]);
+		}		
+	}
+	else if (node.nodeType == 3) {
+		result = node.nodeValue;
+	}
+	return(result);
+}
+
+function slideLabel() {
+	var slideColl = GetElementsWithClassName('*','slide');
+	var list = document.getElementById('jumplist');
+	smax = slideColl.length;
+	for (var n = 0; n < smax; n++) {
+		var obj = slideColl[n];
+		var did = 'slide' + n.toString();
+		obj.setAttribute('id',did);
+		var otext = '';
+		var menu = obj.firstChild;
+		if (!menu) continue; // to cope with empty slides
+		while (menu && menu.nodeType == 3) {
+			menu = menu.nextSibling;
+		}
+	 	if (!menu) continue; // to cope with slides with only text nodes
+		var menunodes = menu.childNodes;
+		for (var o = 0; o < menunodes.length; o++) {
+			otext += nodeValue(menunodes[o]);
+		}
+		list.options[list.length] = new Option(n + ' : '  + otext, n);
+	}
+}
+
+function currentSlide() {
+	var cs, at, fd, ss;
+	if (document.getElementById) {
+		cs = document.getElementById('currentSlide');
+	} else {
+		cs = document.currentSlide;
+	}
+	fd = fadeModus?"F":"&ndash;";
+	ss = audioSupport?"S":"&ndash;";  
+	at = (autoMatic?(playPause?"||":(playLoop?"&gt;0":"&gt;|")):"&ndash;&ndash;");
+	cs.innerHTML = '<div id="plink" nowrap="nowrap">' + 
+	'<span id="csFade">[' + fd + ss + ']<\/span>&nbsp;' +
+	'<span id="csHere"><strong>' + snum + '<\/strong><\/span>' + 
+	'<span id="csSep">\/<\/span>' + 
+	'<span id="csTotal">' + (smax-1) + '<\/span>&nbsp;' +
+	'<span id="csAuto">[' + at + ']<\/span>' +
+	'<\/div>';
+		
+	if (snum == 0) {
+		cs.style.visibility = 'hidden';
+	} else {
+		cs.style.visibility = 'visible';
+	}
+}
+
+function go(step) {
+	if (document.getElementById('slideProj').disabled || step == 0) return;
+	jl = document.getElementById('jumplist');
+	cid = 'slide' + snum;
+	var ce = document.getElementById(cid);
+	if (incrementals[snum].length > 0) {
+		for (var i = 0; i < incrementals[snum].length; i++) {
+			removeClass(incrementals[snum][i], 'current');
+			removeClass(incrementals[snum][i], 'incremental');
+		}
+	}
+	if (step != 'j') {
+		snum += step;
+		lmax = smax - 1;
+		if (snum > lmax) snum = lmax;
+		if (snum < 0) snum = 0;
+	}else {
+		snum = parseInt(jl.value);
+	}	
+	nid = 'slide' + snum;
+	var ne = document.getElementById(nid);
+	if (!ne) {
+		ne = document.getElementById('slide0');
+		nid = 'slide0';
+		snum = 0;
+	}
+	if (step < 0) {
+		incpos = incrementals[snum].length
+	}else {
+		incpos = 0;
+	}
+	if (incrementals[snum].length > 0 && incpos == 0) {
+		for (var i = 0; i < incrementals[snum].length; i++) {
+			if (hasClass(incrementals[snum][i], 'current')) {
+				incpos = i + 1;
+			}else {
+				addClass(incrementals[snum][i], 'incremental');
+			}
+		}
+	}
+	if (incrementals[snum].length > 0 && incpos > 0) {
+		addClass(incrementals[snum][incpos - 1], 'current');
+	}
+	var guru = document.getElementById('guru');
+	if(guru && snum==0) {
+		guru.style.visibility = 'visible';
+	}else if(guru && snum>0) {
+		guru.style.visibility = 'hidden';
+	}	
+	if(tranSitions && s5mode && fadeModus) {
+		if(curSoundID != getSoundID(nid)) {
+			if(curSoundID == bgSoundItem && !sound[getSoundID(nid)]) {
+			}else {fadeoutSound(curSoundID,true); } // audio support
+		}		
+		changeOpac(0,nid);
+		changeOpac(100,cid);
+		ce.style.visibility = 'visible';
+		shiftOpacity(cid,fadeDuration);
+		window.setTimeout("changeSlides()",fadeDuration);
+	}else {
+		if(curSoundID != getSoundID(nid)) {
+			if(curSoundID == bgSoundItem && !sound[getSoundID(nid)]) {
+			}else {stopSound(curSoundID); } // audio support 
+		}
+		ce.style.visibility = 'hidden';
+		if (isOp) location.hash = nid;
+		ne.style.visibility = 'visible';
+		finishSlides();		
+	}
+}
+
+function changeSlides() {
+	if(nid != cid) changeOpac(100,cid);
+	document.getElementById(cid).style.visibility = 'hidden';
+	document.getElementById(nid).style.visibility = 'visible';
+	if (isOp) location.hash = nid;
+	shiftOpacity(nid,fadeDuration);
+	window.setTimeout("finishSlides()",fadeDuration);
+}
+
+function finishSlides() {
+	jl.selectedIndex = snum;
+	currentSlide();
+	loadNote();
+	permaLink();
+	number = undef;
+	if(sound[getSoundID(nid)]) {
+		playSound(nid); // audio support
+	}else if(sound[bgSoundItem] && curSoundID != bgSoundItem) {
+		playSound(bgSoundItem); // audio support
+	}
+}
+
+function goTo(target) {
+	if (target >= smax || target == snum) return;
+	go(target - snum);
+}
+
+function subgo(step) {
+	if (step > 0) {
+		removeClass(incrementals[snum][incpos - 1],'current');
+		removeClass(incrementals[snum][incpos], 'incremental');
+		if(tranSitions && s5mode && fadeModus) { 			
+			if(!incrementals[snum][incpos].id) {
+				var tmp = new Date(); tid = "inc" + String(tmp.getTime());
+				incrementals[snum][incpos].id = tid;
+			}else {
+				tid = incrementals[snum][incpos].id;
+			}	
+			if(typeof(incrementals[snum][incpos].src) != "undefined" || incrementals[snum][incpos].getContext) {
+				changeOpac(0,tid);		
+				addClass(incrementals[snum][incpos],'current');
+				shiftOpacity(tid,incrDuration);
+				setTimeout("nextInc()",incrDuration);
+			}else {
+				addClass(incrementals[snum][incpos],'current');
+				nextInc();
+			}	
+		}else {
+			addClass(incrementals[snum][incpos],'current');
+			nextInc();
+		}
+	} else {
+		incpos--;
+		removeClass(incrementals[snum][incpos],'current');
+		addClass(incrementals[snum][incpos], 'incremental');
+		addClass(incrementals[snum][incpos - 1],'current');
+		loadNote();
+	}
+}
+
+function nextInc() {
+	incpos++;
+	loadNote();
+}
+
+function toggle() {
+	var slideColl = GetElementsWithClassName('*','slide');
+	var slides = document.getElementById('slideProj');
+	var outline = document.getElementById('outlineStyle');
+	var guru = document.getElementById('guru');
+	if (!slides.disabled) {
+		stopPlay();
+		if(audioSupport && !swfUnloaded) stopAllSounds();
+		slides.disabled = true;
+		outline.disabled = false;
+		s5mode = false;
+		fontSize(1,'em');
+		for (var n = 0; n < smax; n++) {
+			var slide = slideColl[n];
+			slide.style.visibility = 'visible';
+		}
+		if(guru) guru.style.visibility = 'hidden';
+	} else {
+		slides.disabled = false;
+		outline.disabled = true;
+		s5mode = true;
+		fontScale();
+		for (var n = 0; n < smax; n++) {
+			var slide = slideColl[n];
+			slide.style.visibility = 'hidden';
+		}
+		slideColl[snum].style.visibility = 'visible';
+		if(guru && snum==0) guru.style.visibility = 'visible';
+	}
+}
+
+function showHide(action) {
+	var obj = GetElementsWithClassName('*','hideme')[0];
+	switch (action) {
+	case 's': 
+		obj.style.visibility = 'visible'; 
+		break;
+	case 'h':
+		obj.style.visibility = 'hidden'; 
+		break;
+	case 'k':
+		if (obj.style.visibility != 'visible') {
+			obj.style.visibility = 'visible';
+		} else {
+			obj.style.visibility = 'hidden';
+		}
+	break;
+	}
+}
+
+function keys(key) {
+	if (!key) {
+		key = event;
+		key.which = key.keyCode;
+	}
+	if (helpmode) {
+		dumpHelpReq();
+		return;
+	}
+	if (key.which == 84 && !isOp) {
+		toggle();
+		return;
+	}
+	if (s5mode) {
+		if (autoMatic) {
+			switch (key.which) {
+			case 70: // f/ading on/off
+				switchFade();
+				break;
+			case 83: // s/ound on/off
+				toggleSounds();
+				break;	
+			case 67: // c
+				showHide('k');
+				break;
+			case 65: // a/utoplay on/off
+				stopPlay();
+				break;
+			case 76: // l/ooping on/off
+				switchLoop();
+				break;
+			case 80: // p/ause
+			case 32: // spacebar
+				pausePlay();
+				break;
+			}
+		}else {
+			switch (key.which) {
+			case 8: // backspace = HELP
+				createHelpReq();
+				break;								
+			case 10: // return
+			case 13: // enter
+				if (window.event && isParentOrSelf(window.event.srcElement, 'controls')) return;
+				if (key.target && isParentOrSelf(key.target, 'controls')) return;
+				if(number != undef) {
+					goTo(number);
+					break;
+				}
+			case 32: // spacebar
+			case 34: // page down
+			case 39: // rightkey
+			case 40: // downkey
+				if(number != undef) {
+					go(number);
+				} else if (!incrementals[snum] || incpos >= incrementals[snum].length) {
+					go(1);
+				} else {
+					subgo(1);
+				}
+				break;
+			case 33: // page up
+			case 37: // leftkey
+			case 38: // upkey
+				if(number != undef) {
+					go(-1 * number);
+				} else if (!incrementals[snum] || incpos <= 0) {
+					go(-1);
+				} else {
+					subgo(-1);
+				}
+				break;
+			case 65: // a/utoplay
+				startPlay();
+				break;				
+			case 72: // h
+			case 36: // home
+				goTo(0);
+				break;
+			case 69: // e
+			case 35: // end
+				goTo(smax-1);
+				break;
+			case 70: // f/ade transitions on/off
+				switchFade();
+				break;
+			case 76: // l/ooping on/off
+				switchLoop();
+				break;
+			case 83: // s/ound support on/off
+				toggleSounds();
+				break;					
+			case 27: // escape
+			case 81: // q
+				if(!isOp) byby();
+				break;
+			case 67: // c
+				showHide('k');
+				break;
+			case 78: // n
+				createNotesWindow();
+				break;
+			}
+			if (key.which < 48 || key.which > 57) {
+				number = undef;
+			} else {
+				if (window.event && isParentOrSelf(window.event.srcElement, 'controls')) return;
+				if (key.target && isParentOrSelf(key.target, 'controls')) return;
+				number = (((number != undef) ? number : 0) * 10) + (key.which - 48);
+			}
+		}
+	}
+	return false;
+}
+
+function clicker(e) {
+	number = undef;
+	var target;
+	if (window.event) {
+		target = window.event.srcElement;
+		e = window.event;
+	} else {
+		target = e.target;
+	}
+	if (target.href != null || hasValue(target.rel, 'external') || isParentOrSelf(target, 'controls') || isParentOrSelf(target,'embed') || isParentOrSelf(target,'object')) return true;
+	if (!helpmode) {
+		if (!e.which || e.which == 1) {
+			if (!incrementals[snum] || incpos >= incrementals[snum].length) {
+				go(1);
+			} else {
+				subgo(1);
+			}
+		}
+	} else {
+		dumpHelpReq();  
+	}
+}
+
+function findSlide(hash) {
+	var target = null;
+	var slides = GetElementsWithClassName('*','slide');
+	for (var i = 0; i < slides.length; i++) {
+		var targetSlide = slides[i];
+		if ( (targetSlide.name && targetSlide.name == hash)
+		 || (targetSlide.id && targetSlide.id == hash) ) {
+			target = targetSlide;
+			break;
+		}
+	}
+	while(target != null && target.nodeName != 'BODY') {
+		if (hasClass(target, 'slide')) {
+			return parseInt(target.id.slice(5));
+		}
+		target = target.parentNode;
+	}
+	return null;
+}
+
+function slideJump() {
+	if (window.location.hash == null) return;
+	var sregex = /^#slide(\d+)$/;
+	var matches = sregex.exec(window.location.hash);
+	var dest = null;
+	if (matches != null) {
+		dest = parseInt(matches[1]);
+	} else {
+		dest = findSlide(window.location.hash.slice(1));
+	}
+	if (dest != null)
+		go(dest - snum);
+}
+
+function fixLinks() {
+	var thisUri = window.location.href;
+	thisUri = thisUri.slice(0, thisUri.length - window.location.hash.length);
+	var aelements = document.getElementsByTagName('A');
+	for (var i = 0; i < aelements.length; i++) {
+		var a = aelements[i].href;
+		var slideID = a.match('\#slide[0-9]{1,2}');
+		if ((slideID) && (slideID[0].slice(0,1) == '#')) {
+			var dest = findSlide(slideID[0].slice(1));
+			if (dest != null) {
+				if (aelements[i].addEventListener) {
+					aelements[i].addEventListener("click", new Function("e",
+						"if (document.getElementById('slideProj').disabled) return;" +
+						"go("+dest+" - snum); " +
+						"if (e.preventDefault) e.preventDefault();"), true);
+				} else if (aelements[i].attachEvent) {
+					aelements[i].attachEvent("onclick", new Function("",
+						"if (document.getElementById('slideProj').disabled) return;" +
+						"go("+dest+" - snum); " +
+						"event.returnValue = false;"));
+				}
+			}
+		}
+	}
+}
+
+function externalLinks() {
+	if (!document.getElementsByTagName) return;
+	var anchors = document.getElementsByTagName('a');
+	for (var i=0; i<anchors.length; i++) {
+		var anchor = anchors[i];
+		if (anchor.getAttribute('href') && hasValue(anchor.rel, 'external')) {
+			anchor.target = '_blank';
+			addClass(anchor,'external');
+		}
+	}
+}
+
+function permaLink() {
+	document.getElementById('plink').href = window.location.pathname + '#slide' + snum;
+}
+
+function createControls() {
+	var controlsDiv = document.getElementById("controls");
+	if (!controlsDiv) return;
+	var hider = ' onmouseover="showHide(\'s\');" onmouseout="showHide(\'h\');"';
+	var hideDiv, hideList = '';
+	if (controlVis == 'hidden') {
+		hideDiv = hider;
+	} else {
+		hideList = hider;
+	}
+	if(isOp) {
+		var str = '';
+	}else {
+		var str = '<a accesskey="t" id="sheet" title="toggle CSS" href="javascript:toggle();">&plusmn;<\/a>';
+	}	
+	if(isIE) {
+		var tmp = "move around&xA0;until the color&xA0;change to red!";
+	}else if(isS2) {
+		var tmp = "move around\r\nuntil the color\r\nchange to red!";
+	}else {
+		var tmp = "move around until color change to red!";
+	}
+	if(isIE) {
+		controlsDiv.innerHTML = str + '<form action="#" id="controlForm"' + hideDiv + '>' +
+		'<div id="navLinks" title="press [backspace] for keyboard help!" style="background-image: none;">' +
+		'<a accesskey="n" id="show-notes" title="show Notes" href="javascript:createNotesWindow();">i<\/a>' +
+		'<a accesskey="t" id="toggle" title="toggle CSS" href="javascript:toggle();">&plusmn;<\/a>' +
+		'<a accesskey="h" id="zero" title="goto Start Slide" href="javascript:goTo(0);">|&lt;<\/a>' +
+		'<a accesskey="y" id="prev" title="previous Slide" href="javascript:go(-1);">&lt;<\/a>' +
+		'<a accesskey="x" id="next" title="next Slide" href="javascript:go(1);">&gt;<\/a>' +
+		'<a accesskey="e" id="last" title="goto Last Slide" href="javascript:goTo(smax-1);">&gt;|<\/a>' +
+		'<br \/><div class="subLinks" id="autoLinks" style="margin-left:0.25em;">' +
+		'<a accesskey="a" id="auto" title="Auto Play" href="javascript:togglePlay();">&gt;<\/a>&nbsp;' +
+		'<a style="font-weight: bold;" accesskey="p" id="pause" title="Pausing" href="javascript:pausePlay();">||<\/a>&nbsp;' +
+		'<a style="font-weight: bold;" accesskey="l" id="loop" title="Looping" href="javascript:switchLoop();">&infin;<\/a>&nbsp;&nbsp;' +
+		'<a title="5 Sec. Delay" href="javascript:setDelay(5);">5<\/a>&middot;' +
+		'<a title="10 Sec. Delay" href="javascript:setDelay(10);">10<\/a>&middot;' + 
+		'<a title="15 Sec. Delay" href="javascript:setDelay(15);">15<\/a>&middot;' + 
+		'<a title="30 Sec. Delay" href="javascript:setDelay(30);">30<\/a>&middot;' + 
+		'<a title="60 Sec. Delay" href="javascript:setDelay(60);">60<\/a>' +
+		'<\/div><select id="jumplist" style="position: absolute; left: -9999px;"><\/select><\/div><\/form>';
+	}else {
+		controlsDiv.innerHTML =  str +
+		'<form action="#" id="controlForm"' + hideDiv + '>' +
+		'<div id="navLinks" title="press [backspace] or double click this area for keyboard help!" ondblclick="createHelpReq();">' +
+		'<a accesskey="q" id="exit" title="exit Show" href="javascript:byby();">&times;<\/a>' +
+		'<a accesskey="n" id="show-notes" title="show Notes" href="javascript:createNotesWindow();">&#x274f;<\/a>' +
+		'<a accesskey="t" id="toggle" title="toggle CSS" href="javascript:toggle();">&plusmn;<\/a>' +
+		'<a accesskey="h" id="zero" title="goto Start Slide" href="javascript:goTo(0);">|&lt;<\/a>' +
+		'<a accesskey="y" id="prev" title="previous Slide" href="javascript:go(-1);">&lt;<\/a>' +
+		'<a accesskey="x" id="next" title="next Slide" href="javascript:go(1);">&gt;<\/a>' +
+		'<a accesskey="e" id="last" title="goto Last Slide" href="javascript:goTo(smax-1);">&gt;|<\/a>' +
+		'<a id="list" style="cursor:wait;" title="' + tmp + '">&Xi;<\/a>' +
+		'<select id="jumplist" title="select named Slide" onchange="go(\'j\');"><\/select>' +
+		'<br \/><div class="subLinks" id="fadeLinks">' +
+		'<a style="font-weight: bold;" accesskey="f" id="fade" title="Transions" href="javascript:switchFade();">&#x25a8;<\/a>&nbsp;' +
+		'<\/div><div class="subLinks" id="audioLinks" style="margin-left:0.25em;">' +
+		'<a accesskey="s" id="audio" title="Sound" href="javascript:toggleSounds();">&#x266b;<\/a>&nbsp;' +
+		'<a id="volume" style="cursor:wait;" title="' + tmp + '">&#x25e2;<\/a>' +
+		'<select id="volumelist" title="select Volume" onchange="setVolume();"><option value="100">100</option>' +
+		'<option value="90">90</option><option value="80">80</option>' +
+		'<option value="70">70</option><option value="60">60</option>' +
+		'<option value="50">50</option><option value="40">40</option>' +
+		'<option value="30">30</option><option value="20">20</option>' +
+		'<option value="10">10</option><option value="0">0</option>' +
+		'<\/select>' +
+		'<\/div><div class="subLinks" id="autoLinks" style="margin-left:0.25em;">' +
+		'<a accesskey="a" id="auto" title="Auto Play" href="javascript:togglePlay();">&#x25b6;<\/a>&nbsp;' +
+		'<a style="font-weight: bold;" accesskey="p" id="pause" title="Pausing" href="javascript:pausePlay();">||<\/a>&nbsp;' +
+		'<a style="font-weight: bold;" accesskey="l" id="loop" title="Looping" href="javascript:switchLoop();">&infin;<\/a>&nbsp;&nbsp;' +
+		'<a title="5 Sec. Delay" href="javascript:setDelay(5);">5<\/a>&middot;' +
+		'<a title="10 Sec. Delay" href="javascript:setDelay(10);">10<\/a>&middot;' + 
+		'<a title="15 Sec. Delay" href="javascript:setDelay(15);">15<\/a>&middot;' + 
+		'<a title="30 Sec. Delay" href="javascript:setDelay(30);">30<\/a>&middot;' + 
+		'<a title="60 Sec. Delay" href="javascript:setDelay(60);">60<\/a>' +
+		'<\/div><\/div><\/form>';
+	}
+	if (controlVis == 'hidden') {
+		var hidden = document.getElementById('navLinks');
+	} else {
+		var hidden = document.getElementById('jumplist');
+	}
+	addClass(hidden,'hideme');
+}
+
+function fontScale() {  // causes layout problems in FireFox that get fixed if browser's Reload is used; same may be true of other Gecko-based browsers
+	if (!s5mode && !isOp) return false;
+	var hScreen = screen.width; var vScreen = screen.height;
+	var vWindow = window.outerHeight; var hWindow = window.outerWidth;
+	if (isOp && s5mode && defaultView=='slideshow' && ((hScreen != hWindow) || (vScreen != vWindow))) {
+		toggle();
+		return false;
+	}
+	if (isOp && !s5mode && ((hScreen != hWindow) || (vScreen != vWindow))) return false;
+	if (isOp && !s5mode && (hScreen == hWindow) && (vScreen == vWindow)) toggle();
+	var vScale = 48;  // both yield 16 (the usual browser default) at 1024x768
+	var hScale = 64;  // perhaps should auto-calculate based on theme's declared value?
+	if (window.innerHeight) {
+		var vSize = window.innerHeight;
+		var hSize = window.innerWidth;
+	} else if (document.documentElement.clientHeight) {
+		var vSize = document.documentElement.clientHeight;
+		var hSize = document.documentElement.clientWidth;
+	} else if (document.body.clientHeight) {
+		var vSize = document.body.clientHeight;
+		var hSize = document.body.clientWidth;
+	} else {
+		var vSize = 700;  // assuming 1024x768, minus chrome and such equals 8:5
+		var hSize = 1024; // these do not account for kiosk mode or Opera Show
+	}
+	var newSize = Math.min(Math.round(vSize/vScale),Math.round(hSize/hScale));
+	extendImgSizes(newSize); // scalable images extension
+	extendCanSizes(newSize); // scalable canvas extension
+	extendObjSizes(newSize); // scalable object extension
+	fontSize(newSize,"px");
+	if(!isS2 || firstTime==0) {
+		generateCanvas(); // dynamic canvas extension
+	}
+	if (isGe) {  // hack to counter incremental reflow bugs
+		var obj = document.getElementsByTagName('body')[0];
+		obj.style.visibility = 'hidden';
+		obj.style.display = 'none';
+		obj.style.display = 'block';
+		obj.style.visibility = 'visible';
+		changeOpac(100,'slide' + snum);
+		shiftOpacity('slide' + snum,10);
+		window.setTimeout("fixReflow()",10);
+	}else {
+		setListPos(); // invisible select extension
+	}
+}
+
+function fixReflow() {
+	shiftOpacity('slide' + snum,10);
+	window.setTimeout("finishReflow()",10);
+}
+function finishReflow() {
+	setListPos(); // invisible select extension
+}
+
+function fontSize(val,fmt) {
+	var value = val + fmt;
+	if (!(s5ss = document.getElementById('s5ss'))) {
+		if (!document.createStyleSheet) {
+			document.getElementsByTagName('head')[0].appendChild(s5ss = document.createElement('style'));
+			s5ss.setAttribute('media','screen, projection');
+			s5ss.setAttribute('id','s5ss');
+		} else {
+			document.createStyleSheet();
+			document.s5ss = document.styleSheets[document.styleSheets.length - 1];
+		}
+	}
+	if (!(document.s5ss && document.s5ss.addRule)) {
+		while (s5ss.lastChild) s5ss.removeChild(s5ss.lastChild);
+		s5ss.appendChild(document.createTextNode('html {font-size: ' + value + ' !important;}'));
+	} else {
+		document.s5ss.addRule('html','font-size: ' + value + ' !important;');
+	}
+}
+
+function windowChange() {
+	fontScale();
+}
+
+function notOperaFix() {
+	slideCSS = document.getElementById('slideProj').href;
+	var slides = document.getElementById('slideProj');
+	var outline = document.getElementById('outlineStyle');
+	slides.setAttribute('media','screen');
+	outline.disabled = true;
+	if (isGe) {
+		slides.setAttribute('href','null');   // Gecko fix
+		slides.setAttribute('href',slideCSS); // Gecko fix
+	}
+	if ((isIE && notIE7) && document.styleSheets && document.styleSheets[0]) {
+		document.styleSheets[0].addRule('img', 'behavior: url(ui/graphic_support/iepngfix.htc)');
+		document.styleSheets[0].addRule('div', 'behavior: url(ui/graphic_support/iepngfix.htc)');
+		document.styleSheets[0].addRule('.slide', 'behavior: url(ui/graphic_support/iepngfix.htc)');
+	}
+}
+
+function getIncrementals(obj) {
+	var incrementals = new Array();
+	if (!obj) 
+		return incrementals;
+	var children = obj.childNodes;
+	for (var i = 0; i < children.length; i++) {
+		var child = children[i];
+		if (hasClass(child, 'incremental')) {
+			if (child.nodeName == 'OL' || child.nodeName == 'UL') {
+				removeClass(child, 'incremental');
+				for (var j = 0; j < child.childNodes.length; j++) {
+					if (child.childNodes[j].nodeType == 1) {
+						addClass(child.childNodes[j], 'incremental');
+					}
+				}
+			} else {
+				incrementals[incrementals.length] = child;
+				removeClass(child,'incremental');
+			}
+		}
+		if (hasClass(child, 'show-first')) {
+			if (child.nodeName == 'OL' || child.nodeName == 'UL') {
+				removeClass(child, 'show-first');
+				if (child.childNodes[isGe].nodeType == 1) {
+					removeClass(child.childNodes[isGe], 'incremental');
+				}
+			} else {
+				incrementals[incrementals.length] = child;
+			}
+		}
+		incrementals = incrementals.concat(getIncrementals(child));
+	}
+	return incrementals;
+}
+
+function createIncrementals() {
+	var incrementals = new Array();
+	for (var i = 0; i < smax; i++) {
+		incrementals[i] = getIncrementals(document.getElementById('slide'+i));
+	}
+	return incrementals;
+}
+
+function trap(e) {
+	if (!e) {
+		e = event;
+		e.which = e.keyCode;
+	}
+	try {
+		modifierKey = e.ctrlKey || e.altKey || e.metaKey;
+	}
+	catch(e) {
+		modifierKey = false;
+	}
+	return modifierKey || e.which == 0;
+}
+
+// notes extension
+function noteLabel() { // Gives notes id's to match parent slides
+	var notes = GetElementsWithClassName('div','notes');
+	for (var i = 0; i < notes.length; i++) {
+		var note = notes[i];
+		var id = 'note' + note.parentNode.id.substring(5);
+		note.setAttribute('id',id);
+	}
+	resetElapsedSlide();
+	resetRemainingTime();
+	window.setInterval('updateElaspedTime()', 1000);
+}
+
+function createNotesWindow() { // creates a window for our notes
+	if (!s5NotesWindow || s5NotesWindow.closed) { // Create the window if it doesn't exist
+		s5NotesWindowLoaded = false;
+		// Note: Safari has a tendency to ignore window options preferring to default to the settings of the parent window, grr.
+		s5NotesWindow = window.open('ui/s5-notes.html', 's5NotesWindow', 'top=0,left=0');
+	}
+	if (s5NotesWindowLoaded) { // Load the current note if the Note HTML has loaded
+		loadNote();
+	} else { // Keep trying...
+		window.setTimeout('createNotesWindow()', 50);
+	}
+}
+
+function loadNote() {
+// Loads a note into the note window
+	var notes = nextNotes = '<em class="disclaimer">There are no notes for this slide.</em>';
+	if (document.getElementById('note' + snum)) {
+		notes = document.getElementById('note' + snum).innerHTML;
+	}
+	if (document.getElementById('note' + (snum + 1))) {
+		nextNotes = document.getElementById('note' + (snum + 1)).innerHTML;
+	}
+	
+	var jl = document.getElementById('jumplist');
+	var slideTitle = jl.options[jl.selectedIndex].text.replace(/^\d+\s+:\s+/, '') + ((jl.selectedIndex) ? ' (' + jl.selectedIndex + '/' + (smax - 1) + ')' : '');
+	if (incrementals[snum].length > 0) {
+		slideTitle += ' <small>[' + incpos + '/' + incrementals[snum].length + ']</small>';
+	}
+	if (jl.selectedIndex < smax - 1) {
+		var nextTitle = jl.options[jl.selectedIndex + 1].text.replace(/^\d+\s+:\s+/, '') + ((jl.selectedIndex + 1) ? ' (' + (jl.selectedIndex + 1) + '/' + (smax - 1) + ')' : '');
+	} else {
+		var nextTitle = '[end of slide show]';
+	}
+	
+	if (s5NotesWindow && !s5NotesWindow.closed && s5NotesWindow.document) {
+		s5NotesWindow.document.getElementById('slide').innerHTML = slideTitle;
+		s5NotesWindow.document.getElementById('notes').innerHTML = notes;
+		s5NotesWindow.document.getElementById('next').innerHTML = nextTitle;
+		s5NotesWindow.document.getElementById('nextnotes').innerHTML = nextNotes;
+	}
+	resetElapsedSlide();
+}
+
+function minimizeTimer(id) {
+	var obj = s5NotesWindow.document.getElementById(id);
+	if (hasClass(obj,'collapsed')) {
+		removeClass(obj,'collapsed');
+	} else {
+		addClass(obj,'collapsed');
+	}
+}
+
+function resetElapsedTime() {
+	presentationStart = new Date();
+	slideStart = new Date();
+	updateElaspedTime();
+}
+
+function resetElapsedSlide() {
+	if (snum != previousSlide) {
+		slideStart = new Date();
+		previousSlide = snum;
+		updateElaspedTime();
+	}
+}
+
+function updateElaspedTime() {
+	if (!s5NotesWindowLoaded || !s5NotesWindow || s5NotesWindow.closed) return;
+	var now = new Date();
+	var ep = s5NotesWindow.document.getElementById('elapsed-presentation');
+	var es = s5NotesWindow.document.getElementById('elapsed-slide');
+	ep.innerHTML = formatTime(now.valueOf() - presentationStart.valueOf());
+	es.innerHTML = formatTime(now.valueOf() - slideStart.valueOf());
+}
+
+function resetRemainingTime() {
+	if (!s5NotesWindowLoaded || !s5NotesWindow || s5NotesWindow.closed) return;
+	var startField = s5NotesWindow.document.getElementById('startFrom');
+	startFrom = readTime(startField.value);
+	countdown.remaining = startFrom * 60000;  // convert to msecs
+	countdown.start = new Date().valueOf();
+	countdown.end = countdown.start + countdown.remaining;
+	var tl = s5NotesWindow.document.getElementById('timeLeft');
+	var timeLeft = formatTime(countdown.remaining);
+	tl.innerHTML = timeLeft;
+}
+
+function updateRemainingTime() {
+	if (!s5NotesWindowLoaded || !s5NotesWindow || s5NotesWindow.closed) return;
+	var tl = s5NotesWindow.document.getElementById('timeLeft');
+	var now = new Date();
+	if (countdown.state == 'run') {
+		countdown.remaining = countdown.end - now;
+	}
+	tl.style.color = '';
+	tl.style.backgroundColor = '';
+	if (countdown.remaining >= 0) {
+		var timeLeft = formatTime(countdown.remaining);
+		removeClass(tl,'overtime');
+		if (countdown.remaining < 300000) {
+			tl.style.color = 'rgb(' + (255-Math.round(countdown.remaining/2000)) + ',0,0)';
+			tl.style.backgroundColor = 'rgb(255,255,' + (Math.round(countdown.remaining/2000)) + ')';
+		}
+	} else {
+		var timeLeft = '-' + formatTime(-countdown.remaining);
+		addClass(tl,'overtime');
+	}
+	tl.innerHTML = timeLeft;
+}
+
+function toggleRemainingTime() {
+	if (countdown.state == 'pause') countdown.state = 'run'; else countdown.state = 'pause';
+	if (countdown.state == 'pause') {
+		window.clearInterval(countdown.timer);
+	}
+	if (countdown.state == 'run') {
+		countdown.start = new Date().valueOf();
+		countdown.end = countdown.start + countdown.remaining;
+		countdown.timer = window.setInterval('updateRemainingTime()', 1000);
+	}
+}
+
+function alterRemainingTime(amt) {
+	var change = amt * 60000;  // convert to msecs
+	countdown.end += change;
+	countdown.remaining += change;
+	updateRemainingTime();
+}
+
+function formatTime(msecs)  {
+	var time = new Date(msecs);
+	
+	var hrs = time.getUTCHours() + ((time.getUTCDate() -1) * 24); // I doubt anyone will spend more than 24 hours on a presentation or single slide but just in case...
+	hrs = (hrs < 10) ? '0'+hrs : hrs;
+	if (hrs == 'NaN' || isNaN(hrs)) hrs = '--';
+	
+	var min = time.getUTCMinutes();
+	min = (min < 10) ? '0'+min : min;
+	if (min == 'NaN' || isNaN(min)) min = '--';
+	
+	var sec = time.getUTCSeconds();
+	sec = (sec < 10) ? '0'+sec : sec;
+	if (sec == 'NaN' || isNaN(sec)) sec = '--';
+
+	return hrs + ':' + min + ':' + sec;
+}
+
+function readTime(val) {
+	var sregex = /:/;
+	var matches = sregex.exec(val);
+	if (matches == null) {
+		return val;
+	} else {
+		var times = val.split(':');
+		var hours = parseInt(times[0]);
+		var mins = parseInt(times[1]);
+		var total = (hours * 60) + mins;
+		return total;
+	}
+}
+// notes extension
+
+// startup process
+function createSlideShow() {
+	defaultCheck();	
+	if(!isIE) createDetector(); // (degrade IE) scalable images extension 
+	if(opac!=0 || isIE) { // &&!isIE (degrade IE)
+		tranSitions = false;
+		fadeModus = false;
+	}
+	if(tranSitions && document.getElementById && document.createElement){
+		createProgress();
+		var nop=document.getElementById('StartupControl');
+		nop.onload = dumpProgress;
+	}else {
+		startup();
+		showAll();
+		setListPos(true); // invisible select extension
+		panelSetup();
+		audioSetup(); // audio extension
+		if(isS2 && firstTime>=1) {
+			generateCanvas(); // dynamic canvas extension
+		} firstTime = 0;
+	}
+}
+
+function defaultCheck() {
+	var allMetas = document.getElementsByTagName('meta');
+	for (var i = 0; i< allMetas.length; i++) {
+		if (allMetas[i].name == 'defaultView') {
+			defaultView = allMetas[i].content;
+		}
+		if (allMetas[i].name == 'controlVis') {
+			controlVis = allMetas[i].content;
+		}
+		if (allMetas[i].name == 'tranSitions') {
+			tranSitions = (allMetas[i].content == "true") ? true : false;
+			fadeModus = (tranSitions == true) ? true : false;
+		}
+		if (allMetas[i].name == 'fadeDuration') {
+			var tmp = parseInt(allMetas[i].content);
+			fadeDuration = Math.max(200,Math.min(tmp,2000));
+		}
+		if (allMetas[i].name == 'incrDuration') {
+			var tmp = parseInt(allMetas[i].content);
+			incrDuration = Math.max(50,Math.min(tmp,500));
+		}
+		if (allMetas[i].name == 'autoMatic') {
+			autoMatic = (allMetas[i].content == "true") ? true : false;
+		}
+		if (allMetas[i].name == 'playLoop') {
+			playLoop = (allMetas[i].content == "true") ? true : false;
+		}
+		if (allMetas[i].name == 'playDelay') {
+			var tmp = parseInt(allMetas[i].content);
+			playDelay = Math.max(5,Math.min(tmp,90))*1000;
+			playDelay = (fadeModus == true) ? (playDelay+(2*fadeDuration)) : playDelay;
+		}
+		if (allMetas[i].name == 'audioSupport') {
+			audioSupport = (allMetas[i].content == "true") ? true : false;
+		}
+		if (allMetas[i].name == 'audioVolume') {
+			var tmp = parseInt(allMetas[i].content);
+			audioVolume = Math.max(0,Math.min(tmp,100));
+		}
+		if (allMetas[i].name == 'audioError') {
+			audioError = (allMetas[i].content == "true") ? true : false;
+		}						
+	}
+}
+
+function createProgress() {
+	var obj = document.getElementsByTagName("body")[0].firstChild;
+	var pg = document.createElement('div');
+	pg.id = "StartupProgress";
+	pg.style.position = 'absolute';
+	pg.style.left = 0 + 'px';
+	pg.style.top = 0 + 'px';
+	pg.style.width = 100 + '%';
+	pg.style.height = 100 + '%';
+	pg.style.margin = 0 + 'px';
+	pg.style.padding = 0 + 'px';
+	if (isIE) {
+		pg.style.filter = "alpha(opacity=100)";	
+	}else {
+		pg.style.opacity = 1.0;
+	}
	pg.style.zIndex = 9999;
+	pg.style.backgroundColor="rgb(255, 255, 255)";
+	pg.style.textAlign = "center";
	pg.style.verticalAlign = "middle";
+	pg.style.backgroundPosition="center center";
+	pg.style.backgroundRepeat="no-repeat";
+	pg.style.backgroundImage="url(ui/graphic_support/progress.gif)";
+	document.getElementsByTagName("body")[0].insertBefore(pg,obj);
+
+	var im = document.createElement('img');
+	im.id = "StartupControl";
+	im.src = "ui/graphic_support/blank.gif?" + new Date().valueOf();
+	document.getElementsByTagName("body")[0].appendChild(im);
+}
+
+function startup() {
+	createControls(); // hallvord
+	slideLabel();
+	incrementals = createIncrementals();
+	noteLabel(); // [SI:060104] must follow slideLabel()
+	loadNote();
+	fixLinks();
+	externalLinks();
+	fontScale();
+	if (!isOp) {
+		notOperaFix();
+	}else if(isOp) {
+		document.getElementById('exit').style.visibility = 'hidden';
+		document.getElementById('toggle').style.visibility = 'hidden';
+		document.getElementById('list').style.visibility = 'hidden';
+		document.getElementById('jumplist').style.visibility = 'hidden';
+		document.getElementById('audioLinks').style.display = 'none';
+	}
+	slideJump();
+	if (defaultView == 'outline') toggle();
+	document.onkeyup = keys;
+	document.onkeypress = trap;
+	document.onclick = clicker;
+}
+
+function preloadImgages() {
+	var temp = '';
+	var objects = document.getElementsByTagName('img');
+	for (var i=0; i < objects.length; i++) {
+		if(objects[i].src != '') {
+			temp = new Image(); 
+			temp.src = objects[i].src;
+		}
+	}
+}
+
+function showAll() {
+	var obj1 = GetElementsWithClassName('div','presentation')[0];
+	if(!obj1) var obj1 = GetElementsWithClassName('ol','presentation')[0];
+	var obj2 = GetElementsWithClassName('div','layout')[0];
+	if(!obj1){}else {obj1.style.display = 'block'};
+	if(!obj2){}else {obj2.style.display = 'block'};
+}
+
+function dumpProgress() {
+	document.body.removeChild(document.getElementById('StartupControl'));
+	startup();
+	preloadImgages();
+	showAll();
+	createSoundManagerScript();
+	shiftOpacity('StartupProgress',1000);
+	window.setTimeout("removeProgress()",1000);
}
+
+function removeProgress() {
+	document.body.removeChild(document.getElementById('StartupProgress'));
+	setListPos(true); // invisible select extension
+	panelSetup();
+	audioSetup(); // audio extension
+	if(isS2 && firstTime>=1) {
+		generateCanvas(); // dynamic canvas extension
+	} firstTime = 0;
+}
+function panelSetup() {
+	if(playPause) document.getElementById('pause').style.color=highLight;
+	if(playLoop) document.getElementById('loop').style.color=highLight;
+	if(audioSupport && !isIE && !isOp) document.getElementById('audio').style.color=highLight;
+	if(fadeModus && !isIE) document.getElementById('fade').style.color=highLight;
+	if(autoMatic) {
+		document.getElementById('auto').style.color=highLight; 
+		startPlay();
+	}
+	if(audioVolume && !isIE && !isOp) {
+		var idx = 0;
+		if(audioVolume >= 95 && audioVolume <= 100) {idx = 0;}
+		else if(audioVolume >= 85 && audioVolume < 95) {idx = 1;}
+		else if(audioVolume >= 75 && audioVolume < 85) {idx = 2;}
+		else if(audioVolume >= 65 && audioVolume < 75) {idx = 3;}
+		else if(audioVolume >= 55 && audioVolume < 65) {idx = 4;}
+		else if(audioVolume >= 45 && audioVolume < 55) {idx = 5;}
+		else if(audioVolume >= 35 && audioVolume < 45) {idx = 6;}
+		else if(audioVolume >= 25 && audioVolume < 35) {idx = 7;}
+		else if(audioVolume >= 15 && audioVolume < 25) {idx = 8;}
+		else if(audioVolume >= 5 && audioVolume < 15) {idx = 9;}
+		else {idx = 10;}
+		document.getElementById('volumelist').selectedIndex = idx;
+	}
+}
+// startup process
+
+// shutdown process
+function byby() {
+	stopPlay();
+	if(tranSitions && fadeModus && s5mode && !isOp) {
+		fadeoutSound(curSoundID,true); // audio support
+		var pg = document.createElement('div');
+		pg.id = "GoodBy";
+		pg.style.position = 'absolute';
+		pg.style.left = 0 + 'px';
+		pg.style.top = 0 + 'px';
+		pg.style.width = 100 + '%';
+		pg.style.height = 100 + '%';
+		pg.style.margin = 0 + 'px';
+		pg.style.padding = 0 + 'px';
+		if (isIE) {
+			pg.style.filter = "alpha(opacity=0)";	
+		}else {
+			pg.style.opacity = 0.0;
+		}
		pg.style.zIndex = 9999;
+		pg.style.backgroundColor="rgb(255, 255, 255)";
+		pg.style.textAlign = "center";
		pg.style.verticalAlign = "middle";
+		pg.style.backgroundPosition="center center";
+		pg.style.backgroundRepeat="no-repeat";
+		pg.style.backgroundImage="url(ui/graphic_support/finish.gif)";		
+		document.getElementsByTagName("body")[0].appendChild(pg);
+		shiftOpacity('GoodBy',1000);
+		window.setTimeout("history.back()",1000);
	}else {
+		stopSound(curSoundID); 
+		history.back();
+	}
+}
+// shutdown process
+
+// scalable images extension
+function createDetector() {
+	var em = document.createElement('div');
+	em.id='EMSizeControl'; em.style.position="absolute"; em.style.left="-999px";
+	em.style.width="1em"; em.style.height="1em"; em.style.opacity=0.0;
+	document.getElementsByTagName("body")[0].appendChild(em);
+	var nop=document.getElementById('EMSizeControl');
+	if(!nop||findPosX(nop)!=-999) {}else {
+		opac=document.getElementById('EMSizeControl').style.opacity;
+		empx=document.getElementById('EMSizeControl').offsetHeight;
+		document.body.removeChild(document.getElementById('EMSizeControl'));
+		var objects = document.getElementsByTagName('img'); 
+		var j = 0; var i = 0; var k = 0; var d; var obj;
+		for (i=0; i < objects.length; i++) {
+			if(objects[i].className.match(/^scale/i)) {
+				images[j] = objects[i];
+				++j;
+			}
+		}		
+		var objects = document.getElementsByTagName('canvas'); j = 0; 
+		for (i=0; i < objects.length; i++) {
+			if(objects[i].className.match(/^scale/i)) {
+				canvas[objects[i].id] = objects[i];
+				if(j==0) {
+					if(objects[i].getContext) {
+						canvasSupport = true;
+					}
+					++j;
+				}
+			}
+		}	
+		if(canvasSupport!=true) {
+			for (d in canvas) {
+				canvas[d].setAttribute("width",1); 
+				canvas[d].setAttribute("height",1); 
+			} 
+		}	
+		var objects = document.getElementsByTagName('table'); 
+		j = 0; k = 0; l = 0; var w; var h; var tmp; var cnt;
+		for (i=0; i < objects.length; i++) {
+			if(objects[i].className.match(/^piechart/i)) {
+				tmp = objects[i].id;
+				cnt = tmp.split("_");
+				obj = cnt[0] + "_canvas";
+				if(canvas[obj]) {
+					w = canvas[obj].getAttribute("width");
+					h = canvas[obj].getAttribute("height");
+					if(w>0&&h>0) {
+						piecharts[j] = objects[i];
+						em = piecharts[j].getAttribute("summary");
+						if(em != "") em = "," + em;
+						piecharts[j].setAttribute("summary", w + "," + h + em);
+						++j;
+					}
+				}
+			}
+			if(objects[i].className.match(/^barchart/i)) {
+				tmp = objects[i].id;
+				cnt = tmp.split("_");
+				obj = cnt[0] + "_canvas";
+				if(canvas[obj]) {
+					w = canvas[obj].getAttribute("width");
+					h = canvas[obj].getAttribute("height");
+					if(w>0&&h>0) {
+						barcharts[k] = objects[i];
+						em = barcharts[k].getAttribute("summary");
+						if(em != "") em = "," + em;
+						barcharts[k].setAttribute("summary", w + "," + h + em);
+						++k;
+					}
+				}
+			}
+			if(objects[i].className.match(/^linechart/i)) {
+				tmp = objects[i].id;
+				cnt = tmp.split("_");
+				obj = cnt[0] + "_canvas";
+				if(canvas[obj]) {
+					w = canvas[obj].getAttribute("width");
+					h = canvas[obj].getAttribute("height");
+					if(w>0&&h>0) {
+						linecharts[l] = objects[i];
+						em = linecharts[l].getAttribute("summary");
+						if(em != "") em = "," + em;
+						linecharts[l].setAttribute("summary", w + "," + h + em);
+						++l;
+					}
+				}
+			}
+		}	
+		objects = document.getElementsByTagName('object'); j = 0; i = 0;
+		for (i=0; i < objects.length; i++) {
+			if(objects[i].className.match(/^scale/i)) {
+				medias[j] = objects[i]; ++j;
+				if(!isIE) {
+  					if(objects[i].getAttributeNode("classid")) objects[i].removeAttributeNode(objects[i].getAttributeNode("classid"));
+				  	if(objects[i].getAttributeNode("codebase")) objects[i].removeAttributeNode(objects[i].getAttributeNode("codebase"));
+				}
+			}
+		}
+	}
+}
+function extendImgSizes(f) {
+	if(empx>0) {
+		var q = (f/empx); var w = 0; var h = 0;
+		for(var i=0; i < images.length; i++) {
+			w=images[i].getAttribute("width",0); 
+			h=images[i].getAttribute("height",0);
+			if(w>0&&h>0) {
+				images[i].style.width=Math.floor(w*q)+"px";
				images[i].style.height=Math.floor(h*q)+"px";
+			}
+		}
+	}
+}
+
+function extendCanSizes(f) {
+	if(empx>0 && canvasSupport) {
+		var q = (f/empx); var w = 0; var h = 0; var tmp = ""; var cnt; var obj;
+		for(var i=0; i < piecharts.length; i++) {
+			if(piecharts[i].getAttribute("summary")) {
+				tmp = piecharts[i].getAttribute("summary");
+				cnt = tmp.split(",");
+				if(cnt[0].match(/^[1-9][0-9]+/)) w = parseInt(cnt[0]);
+				if(cnt[1].match(/^[1-9][0-9]+/)) h = parseInt(cnt[1]);
+				if(w>0&&h>0) {
+					tmp = piecharts[i].id;
+					cnt = tmp.split("_");
+					obj = cnt[0] + "_canvas";					
+					canvas[obj].setAttribute("width",Math.floor(w*q)); 
+					canvas[obj].setAttribute("height",Math.floor(h*q));
+					canvas[obj].style.width=Math.floor(w*q)+"px";
					canvas[obj].style.height=Math.floor(h*q)+"px";
+				}
+			}
+		}
+		for(var i=0; i < barcharts.length; i++) {
+			if(barcharts[i].getAttribute("summary")) {
+				tmp = barcharts[i].getAttribute("summary");
+				cnt = tmp.split(",");
+				if(cnt[0].match(/^[1-9][0-9]+/)) w = parseInt(cnt[0]);
+				if(cnt[1].match(/^[1-9][0-9]+/)) h = parseInt(cnt[1]);
+				if(w>0&&h>0) {
+					tmp = barcharts[i].id;
+					cnt = tmp.split("_");
+					obj = cnt[0] + "_canvas";					
+					canvas[obj].setAttribute("width",Math.floor(w*q)); 
+					canvas[obj].setAttribute("height",Math.floor(h*q));
+					canvas[obj].style.width=Math.floor(w*q)+"px";
					canvas[obj].style.height=Math.floor(h*q)+"px";
+				}
+			}
+		}
+		for(var i=0; i < linecharts.length; i++) {
+			if(linecharts[i].getAttribute("summary")) {
+				tmp = linecharts[i].getAttribute("summary");
+				cnt = tmp.split(",");
+				if(cnt[0].match(/^[1-9][0-9]+/)) w = parseInt(cnt[0]);
+				if(cnt[1].match(/^[1-9][0-9]+/)) h = parseInt(cnt[1]);
+				if(w>0&&h>0) {
+					tmp = linecharts[i].id;
+					cnt = tmp.split("_");
+					obj = cnt[0] + "_canvas";					
+					canvas[obj].setAttribute("width",Math.floor(w*q)); 
+					canvas[obj].setAttribute("height",Math.floor(h*q));
+					canvas[obj].style.width=Math.floor(w*q)+"px";
					canvas[obj].style.height=Math.floor(h*q)+"px";
+				}
+			}
+		}
+	}
+}
+function extendObjSizes(f) {
+	if(empx>0) {
+		var q = (f/empx); var w = 0; var h = 0;
+		for(var i=0; i < medias.length; i++) {
+			w=medias[i].getAttribute("width",0); 
+			h=medias[i].getAttribute("height",0);
+			if(w>0&&h>0) {
+				medias[i].style.width=Math.floor(w*q)+"px";
				medias[i].style.height=Math.floor(h*q)+"px";
+			}
+		}
+	}
+}
+function findPosX(obj) {
+	var posLeft = 0;
+	while (obj.offsetParent) {
+		posLeft += obj.offsetLeft;
+		obj = obj.offsetParent;
+	}
+	return posLeft;
+}
+function findPosY(obj) {
+	var posTop = 0;
+	while (obj.offsetParent) {
+		posTop += obj.offsetTop;
+		obj = obj.offsetParent;
+	}
+	return posTop;
+}
+// scalable images extension
+
+// canvas chart extension
+function deg2rad(degrees) {
+	return Math.PI *degrees/180;
+}
+function rad2deg(radians) {
+	return 180.0 *radians/Math.PI;
+}
+function circle_point_x(radians, diameter) {
+	var x = Math.cos(radians)*(diameter/2);
+	return x;
+}
+function circle_point_y(radians, diameter) {
+	var y = Math.sin(radians)*(diameter/2);
+	return y;
+}
+function roundTo(val,dig) {
+	var num = val;
+	if (val > 8191 && val < 10485) {
+		val = val-5000;
+		num = Math.round(val*Math.pow(10,dig))/Math.pow(10,dig);
+		num = num+5000;
+	} else {
+		num = Math.round(val*Math.pow(10,dig))/Math.pow(10,dig);
+	}
+	return num;
+}
+function searchColor(value) {
+	for (var dat in colorNames) {
+		if(dat==value) return colorNames[dat];
+    }
+    return false;
+}
+function scanColor(value) {
+	if(value.match(/^#[0-9a-f][0-9a-f][0-9a-f]$/i)) {
+		var val1 = value.substr(1,1).toLowerCase();
+		var val2 = value.substr(2,1).toLowerCase();
+		var val3 = value.substr(3,1).toLowerCase();
+		value = '#' + val1 + val1 + val2 + val2 + val3 + val3;
+	}
+	if(!value.match(/^#[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]$/i)) {
+		var tmp = searchColor(value.toLowerCase());
+		if(!tmp) {}else{value = tmp;}
+	}
+	if(!value.match(/^#[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]$/i)) {
+		value = '#000000';
+	}
+	return value.toLowerCase();
+}
+function hex2rgb(val,trans) {
+	if(val.length==7) {
+		var tp1 = Math.max(0,Math.min(parseInt(val.substr(1,2),16),255));
+		var tp2 = Math.max(0,Math.min(parseInt(val.substr(3,2),16),255));
+		var tp3 = Math.max(0,Math.min(parseInt(val.substr(5,2),16),255));
+		return 'rgba(' + tp1 + ',' + tp2 + ',' + tp3 + ',' + trans + ')';
+	}
+}
+function trim(str) {
+    return (str.replace(/\s+$/,"").replace(/^\s+/,""));
+}
+function roundedRect(ctx,x,y,width,height,radius){
+	ctx.beginPath();
+	ctx.moveTo(x,y+radius);
+	ctx.lineTo(x,y+height-radius);
+	ctx.quadraticCurveTo(x,y+height,x+radius,y+height);
+	ctx.lineTo(x+width-radius,y+height);
+	ctx.quadraticCurveTo(x+width,y+height,x+width,y+height-radius);
+	ctx.lineTo(x+width,y+radius);
+	ctx.quadraticCurveTo(x+width,y,x+width-radius,y);
+	ctx.lineTo(x+radius,y);
+	ctx.quadraticCurveTo(x,y,x,y+radius);
+	ctx.closePath();
+}
+function drawString(ctx, text, fc, tx, ty) {
+	var xp = 0; var c = "";
+	ctx.beginPath();
+	for (var i = 0; i < text.length; i++) {
+		c = text[i];
+		ctx.drawImage(font, signs[c].sx, signs[c].sy, signs[c].sw, signs[c].sh, tx+xp, ty, signs[c].sw*fc, signs[c].sh*fc);
+		xp += (signs[c].sw*fc);
+	}
+	ctx.closePath();
+}
+function strokeString(ctx, txt, col, fh, tx, ty) {
+	var fw = fh*0.666666; var lw = fh*0.125;  
+	var ls = lw/2; var cr = lw; var xp = 0; 
+	ctx.lineCap = "round"; ctx.lineJoin = "round"
+	ctx.lineWidth = lw; ctx.strokeStyle = col;
+	for (var i = 0; i < txt.length; i++) {
+		strokeSymbol(ctx, txt[i], ls, tx+xp, ty, fw, fh);
+		xp += (txt[i]!="."?fw+cr:(fw/2)+cr);
+	}
+}
+function strokeSymbol(ctx, symbol, fc, cx, cy, cw, ch) {
+	ctx.beginPath();
+	switch (symbol) {
+		case "0":
+			ctx.moveTo(cx+fc,cy+(ch*0.333333));
+			ctx.arc(cx+(cw/2),cy+(cw/2),(cw/2)-fc,deg2rad(180),0, false);
+			ctx.arc(cx+(cw/2),(cy+ch)-(cw/2),(cw/2)-fc,0,deg2rad(180), false);
+			ctx.closePath();
+		break;
+		case "1":
+			ctx.moveTo(cx+(cw*0.1)+fc,cy+ch-fc);
+			ctx.lineTo(cx+cw-fc,cy+ch-fc);
+			ctx.moveTo(cx+(cw*0.666666),cy+ch-fc);
+			ctx.lineTo(cx+(cw*0.666666),cy+fc);
+			ctx.lineTo(cx+(cw*0.25),cy+(ch*0.25));
+		break;
+		case "2":
+			ctx.moveTo(cx+cw-fc,cy+(ch*0.8));
+			ctx.lineTo(cx+cw-fc,cy+ch-fc);
+			ctx.lineTo(cx+fc,cy+ch-fc);
+			ctx.arc(cx+(cw/2),cy+(cw*0.425),(cw*0.425)-fc,deg2rad(45),deg2rad(-180), true);
+		break;
+		case "3":
+			ctx.moveTo(cx+(cw*0.1)+fc,cy+fc);
+			ctx.lineTo(cx+(cw*0.9)-fc,cy+fc);
+			ctx.arc(cx+(cw/2),cy+ch-(cw*0.5),(cw*0.5)-fc,deg2rad(-90),deg2rad(180), false);
+		break;
+		case "4":
+			ctx.moveTo(cx+(cw*0.75),cy+ch-fc);
+			ctx.lineTo(cx+(cw*0.75),cy+fc);
+			ctx.moveTo(cx+cw-fc,cy+(ch*0.666666));
+			ctx.lineTo(cx+fc,cy+(ch*0.666666));
+			ctx.lineTo(cx+(cw*0.75),cy+fc);
+			ctx.moveTo(cx+cw-fc,cy+ch-fc);
+			ctx.lineTo(cx+(cw*0.5),cy+ch-fc);
+		break;
+		case "5":
+			ctx.moveTo(cx+(cw*0.9)-fc,cy+fc);
+			ctx.lineTo(cx+(cw*0.1)+fc,cy+fc);
+			ctx.lineTo(cx+(cw*0.1)+fc,cy+(ch*0.333333));
+			ctx.arc(cx+(cw/2),cy+ch-(cw*0.5),(cw*0.5)-fc,deg2rad(-80),deg2rad(180), false);
+		break;
+		case "6":
+			ctx.moveTo(cx+fc,cy+ch-(cw*0.5)-fc);
+			ctx.arc(cx+(cw/2),cy+ch-(cw*0.5),(cw*0.5)-fc,deg2rad(-180),deg2rad(180), false);
+			ctx.bezierCurveTo(cx+fc,cy+fc,cx+fc,cy+fc,cx+(cw*0.9)-fc,cy+fc);
+			ctx.moveTo(cx+(cw*0.9)-fc,cy+fc);
+		break;
+		case "7":
+			ctx.moveTo(cx+(cw*0.5),cy+ch-fc);
+			ctx.lineTo(cx+cw-fc,cy+fc);
+			ctx.lineTo(cx+(cw*0.1)+fc,cy+fc);
+			ctx.lineTo(cx+(cw*0.1)+fc,cy+(ch*0.25)-fc);
+		break;
+		case "8":
+			ctx.moveTo(cx+(cw*0.92)-fc,cy+(cw*0.59));
+			ctx.arc(cx+(cw/2),cy+(cw*0.45),(cw*0.45)-fc,deg2rad(25),deg2rad(-205), true);
+			ctx.arc(cx+(cw/2),cy+ch-(cw*0.5),(cw*0.5)-fc,deg2rad(-135),deg2rad(-45), true);
+			ctx.closePath();
+			ctx.moveTo(cx+(cw*0.79),cy+(ch*0.47));
+			ctx.lineTo(cx+(cw*0.21),cy+(ch*0.47));
+		break;
+		case "9":
+			ctx.moveTo(cx+cw-fc,cy+(cw*0.5));
+			ctx.arc(cx+(cw/2),cy+(cw*0.5),(cw*0.5)-fc,deg2rad(0),deg2rad(360), false);
+			ctx.bezierCurveTo(cx+cw-fc,cy+ch-fc,cx+cw-fc,cy+ch-fc,cx+(cw*0.1)+fc,cy+ch-fc);
+		break;
+		case "%":
+			ctx.moveTo(cx+fc,cy+(ch*0.75));
+			ctx.lineTo(cx+cw-fc,cy+(ch*0.25));
+			ctx.moveTo(cx+(cw*0.505),cy+(cw*0.3));
+			ctx.arc(cx+(cw*0.3),cy+(cw*0.3),(cw*0.3)-fc,deg2rad(0),deg2rad(360), false);
+			ctx.moveTo(cx+(cw*0.905),cy+ch-(cw*0.3));
+			ctx.arc(cx+(cw*0.7),cy+ch-(cw*0.3),(cw*0.3)-fc,deg2rad(0),deg2rad(360), false);
+		break;
+		case ".":
+			ctx.moveTo(cx+(cw*0.25),cy+ch-fc-fc);
+			ctx.arc(cx+(cw*0.25),cy+ch-fc-fc,fc,deg2rad(0),deg2rad(360), false);
+			ctx.closePath();
+		break;
+		default:
+		break;
+	}	
+	ctx.stroke();
+}
+function drawBar(ctx,x,y,width,height,color,value,textdiv){
+	var rw = width/2; var rh = rw/2;
+	height = Math.max(height,rw);
+	var dh = Math.max(height-(2*rh),0.1); var S2L;	
+	var xx = rw/8; var yy = rh/4; 
+	var yo = rh/2; y = y - yy;	
+	if(canvas_noshadow <= 0 && canvas_noshade <= 0) {
+		ctx.save();
+		S2L = ctx.createRadialGradient(x+rw+rh,y+height-rw+yy+rh,0,x+rw,y+height-rw+yy,rw);
+		S2L.addColorStop(0, 'rgba(0,0,0,0.5)');
+		S2L.addColorStop(0.7, 'rgba(0,0,0,0.25)');	
+		S2L.addColorStop(0.9, 'rgba(0,0,0,0.1)');	
+		S2L.addColorStop(1, 'rgba(0,0,0,0)');	
+		ctx.fillStyle = S2L;
+		ctx.scale(1,0.5);
+		ctx.translate(xx,y+height+yy);
+		if(isOp){
+			ctx.fillRect(x,y+yy+height-width,width,width);
+		}else {
+	  		ctx.arc(x+rw,y+yy+height-width,width,0,deg2rad(360), false);
+			ctx.fill();	
+		}
+		ctx.restore();
+	}else if(canvas_noshadow <= 0 && canvas_noshade >= 1) {
+  		ctx.fillStyle = 'rgba(0,0,0,0.2)';
+		ctx.fillRect(x+yo,y+rh+yo+yo,width,dh);
+	}
+
+	if(canvas_noshade <= 0) {
+		ctx.beginPath();
+	  	ctx.moveTo(x,y+rh);
+		ctx.lineTo(x,y+rh+dh);
+		ctx.bezierCurveTo(x,y+height,x+width,y+height,x+width,y+rh+dh)
+		ctx.lineTo(x+width,y+rh);
+		ctx.bezierCurveTo(x+width,y,x,y,x,y+rh)
+		ctx.closePath();
+		ctx.fillStyle = color;
+		ctx.fill();
+		S2L = ctx.createLinearGradient(x,y+(height/2),x+width,y+(height/2));
+		S2L.addColorStop(0, 'rgba(255,255,255,0.75)');
+		S2L.addColorStop(0.2, 'rgba(255,255,255,0)');
+		S2L.addColorStop(0.3, 'rgba(0,0,0,0)');
+		S2L.addColorStop(0.5, 'rgba(0,0,0,0.1)');
+		S2L.addColorStop(0.9, 'rgba(0,0,0,0.35)');
+		S2L.addColorStop(1, 'rgba(0,0,0,0.3)');
+		ctx.beginPath();
+	  	ctx.moveTo(x,y+rh);
+		ctx.lineTo(x,y+rh+dh);
+		ctx.bezierCurveTo(x,y+height,x+width,y+height,x+width,y+rh+dh)
+		ctx.lineTo(x+width,y+rh);
+		ctx.bezierCurveTo(x+width,y,x,y,x,y+rh)
+		ctx.closePath();
+		ctx.fillStyle = S2L;
+		ctx.fill();
+		ctx.beginPath();
+		ctx.moveTo(x+width,y+rh);
+		ctx.bezierCurveTo(x+width,y,x,y,x,y+rh)
+		ctx.bezierCurveTo(x,y+(rh*2),x+width,y+(rh*2),x+width,y+rh)
+		ctx.closePath();
+		ctx.fillStyle = color;
+		ctx.fill();
+		S2L = ctx.createLinearGradient(x+rw-(width*0.15),y-2,x+rw+(width*0.15),y+(2.1*rh));
+		S2L.addColorStop(0, 'rgba(255,255,255,0.9)');
+		S2L.addColorStop(0.5, 'rgba(255,255,255,0)');
+		S2L.addColorStop(0.6, 'rgba(0,0,0,0)');
+		S2L.addColorStop(1, 'rgba(0,0,0,0.3)');
+		ctx.beginPath();
+		ctx.moveTo(x+width,y+rh);
+		ctx.bezierCurveTo(x+width,y,x,y,x,y+rh)
+		ctx.bezierCurveTo(x,y+(rh*2),x+width,y+(rh*2),x+width,y+rh)
+		ctx.closePath();
+		ctx.fillStyle = S2L;
+		ctx.fill();	
+		S2L = ctx.createLinearGradient(x+rw-(width*0.15),y-2,x+rw+(width*0.15),y+(2.1*rh));
+		S2L.addColorStop(0, 'rgba(255,255,255,0.9)');
+		S2L.addColorStop(0.5, 'rgba(255,255,255,0)');
+		S2L.addColorStop(0.6, 'rgba(0,0,0,0)');
+		S2L.addColorStop(1, 'rgba(0,0,0,0.1)');	
+		ctx.beginPath();
+		ctx.moveTo(x+width,y+rh);
+		ctx.bezierCurveTo(x+width,y,x,y,x,y+rh)
+		ctx.bezierCurveTo(x,y+(rh*2),x+width,y+(rh*2),x+width,y+rh)
+		ctx.closePath();
+		ctx.strokeStyle = S2L;
+		ctx.stroke();
+	}else {
+  		ctx.fillStyle = color;
+		ctx.fillRect(x,y+rh+yo,width,dh);
+	}
+	ctx.lineCap = "butt";
+	ctx.lineWidth = 1;
+	ctx.fillStyle = 'rgba(255,255,255,0.5)';
+	var bw = width; var bh = bw/4; 
+	var th = roundTo(bh*0.75,0); var tf = bh/80; 
+	var c; var w; 
+	if(canvas_notext <= 0) {
+		if(canvas_htmltext <= 0) {
+			w = '"' + per + '"';
+			if(w.indexOf(".")!=-1) {
+				c = w.length+0.5;
+				w = parseFloat(c-2)*parseFloat(48*tf);
+				bw = parseFloat(c-1)*parseFloat(48*tf);
+			}else {
+				c = w.length;
+				w = parseFloat(c-1)*parseFloat(48*tf);
+				bw = parseFloat(c)*parseFloat(48*tf);
+			}
+			roundedRect(ctx,x+(width/2)-(bw/2),y,bw,bh,bh/4);
+			ctx.fill();
+			if(canvas_imgtext <= 0) {
+				strokeString(ctx, value + "%","rgba(48,48,48,1)", th, x+(width/2)-(w/2), y+((bh-th)/2));
+			}else {
+				drawString(ctx, value + "%", tf, x+(width/2)-(w/2), y+((bh-th)/2.2));
+			}
+		}else {
+			var bh = bw/3; var th = roundTo(bh*0.75,0); 
+			roundedRect(ctx,x,y,bw,bh,bh/4);
+			ctx.fill();
+			var obj = document.createElement('div');
+			obj.style.position = "absolute";
+			obj.style.overflow = "hidden";
+            obj.style.textAlign = "center";
+			obj.style.width = bw + "px";
+			obj.style.left = x + "px";
+			obj.style.top = y+((bh-th)/2.2) + "px";
+			obj.appendChild(document.createTextNode(per + "%"));			
+			textdiv.appendChild(obj);
+		}
+
+	}	
+}
+function drawLine(ctx,x,y,width,height,dist,array,factor,color,fill){
+	if(fill <= 0){
+		var style = hex2rgb(color,0.5);
+		ctx.lineJoin = "miter";
+		ctx.beginPath();
+	  	ctx.moveTo(x,y+height);
+		for (var i = 0; i < array.length; i++) {
+			ctx.lineTo(x+(i*dist),y+height-(array[i]*factor));
+		}
+		ctx.lineTo(x+width,y+height);
+		ctx.lineTo(x,y+height);
+		ctx.closePath();
+		ctx.fillStyle = style;
+		ctx.fill();
+	}
+	ctx.lineJoin = "round";
+	ctx.beginPath();
+  	ctx.moveTo(x,y+height-(array[0]*factor));
+	for (var i = 0; i < array.length; i++) {
+		ctx.lineTo(x+(i*dist),y+height-(array[i]*factor));
+	}
+	ctx.strokeStyle = color;
+	ctx.stroke();
+}
+function setDataURL(cid) {
+	if(cid.toDataURL) {
+		var obj = document.getElementById(cid.id + "_link");
+		if(obj) {
+			obj.setAttribute("title", "To Data URL");
+			obj.setAttribute("target", "_blank");
+			obj.setAttribute("href", cid.toDataURL());
+		}
+	}
+}
+function get_input(dataobj,canvasobj,linechart) {
+	var table = document.getElementById(dataobj);
+	var canvas = document.getElementById(canvasobj);
+	var row; var clm; var cnt = 0; var val = 0; var nme = ""; var col = "";  
+	if(canvas.getContext) {
+		canvas_width = parseInt(canvas.style.width);
+		canvas_height = parseInt(canvas.style.height);
+		if(canvas_width >= 16 && canvas_height >= 16) {
+			var tmp = table.getAttribute("summary");
+			canvas_noshade = 0; canvas_noshadow = 0; 
+			canvas_notext = 0; canvas_imgtext = 0;
+			canvas_htmltext = 0; canvas_nofill = 0;
+			if(tmp.search(/noshadow/) != -1) canvas_noshadow = 1;
+			if(tmp.search(/noshade/) != -1) canvas_noshade = 1;
+			if(tmp.search(/nofill/) != -1) canvas_nofill = 1;
+			if(tmp.search(/notext/) != -1) canvas_notext = 1;
+			if(tmp.search(/htmltext/) != -1) canvas_htmltext = 1;
+			if(tmp.search(/imgtext/) != -1) canvas_imgtext = 1;
+			if(table.getAttribute("bgcolor")) {
+				canvas_bgcolor = scanColor(table.getAttribute("bgcolor"));
+			}
+			ChartData = new Array(); colorSlice = new Array();
+			if(table.getElementsByTagName("tr")[0].getElementsByTagName("th")[0]) cnt = 1;
+			for(var r = cnt; r < table.getElementsByTagName("tr").length; r++) {
+				row = table.getElementsByTagName("tr")[r];
+				clm = row.getElementsByTagName("td").length;
+				if(row.getElementsByTagName("td")[0].getAttribute("bgcolor")) {	
+					col = scanColor(row.getElementsByTagName("td")[0].getAttribute("bgcolor")); val = 0;
+					nme = trim(row.getElementsByTagName("td")[1].innerHTML.replace(/<[^>]+>/g,""));
+					if(!linechart) {
+						if(clm > 3) {
+							for(var z = 2; z < clm; z++) {
+								val += parseFloat(row.getElementsByTagName("td")[z].innerHTML.replace(/<[^>]+>/g,""));
+							}
+						}else {
+							val = parseFloat(row.getElementsByTagName("td")[2].innerHTML.replace(/<[^>]+>/g,""));
+						}
+						if(!isNaN(val) && val > 0 && nme != '') {
+							colorSlice[r-cnt] = col; ChartData[nme] = Math.abs(val);
+						}else {
+							break;
+						}
+					}else {
+						val = 0; i = 0;
+						if(clm > 3 && nme != '') {
+							ChartData[r-cnt] = new Array();
+							colorSlice[r-cnt] = col;
+							for(var z = 2; z < clm; z++) {
+								val = Math.abs(parseFloat(row.getElementsByTagName("td")[z].innerHTML.replace(/<[^>]+>/g,"")));
+								if(!isNaN(val) && val >= 0) {
+									ChartData[r-cnt][i] = val; i++;
+								}else {
+									ChartData[r-cnt][i] = 0; i++;
+								}							 
+							}	
+						}else {
+							break;
+						}			
+					}			
+				}else {
+					break;
+				}
+			}
+		}	
+	}
+}
+function setPieChart(canvasobj,textobj) {
+	var cd = (Math.min(canvas_width,canvas_height)/110)*100;
+	var cp = cd*0.1; var cr = cd/2;
+	var sr = cr*0.93; var cw = cd+cp; var ch = cw;
+	var cx = (cd/2)+(cp/2); var cy = cx; var ct = 0;
+	for (var data in ChartData) {
+		ct += ChartData[data];
+	} 
+	var poc = ct/100;
+	var canvas = document.getElementById(canvasobj);
+	if(canvas_htmltext >= 1) {
+		if(document.getElementById(textobj)) {
+	  		canvas.parentNode.removeChild(canvas.parentNode.lastChild);		
+		}
+	}	
+	if(canvas.getContext) {
+		var ctx = canvas.getContext('2d');
+		if(canvas_bgcolor != "") {
+  			ctx.fillStyle = canvas_bgcolor;
+			ctx.fillRect(0,0,cw,ch);
+		}else {
+			ctx.clearRect(0,0,cw,ch);
+		}
+		if(canvas_noshadow <= 0) {
+			if(!isOp) { 
+				ctx.beginPath();
+				var B2B = ctx.createRadialGradient(cx+(cr*0.1),cy+(cr*0.1),cr,cx+(cr*0.1),cy+(cr*0.1),sr*0.9);
+				B2B.addColorStop(0, 'rgba(0,0,0,0)');
+				B2B.addColorStop(1, 'rgba(0,0,0,0.5)');
+				ctx.arc(cx+(cr*0.1),cy+(cr*0.1),cr,0,deg2rad(360), false);
+				ctx.closePath();
+	   			ctx.fillStyle = B2B;
+				ctx.fill();
+			}else {
+				var B2B = ctx.createRadialGradient(cx+(cr*0.1),cy+(cr*0.1),0,cx+(cr*0.1),cy+(cr*0.1),cr);
+				B2B.addColorStop(0, 'rgba(0,0,0,0.5)');
+				B2B.addColorStop(0.87, 'rgba(0,0,0,0.5)');
+				B2B.addColorStop(1, 'rgba(0,0,0,0)');
+				ctx.fillStyle = B2B;
+				ctx.fillRect(0,0,cw,ch);
+			}
+		}		
+		var val = 0; var deg = 0; var idx = 0; var data;
+		for (data in ChartData) {
+			val = ChartData[data]; sdeg = deg;
+			deg += (val/ct)*deg2rad(360); edeg = deg;
+			ctx.beginPath();
+  			ctx.moveTo(cx,cy);
+			ctx.arc(cx,cy,cr,sdeg,edeg, false);
+			ctx.lineTo(cx,cy);
+			ctx.closePath();
+  			ctx.fillStyle = colorSlice[(idx++)];
+			ctx.fill();
+		} 
+		if(canvas_noshade <= 0) {
+			ctx.beginPath();
+			var W2T = ctx.createLinearGradient(cp*2,cp*2,cx,cy);
+			W2T.addColorStop(0, 'rgba(255,255,255,0.8)');
+			W2T.addColorStop(1, 'rgba(255,255,255,0)');
+			ctx.moveTo(cx,cy);
+			ctx.arc(cx,cy,sr,deg2rad(135),deg2rad(315), false);
+			ctx.closePath();
+			ctx.fillStyle = W2T;
+			ctx.fill();
+			ctx.beginPath();
+			var T2B = ctx.createLinearGradient(cx,cy,cw-(cp*2),ch-(cp*2));
+			T2B.addColorStop(0, 'rgba(0,0,0,0)');
+			T2B.addColorStop(1, 'rgba(0,0,0,0.5)');
+			ctx.moveTo(cx,cy);
+			ctx.arc(cx,cy,sr,deg2rad(-45),deg2rad(135), false);
+			ctx.closePath();
+			ctx.fillStyle = T2B;
+			ctx.fill();
+			ctx.beginPath();
+			var B2T = ctx.createLinearGradient(cx,cy,cw-(cp*1.9),ch-(cp*1.9));
+			B2T.addColorStop(0, 'rgba(0,0,0,0)');
+			B2T.addColorStop(1, 'rgba(0,0,0,0.6)');
+			ctx.lineWidth = cr*0.07;
+			ctx.lineCap = "round";
+			ctx.moveTo(cx,cy);
+			ctx.arc(cx,cy,cr*0.965,deg2rad(-45),deg2rad(135), false);
+			ctx.closePath();
+			ctx.strokeStyle = B2T;
+			ctx.stroke();
+			ctx.beginPath();
+			var T2W = ctx.createLinearGradient(cx,cy,(cp*1.9),(cp*1.9));
+			T2W.addColorStop(0, 'rgba(255,255,255,0)');
+			T2W.addColorStop(1, 'rgba(255,255,255,0.6)');
+			ctx.lineWidth = cr*0.07;
+			ctx.lineCap = "round";
+			ctx.moveTo(cx,cy);
+			ctx.arc(cx,cy,cr*0.965,deg2rad(135),deg2rad(315), false);
+			ctx.closePath();
+			ctx.strokeStyle = T2W;
+			ctx.stroke();	
+		} 				 			
+		ctx.lineCap = "butt";
+		ctx.lineWidth = 1;
+		ctx.fillStyle = 'rgba(255,255,255,0.5)';
+		var mpos = 0; var per = 0; var gx = 0; 
+		var gy = 0; var tx = 0; var ty = 0; 
+		var obj = ""; var w = 0; var c = 0;
+		var bw = cr*0.45; var bh = cr*0.125; 
+		var th = roundTo(bh*0.75,0); var tf = bh/80; 
+		if(canvas_notext <= 0) {
+			if(canvas_htmltext >= 1) {
+				bw = (cr*0.365);
+				canvas.parentNode.style.position = "relative";
+				if(!document.getElementById(textobj)) {
+					obj = document.createElement('div');
+					obj.id = textobj;
+		            obj.style.color = "rgb(0,0,0)";
+		            obj.style.fontFamily = "Arial,sans-serif";
+					obj.style.fontSize = th + "px";
+					obj.style.zIndex = 11;
+					canvas.parentNode.appendChild(obj);
+				}
+				var textdiv = document.getElementById(obj.id);
+			}
+			for (data in ChartData) {			
+				val = ChartData[data];
+				sdeg = deg; mpos = deg+(((val/2)/ct)*deg2rad(360));
+				deg += (val/ct)*deg2rad(360); edeg = deg;
+				per = roundTo(val/poc,2);
+				gx = circle_point_x(mpos, cd);
+				gy = circle_point_y(mpos, cd);
+				tx = parseFloat((cx+(2*Math.floor(cx + gx)))/3);
+				ty = (cy+(2*Math.floor(cy + gy)))/3;
+				if(canvas_htmltext <= 0) {
+					w = '"' + per + '"';
+					if(w.indexOf(".")!=-1) {
+						c = w.length+0.5;
+						w = parseFloat(c-2)*parseFloat(48*tf);
+						bw = parseFloat(c-1)*parseFloat(48*tf);
+					}else {
+						c = w.length;
+						w = parseFloat(c-1)*parseFloat(48*tf);
+						bw = parseFloat(c)*parseFloat(48*tf);
+					}
+					roundedRect(ctx,(tx-(bw/2)),ty-(bh/2),bw,bh,bh/4);
+					ctx.fill();
+					if(canvas_imgtext >= 1) {
+						drawString(ctx, per + "%", tf, tx-(w/2), ty-(th/1.8));
+					}else {
+						strokeString(ctx, per + "%","rgba(48,48,48,1)", th, tx-(w/2), ty-(th/2));
+					}
+				}else {
+					roundedRect(ctx,(tx-(bw/2)),ty-(bh/2),bw,bh,bh/4);
+					ctx.fill();
+					obj = document.createElement('div');
+					obj.style.position = "absolute";
+					obj.style.overflow = "hidden";
+		            obj.style.textAlign = "center";
+					obj.style.width = bw + "px";
+					obj.style.left = (tx-(bw/2)) + "px";
+					obj.style.top = ty-(th/1.8) + "px";
+					obj.appendChild(document.createTextNode(per + "%"));			
+					textdiv.appendChild(obj);
+				}
+			}
+		}
+	}
+}
+function setBarChart(canvasobj,textobj) {
+	var iw = canvas_width*0.9; var ih = canvas_height*0.9;
+	var pw = canvas_width*0.05; var ph = canvas_height*0.05; 
+	var cm = 0; var ct = 0;
+	for (var data in ChartData) {
+		cm = Math.max(cm,ChartData[data]);
+		ct += ChartData[data];
+	} 
+	var hf = ih/cm; var bs = colorSlice.length; 
+	var bw = iw/(bs*1.1); var poc = ct/100;
+	var th = roundTo((bw/3)*0.75,0);
+	var canvas = document.getElementById(canvasobj);
+	if(canvas.getContext) {
+		var ctx = canvas.getContext('2d');
+		if(canvas_bgcolor != "") {
+  			ctx.fillStyle = canvas_bgcolor;
+			ctx.fillRect(0,0,canvas_width,canvas_height);
+		}else {
+			ctx.clearRect(0,0,canvas_width,canvas_height);
+		}
+		if(canvas_htmltext >= 1) {
+			if(document.getElementById(textobj)) {
+	  			canvas.parentNode.removeChild(canvas.parentNode.lastChild);		
+			}
+			canvas.parentNode.style.position = "relative";
+			if(!document.getElementById(textobj)) {
+				var obj = document.createElement('div');
+				obj.id = textobj;
+	            obj.style.color = "rgb(0,0,0)";
+	            obj.style.fontFamily = "Arial,sans-serif";
+				obj.style.fontSize = th + "px";
+				obj.style.zIndex = 11;
+				canvas.parentNode.appendChild(obj);
+			}
+			var textdiv = document.getElementById(obj.id);
+		}		
+		var cc = ""; var bh = 0; var idx = 0; var t = 0; per = 0;
+		for (var data in ChartData) {
+			per = roundTo(ChartData[data]/poc,2);
+			bh = ChartData[data]*hf; 
+			drawBar(ctx,pw+(t*(bw*1.1)),ph+ih-bh,bw,bh,colorSlice[(idx++)],per,textdiv); 
+			t++;
+		} 		
+	}
+}
+function setLineChart(canvasobj,textobj) {
+	var iw = canvas_width*0.9;
+	var ih = canvas_height*0.9;
+	var pw = canvas_width*0.05;
+	var ph = canvas_height*0.05;
+	var cm = 0;
+	for (var i = 0; i < ChartData.length; i++) {
+		for (var j = 0; j < ChartData[i].length; j++) {
+			cm = Math.max(cm,ChartData[i][j]);
+		}
+	} 
+	var hf = (ih*0.95)/cm; var bw = iw;
+	var dw = iw/(ChartData[0].length-1)
+	var dh = ih/(ChartData[0].length-1)
+	var ps = Math.min(pw,ph); lw = ps/4;
+	var B2T;
+	var canvas = document.getElementById(canvasobj);
+	if(canvas.getContext) {
+		var ctx = canvas.getContext('2d');
+		if(canvas_bgcolor != "") {
+  			ctx.fillStyle = canvas_bgcolor;
+			ctx.fillRect(0,0,canvas_width,canvas_height);
+		}else {
+			ctx.clearRect(0,0,canvas_width,canvas_height);
+		}
+		if(canvas_noshadow <= 0) {
+			B2T = ctx.createLinearGradient(pw+ps,ph+ih+1,pw+ps+ps,ph+ih+1);
+			B2T.addColorStop(0, 'rgba(0,0,0,0.0)');
+			B2T.addColorStop(1, 'rgba(0,0,0,0.5)');
+	  		ctx.fillStyle = B2T;
+			ctx.beginPath();
+	  		ctx.moveTo(pw+ps,ph+ih);
+			ctx.lineTo(pw+ps,ph+ih+ps);	
+			ctx.lineTo(pw+ps+ps,ph+ih);
+			ctx.closePath();			
+			ctx.fill();
+			B2T = ctx.createLinearGradient(pw+ps+ps,ph+ih,pw+ps+ps,ph+ih+ps);
+			B2T.addColorStop(0, 'rgba(0,0,0,0.5)');
+			B2T.addColorStop(1, 'rgba(0,0,0,0.0)');
+	  		ctx.fillStyle = B2T;
+			ctx.beginPath();
+	  		ctx.moveTo(pw+ps+ps,ph+ih);
+			ctx.lineTo(pw+iw,ph+ih);	
+			ctx.lineTo(pw+ps+iw,ph+ih+ps);
+			ctx.lineTo(pw+ps,ph+ih+ps);		
+			ctx.closePath();			
+			ctx.fill();
+			var B2T = ctx.createLinearGradient(pw+iw+1,ph+ps,pw+iw+1,ph+ps+ps);
+			B2T.addColorStop(0, 'rgba(0,0,0,0.0)');
+			B2T.addColorStop(1, 'rgba(0,0,0,0.35)');
+	  		ctx.fillStyle = B2T;
+			ctx.beginPath();
+	  		ctx.moveTo(pw+iw,ph+ps);
+			ctx.lineTo(pw+iw,ph+ps+ps);	
+			ctx.lineTo(pw+iw+ps,ph+ps);
+			ctx.closePath();			
+			ctx.fill();
+			B2T = ctx.createLinearGradient(pw+iw,ph+ps+ps,pw+iw+ps,ph+ps+ps);
+			B2T.addColorStop(0, 'rgba(0,0,0,0.35)');
+			B2T.addColorStop(1, 'rgba(0,0,0,0.0)');
+	  		ctx.fillStyle = B2T;
+			ctx.beginPath();
+	  		ctx.moveTo(pw+iw,ph+ps+ps);
+			ctx.lineTo(pw+iw,ph+ih);	
+			ctx.lineTo(pw+iw+ps,ph+ih+ps);
+			ctx.lineTo(pw+iw+ps,ph+ps);		
+			ctx.closePath();			
+			ctx.fill();
+		}	
+		ctx.lineCap = "butt";
+		ctx.lineWidth = lw/2;
+		ctx.strokeStyle = "rgba(255,255,255,0.25)";
+		if(canvas_nofill <= 0) {
+  			ctx.fillStyle = "rgba(240,240,240,0.8)";
+			ctx.strokeStyle = "rgba(255,255,255,1)";
+			ctx.fillRect(pw,ph,iw,ih);
+		}
+		for (var i = 0; i < ChartData[0].length-1; i++) {
+		  	ctx.beginPath();
+  			ctx.moveTo(pw+(i*dw),ph);
+			ctx.lineTo(pw+(i*dw),ph+ih);
+			ctx.stroke();
+		}
+		for (var i = 1; i < ChartData[0].length; i++) {
+		  	ctx.beginPath();
+  			ctx.moveTo(pw,ph+(i*dh));
+			ctx.lineTo(pw+iw,ph+(i*dh));
+			ctx.stroke();
+		}			
+		ctx.lineWidth = lw;
+		var cc = ""; var bh = 0; var idx = 0; var t = 0;
+		for (var i = 0; i < ChartData.length; i++) {
+			for (var j = 0; j < ChartData[i].length; j++) {
+				t = Math.max(t,ChartData[i][j]);
+			}
+			bh = t*hf; cc = colorSlice[(idx++)];
+			drawLine(ctx,pw,ph+ih-bh,bw,bh,dw,ChartData[i],hf,cc,canvas_nofill);
+		}
+  		ctx.beginPath();
+  		ctx.moveTo(pw,ph);
+		ctx.lineTo(pw,ph+ih);
+		ctx.lineTo(pw+iw+(lw/2),ph+ih);
+		ctx.strokeStyle = "rgba(48,48,48,1)";
+		ctx.stroke();
+		ctx.lineWidth = lw/2;
+		B2T = ctx.createLinearGradient(pw,ph+ih,pw,ph+ih+ps);
+		B2T.addColorStop(0, 'rgba(0,0,0,1)');
+		B2T.addColorStop(0.5, 'rgba(0,0,0,1)');
+		B2T.addColorStop(1, 'rgba(0,0,0,0)');
+  		ctx.strokeStyle = B2T;
+		for (var i = 0; i < ChartData[0].length; i++) {
+  			ctx.beginPath();
+  			ctx.moveTo(pw+(i*dw),ph+ih);
+			ctx.lineTo(pw+(i*dw),ph+ih+ps);
+			ctx.stroke();
+		}
+		B2T = ctx.createLinearGradient(pw-ps,ph,pw,ph);
+		B2T.addColorStop(0, 'rgba(0,0,0,0)');
+		B2T.addColorStop(0.5, 'rgba(0,0,0,1)');
+		B2T.addColorStop(1, 'rgba(0,0,0,1)');
+  		ctx.strokeStyle = B2T;
+  		for (var i = 1; i < ChartData[0].length; i++) {
+  			ctx.beginPath();
+  			ctx.moveTo(pw-ps,ph+(i*dh));
+			ctx.lineTo(pw,ph+(i*dh));
+			ctx.stroke();
+		}			
+	}
+}
+function generateCanvas() {
+	if(canvasSupport) {
+		var canvasID; var tdataID; var textID; 
+		var tmp; var dat; var i; var j;
+		for(i=0; i < piecharts.length; i++) {
+			tmp = piecharts[i].id.split("_");
+			tdataID = piecharts[i].id;
+			canvasID = tmp[0] + "_canvas";
+			textID = tmp[0] + "_text";
+			if(document.getElementById(tdataID)) {
+				get_input(tdataID,canvasID);
+				if(colorSlice.length > 0) {
+					j = 0; dat = ""; for(dat in ChartData) {j++; }
+					if(j > 0 && j == colorSlice.length) {
+						setPieChart(canvasID,textID);
+					}
+				}
+			}
+		}
+		for(i=0; i < barcharts.length; i++) {
+			tmp = barcharts[i].id.split("_");
+			tdataID = barcharts[i].id;
+			canvasID = tmp[0] + "_canvas";
+			textID = tmp[0] + "_text";
+			if(document.getElementById(tdataID)) {
+				get_input(tdataID,canvasID);
+				if(colorSlice.length > 0) {
+					j = 0; dat = ""; for(dat in ChartData) {j++; }
+					if(j > 0 && j == colorSlice.length) {
+						setBarChart(canvasID,textID);
+					}
+				}
+			}
+		}
+		for(i=0; i < linecharts.length; i++) {
+			tmp = linecharts[i].id.split("_");
+			tdataID = linecharts[i].id;
+			canvasID = tmp[0] + "_canvas";
+			textID = tmp[0] + "_text";
+			if(document.getElementById(tdataID)) {
+				get_input(tdataID,canvasID,true);
+				if(colorSlice.length > 0) {
+					if(ChartData.length == colorSlice.length) {
+						setLineChart(canvasID,textID);
+					}
+				}
+			}
+		}
+	}
+}
+// canvas chart extension
+
+// invisible select extension
+function setListPos(opt) {
+	if(!isIE) { //(degrade IE)
+		var ref = document.getElementById('list');
+		var x = findPosX(ref); var y = findPosY(ref);
+		var obj = document.getElementById('jumplist');
+		obj.style.position = 'fixed'; obj.style.left = x + 'px'; obj.style.top = y + 'px';	
+		var vol = document.getElementById('volumelist');
+		ref = document.getElementById('volume');
+		x = findPosX(ref); y = findPosY(ref);
+		vol.style.position = 'fixed'; vol.style.left = x + 'px'; vol.style.top = y + 'px';	
+		var pnl = document.getElementById('navLinks');
+	}
+	if(opt) {
+		if (isIE) {
+			//(degrade IE)
+			//obj.style.filter = "alpha(opacity=0)";
+			//vol.style.filter = "alpha(opacity=0)";
+			//pnl.style.filter = "alpha(opacity=90)";	
+		}else {
+			obj.style.opacity = 0.0;
+			vol.style.opacity = 0.0;
+			pnl.style.opacity = 0.9;
+		}
+		if(!isOp && !isIE) {
+			vol.onmouseover = function () { document.getElementById('volume').style.color="rgb(255, 0, 0)"; return false; }
+			vol.onmouseout  = function () { document.getElementById('volume').style.color=""; return false; }
+			obj.onmouseover = function () { document.getElementById('list').style.color="rgb(255, 0, 0)"; return false; }
+			obj.onmouseout  = function () { document.getElementById('list').style.color=""; return false; }
+		}
+	}
+}
+// invisible select extension
+
+// transition extension
+function switchFade() {
+	if(tranSitions && s5mode && fadeModus) {
+		fadeModus = false; 
+		playDelay = playDelay-(2*fadeDuration);
+		document.getElementById('fade').style.color="";
+	}else if(tranSitions && s5mode && !fadeModus) {
+		fadeModus = true; 
+		playDelay = playDelay+(2*fadeDuration);
+		document.getElementById('fade').style.color=highLight;
+	}
+	currentSlide();
+}
+function opacity(ids, opacStart, opacEnd, millisec) {
	var speed = Math.round(millisec / 100);
	var timer = 0;
	if(opacStart > opacEnd) {
		for(var i = opacStart; i >= opacEnd; i--) {
			window.setTimeout("changeOpac(" + i + ",'" + ids + "')",(timer * speed));
			timer++;
		}
	} else if(opacStart < opacEnd) {
		for(var i = opacStart; i <= opacEnd; i++) {
			window.setTimeout("changeOpac(" + i + ",'" + ids + "')",(timer * speed));
			timer++;
		}
	}
+}
function changeOpac(opacity, ids) {
	var obj = document.getElementById(ids); 
+	if (isIE) {
+		obj.style.filter = "alpha(opacity=" + opacity + ")";
	} else {
		obj.style.opacity = (opacity / 100);
	}
}
function shiftOpacity(ids, millisec) {
	if(document.getElementById(ids).style.opacity != '') {
		var currentOpac = document.getElementById(ids).style.opacity * 100;
+	} else {
+		var currentOpac = 0;
+	}
+	if(currentOpac == 0) {
+		opacity(ids, currentOpac, 100, millisec);
	} else if(currentOpac > 0) {
+		opacity(ids, currentOpac, 0, millisec);
	}
}
+// transition extension
+
+// autoplay extension
+function autoPlay() {
+	if (s5mode && autoMatic && !playPause) {
+		if ((snum >= (smax-1)) && playLoop) {
+			goTo(0);
+			autoRun = setTimeout('autoPlay();',playDelay);
+		}else if ((snum >= (smax-1)) && !playLoop) {
+			stopPlay();
+		}else {
+			if (!incrementals[snum] || incpos >= incrementals[snum].length) {
+				go(1);
+				if (incrementals[snum].length >0) {
+					clearTimeout(autoRun); autoRun = null;
+					incrDelay = parseInt(playDelay/(incrementals[snum].length+1));
+					remainDer = parseInt(playDelay-(incrDelay*incrementals[snum].length));
+					autoRun = setTimeout('autoPlayIncr()',incrDelay);
+				}
+			} else {
+				clearTimeout(autoRun); autoRun = null;
+				incrDelay = incrDuration;
+				remainDer = parseInt(playDelay-(incrementals[snum].length*incrDuration));
+				autoRun = setTimeout('autoPlayIncr()',incrDelay);
+			}
+			autoRun = setTimeout('autoPlay();',playDelay);
+		}  
+	}
+}
+function autoPlayIncr() {
+	if (incpos < incrementals[snum].length) {
+		subgo(1);
+		autoRun = setTimeout('autoPlayIncr();',incrDelay);
+	}else {
+		autoRun = setTimeout('nop();',remainDer);
+	}
+}
+function nop() {
+	// no operation dummy
+}
+function togglePlay() {
+	if (autoRun && s5mode) {
+		stopPlay();
+	}else if (!autoRun && s5mode) {
+		startPlay();
+	}
+}
+function stopPlay() {
+	if (autoRun && s5mode) {
+		clearTimeout(autoRun); autoRun = null; 
+		autoMatic = false; playPause = false;
+		document.getElementById('auto').style.color="";
+		document.getElementById('pause').style.color="";
+		currentSlide();
+	}
+}
+function startPlay() {
+	if (!autoRun && s5mode) {
+		playPause = false; autoMatic = true;
+		document.getElementById('pause').style.color="";
+		document.getElementById('auto').style.color=highLight;
+		autoRun = setTimeout('autoPlay();',playDelay); 
+		currentSlide();
+	}
+}
+function pausePlay() {
+	if (s5mode && autoMatic) {
+		if (playPause) {
+			playPause = false; autoRun = setTimeout('autoPlay();',playDelay);
+			document.getElementById('pause').style.color="";
+		}else {
+			if (autoRun){ 
+				clearTimeout(autoRun); autoRun = null; playPause = true;
+				document.getElementById('pause').style.color=highLight;
+			}
+		}
+		currentSlide();
+	}
+}
+function switchLoop() {
+	if(s5mode) {
+		if (playLoop) {
+			playLoop = false; document.getElementById('loop').style.color="";
+		}else {
+			playLoop = true; document.getElementById('loop').style.color=highLight;
+		} 
+	}
+	currentSlide();
+}
+function setDelay(val) {
+	if(s5mode) {
+		var delay = Math.max(5,Math.min(val,300));
+		playDelay = (fadeModus == true) ? ((delay*1000)+(2*fadeDuration)) : (delay*1000);
+	}
+}
+// autoplay extension
+
+// audio extension
+function createSoundManagerScript() {
+	if(typeof soundManager=="undefined") {
+		onerrorSM2();	
+	}else {
+		var script=document.createElement('SCRIPT');
+		var tx=document.createTextNode("soundManager.createMovie();");
+		script.appendChild(tx);
+		document.getElementsByTagName("body")[0].appendChild(script);
+	}
+}
+//soundManager.onload = function() {
+function onloadSM2() {
+	if(!isIE) { //(degrade IE)	
+		swfUnloaded = false;
+		preloadSounds();
+	}
+}
+//soundManager.onerror = function() {
+function onerrorSM2() {
+	if(typeof soundManager!="undefined") {
+		soundManager.destruct;
+		delete soundManager;
+	}	
+	audioSupport = false; swfUnloaded = true;
+	if(audioError && !isIE && !isOp) {
+		var dv = document.createElement('div'); dv.id = "guru";
+		var d2=document.createElement('div'); dv.appendChild(d2);
		var tx=document.createTextNode('Guru Meditation - SoundManager failed to load/initialize!');
+		d2.appendChild(tx);	document.getElementById('slide0').appendChild(dv);
+	}
+}
+function audioSetup() {
+	if(sound[0]) {
+		playSound(0); 
+	}else if(sound[bgSoundItem] && !sound[0]) {
+		playSound(bgSoundItem); 
+	}
+}
+function fadeoutSound(ids, option) {
+	if(curSoundID >= 0  && !swfUnloaded) {
+		if(isNaN(ids)) {
+			if(ids == "bgSound") {
+				var cnum = parseInt(bgSoundItem);
+			}else {
+				for (var i = 0; i < (sound.length-1); i++) {
+					if(sound[i] && ids == sound[i]["id"]) {
+						var cnum = i;
+						break;
+					}
+				}
+			}
+		}else {
+			var cnum = ids;
+			ids = sound[cnum]["id"];
+		}	
+		var vol = getMaxVolume(sound[cnum]["volume"]);
+		var millisec = fadeDuration;
+		var speed = Math.round(millisec / vol);
		var timer = 0;
		for(var i = vol; i > 0; i--) {
			setTimeout("fadeout(" + i + ",'" + ids + "')",(timer * speed));
			timer++;
		}
+		if(option) setTimeout("stopSound('"+ids+"')",millisec);
+	}
+}
+function fadeout(volume, id) {
	soundManager.setVolume(id,volume);
}
+function stopSound(ids) {
+	var sid;
+	if(isNaN(ids)) {
+		sid = ids;
+	}else if(sound[ids]) {
+		sid = sound[ids]["id"];
+	}
+	if(sid!='' && curSoundID >= 0) {
+		soundManager.stop(sid);
+		curSoundID = -1;
+	}
+}
+function toggleSounds() {
+	if(audioSupport && !swfUnloaded) {
+		stopAllSounds();
+	}else if (!audioSupport && !swfUnloaded) {
+		allowSounds();
+	}
+}
+function allowSounds() {
+	if(!swfUnloaded) {
+		audioSupport = true;
+		document.getElementById('audio').style.color=highLight;
+		currentSlide();
+	}
+}
+function stopAllSounds() {
+	if(curSoundID >= 0) {
+		stopSound(curSoundID);
+	}else {
+		soundManager.stopAll();
+		curSoundID = -1;
+	}
+	audioSupport = false;
+	document.getElementById('audio').style.color="";
+	currentSlide();
+}
+function playSound(id) {
+	if(audioSupport && !swfUnloaded) {
+		var url, sid, vol, lps, cnum;
+		if(isNaN(id)) {
+			sid = id;
+			if(sid == "bgSound") {
+				cnum = parseInt(bgSoundItem);
+			}else {
+				cnum = getSoundID(id);
+			}
+		}else {
+			cnum = parseInt(id); 
+			if(sound[cnum]) sid = sound[cnum]["id"];
+		}		
+		if(sound[cnum] && sound[cnum]["url"]!='' && sid!=''){
+			url = sound[cnum]["url"];
+			vol = (sound[cnum]["volume"]!='')?getMaxVolume(sound[cnum]["volume"]):getMaxVolume(100);
+			lps = (sound[cnum]["loops"])?true:false;			
+			if(lps) {
+				soundManager.play(sid,{volume:vol,onplay:function(){curSoundID=cnum;},onfinish:function(){soundManager.play(sid,{volume:getMaxVolume(sound[cnum]["volume"])});}});
+			}else { 
+				soundManager.play(sid,{volume:vol,onplay:function(){curSoundID=cnum;},onfinish:function(){curSoundID=-1;}});
+			}
+		}
+	}	
+}
+function getSoundID(str) {
+	for (var i = 0; i < (sound.length-1); i++) {
+		if(sound[i] && str == sound[i]["id"]) {
+			var id = i;
+			break;
+		}
+	}
+	return id;
+}
+function setVolume() {
+	var vol = document.getElementById('volumelist');
+	if(audioSupport && !swfUnloaded) {
+		audioVolume = parseInt(vol.value);
+		if(curSoundID >= 0) {
+			if(sound[curSoundID]) {
+				var sid = sound[curSoundID]["id"];
+				var vid = getMaxVolume(sound[curSoundID]["volume"]);
+				soundManager.setVolume(sid,vid);
+			}
+		}
	}	
+}
+function getMaxVolume(value) {
+	if(audioVolume>0) {var factor = audioVolume/100;}else {var factor = 0;}
+	return Math.max(0,Math.min(parseInt(value*factor),audioVolume));
+}
+function preloadSounds() {
+	var temp = ''; var parm = ''; var t = ''; var cl = '';
+	var objects = document.getElementsByTagName('object');
+	for (var i=0; i < objects.length; i++) {
+		if(objects[i].type.toLowerCase() == 'audio/mp3' && objects[i].data != '') {
+			objects[i].width = 0; objects[i].height = 0;
+			if(objects[i].parentNode.tagName == 'DIV') {
+				cl = objects[i].parentNode.className.toLowerCase();			
+				if(cl == 'presentation' || cl == 'slide') {
+					if(cl == 'presentation') {
+						t = parseInt(bgSoundItem);
+					}else {
+						t = parseInt(objects[i].parentNode.id.slice(5, objects[i].parentNode.id.length));
+					}	
+					sound[t] = new Object();
+					if(t < bgSoundItem) {
+						sound[t]["id"] = objects[i].parentNode.id;
+					}else {
+						sound[t]["id"] = "bgSound";
+					}	
+					sound[t]["url"] = objects[i].data;
+					sound[t]["volume"] = 100; sound[t]["loops"] = false;
+					if(objects[i].archive != '') {
+						parm = objects[i].archive.toLowerCase().split(',');
+						for (var j=0; j < parm.length; j++) {
+							if(parm[j] == 'loop') sound[t]["loops"] = true;
+							if(parm[j].search(/^volume/) != -1) {
+								var tmp = parm[j].split(':');
+								sound[t]["volume"] = parseInt(tmp[1]);
+							}
+						}
+					}
+					soundManager.createSound(sound[t]["id"],sound[t]["url"]);
+				}
+			}			
+		}
+	}
+}
+// audio extension
+
+// help extension
+function createHelpReq() {
+	if(!document.getElementById("HelpReq")) {
+		var obj = document.getElementsByTagName("body")[0].firstChild;
+		var pg = document.createElement('div');
+		pg.id = "HelpReq";
+		if (pg.addEventListener) {
+			pg.addEventListener("onclick",dumpHelpReq,false);
+		} else if (pg.attachEvent) {
+			pg.attachEvent("onclick",dumpHelpReq);
+		}	
+		pg.style.position = 'absolute';
+		pg.style.left = 0 + 'px';
+		pg.style.top = 0 + 'px';
+		pg.style.width = 100 + '%';
+		pg.style.height = 100 + '%';
+		pg.style.margin = 0 + 'px';
+		pg.style.padding = 0 + 'px';
+		if (isIE) {
+			pg.style.filter = "alpha(opacity=90)";	
+		}else {
+			pg.style.opacity = 0.9;
+		}
		pg.style.zIndex = 9999;
+		pg.style.backgroundColor="rgb(64,64,64)";
+		pg.style.textAlign = "center";
		pg.style.verticalAlign = "middle";
+		pg.style.backgroundPosition="center center";
+		pg.style.backgroundRepeat="no-repeat";
+		pg.style.backgroundImage="url(ui/graphic_support/help.jpg)";
+		document.getElementsByTagName("body")[0].insertBefore(pg,obj);
+		if(document.getElementById("HelpReq")) {
+			helpmode = true;
+		}
+	}
+}
+function dumpHelpReq() {
+	if(document.getElementById("HelpReq")) {
+		document.body.removeChild(document.getElementById('HelpReq'));
+		helpmode = false;
+	}
+}
+// help extension
+
+//DEBUG
+function ConsoleLog(value) {
+	if(window.console) {
+		window.console.log(value);
+	}	
+}
+//DEBUG
+
+document.write('<style type="text/css" media="screen" id="blockStyle">.presentation, .layout {display: none; }</style>');
+
+if(!isIE && !isOp) {
+	document.write('<script type="text/javascript" src="ui/audio_support/soundmanager2.js"></script>');
+	if(typeof soundManager!="undefined") {
+		var allMetas = document.getElementsByTagName('meta');
+		for (var i = 0; i< allMetas.length; i++) {
+			if (allMetas[i].name == 'audioDebug') {
+				var audioDebug = (allMetas[i].content == "true") ? true : false;
+				soundManager.defaultOptions.debugMode = audioDebug;
+			}						
+		}
+	}
+}
+
+window.onload = createSlideShow;
+window.onresize = function(){setTimeout('windowChange()',5);}
\ No newline at end of file
Binary file jssst2011/ui/graphic_support/blank.gif has changed
Binary file jssst2011/ui/graphic_support/finish.gif has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jssst2011/ui/graphic_support/fixed.js	Sun Sep 25 03:42:16 2011 +0900
@@ -0,0 +1,1 @@
+// fixed.js: fix fixed positioning and fixed backgrounds in IE/Win
// version 1.8, 08-Aug-2003
// written by Andrew Clover <and@doxdesk.com>, use freely

/*@cc_on
@if (@_win32 && @_jscript_version>4)

var fixed_positions= new Array();
var fixed_backgrounds= new Array();
var fixed_viewport;

// Initialisation. Called when the <body> tag arrives. Set up viewport so the
// rest of the script knows we're going, and add a measurer div, used to detect
// font size changes and measure image sizes for backgrounds later   

function fixed_init() {
  fixed_viewport= (document.compatMode=='CSS1Compat') ?
    document.documentElement : document.body;
  var el= document.createElement('div');
  el.setAttribute('id', 'fixed-measure');
  el.style.position= 'absolute';
  el.style.top= '0'; el.style.left= '0';
  el.style.overflow= 'hidden'; el.style.visibility= 'hidden';
  el.style.fontSize= 'xx-large'; el.style.height= '5em';
  el.style.setExpression('width', 'fixed_measureFont()');
  document.body.insertBefore(el, document.body.firstChild);
}

// Binding. Called every time an element is added to the document, check it
// for fixed features, if found add to our lists and set initial props   

function fixed_bind(el) {
  var needLayout= false;
  var tag= el.tagName.toLowerCase();
  var st= el.style;
  var cst= el.currentStyle;
  var anc;

  // find fixed-position elements
  if (cst.position=='fixed') {
    needLayout= true;
    fixed_positions[fixed_positions.length]= el;
    // store original positioning as we'll overwrite it
    st.position= 'absolute';
    st.fixedPLeft=   cst.left;
    st.fixedPTop=    cst.top;
    st.fixedPRight=  cst.right;
    st.fixedPBottom= cst.bottom;
    st.fixedPWidth=  fixed_parseLength(cst.width);
    st.fixedPHeight= fixed_parseLength(cst.height);
    // find element that will act as containing box, for convenience later
    st.fixedCB= null;
    for (anc= el; (anc= anc.parentElement).parentElement;) {
      if (anc.currentStyle.position!='static') {
        st.fixedCB= anc;
        break;
    } }
    // detect nested fixed positioning (only ancestor need move)
    st.fixedNest= false;
    for (anc= el; anc= anc.parentElement;) {
      if (anc.style.fixedNest!=null)
        st.fixedNest= true;
        break;
    }
  }

  // find fixed-background elements (not body/html which IE already gets right)
  if (cst.backgroundAttachment=='fixed' && tag!='body' && tag!='html') {
    needLayout= true;
    fixed_backgrounds[fixed_backgrounds.length]= el;
    // get background offset, converting from keyword if necessary
    st.fixedBLeft= fixed_parseLength(cst.backgroundPositionX);
    st.fixedBTop=  fixed_parseLength(cst.backgroundPositionY);
    // if it's a non-zero %age, need to know size of image for layout
    if (st.fixedBLeft[1]=='%' || st.fixedBTop[1]=='%') {
      st.fixedBWidth= 0; st.fixedBHeight= 0;
      fixed_measureBack(el);
    }
  }
  if (needLayout) fixed_layout();
}

// Layout. On every window or font size change, recalculate positioning   

// Request re-layout at next free moment
var fixed_delaying= false;
function fixed_delayout() {
  if (fixed_delaying) return;
  fixed_delaying= true;
  window.setTimeout(fixed_layout, 0);
}

var fixed_ARBITRARY= 200;

function fixed_layout() {
  fixed_delaying= false;
  if (!fixed_viewport) return;
  var i, el, st, j, pr, tmp, A= 'auto';
  var cb, cbLeft, cbTop, cbRight, cbBottom, oLeft, oTop, oRight, oBottom;
  var vpWidth=fixed_viewport.clientWidth, vpHeight=fixed_viewport.clientHeight;

  // calculate initial position for fixed-position elements [black magic]
  for (i= fixed_positions.length; i-->0;) {
    el= fixed_positions[i]; st= el.style;
    // find positioning of containing block
    cb= st.fixedCB; if (!cb) cb= fixed_viewport;
    cbLeft= fixed_pageLeft(cb); cbTop= fixed_pageTop(cb);
    if (cb!=fixed_viewport) { cbLeft+= cb.clientLeft; cbTop+= cb.clientTop; }
    cbRight= fixed_viewport.clientWidth-cbLeft-cb.clientWidth;
    cbBottom= fixed_viewport.clientHeight-cbTop-cb.clientHeight;
    // if size is in %, must recalculate relative to viewport
    if (st.fixedPWidth[1]=='%')
      st.width= Math.round(vpWidth*st.fixedPWidth[0]/100)+'px';
    if (st.fixedPHeight[1]=='%')
      st.height= Math.round(vpHeight*st.fixedPHeight[0]/100)+'px';
    // find out offset values at max size, to account for margins
    st.left= A; st.right= '0'; st.top= A; st.bottom= '0';
    oRight= el.offsetLeft+el.offsetWidth; oBottom= el.offsetTop+el.offsetHeight;
    st.left= '0'; st.right= A; st.top= '0'; st.bottom= A;
    oLeft= el.offsetLeft; oTop= el.offsetTop;
    // use this to convert all edges to pixels
    st.left= A; st.right= st.fixedPRight;
    st.top= A; st.bottom= st.fixedPBottom;
    oRight-= el.offsetLeft+el.offsetWidth;
    oBottom-= el.offsetTop+el.offsetHeight;
    st.left= st.fixedPLeft; st.top= st.fixedPTop;
    oLeft= el.offsetLeft-oLeft; oTop= el.offsetTop-oTop;
    // edge positioning fix
    if (st.fixedPWidth[1]==A && st.fixedPLeft!=A && st.fixedPRight!=A) {
      tmp= el.offsetLeft; st.left= A; st.width= fixed_ARBITRARY+'px';
      tmp= fixed_ARBITRARY+el.offsetLeft-tmp+cbLeft+cbRight;
      st.left= st.fixedPLeft; st.width= ((tmp<1)?1:tmp)+'px';
    }
    if (st.fixedPHeight[1]==A && st.fixedPTop!=A && st.fixedPBottom!=A) {
      tmp= el.offsetTop; st.top= A; st.height= fixed_ARBITRARY+'px';
      tmp= fixed_ARBITRARY+el.offsetTop-tmp+cbTop+cbBottom;
      st.top= st.fixedPTop; st.height= ((tmp<1)?1:tmp)+'px';
    }
    // move all non-auto edges relative to the viewport
    st.fixedCLeft= (st.fixedPLeft=='auto') ? oLeft : oLeft-cbLeft;
    st.fixedCTop= (st.fixedPTop=='auto') ? oTop : oTop-cbTop;
    st.fixedCRight= (st.fixedPRight=='auto') ? oRight : oRight-cbRight;
    st.fixedCBottom= (st.fixedPBottom=='auto') ? oBottom : oBottom-cbBottom;
    // remove left-positioning of right-positioned elements
    if (st.fixedPLeft=='auto' && st.fixedPRight!='auto') st.fixedCLeft= 'auto';
    if (st.fixedPTop=='auto' && st.fixedPBottom!='auto') st.fixedCTop= 'auto';
  }


  // calculate initial positioning of fixed backgrounds
  for (i= fixed_backgrounds.length; i-->0;) {
    el= fixed_backgrounds[i]; st= el.style;
    tmp= st.fixedBImage;
    if (tmp) {
      if (tmp.readyState!='uninitialized') {
        st.fixedBWidth= tmp.offsetWidth;
        st.fixedBHeight= tmp.offsetHeight;
        st.fixedBImage= window.undefined;
      }
    }
    st.fixedBX= fixed_length(el, st.fixedBLeft, vpWidth-st.fixedBWidth);
    st.fixedBY= fixed_length(el, st.fixedBTop, vpHeight-st.fixedBHeight);
  }

  // now call scroll() to set the positions from the values just calculated
  fixed_scroll();
}

// Scrolling. Offset fixed elements relative to viewport scrollness

var fixed_lastX, fixed_lastY;
var fixed_PATCHDELAY= 300;
var fixed_patching= false;

// callback function after a scroll, because incorrect scroll position is
// often reported first go!
function fixed_patch() {
  fixed_patching= false;
  var scrollX= fixed_viewport.scrollLeft, scrollY= fixed_viewport.scrollTop;
  if (scrollX!=fixed_lastX && scrollY!=fixed_lastY) fixed_scroll();
}

function fixed_scroll() {
  if (!fixed_viewport) return;
  var i, el, st, viewportX, viewportY;
  var scrollX= fixed_viewport.scrollLeft, scrollY= fixed_viewport.scrollTop;
  fixed_lastX= scrollX; fixed_lastY= scrollY;

  // move non-nested fixed-position elements
  for (i= fixed_positions.length; i-->0;) {
    st= fixed_positions[i].style;
    viewportX= (st.fixedNest) ? 0 : scrollX;
    viewportY= (st.fixedNest) ? 0 : scrollY;
    if (st.fixedCLeft!='auto') st.left= (st.fixedCLeft+viewportX)+'px';
    if (st.fixedCTop!='auto') st.top= (st.fixedCTop+viewportY)+'px';
    viewportX= (st.fixedCB==null || st.fixedCB==fixed_viewport) ? 0 : viewportX;
    viewportY= (st.fixedCB==null || st.fixedCB==fixed_viewport) ? 0 : viewportY;
    st.right= (st.fixedCRight-viewportX+1)+'px'; st.right= (st.fixedCRight-viewportX)+'px';
    st.bottom= (st.fixedCBottom-viewportY+1)+'px'; st.bottom= (st.fixedCBottom-viewportY)+'px';
  }

  // align fixed backgrounds to viewport
  for (i= fixed_backgrounds.length; i-->0;) {
    el= fixed_backgrounds[i]; st= el.style;
    viewportX= scrollX;
    viewportY= scrollY;
    while (el.offsetParent) {
      viewportX-= el.offsetLeft+el.clientLeft;
      viewportY-= el.offsetTop +el.clientTop;
      el= el.offsetParent;
    }
    st.backgroundPositionX= (st.fixedBX+viewportX)+'px';
    st.backgroundPositionY= (st.fixedBY+viewportY)+'px';
  }

  // call back again in a tic
  if (!fixed_patching) {
    fixed_patching= true;
    window.setTimeout(fixed_patch, fixed_PATCHDELAY);
  }
}

// Measurement. Load bg-image into an invisible element on the page, when
// loaded write the width/height to an element's style for layout use; detect
// when font size changes

function fixed_measureBack(el) {
  var measure= document.getElementById('fixed-measure');
  var img= document.createElement('img');
  img.setAttribute('src', fixed_parseURL(el.currentStyle.backgroundImage));
  measure.appendChild(img);
  el.style.fixedBImage= img;
  if (img.readyState=='uninitialized')
    img.attachEvent('onreadystatechange', fixed_measureBackImage_ready);
}

function fixed_measureBackImage_ready() {
  var img= event.srcElement;
  if (img && img.readyState!='uninitialized') {
    img.detachEvent('onreadystatechange', fixed_measureBackImage_ready);
    fixed_layout();
  }
}

var fixed_fontsize= 0;
function fixed_measureFont() {
  var fs= document.getElementById('fixed-measure').offsetHeight;
  if (fixed_fontsize!=fs && fixed_fontsize!=0)
    fixed_delayout();
  fixed_fontsize= fs;
  return '5em';
}

// Utility. General-purpose functions

// parse url() to get value inside

function fixed_parseURL(v) {
  v= v.substring(4, v.length-1);
  if (v.charAt(0)=='"' && v.charAt(v.length-1)=='"' ||
      v.charAt(0)=="'" && v.charAt(v.length-1)=="'")
    return v.substring(1, v.length-1);
  else return v;
}

// parse length or auto or background-position keyword into number and unit

var fixed_numberChars= '+-0123456789.';
var fixed_ZERO= new Array(0, 'px');
var fixed_50PC= new Array(50, '%');
var fixed_100PC= new Array(100, '%');
var fixed_AUTO= new Array(0, 'auto');

function fixed_parseLength(v) {
  var num, i;
  if (v=='left'  || v=='top')    return fixed_ZERO;
  if (v=='right' || v=='bottom') return fixed_100PC;
  if (v=='center') return fixed_50PC;
  if (v=='auto')   return fixed_AUTO;
  i= 0;
  while (i<v.length && fixed_numberChars.indexOf(v.charAt(i))!=-1)
    i++;
  num= parseFloat(v.substring(0, i));
  if (num==0) return fixed_ZERO;
  else return new Array(num, v.substring(i));
}

// convert parsed (number, unit) into a number of pixels

function fixed_length(el, l, full) {
  var tmp, x;
  if (l[1]=='px') return l[0];
  if (l[1]=='%')  return Math.round(full*l[0]/100);
  // other units - measure by setting position; this is rather inefficient
  // but then these units are used for background-position so seldom...
  tmp= el.currentStyle.left;
  el.style.left= '0';
  x= el.offsetLeft;
  el.style.left= l[0]+l[1];
  x= el.offsetLeft-x;
  el.style.left= tmp;
  return x;
}

// convert stupid IE offsetLeft/Top to page-relative values

function fixed_pageLeft(el) {
  var v= 0;
  while (el.offsetParent) {
    v+= el.offsetLeft;
    el= el.offsetParent;
  }
  return v;
}
function fixed_pageTop(el) {
  var v= 0;
  while (el.offsetParent) {
    v+= el.offsetTop;
    el= el.offsetParent;
  }
  return v;
}

// Scanning. Check document every so often until it has finished loading. Do
// nothing until <body> arrives, then call main init. Pass any new elements
// found on each scan to be bound   

var fixed_SCANDELAY= 500;

function fixed_scan() {
  if (!document.body) return;
  if (!fixed_viewport) fixed_init();
  var el;
  for (var i= 0; i<document.all.length; i++) {
    el= document.all[i];
    if (!el.fixed_bound) {
      el.fixed_bound= true;
      fixed_bind(el);
  } }
}

var fixed_scanner;
function fixed_stop() {
  window.clearInterval(fixed_scanner);
  fixed_scan();
}

fixed_scan();
fixed_scanner= window.setInterval(fixed_scan, fixed_SCANDELAY);
window.attachEvent('onload', fixed_stop);
window.attachEvent('onresize', fixed_delayout);
window.attachEvent('onscroll', fixed_scroll);

@end @*/
\ No newline at end of file
Binary file jssst2011/ui/graphic_support/help.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jssst2011/ui/graphic_support/iepngfix.htc	Sun Sep 25 03:42:16 2011 +0900
@@ -0,0 +1,42 @@
+<public:component>
+<public:attach event="onpropertychange" onevent="doFix()" />
+
+<script>
+
+// IE5.5+ PNG Alpha Fix v1.0 by Angus Turnbull http://www.twinhelix.com
+// Free usage permitted as long as this notice remains intact.
+
+// This must be a path to a blank image. That's all the configuration you need here.
+var blankImg = 'ui/graphic_support/blank.gif';
+
+var f = 'DXImageTransform.Microsoft.AlphaImageLoader';
+
+function filt(s, m) {
+ if (filters[f]) {
+  filters[f].enabled = s ? true : false;
+  if (s) with (filters[f]) { src = s; sizingMethod = m }
+ } else if (s) style.filter = 'progid:'+f+'(src="'+s+'",sizingMethod="'+m+'")';
+}
+
+function doFix() {
+ if ((parseFloat(navigator.userAgent.match(/MSIE (\S+)/)[1]) < 5.5) ||
+  (event && !/(background|src)/.test(event.propertyName))) return;
+
+ if (tagName == 'IMG') {
+  if ((/\.png$/i).test(src)) {
+   filt(src, 'image');  // was 'scale'
+   src = blankImg;
+  } else if (src.indexOf(blankImg) < 0) filt();
+ } else if (style.backgroundImage) {
+  if (style.backgroundImage.match(/^url[("']+(.*\.png)[)"']+$/i)) {
+   var s = RegExp.$1;
+   style.backgroundImage = '';
+   filt(s, 'crop');
+  } else filt();
+ }
+}
+
+doFix();
+
+</script>
+</public:component>
\ No newline at end of file
Binary file jssst2011/ui/graphic_support/numeric.png has changed
Binary file jssst2011/ui/graphic_support/progress.gif has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jssst2011/ui/s5-notes.html	Sun Sep 25 03:42:16 2011 +0900
@@ -0,0 +1,157 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!--  Do not edit this document! The system will likely break if you do. -->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>Notes</title>
+<style type="text/css" media="all">
+body {
+	margin: 0;
+	padding: 1.0em;
+	background: #333; 
+	color: #FFF;
+	font: 2em/1.4em 'Lucida Grande', Verdana, sans-serif;
+}
+div.timers {
+	background: #FFF;
+	color: #333;
+	border: 0.08em solid #222;
+	border-top-width: 1px;
+	border-left-width: 1px;
+	float: left;
+	padding: 0.2em;
+	margin: 0 0 0.5em;
+	position: relative;
+}
+div.timers h1 {
+	text-align: left;
+	font-size: 0.6em;
+	line-height: 1.4em;
+	background-color: #FF9;
+	padding: 0 0.75em;
+	margin: 0.25em 0 0;
+	border: 1px solid #EE8;
+}
+div.timers div.controls {
+	position: absolute;
+	right: 0.25em;
+	top: 0.1em;
+	line-height: 1em;
+}
+div.timers h1 a {
+	text-decoration: none;
+	color: #000;
+}
+div.timers div.controls a {
+	font-size: 0.5em;
+	padding: 0;
+	color: #330;
+}
+div.timers a.control {
+	position: absolute;
+	text-decoration: none;
+	padding: 0 0.25em;
+	color: #AAA;
+	outline: 0;
+}
+a.headctrl {
+	outline: none;
+	text-decoration: none;
+	font-weight: bold;
+}
+#minus {left: 0.25em;}
+#plus {right: 0.25em;}
+.overtime {
+	background: yellow;
+	color: red;
+	border: 3px solid;
+	padding: 0.1em 0.25em;
+	font-weight: bold;
+}
+div.timers h2 {
+	font-size: 0.6em;
+	line-height: 1.0em;
+	font-weight: normal;
+	margin: 0 0 -0.25em;
+	padding-top: 0.5em;
+	color: #666;
+}
+div.timers p {margin: 0; padding: 0 0.5em;}
+div.timers form {margin: 0;}
+div.timers span.clock {font-family: monospace;}
+div.timers ul {margin: 0; padding: 0; list-style: none;}
+div.timers li {float: left; width: 5em; margin: 0; padding: 0 0.5em; text-align: center;}
+div#elapsed {width: 12.1em;}
+div#remaining {clear: left; width: 12.1em;}
+div#remaining p {text-align: center;}
+#slide, #next, #notes, #nextnotes {
+	font-size: 0.75em;
+	line-height: 1.4em;
+	clear: left;
+/*	max-width: 30.0em; */
+	text-shadow: 0.1em 0.1em 0.1em #111;
+}
+#next {margin-top: 2.5em;}
+#next, #nextnotes {color: #999; font-size: 0.66em;}
+em.disclaimer {color: #666;}
+div.collapsed h1 {display: block; font-size: 0.33em;}
+div.collapsed h1 a {display: inline;}
+div.collapsed * {display: none;}
+</style>
+<script type="text/javascript">
+// <![CDATA[
+	document.onkeyup = opener.keys;
+	document.onkeypress = opener.trap;
+	document.onclick = opener.clicker;
+// ]]>
+</script>
+</head>
+
+<body onload="opener.s5NotesWindowLoaded=true;" onunload="opener.s5NotesWindowLoaded=false;">
+
+
+<div class="timers" id="elapsed">
+<h1>
+<a href="#" onclick="opener.minimizeTimer('elapsed'); return false;">Elapsed Time</a>
+</h1>
+<ul>
+<li>
+<h2>Presentation</h2>
+<span class="clock" id="elapsed-presentation">00:00:00</span>
+</li>
+<li>
+<h2>Current Slide</h2>
+<span class="clock" id="elapsed-slide">00:00:00</span>
+</li>
+</ul>
+<div class="controls">
+<a href="#reset-elapsed" class="headctrl" onclick="opener.resetElapsedTime(); return false;" title="Reset Elapsed Time">|&lt;</a>
+</div>
+</div>
+
+<div class="timers" id="remaining">
+<h1>
+<a href="#" onclick="opener.minimizeTimer('remaining'); return false;">Remaining Time</a>
+</h1>
+<p>
+<a href="#subtract-remaining" class="control" id="minus" onclick="opener.alterRemainingTime('-5'); return false;" title="Subtract 5 Minutes">-</a>
+<span class="clock" id="timeLeft">00:00:00</span>
+<a href="#add-remaining" class="control" id="plus" onclick="opener.alterRemainingTime('5'); return false;" title="Add 5 Minutes">+</a>
+</p>
+<div class="controls">
+<form action="#" onsubmit="opener.resetRemainingTime(); return false;">
+<input type="text" class="text" id="startFrom" value="0" size="4" maxlength="4" />
+<a href="#toggle-remaining" class="headctrl" onclick="opener.toggleRemainingTime(); return false;" title="Pause/Run Remaining Time">||</a>
+<a href="#reset-remaining" class="headctrl" onclick="opener.resetRemainingTime(); return false;" title="Reset Remaining Time">|&lt;</a>
+</form>
+</div>
+</div>
+
+<h2 id="slide">...</h2>
+<div id="notes"></div>
+
+<h2 id="next">...</h2>
+<div id="nextnotes"></div>
+
+</body>
+</html>