[Tux4kids-commits] r1370 - in branches/commonification/tuxtype/trunk: . data data/images data/images/status data/menus src

Bolesław Kulbabiński bolekk-guest at alioth.debian.org
Wed Aug 5 16:42:16 UTC 2009


Author: bolekk-guest
Date: 2009-08-05 16:42:16 +0000 (Wed, 05 Aug 2009)
New Revision: 1370

Added:
   branches/commonification/tuxtype/trunk/data/images/status/left.png
   branches/commonification/tuxtype/trunk/data/images/status/left.svg
   branches/commonification/tuxtype/trunk/data/images/status/left_gray.png
   branches/commonification/tuxtype/trunk/data/images/status/left_gray.svg
   branches/commonification/tuxtype/trunk/data/images/status/right.png
   branches/commonification/tuxtype/trunk/data/images/status/right.svg
   branches/commonification/tuxtype/trunk/data/images/status/right_gray.png
   branches/commonification/tuxtype/trunk/data/images/status/right_gray.svg
   branches/commonification/tuxtype/trunk/data/images/status/stop.png
   branches/commonification/tuxtype/trunk/data/images/status/stop.svg
   branches/commonification/tuxtype/trunk/data/images/tux.svg
   branches/commonification/tuxtype/trunk/data/images/tux4.png
   branches/commonification/tuxtype/trunk/data/images/tux5.png
   branches/commonification/tuxtype/trunk/data/images/tux6.png
   branches/commonification/tuxtype/trunk/src/menu.c
   branches/commonification/tuxtype/trunk/src/menu.h
Modified:
   branches/commonification/tuxtype/trunk/configure.ac
   branches/commonification/tuxtype/trunk/data/Makefile.am
   branches/commonification/tuxtype/trunk/data/images/Makefile.am
   branches/commonification/tuxtype/trunk/data/images/status/Makefile.am
   branches/commonification/tuxtype/trunk/data/menus/
   branches/commonification/tuxtype/trunk/src/Makefile.am
   branches/commonification/tuxtype/trunk/src/SDL_extras.c
   branches/commonification/tuxtype/trunk/src/SDL_extras.h
   branches/commonification/tuxtype/trunk/src/alphabet.c
   branches/commonification/tuxtype/trunk/src/convert_utf.c
   branches/commonification/tuxtype/trunk/src/globals.h
   branches/commonification/tuxtype/trunk/src/laser.c
   branches/commonification/tuxtype/trunk/src/loaders.c
   branches/commonification/tuxtype/trunk/src/main.c
   branches/commonification/tuxtype/trunk/src/playgame.c
   branches/commonification/tuxtype/trunk/src/practice.c
   branches/commonification/tuxtype/trunk/src/scripting.c
   branches/commonification/tuxtype/trunk/src/setup.c
   branches/commonification/tuxtype/trunk/src/titlescreen.c
   branches/commonification/tuxtype/trunk/src/titlescreen.h
Log:
new menu code working with TuxType

Modified: branches/commonification/tuxtype/trunk/configure.ac
===================================================================
--- branches/commonification/tuxtype/trunk/configure.ac	2009-08-05 16:23:53 UTC (rev 1369)
+++ branches/commonification/tuxtype/trunk/configure.ac	2009-08-05 16:42:16 UTC (rev 1370)
@@ -287,6 +287,7 @@
 data/images/menu/Makefile
 data/images/status/Makefile
 data/images/tux/Makefile
+data/menus/Makefile
 data/scripts/Makefile
 data/sounds/Makefile
 data/themes/Makefile

Modified: branches/commonification/tuxtype/trunk/data/Makefile.am
===================================================================
--- branches/commonification/tuxtype/trunk/data/Makefile.am	2009-08-05 16:23:53 UTC (rev 1369)
+++ branches/commonification/tuxtype/trunk/data/Makefile.am	2009-08-05 16:42:16 UTC (rev 1370)
@@ -1,7 +1,7 @@
 ## Makefile.am for tuxtype - data:
 ## Process with Automake to create Makefile.in
 
-SUBDIRS = images scripts sounds themes words fonts
+SUBDIRS = images menus scripts sounds themes words fonts
 
 ##tuxtypedatadir = $(pkgdatadir)
 

Modified: branches/commonification/tuxtype/trunk/data/images/Makefile.am
===================================================================
--- branches/commonification/tuxtype/trunk/data/images/Makefile.am	2009-08-05 16:23:53 UTC (rev 1369)
+++ branches/commonification/tuxtype/trunk/data/images/Makefile.am	2009-08-05 16:42:16 UTC (rev 1370)
@@ -63,5 +63,9 @@
   tux1.png \
   tux2.png \
   tux3.png \
+  tux4.png \
+  tux5.png \
+  tux6.png \
+  tux.svg \
   up.png \
   world.png

Modified: branches/commonification/tuxtype/trunk/data/images/status/Makefile.am
===================================================================
--- branches/commonification/tuxtype/trunk/data/images/status/Makefile.am	2009-08-05 16:23:53 UTC (rev 1369)
+++ branches/commonification/tuxtype/trunk/data/images/status/Makefile.am	2009-08-05 16:42:16 UTC (rev 1370)
@@ -6,6 +6,16 @@
 dist_images_status_DATA = gameover.png \
   numbers.png \
   score.png \
+  stop.png \
+  stop.svg \
+  right.png \
+  right.svg \
+  right_gray.png \
+  right_gray.svg \
+  left.png \
+  left.svg \
+  left_gray.png \
+  left_gray.svg \
   tux_helmet1.png \
   tux_helmet2.png \
   tux_helmet3.png \

Added: branches/commonification/tuxtype/trunk/data/images/status/left.png
===================================================================
(Binary files differ)


Property changes on: branches/commonification/tuxtype/trunk/data/images/status/left.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: branches/commonification/tuxtype/trunk/data/images/status/left.svg
===================================================================
--- branches/commonification/tuxtype/trunk/data/images/status/left.svg	                        (rev 0)
+++ branches/commonification/tuxtype/trunk/data/images/status/left.svg	2009-08-05 16:42:16 UTC (rev 1370)
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="284.74118"
+   height="284.74118"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="left.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   style="display:inline">
+  <defs
+     id="defs4">
+    <linearGradient
+       id="linearGradient3225">
+      <stop
+         style="stop-color:#0000ff;stop-opacity:1;"
+         offset="0"
+         id="stop3227" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="1"
+         id="stop3229" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective10" />
+    <inkscape:perspective
+       id="perspective2447"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3225"
+       id="linearGradient3231"
+       x1="196.97975"
+       y1="343.23511"
+       x2="196.97975"
+       y2="71.504059"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3225"
+       id="linearGradient3253"
+       gradientUnits="userSpaceOnUse"
+       x1="196.97975"
+       y1="343.23511"
+       x2="196.97975"
+       y2="71.504059" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3225"
+       id="linearGradient3257"
+       gradientUnits="userSpaceOnUse"
+       x1="196.97975"
+       y1="343.23511"
+       x2="196.97975"
+       y2="206.8645" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.2398693"
+     inkscape:cx="78.832708"
+     inkscape:cy="156.3241"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer2"
+     showgrid="false"
+     inkscape:window-width="1272"
+     inkscape:window-height="736"
+     inkscape:window-x="0"
+     inkscape:window-y="40" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="blue"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-53.599009,-65.504064)"
+     style="display:inline">
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:url(#linearGradient3231);fill-opacity:1;fill-rule:nonzero;stroke:#000090;stroke-width:12;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:1.89999998;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path2453"
+       sodipodi:cx="196.97975"
+       sodipodi:cy="206.8645"
+       sodipodi:rx="136.37059"
+       sodipodi:ry="136.37059"
+       d="M 333.35034,206.8645 A 136.37059,136.37059 0 1 1 60.609161,206.8645 A 136.37059,136.37059 0 1 1 333.35034,206.8645 z"
+       transform="translate(-1.0101525,1.0101525)" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:url(#linearGradient3253);fill-opacity:1;fill-rule:nonzero;stroke:#1f1f8b;stroke-width:12;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:1.89999998;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path3251"
+       sodipodi:cx="196.97975"
+       sodipodi:cy="206.8645"
+       sodipodi:rx="136.37059"
+       sodipodi:ry="136.37059"
+       d="M 333.35034,206.8645 A 136.37059,136.37059 0 1 1 60.609161,206.8645 A 136.37059,136.37059 0 1 1 333.35034,206.8645 z"
+       transform="translate(-1.0101524,1.0101523)" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="left"
+     style="display:inline">
+    <path
+       style="fill:#fffffb;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.00000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 51,139.64622 C 51,139.64622 126.40449,58.436559 132.62618,52.830749 C 138.47038,47.565068 147.58301,51.733979 152.73697,56.379669 C 157.89094,61.025369 165.94398,74.526209 159.8349,81.222129 C 154.01971,87.595949 118.79264,122.41669 118.79264,122.41669 C 118.79264,122.41669 208.55851,123.83303 218.88827,123.44689 C 229.88495,123.03582 233.60523,135.15193 233.18016,141.55382 C 232.75511,147.95569 232.71767,161.28884 218.52594,162.33227 C 203.66986,163.42453 119.61331,161.66439 119.61331,161.66439 C 119.61331,161.66439 156.50244,203.17343 161.22743,208.67779 C 166.22421,214.49878 160.33797,224.49415 155.10295,227.91094 C 149.86794,231.32774 139.85442,237.74171 132.62618,230.27688 C 125.71307,223.1375 51,139.64622 51,139.64622 z"
+       id="path3235"
+       sodipodi:nodetypes="czzzczzzczzzc" />
+  </g>
+</svg>

Added: branches/commonification/tuxtype/trunk/data/images/status/left_gray.png
===================================================================
(Binary files differ)


Property changes on: branches/commonification/tuxtype/trunk/data/images/status/left_gray.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: branches/commonification/tuxtype/trunk/data/images/status/left_gray.svg
===================================================================
--- branches/commonification/tuxtype/trunk/data/images/status/left_gray.svg	                        (rev 0)
+++ branches/commonification/tuxtype/trunk/data/images/status/left_gray.svg	2009-08-05 16:42:16 UTC (rev 1370)
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="284.74118"
+   height="284.74118"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="left_gray.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   style="display:inline">
+  <defs
+     id="defs4">
+    <linearGradient
+       id="linearGradient3225">
+      <stop
+         style="stop-color:#343430;stop-opacity:1;"
+         offset="0"
+         id="stop3227" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="1"
+         id="stop3229" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective10" />
+    <inkscape:perspective
+       id="perspective2447"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3225"
+       id="linearGradient3231"
+       x1="196.97975"
+       y1="343.23511"
+       x2="196.97975"
+       y2="71.504059"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3225"
+       id="linearGradient3253"
+       gradientUnits="userSpaceOnUse"
+       x1="196.97975"
+       y1="343.23511"
+       x2="196.97975"
+       y2="71.504059" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3225"
+       id="linearGradient3257"
+       gradientUnits="userSpaceOnUse"
+       x1="196.97975"
+       y1="343.23511"
+       x2="196.97975"
+       y2="206.8645" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.2398693"
+     inkscape:cx="197.79686"
+     inkscape:cy="156.3241"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer2"
+     showgrid="false"
+     inkscape:window-width="1272"
+     inkscape:window-height="736"
+     inkscape:window-x="0"
+     inkscape:window-y="40" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="gray"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-53.599009,-65.504064)"
+     style="display:inline">
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:url(#linearGradient3231);fill-opacity:1;fill-rule:nonzero;stroke:#000090;stroke-width:12;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:1.89999998;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path2453"
+       sodipodi:cx="196.97975"
+       sodipodi:cy="206.8645"
+       sodipodi:rx="136.37059"
+       sodipodi:ry="136.37059"
+       d="M 333.35034,206.8645 A 136.37059,136.37059 0 1 1 60.609161,206.8645 A 136.37059,136.37059 0 1 1 333.35034,206.8645 z"
+       transform="translate(-1.0101525,1.0101525)" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:url(#linearGradient3253);fill-opacity:1;fill-rule:nonzero;stroke:#1f1f1d;stroke-width:12;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:1.89999998;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path3251"
+       sodipodi:cx="196.97975"
+       sodipodi:cy="206.8645"
+       sodipodi:rx="136.37059"
+       sodipodi:ry="136.37059"
+       d="M 333.35034,206.8645 A 136.37059,136.37059 0 1 1 60.609161,206.8645 A 136.37059,136.37059 0 1 1 333.35034,206.8645 z"
+       transform="translate(-1.0101524,1.0101523)" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="left"
+     style="display:inline">
+    <path
+       style="fill:#fffffb;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.00000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 51,139.64622 C 51,139.64622 126.40449,58.436559 132.62618,52.830749 C 138.47038,47.565068 147.58301,51.733979 152.73697,56.379669 C 157.89094,61.025369 165.94398,74.526209 159.8349,81.222129 C 154.01971,87.595949 118.79264,122.41669 118.79264,122.41669 C 118.79264,122.41669 208.55851,123.83303 218.88827,123.44689 C 229.88495,123.03582 233.60523,135.15193 233.18016,141.55382 C 232.75511,147.95569 232.71767,161.28884 218.52594,162.33227 C 203.66986,163.42453 119.61331,161.66439 119.61331,161.66439 C 119.61331,161.66439 156.50244,203.17343 161.22743,208.67779 C 166.22421,214.49878 160.33797,224.49415 155.10295,227.91094 C 149.86794,231.32774 139.85442,237.74171 132.62618,230.27688 C 125.71307,223.1375 51,139.64622 51,139.64622 z"
+       id="path3235"
+       sodipodi:nodetypes="czzzczzzczzzc" />
+  </g>
+</svg>

Added: branches/commonification/tuxtype/trunk/data/images/status/right.png
===================================================================
(Binary files differ)


Property changes on: branches/commonification/tuxtype/trunk/data/images/status/right.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: branches/commonification/tuxtype/trunk/data/images/status/right.svg
===================================================================
--- branches/commonification/tuxtype/trunk/data/images/status/right.svg	                        (rev 0)
+++ branches/commonification/tuxtype/trunk/data/images/status/right.svg	2009-08-05 16:42:16 UTC (rev 1370)
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="284.74118"
+   height="284.74118"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="right.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   style="display:inline">
+  <defs
+     id="defs4">
+    <linearGradient
+       id="linearGradient3225">
+      <stop
+         style="stop-color:#0000ff;stop-opacity:1;"
+         offset="0"
+         id="stop3227" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="1"
+         id="stop3229" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective10" />
+    <inkscape:perspective
+       id="perspective2447"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3225"
+       id="linearGradient3231"
+       x1="196.97975"
+       y1="343.23511"
+       x2="196.97975"
+       y2="71.504059"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3225"
+       id="linearGradient3253"
+       gradientUnits="userSpaceOnUse"
+       x1="196.97975"
+       y1="343.23511"
+       x2="196.97975"
+       y2="71.504059" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3225"
+       id="linearGradient3257"
+       gradientUnits="userSpaceOnUse"
+       x1="196.97975"
+       y1="343.23511"
+       x2="196.97975"
+       y2="206.8645" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.2398693"
+     inkscape:cx="78.832708"
+     inkscape:cy="156.3241"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer3"
+     showgrid="false"
+     inkscape:window-width="1272"
+     inkscape:window-height="736"
+     inkscape:window-x="0"
+     inkscape:window-y="40" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="blue"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-53.599009,-65.504064)"
+     style="display:inline">
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:url(#linearGradient3231);fill-opacity:1;fill-rule:nonzero;stroke:#000090;stroke-width:12;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:1.89999998;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path2453"
+       sodipodi:cx="196.97975"
+       sodipodi:cy="206.8645"
+       sodipodi:rx="136.37059"
+       sodipodi:ry="136.37059"
+       d="M 333.35034,206.8645 A 136.37059,136.37059 0 1 1 60.609161,206.8645 A 136.37059,136.37059 0 1 1 333.35034,206.8645 z"
+       transform="translate(-1.0101525,1.0101525)" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:url(#linearGradient3253);fill-opacity:1;fill-rule:nonzero;stroke:#1f1f8b;stroke-width:12;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:1.89999998;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path3251"
+       sodipodi:cx="196.97975"
+       sodipodi:cy="206.8645"
+       sodipodi:rx="136.37059"
+       sodipodi:ry="136.37059"
+       d="M 333.35034,206.8645 A 136.37059,136.37059 0 1 1 60.609161,206.8645 A 136.37059,136.37059 0 1 1 333.35034,206.8645 z"
+       transform="translate(-1.0101524,1.0101523)" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer3"
+     inkscape:label="right"
+     style="display:inline">
+    <path
+       style="fill:#fffffb;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.00000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 233.21244,139.64623 C 233.21244,139.64623 157.80795,58.436564 151.58626,52.830754 C 145.74206,47.565073 136.62943,51.733984 131.47547,56.379674 C 126.3215,61.025374 118.26846,74.526214 124.37754,81.222134 C 130.19273,87.595954 165.4198,122.4167 165.4198,122.4167 C 165.4198,122.4167 75.65393,123.83304 65.32417,123.4469 C 54.32749,123.03583 50.60721,135.15194 51.03228,141.55383 C 51.45733,147.9557 51.49477,161.28884 65.6865,162.33227 C 80.54258,163.42453 164.59913,161.66439 164.59913,161.66439 C 164.59913,161.66439 127.71,203.17343 122.98501,208.67779 C 117.98823,214.49878 123.87447,224.49415 129.10949,227.91094 C 134.3445,231.32774 144.35802,237.74171 151.58626,230.27688 C 158.49937,223.1375 233.21244,139.64623 233.21244,139.64623 z"
+       id="path3248"
+       sodipodi:nodetypes="czzzczzzczzzc" />
+  </g>
+</svg>

Added: branches/commonification/tuxtype/trunk/data/images/status/right_gray.png
===================================================================
(Binary files differ)


Property changes on: branches/commonification/tuxtype/trunk/data/images/status/right_gray.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: branches/commonification/tuxtype/trunk/data/images/status/right_gray.svg
===================================================================
--- branches/commonification/tuxtype/trunk/data/images/status/right_gray.svg	                        (rev 0)
+++ branches/commonification/tuxtype/trunk/data/images/status/right_gray.svg	2009-08-05 16:42:16 UTC (rev 1370)
@@ -0,0 +1,136 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="284.74118"
+   height="284.74118"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="right_gray.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   style="display:inline">
+  <defs
+     id="defs4">
+    <linearGradient
+       id="linearGradient3225">
+      <stop
+         style="stop-color:#343430;stop-opacity:1;"
+         offset="0"
+         id="stop3227" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="1"
+         id="stop3229" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective10" />
+    <inkscape:perspective
+       id="perspective2447"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3225"
+       id="linearGradient3231"
+       x1="196.97975"
+       y1="343.23511"
+       x2="196.97975"
+       y2="71.504059"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3225"
+       id="linearGradient3253"
+       gradientUnits="userSpaceOnUse"
+       x1="196.97975"
+       y1="343.23511"
+       x2="196.97975"
+       y2="71.504059" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.2398693"
+     inkscape:cx="197.79686"
+     inkscape:cy="156.3241"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer3"
+     showgrid="false"
+     inkscape:window-width="1272"
+     inkscape:window-height="736"
+     inkscape:window-x="0"
+     inkscape:window-y="40" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="gray"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-53.599009,-65.504064)"
+     style="display:inline">
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:url(#linearGradient3231);fill-opacity:1;fill-rule:nonzero;stroke:#000090;stroke-width:12;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:1.89999998;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path2453"
+       sodipodi:cx="196.97975"
+       sodipodi:cy="206.8645"
+       sodipodi:rx="136.37059"
+       sodipodi:ry="136.37059"
+       d="M 333.35034,206.8645 A 136.37059,136.37059 0 1 1 60.609161,206.8645 A 136.37059,136.37059 0 1 1 333.35034,206.8645 z"
+       transform="translate(-1.0101525,1.0101525)" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:url(#linearGradient3253);fill-opacity:1;fill-rule:nonzero;stroke:#1f1f1d;stroke-width:12;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:1.89999998;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path3251"
+       sodipodi:cx="196.97975"
+       sodipodi:cy="206.8645"
+       sodipodi:rx="136.37059"
+       sodipodi:ry="136.37059"
+       d="M 333.35034,206.8645 A 136.37059,136.37059 0 1 1 60.609161,206.8645 A 136.37059,136.37059 0 1 1 333.35034,206.8645 z"
+       transform="translate(-1.0101524,1.0101523)" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer3"
+     inkscape:label="right"
+     style="display:inline">
+    <path
+       style="fill:#fffffb;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.00000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 233.21244,139.64623 C 233.21244,139.64623 157.80795,58.436564 151.58626,52.830754 C 145.74206,47.565073 136.62943,51.733984 131.47547,56.379674 C 126.3215,61.025374 118.26846,74.526214 124.37754,81.222134 C 130.19273,87.595954 165.4198,122.4167 165.4198,122.4167 C 165.4198,122.4167 75.65393,123.83304 65.32417,123.4469 C 54.32749,123.03583 50.60721,135.15194 51.03228,141.55383 C 51.45733,147.9557 51.49477,161.28884 65.6865,162.33227 C 80.54258,163.42453 164.59913,161.66439 164.59913,161.66439 C 164.59913,161.66439 127.71,203.17343 122.98501,208.67779 C 117.98823,214.49878 123.87447,224.49415 129.10949,227.91094 C 134.3445,231.32774 144.35802,237.74171 151.58626,230.27688 C 158.49937,223.1375 233.21244,139.64623 233.21244,139.64623 z"
+       id="path3248"
+       sodipodi:nodetypes="czzzczzzczzzc" />
+  </g>
+</svg>

Added: branches/commonification/tuxtype/trunk/data/images/status/stop.png
===================================================================
(Binary files differ)


Property changes on: branches/commonification/tuxtype/trunk/data/images/status/stop.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: branches/commonification/tuxtype/trunk/data/images/status/stop.svg
===================================================================
--- branches/commonification/tuxtype/trunk/data/images/status/stop.svg	                        (rev 0)
+++ branches/commonification/tuxtype/trunk/data/images/status/stop.svg	2009-08-05 16:42:16 UTC (rev 1370)
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="259.45691"
+   height="259.45691"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="stop.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4">
+    <linearGradient
+       id="linearGradient3225">
+      <stop
+         style="stop-color:#b80000;stop-opacity:1;"
+         offset="0"
+         id="stop3227" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="1"
+         id="stop3229" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective10" />
+    <inkscape:perspective
+       id="perspective2447"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3225"
+       id="linearGradient3284"
+       x1="149.50258"
+       y1="318.41022"
+       x2="149.50258"
+       y2="58.953316"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.35358141"
+     inkscape:cx="378.77863"
+     inkscape:cy="581.22201"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1272"
+     inkscape:window-height="736"
+     inkscape:window-x="0"
+     inkscape:window-y="40" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-19.774132,-58.953316)">
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:url(#linearGradient3284);fill-opacity:1;fill-rule:nonzero;stroke:#d10000;stroke-width:15;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path2453"
+       sodipodi:cx="149.50258"
+       sodipodi:cy="188.68176"
+       sodipodi:rx="122.22845"
+       sodipodi:ry="122.22845"
+       d="M 271.73103,188.68176 A 122.22845,122.22845 0 1 1 27.274132,188.68176 A 122.22845,122.22845 0 1 1 271.73103,188.68176 z" />
+    <path
+       style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:1.89999998;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 92.57437,106.81218 L 65.499446,133.91626 L 121.42709,189.84391 L 65.499446,245.77156 L 92.57437,272.87564 L 148.50202,216.91884 L 204.4588,272.87564 L 231.53373,245.77156 L 175.60609,189.84391 L 231.53373,133.91626 L 204.4588,106.81218 L 148.50202,162.76898 L 92.57437,106.81218 z"
+       id="rect3277" />
+  </g>
+</svg>

Added: branches/commonification/tuxtype/trunk/data/images/tux.svg
===================================================================
--- branches/commonification/tuxtype/trunk/data/images/tux.svg	                        (rev 0)
+++ branches/commonification/tuxtype/trunk/data/images/tux.svg	2009-08-05 16:42:16 UTC (rev 1370)
@@ -0,0 +1,3711 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg:svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="578.12531"
+   height="688.40863"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="tux.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.0"
+   style="display:inline">
+  <desc>7 frames</desc>
+  <svg:metadata
+     id="metadata94">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </svg:metadata>
+  <sodipodi:namedview
+     inkscape:window-height="736"
+     inkscape:window-width="1272"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     showgrid="false"
+     inkscape:zoom="0.52164325"
+     inkscape:cx="194.03879"
+     inkscape:cy="347.37808"
+     inkscape:window-x="0"
+     inkscape:window-y="40"
+     inkscape:current-layer="svg2" />
+  <svg:defs
+     id="defs4">
+    <svg:linearGradient
+       inkscape:collect="always"
+       id="linearGradient3401">
+      <svg:stop
+         style="stop-color:#cf0000;stop-opacity:1;"
+         offset="0"
+         id="stop3403" />
+      <svg:stop
+         style="stop-color:#cf0000;stop-opacity:0;"
+         offset="1"
+         id="stop3405" />
+    </svg:linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 375 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="625 : 375 : 1"
+       inkscape:persp3d-origin="312.5 : 250 : 1"
+       id="perspective96" />
+    <svg:linearGradient
+       id="linearGradient172">
+      <svg:stop
+         style="stop-color: rgb(63, 38, 0); stop-opacity: 0.6;"
+         offset="0"
+         id="stop173" />
+      <svg:stop
+         style="stop-color: rgb(63, 38, 0); stop-opacity: 0;"
+         offset="1"
+         id="stop174" />
+    </svg:linearGradient>
+    <svg:linearGradient
+       id="linearGradient167">
+      <svg:stop
+         style="stop-color: rgb(255, 255, 255); stop-opacity: 0.65;"
+         offset="0"
+         id="stop168" />
+      <svg:stop
+         style="stop-color: rgb(255, 255, 255); stop-opacity: 0;"
+         offset="1"
+         id="stop169" />
+    </svg:linearGradient>
+    <svg:linearGradient
+       id="linearGradient162">
+      <svg:stop
+         style="stop-color: rgb(255, 166, 63); stop-opacity: 1;"
+         offset="0"
+         id="stop163" />
+      <svg:stop
+         style="stop-color: rgb(255, 255, 0); stop-opacity: 1;"
+         offset="1"
+         id="stop164" />
+    </svg:linearGradient>
+    <svg:linearGradient
+       id="linearGradient153">
+      <svg:stop
+         style="stop-color: rgb(255, 238, 215); stop-opacity: 1;"
+         offset="0"
+         id="stop154" />
+      <svg:stop
+         style="stop-color: rgb(189, 191, 194); stop-opacity: 1;"
+         offset="1"
+         id="stop155" />
+    </svg:linearGradient>
+    <svg:linearGradient
+       id="linearGradient138">
+      <svg:stop
+         style="stop-color: rgb(255, 255, 255); stop-opacity: 0.8;"
+         offset="0"
+         id="stop139" />
+      <svg:stop
+         style="stop-color: rgb(255, 255, 255); stop-opacity: 0;"
+         offset="1"
+         id="stop140" />
+    </svg:linearGradient>
+    <svg:linearGradient
+       xlink:href="#linearGradient138"
+       id="linearGradient141"
+       x1="0.47424799"
+       y1="0.020191999"
+       x2="0.417539"
+       y2="0.90125799"
+       gradientUnits="objectBoundingBox" />
+    <svg:linearGradient
+       xlink:href="#linearGradient167"
+       id="linearGradient142"
+       x1="0.55880702"
+       y1="0.031192999"
+       x2="0.553922"
+       y2="0.94531101"
+       gradientUnits="objectBoundingBox" />
+    <svg:linearGradient
+       xlink:href="#linearGradient167"
+       id="linearGradient143"
+       x1="0.46557701"
+       y1="0.028819799"
+       x2="0.41365999"
+       y2="0.93366498"
+       gradientUnits="objectBoundingBox" />
+    <svg:linearGradient
+       xlink:href="#linearGradient167"
+       id="linearGradient144"
+       x1="0.70346397"
+       y1="0.059404202"
+       x2="0.64553201"
+       y2="0.94063401"
+       gradientUnits="objectBoundingBox" />
+    <svg:linearGradient
+       xlink:href="#linearGradient167"
+       id="linearGradient145"
+       x1="0.46741399"
+       y1="-0.036155298"
+       x2="0.86741799"
+       y2="0.75857902"
+       gradientUnits="objectBoundingBox" />
+    <svg:linearGradient
+       xlink:href="#linearGradient167"
+       id="linearGradient146"
+       x1="0.57152498"
+       y1="0.023441499"
+       x2="0.57143003"
+       y2="0.71875"
+       gradientUnits="objectBoundingBox" />
+    <svg:linearGradient
+       xlink:href="#linearGradient167"
+       id="linearGradient147"
+       x1="0.5"
+       y1="0.0234362"
+       x2="0.5"
+       y2="0.8125"
+       gradientUnits="objectBoundingBox" />
+    <svg:linearGradient
+       xlink:href="#linearGradient167"
+       id="linearGradient148"
+       x1="0.50799799"
+       y1="0.37435901"
+       x2="0.51599997"
+       y2="0.92820501"
+       gradientUnits="objectBoundingBox" />
+    <svg:linearGradient
+       xlink:href="#linearGradient138"
+       id="linearGradient149"
+       x1="0.5"
+       y1="0.131707"
+       x2="0.50400001"
+       y2="0.94634098"
+       gradientUnits="objectBoundingBox" />
+    <svg:linearGradient
+       xlink:href="#linearGradient167"
+       id="linearGradient150"
+       x1="-0.30509499"
+       y1="0.099496603"
+       x2="0.156323"
+       y2="0.94191301"
+       gradientUnits="objectBoundingBox"
+       gradientTransform="matrix(-0.928523,0.283938,0.435332,0.943857,-1.91327e-7,5.49908e-8)" />
+    <svg:linearGradient
+       xlink:href="#linearGradient167"
+       id="linearGradient151"
+       x1="0.433979"
+       y1="0.022184599"
+       x2="0.487055"
+       y2="1.02569"
+       gradientUnits="objectBoundingBox" />
+    <svg:linearGradient
+       xlink:href="#linearGradient153"
+       id="linearGradient152"
+       x1="0.5"
+       y1="0.89842999"
+       x2="0.5"
+       y2="0.40625"
+       gradientUnits="objectBoundingBox"
+       spreadMethod="reflect" />
+    <svg:linearGradient
+       xlink:href="#linearGradient153"
+       id="linearGradient156"
+       x1="0.43568701"
+       y1="0.98882002"
+       x2="0.453989"
+       y2="0.23093501"
+       gradientUnits="objectBoundingBox" />
+    <svg:linearGradient
+       xlink:href="#linearGradient153"
+       id="linearGradient157"
+       x1="0.49180499"
+       y1="1.15284"
+       x2="0.49482101"
+       y2="0.41252401"
+       gradientUnits="objectBoundingBox" />
+    <svg:linearGradient
+       xlink:href="#linearGradient153"
+       id="linearGradient158"
+       x1="0.51730198"
+       y1="0.85418499"
+       x2="0.49843901"
+       y2="0.136172"
+       gradientUnits="objectBoundingBox" />
+    <svg:linearGradient
+       xlink:href="#linearGradient153"
+       id="linearGradient159"
+       x1="0.46201"
+       y1="0.87917101"
+       x2="0.49215299"
+       y2="0.096282303"
+       gradientUnits="objectBoundingBox" />
+    <svg:linearGradient
+       xlink:href="#linearGradient162"
+       id="linearGradient161"
+       x1="0.50086302"
+       y1="0.34872901"
+       x2="0.41209599"
+       y2="0.98558098"
+       gradientUnits="objectBoundingBox" />
+    <svg:linearGradient
+       xlink:href="#linearGradient162"
+       id="linearGradient165"
+       x1="0.60399801"
+       y1="0.51020199"
+       x2="0.46399999"
+       y2="0.98367399"
+       gradientUnits="objectBoundingBox" />
+    <svg:linearGradient
+       xlink:href="#linearGradient162"
+       id="linearGradient166"
+       x1="0.50000501"
+       y1="0.191616"
+       x2="0.50800002"
+       y2="0.97005898"
+       gradientUnits="objectBoundingBox" />
+    <svg:radialGradient
+       xlink:href="#linearGradient172"
+       id="radialGradient171"
+       cx="0.5"
+       cy="0.5"
+       fx="0.5"
+       fy="0.5"
+       r="0.5"
+       gradientUnits="objectBoundingBox" />
+    <svg:radialGradient
+       xlink:href="#linearGradient172"
+       id="radialGradient176" />
+    <svg:linearGradient
+       xlink:href="#linearGradient153"
+       id="linearGradient178"
+       x1="0.94027299"
+       y1="1.2934099"
+       x2="0.19452"
+       y2="-0.675295"
+       gradientUnits="objectBoundingBox" />
+    <svg:radialGradient
+       xlink:href="#linearGradient172"
+       id="radialGradient1399"
+       gradientTransform="matrix(-1.04523,0,0,0.956725,933.97302,0)"
+       cx="446.77762"
+       cy="1219.4125"
+       fx="446.77762"
+       fy="1219.4125"
+       r="195.07191"
+       gradientUnits="userSpaceOnUse" />
+    <svg:linearGradient
+       xlink:href="#linearGradient153"
+       id="linearGradient1401"
+       gradientUnits="userSpaceOnUse"
+       x1="400.57785"
+       y1="369.53015"
+       x2="400.84448"
+       y2="304.07886"
+       gradientTransform="matrix(-0.5750409,-1.7558053e-2,-4.3773889e-2,1.7376718,656.04524,10.013777)" />
+    <svg:linearGradient
+       xlink:href="#linearGradient138"
+       id="linearGradient1403"
+       gradientUnits="userSpaceOnUse"
+       x1="303.01761"
+       y1="237.93179"
+       x2="297.0856"
+       y2="330.09561"
+       gradientTransform="matrix(-1.120918,-0.1335127,6.5211182e-2,0.8998931,666.56767,39.783511)" />
+    <svg:linearGradient
+       xlink:href="#linearGradient153"
+       id="linearGradient1405"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.8110831,-9.1567187e-2,-0.1443444,1.2166192,731.20321,41.137281)"
+       x1="378.93771"
+       y1="278.60202"
+       x2="380.27319"
+       y2="243.91606" />
+    <svg:linearGradient
+       xlink:href="#linearGradient153"
+       id="linearGradient1407"
+       gradientUnits="userSpaceOnUse"
+       x1="381.38742"
+       y1="277.495"
+       x2="380.5517"
+       y2="245.68338"
+       gradientTransform="matrix(-0.8155854,5.2020847e-2,4.2900171e-2,1.2233726,644.88077,-20.554871)" />
+    <svg:linearGradient
+       xlink:href="#linearGradient167"
+       id="linearGradient1409"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.8043937,-0.1242372,-0.2368619,1.2065851,786.27753,60.266189)"
+       x1="379.09573"
+       y1="240.92712"
+       x2="376.79556"
+       y2="281.01636" />
+    <svg:linearGradient
+       xlink:href="#linearGradient167"
+       id="linearGradient1411"
+       gradientUnits="userSpaceOnUse"
+       x1="389.63535"
+       y1="242.28218"
+       x2="387.06866"
+       y2="281.32513"
+       gradientTransform="matrix(-0.7973585,-0.1653001,-0.2802781,1.1960324,963.15637,98.651849)" />
+    <svg:linearGradient
+       xlink:href="#linearGradient153"
+       id="linearGradient1413"
+       gradientUnits="userSpaceOnUse"
+       spreadMethod="reflect"
+       x1="437.57941"
+       y1="528.87177"
+       x2="437.57941"
+       y2="394.10361"
+       gradientTransform="matrix(-0.812855,0,0,1.23023,700.4774,0)" />
+    <svg:linearGradient
+       xlink:href="#linearGradient153"
+       id="linearGradient1415"
+       gradientUnits="userSpaceOnUse"
+       x1="375.17325"
+       y1="419.78485"
+       x2="377.48541"
+       y2="324.03815"
+       gradientTransform="matrix(-0.6416796,-0.1101633,-0.2250226,1.5197753,736.49555,62.823895)" />
+    <svg:linearGradient
+       xlink:href="#linearGradient138"
+       id="linearGradient1417"
+       gradientUnits="userSpaceOnUse"
+       x1="320.75104"
+       y1="498.17776"
+       x2="321.32224"
+       y2="614.50439"
+       gradientTransform="matrix(-1.0748,0,0,0.930408,696.12757,0)" />
+    <svg:linearGradient
+       xlink:href="#linearGradient167"
+       id="linearGradient1419"
+       gradientUnits="userSpaceOnUse"
+       x1="322.48257"
+       y1="435.26761"
+       x2="323.2514"
+       y2="488.48251"
+       gradientTransform="matrix(-1.077,0,0,0.928504,695.36464,0)" />
+    <svg:linearGradient
+       xlink:href="#linearGradient167"
+       id="linearGradient1421"
+       gradientUnits="userSpaceOnUse"
+       x1="411.2215"
+       y1="242.94365"
+       x2="411.2215"
+       y2="331.44858"
+       gradientTransform="matrix(-0.571707,0,0,1.74915,700.4774,0)" />
+    <svg:linearGradient
+       xlink:href="#linearGradient167"
+       id="linearGradient1423"
+       gradientUnits="userSpaceOnUse"
+       x1="867.34546"
+       y1="234.73897"
+       x2="867.33453"
+       y2="314.83911"
+       gradientTransform="matrix(-0.572667,0,0,1.74621,700.4774,0)" />
+    <svg:linearGradient
+       xlink:href="#linearGradient162"
+       id="linearGradient1425"
+       gradientUnits="userSpaceOnUse"
+       x1="236.25362"
+       y1="657.11133"
+       x2="212.5099"
+       y2="737.41229"
+       gradientTransform="matrix(-1.01151,0,0,0.988617,700.4774,0)" />
+    <svg:linearGradient
+       xlink:href="#linearGradient153"
+       id="linearGradient1427"
+       gradientUnits="userSpaceOnUse"
+       x1="381.56607"
+       y1="655.73102"
+       x2="279.64313"
+       y2="386.66583"
+       gradientTransform="matrix(-0.7491824,0.7896701,0.6402826,0.6599041,-220.12211,95.787478)" />
+    <svg:linearGradient
+       xlink:href="#linearGradient162"
+       id="linearGradient1429"
+       gradientUnits="userSpaceOnUse"
+       x1="218.11714"
+       y1="630.30475"
+       x2="203.12654"
+       y2="737.8537"
+       gradientTransform="matrix(-0.7498322,0.639263,0.7018488,0.7352751,156.71574,-56.932196)" />
+    <svg:linearGradient
+       xlink:href="#linearGradient167"
+       id="linearGradient1431"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.7277358,0.6239729,0.7668312,0.7166254,165.95866,-59.669455)"
+       x1="117.88966"
+       y1="587.23602"
+       x2="182.24524"
+       y2="704.73077" />
+    <svg:linearGradient
+       xlink:href="#linearGradient167"
+       id="linearGradient1433"
+       gradientUnits="userSpaceOnUse"
+       x1="223.10072"
+       y1="570.41809"
+       x2="230.53499"
+       y2="710.97723"
+       gradientTransform="matrix(-1.0012371,-0.1000342,3.4698038e-2,1.0022349,755.52373,37.775103)" />
+    <svg:linearGradient
+       xlink:href="#linearGradient167"
+       id="linearGradient1435"
+       gradientUnits="userSpaceOnUse"
+       x1="316.93988"
+       y1="474.01779"
+       x2="371.60889"
+       y2="582.63507"
+       gradientTransform="matrix(-0.7721298,0.7996578,0.5938314,0.680117,-497.26848,216.38995)" />
+    <svg:linearGradient
+       xlink:href="#linearGradient162"
+       id="linearGradient1437"
+       gradientUnits="userSpaceOnUse"
+       x1="284.68652"
+       y1="410.46326"
+       x2="285.45923"
+       y2="485.69934"
+       gradientTransform="matrix(-1.21868,0,0,0.820557,700.4774,0)" />
+    <svg:linearGradient
+       xlink:href="#linearGradient167"
+       id="linearGradient1439"
+       gradientUnits="userSpaceOnUse"
+       x1="288.82358"
+       y1="398.85422"
+       x2="288.37628"
+       y2="482.55939"
+       gradientTransform="matrix(-1.22194,0,0,0.81837,735.4416,0)" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2490"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7672378,0,0,0.4874752,81.614001,-12.4354)"
+       x1="288.82358"
+       y1="398.85422"
+       x2="288.37628"
+       y2="482.55939" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient2494"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.52335,0,0,1.0256962,-125.298,-231.7577)"
+       x1="284.68652"
+       y1="410.46326"
+       x2="285.45923"
+       y2="485.69934" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2497"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.3742366,0.1592528,-0.1209348,0.3223549,413.77,254.0383)"
+       x1="316.93988"
+       y1="474.01779"
+       x2="371.60889"
+       y2="582.63507" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2501"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0038118,-5.2260082e-2,-1.7408699e-2,1.0462729,-66.561,-92.718)"
+       x1="223.10072"
+       y1="570.41809"
+       x2="230.53499"
+       y2="710.97723" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2504"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9523921,0.3463987,0.4208255,0.9487298,403.576,-128.5947)"
+       x1="117.88966"
+       y1="587.23602"
+       x2="182.24524"
+       y2="704.73077" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient2507"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.1800098,0.427313,0.4706466,1.1534175,417.591,-278.0737)"
+       x1="418.28036"
+       y1="560.19635"
+       x2="558.62012"
+       y2="643.92542" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient2510"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6373885,0.2861762,-0.2248927,0.5792711,389.816,76.2113)"
+       x1="381.56607"
+       y1="655.73102"
+       x2="279.64313"
+       y2="386.66583" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient2513"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2643875,0,0,1.2357712,-125.298,-231.7577)"
+       x1="440.54126"
+       y1="602.05945"
+       x2="540.23102"
+       y2="819.25677" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2516"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7158338,0,0,2.1827625,-125.298,-231.7577)"
+       x1="867.34546"
+       y1="234.73897"
+       x2="867.33453"
+       y2="314.83911" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2519"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7146337,0,0,2.1864375,-125.298,-231.7577)"
+       x1="411.2215"
+       y1="242.94365"
+       x2="411.2215"
+       y2="331.44858" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2522"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2781836,0,0,0.990788,-100.129,-164.3307)"
+       x1="322.48257"
+       y1="435.26761"
+       x2="323.2514"
+       y2="488.48251" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient138"
+       id="linearGradient2525"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3994863,0,0,1.1399824,-140.71,-217.8097)"
+       x1="320.75104"
+       y1="498.17776"
+       x2="321.32224"
+       y2="614.50439" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient2529"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9027839,-7.217412e-2,0.1572996,2.0039544,-202.339,-230.1907)"
+       x1="375.17325"
+       y1="419.78485"
+       x2="377.48541"
+       y2="324.03815" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient2532"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0160687,0,0,1.5377875,-125.298,-232.4827)"
+       spreadMethod="reflect"
+       x1="437.57941"
+       y1="528.87177"
+       x2="437.57941"
+       y2="394.10361" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2535"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.291416,-3.3330312e-2,5.0610171e-2,0.4881128,138.582,50.7383)"
+       x1="389.63535"
+       y1="242.28218"
+       x2="387.06866"
+       y2="281.32513" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2538"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.3921823,-2.976459e-2,-5.7309879e-2,0.5824937,502.744,22.7597)"
+       x1="379.09573"
+       y1="240.92712"
+       x2="376.79556"
+       y2="281.01636" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient2543"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.4785291,4.0425338e-2,3.8863939e-2,1.9024254,896.708,-349.0297)"
+       x1="381.38742"
+       y1="277.495"
+       x2="380.5517"
+       y2="245.68338" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient2546"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0650795,-6.1672143e-2,9.4458175e-2,1.6442991,-165.99499,-241.8697)"
+       x1="378.93771"
+       y1="278.60202"
+       x2="380.27319"
+       y2="243.91606" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient138"
+       id="linearGradient2549"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4132348,-7.9650257e-2,-4.1197677e-2,1.0713843,-108.609,-190.0137)"
+       x1="303.01761"
+       y1="237.93179"
+       x2="297.0856"
+       y2="330.09561" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient2553"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9649387,-1.2915552e-2,-3.672e-2,2.5569242,862.828,-357.2697)"
+       x1="400.57785"
+       y1="369.53015"
+       x2="400.84448"
+       y2="304.07886" />
+    <svg:radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient172"
+       id="radialGradient2557"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4818226,0,0,0.3967969,-349.5464,157.9413)"
+       cx="446.77762"
+       cy="1219.4125"
+       fx="446.77762"
+       fy="1219.4125"
+       r="195.07191" />
+    <svg:radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient172"
+       id="radialGradient3401"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4818226,0,0,0.3967969,-349.5464,157.9413)"
+       cx="446.77762"
+       cy="1219.4125"
+       fx="446.77762"
+       fy="1219.4125"
+       r="195.07191" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3403"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9649387,-1.2915552e-2,-3.672e-2,2.5569242,862.828,-357.2697)"
+       x1="400.57785"
+       y1="369.53015"
+       x2="400.84448"
+       y2="304.07886" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient138"
+       id="linearGradient3405"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4132348,-7.9650257e-2,-4.1197677e-2,1.0713843,-108.609,-190.0137)"
+       x1="303.01761"
+       y1="237.93179"
+       x2="297.0856"
+       y2="330.09561" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3407"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0650795,-6.1672143e-2,9.4458175e-2,1.6442991,-165.99499,-241.8697)"
+       x1="378.93771"
+       y1="278.60202"
+       x2="380.27319"
+       y2="243.91606" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3409"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.4785291,4.0425338e-2,3.8863939e-2,1.9024254,896.708,-349.0297)"
+       x1="381.38742"
+       y1="277.495"
+       x2="380.5517"
+       y2="245.68338" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3411"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.3921823,-2.976459e-2,-5.7309879e-2,0.5824937,502.744,22.7597)"
+       x1="379.09573"
+       y1="240.92712"
+       x2="376.79556"
+       y2="281.01636" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3413"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.291416,-3.3330312e-2,5.0610171e-2,0.4881128,138.582,50.7383)"
+       x1="389.63535"
+       y1="242.28218"
+       x2="387.06866"
+       y2="281.32513" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3415"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0160687,0,0,1.5377875,-125.298,-232.4827)"
+       spreadMethod="reflect"
+       x1="437.57941"
+       y1="528.87177"
+       x2="437.57941"
+       y2="394.10361" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3417"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9027839,-7.217412e-2,0.1572996,2.0039544,-202.339,-230.1907)"
+       x1="375.17325"
+       y1="419.78485"
+       x2="377.48541"
+       y2="324.03815" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient138"
+       id="linearGradient3419"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3994863,0,0,1.1399824,-140.71,-217.8097)"
+       x1="320.75104"
+       y1="498.17776"
+       x2="321.32224"
+       y2="614.50439" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3421"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2781836,0,0,0.990788,-100.129,-164.3307)"
+       x1="322.48257"
+       y1="435.26761"
+       x2="323.2514"
+       y2="488.48251" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3423"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7146337,0,0,2.1864375,-125.298,-231.7577)"
+       x1="411.2215"
+       y1="242.94365"
+       x2="411.2215"
+       y2="331.44858" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3425"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7158338,0,0,2.1827625,-125.298,-231.7577)"
+       x1="867.34546"
+       y1="234.73897"
+       x2="867.33453"
+       y2="314.83911" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient3427"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2643875,0,0,1.2357712,-125.298,-231.7577)"
+       x1="440.54126"
+       y1="602.05945"
+       x2="540.23102"
+       y2="819.25677" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3429"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6373885,0.2861762,-0.2248927,0.5792711,389.816,76.2113)"
+       x1="381.56607"
+       y1="655.73102"
+       x2="279.64313"
+       y2="386.66583" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient3431"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.1800098,0.427313,0.4706466,1.1534175,417.591,-278.0737)"
+       x1="418.28036"
+       y1="560.19635"
+       x2="558.62012"
+       y2="643.92542" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3433"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9523921,0.3463987,0.4208255,0.9487298,403.576,-128.5947)"
+       x1="117.88966"
+       y1="587.23602"
+       x2="182.24524"
+       y2="704.73077" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3435"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0038118,-5.2260082e-2,-1.7408699e-2,1.0462729,-66.561,-92.718)"
+       x1="223.10072"
+       y1="570.41809"
+       x2="230.53499"
+       y2="710.97723" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3437"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.3742366,0.1592528,-0.1209348,0.3223549,413.77,254.0383)"
+       x1="316.93988"
+       y1="474.01779"
+       x2="371.60889"
+       y2="582.63507" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient3439"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.52335,0,0,1.0256962,-125.298,-231.7577)"
+       x1="284.68652"
+       y1="410.46326"
+       x2="285.45923"
+       y2="485.69934" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3441"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7672378,0,0,0.4874752,81.614001,-12.4354)"
+       x1="288.82358"
+       y1="398.85422"
+       x2="288.37628"
+       y2="482.55939" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2508"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7672378,0,0,0.4874752,58.176291,-43.23107)"
+       x1="288.82358"
+       y1="398.85422"
+       x2="288.37628"
+       y2="482.55939" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient2512"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.52335,0,0,1.0256962,-148.73571,-262.55337)"
+       x1="284.68652"
+       y1="410.46326"
+       x2="285.45923"
+       y2="485.69934" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2515"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.3742366,0.1592528,-0.1209348,0.3223549,390.33229,223.24263)"
+       x1="316.93988"
+       y1="474.01779"
+       x2="371.60889"
+       y2="582.63507" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2520"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0038118,-5.2260082e-2,-1.7408699e-2,1.0462729,-89.99871,-123.51367)"
+       x1="223.10072"
+       y1="570.41809"
+       x2="230.53499"
+       y2="710.97723" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2523"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9523921,0.3463987,0.4208255,0.9487298,380.13829,-159.39037)"
+       x1="117.88966"
+       y1="587.23602"
+       x2="182.24524"
+       y2="704.73077" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient2526"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.1800098,0.427313,0.4706466,1.1534175,394.15329,-308.86937)"
+       x1="418.28036"
+       y1="560.19635"
+       x2="558.62012"
+       y2="643.92542" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient2530"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6373885,0.2861762,-0.2248927,0.5792711,366.37829,45.41563)"
+       x1="381.56607"
+       y1="655.73102"
+       x2="279.64313"
+       y2="386.66583" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient2533"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2643875,0,0,1.2357712,-148.73571,-262.55337)"
+       x1="440.54126"
+       y1="602.05945"
+       x2="540.23102"
+       y2="819.25677" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2536"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7158338,0,0,2.1827625,-148.73571,-262.55337)"
+       x1="867.34546"
+       y1="234.73897"
+       x2="867.33453"
+       y2="314.83911" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2539"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7146337,0,0,2.1864375,-148.73571,-262.55337)"
+       x1="411.2215"
+       y1="242.94365"
+       x2="411.2215"
+       y2="331.44858" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2542"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2781836,0,0,0.990788,-123.56671,-195.12637)"
+       x1="322.48257"
+       y1="435.26761"
+       x2="323.2514"
+       y2="488.48251" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient138"
+       id="linearGradient2545"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3994863,0,0,1.1399824,-164.14771,-248.60537)"
+       x1="320.75104"
+       y1="498.17776"
+       x2="321.32224"
+       y2="614.50439" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient2550"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9027839,-7.217412e-2,0.1572996,2.0039544,-225.77671,-260.98637)"
+       x1="375.17325"
+       y1="419.78485"
+       x2="377.48541"
+       y2="324.03815" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient2554"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0160687,0,0,1.5377875,-148.73571,-263.27837)"
+       spreadMethod="reflect"
+       x1="437.57941"
+       y1="528.87177"
+       x2="437.57941"
+       y2="394.10361" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2557"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.291416,-3.3330312e-2,5.0610171e-2,0.4881128,115.14429,19.94263)"
+       x1="389.63535"
+       y1="242.28218"
+       x2="387.06866"
+       y2="281.32513" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2560"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.3921823,-2.976459e-2,-5.7309879e-2,0.5824937,479.30629,-8.03597)"
+       x1="379.09573"
+       y1="240.92712"
+       x2="376.79556"
+       y2="281.01636" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient2565"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.4785291,4.0425338e-2,3.8863939e-2,1.9024254,873.27029,-379.82537)"
+       x1="381.38742"
+       y1="277.495"
+       x2="380.5517"
+       y2="245.68338" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient2568"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0650795,-6.1672143e-2,9.4458175e-2,1.6442991,-189.4327,-272.66537)"
+       x1="378.93771"
+       y1="278.60202"
+       x2="380.27319"
+       y2="243.91606" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient138"
+       id="linearGradient2571"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4132348,-7.9650257e-2,-4.1197677e-2,1.0713843,-132.04671,-220.80937)"
+       x1="303.01761"
+       y1="237.93179"
+       x2="297.0856"
+       y2="330.09561" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient2575"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9649387,-1.2915552e-2,-3.672e-2,2.5569242,839.39029,-388.06537)"
+       x1="400.57785"
+       y1="369.53015"
+       x2="400.84448"
+       y2="304.07886" />
+    <svg:radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient172"
+       id="radialGradient2579"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4818226,0,0,0.3967969,-372.98411,127.14563)"
+       cx="446.77762"
+       cy="1219.4125"
+       fx="446.77762"
+       fy="1219.4125"
+       r="195.07191" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient2621"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0650795,-6.1672143e-2,9.4458175e-2,1.6442991,-189.10727,-272.03359)"
+       x1="378.93771"
+       y1="278.60202"
+       x2="380.27319"
+       y2="243.91606" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient2623"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.4785291,4.0425338e-2,3.8863939e-2,1.9024254,873.59572,-379.19359)"
+       x1="381.38742"
+       y1="277.495"
+       x2="380.5517"
+       y2="245.68338" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2625"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.3921823,-2.976459e-2,-5.7309879e-2,0.5824937,479.63172,-7.4041877)"
+       x1="379.09573"
+       y1="240.92712"
+       x2="376.79556"
+       y2="281.01636" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2627"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.291416,-3.3330312e-2,5.0610171e-2,0.4881128,115.46972,20.574413)"
+       x1="389.63535"
+       y1="242.28218"
+       x2="387.06866"
+       y2="281.32513" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient2642"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0650795,-6.1672143e-2,9.4458175e-2,1.6442991,-189.10727,-272.03359)"
+       x1="378.93771"
+       y1="278.60202"
+       x2="380.27319"
+       y2="243.91606" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient2644"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.4785291,4.0425338e-2,3.8863939e-2,1.9024254,873.59572,-379.19359)"
+       x1="381.38742"
+       y1="277.495"
+       x2="380.5517"
+       y2="245.68338" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2646"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.3921823,-2.976459e-2,-5.7309879e-2,0.5824937,479.63172,-7.4041831)"
+       x1="379.09573"
+       y1="240.92712"
+       x2="376.79556"
+       y2="281.01636" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2648"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.291416,-3.3330312e-2,5.0610171e-2,0.4881128,115.46972,20.574418)"
+       x1="389.63535"
+       y1="242.28218"
+       x2="387.06866"
+       y2="281.32513" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient2663"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0650795,-6.1672143e-2,9.4458175e-2,1.6442991,-189.10727,-272.03359)"
+       x1="378.93771"
+       y1="278.60202"
+       x2="380.27319"
+       y2="243.91606" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient2665"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.4785291,4.0425338e-2,3.8863939e-2,1.9024254,873.59572,-379.19359)"
+       x1="381.38742"
+       y1="277.495"
+       x2="380.5517"
+       y2="245.68338" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2667"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.3921823,-2.976459e-2,-5.7309879e-2,0.5824937,479.63172,-7.4041822)"
+       x1="379.09573"
+       y1="240.92712"
+       x2="376.79556"
+       y2="281.01636" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2669"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.291416,-3.3330312e-2,5.0610171e-2,0.4881128,115.46972,20.574418)"
+       x1="389.63535"
+       y1="242.28218"
+       x2="387.06866"
+       y2="281.32513" />
+    <svg:radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient172"
+       id="radialGradient2561"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4818226,0,0,0.3967969,-372.98411,127.14563)"
+       cx="446.77762"
+       cy="1219.4125"
+       fx="446.77762"
+       fy="1219.4125"
+       r="195.07191" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient2583"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9649387,-1.2915552e-2,-3.672e-2,2.5569242,839.39029,-388.06537)"
+       x1="400.57785"
+       y1="369.53015"
+       x2="400.84448"
+       y2="304.07886" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient138"
+       id="linearGradient2585"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4132348,-7.9650257e-2,-4.1197677e-2,1.0713843,-132.04671,-220.80937)"
+       x1="303.01761"
+       y1="237.93179"
+       x2="297.0856"
+       y2="330.09561" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient2587"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0160687,0,0,1.5377875,-148.73571,-263.27837)"
+       spreadMethod="reflect"
+       x1="437.57941"
+       y1="528.87177"
+       x2="437.57941"
+       y2="394.10361" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient2589"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9027839,-7.217412e-2,0.1572996,2.0039544,-225.77671,-260.98637)"
+       x1="375.17325"
+       y1="419.78485"
+       x2="377.48541"
+       y2="324.03815" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient138"
+       id="linearGradient2591"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3994863,0,0,1.1399824,-164.14771,-248.60537)"
+       x1="320.75104"
+       y1="498.17776"
+       x2="321.32224"
+       y2="614.50439" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2593"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2781836,0,0,0.990788,-123.56671,-195.12637)"
+       x1="322.48257"
+       y1="435.26761"
+       x2="323.2514"
+       y2="488.48251" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2595"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7146337,0,0,2.1864375,-148.73571,-262.55337)"
+       x1="411.2215"
+       y1="242.94365"
+       x2="411.2215"
+       y2="331.44858" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2597"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7158338,0,0,2.1827625,-148.73571,-262.55337)"
+       x1="867.34546"
+       y1="234.73897"
+       x2="867.33453"
+       y2="314.83911" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient2599"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2643875,0,0,1.2357712,-148.73571,-262.55337)"
+       x1="440.54126"
+       y1="602.05945"
+       x2="540.23102"
+       y2="819.25677" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient2601"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6373885,0.2861762,-0.2248927,0.5792711,366.37829,45.41563)"
+       x1="381.56607"
+       y1="655.73102"
+       x2="279.64313"
+       y2="386.66583" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient2603"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.1800098,0.427313,0.4706466,1.1534175,394.15329,-308.86937)"
+       x1="418.28036"
+       y1="560.19635"
+       x2="558.62012"
+       y2="643.92542" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2606"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9523921,0.3463987,0.4208255,0.9487298,380.13829,-159.39037)"
+       x1="117.88966"
+       y1="587.23602"
+       x2="182.24524"
+       y2="704.73077" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2608"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0038118,-5.2260082e-2,-1.7408699e-2,1.0462729,-89.99871,-123.51367)"
+       x1="223.10072"
+       y1="570.41809"
+       x2="230.53499"
+       y2="710.97723" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2610"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.3742366,0.1592528,-0.1209348,0.3223549,390.33229,223.24263)"
+       x1="316.93988"
+       y1="474.01779"
+       x2="371.60889"
+       y2="582.63507" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient2631"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9649387,-1.2915552e-2,-3.672e-2,2.5569242,839.39029,-388.06537)"
+       x1="400.57785"
+       y1="369.53015"
+       x2="400.84448"
+       y2="304.07886" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient138"
+       id="linearGradient2633"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4132348,-7.9650257e-2,-4.1197677e-2,1.0713843,-132.04671,-220.80937)"
+       x1="303.01761"
+       y1="237.93179"
+       x2="297.0856"
+       y2="330.09561" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient2635"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0160687,0,0,1.5377875,-148.73571,-263.27837)"
+       spreadMethod="reflect"
+       x1="437.57941"
+       y1="528.87177"
+       x2="437.57941"
+       y2="394.10361" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient2637"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9027839,-7.217412e-2,0.1572996,2.0039544,-225.77671,-260.98637)"
+       x1="375.17325"
+       y1="419.78485"
+       x2="377.48541"
+       y2="324.03815" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient138"
+       id="linearGradient2639"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3994863,0,0,1.1399824,-164.14771,-248.60537)"
+       x1="320.75104"
+       y1="498.17776"
+       x2="321.32224"
+       y2="614.50439" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2641"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2781836,0,0,0.990788,-123.56671,-195.12637)"
+       x1="322.48257"
+       y1="435.26761"
+       x2="323.2514"
+       y2="488.48251" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2643"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7146337,0,0,2.1864375,-148.73571,-262.55337)"
+       x1="411.2215"
+       y1="242.94365"
+       x2="411.2215"
+       y2="331.44858" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2645"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7158338,0,0,2.1827625,-148.73571,-262.55337)"
+       x1="867.34546"
+       y1="234.73897"
+       x2="867.33453"
+       y2="314.83911" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient2647"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2643875,0,0,1.2357712,-148.73571,-262.55337)"
+       x1="440.54126"
+       y1="602.05945"
+       x2="540.23102"
+       y2="819.25677" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient2649"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6373885,0.2861762,-0.2248927,0.5792711,366.37829,45.41563)"
+       x1="381.56607"
+       y1="655.73102"
+       x2="279.64313"
+       y2="386.66583" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient2651"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.1800098,0.427313,0.4706466,1.1534175,394.15329,-308.86937)"
+       x1="418.28036"
+       y1="560.19635"
+       x2="558.62012"
+       y2="643.92542" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2653"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9523921,0.3463987,0.4208255,0.9487298,380.13829,-159.39037)"
+       x1="117.88966"
+       y1="587.23602"
+       x2="182.24524"
+       y2="704.73077" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2655"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0038118,-5.2260082e-2,-1.7408699e-2,1.0462729,-89.99871,-123.51367)"
+       x1="223.10072"
+       y1="570.41809"
+       x2="230.53499"
+       y2="710.97723" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2657"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.3742366,0.1592528,-0.1209348,0.3223549,390.33229,223.24263)"
+       x1="316.93988"
+       y1="474.01779"
+       x2="371.60889"
+       y2="582.63507" />
+    <svg:filter
+       inkscape:collect="always"
+       id="filter3563">
+      <svg:feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="14.901949"
+         id="feGaussianBlur3565" />
+    </svg:filter>
+    <svg:radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient172"
+       id="radialGradient3570"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4818226,0,0,0.3967969,-372.9841,127.14563)"
+       cx="446.77762"
+       cy="1219.4125"
+       fx="446.77762"
+       fy="1219.4125"
+       r="195.07191" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient2602"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.52335,0,0,1.0256962,-149.30296,-262.7395)"
+       x1="284.68652"
+       y1="410.46326"
+       x2="285.45923"
+       y2="485.69934" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient2616"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.52335,0,0,1.0256962,-149.30296,-262.7395)"
+       x1="284.68652"
+       y1="410.46326"
+       x2="285.45923"
+       y2="485.69934" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2618"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7672378,0,0,0.4874752,57.60904,-43.417186)"
+       x1="288.82358"
+       y1="398.85422"
+       x2="288.37628"
+       y2="482.55939" />
+    <svg:radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3401"
+       id="radialGradient3410"
+       cx="300.10394"
+       cy="200.60478"
+       fx="300.10394"
+       fy="200.60478"
+       r="22.86916"
+       gradientTransform="matrix(1.3676132,-1.9364236e-7,2.2735825e-7,1.6057341,-110.55698,-121.56098)"
+       gradientUnits="userSpaceOnUse" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3416"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0650795,-6.1672143e-2,9.4458175e-2,1.6442991,-189.10727,-272.03359)"
+       x1="378.93771"
+       y1="278.60202"
+       x2="380.27319"
+       y2="243.91606" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3418"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.4785291,4.0425338e-2,3.8863939e-2,1.9024254,873.5957,-379.19359)"
+       x1="381.38742"
+       y1="277.495"
+       x2="380.5517"
+       y2="245.68338" />
+    <svg:radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3401"
+       id="radialGradient3432"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3676132,-1.9364236e-7,2.2735825e-7,1.6057341,-110.55698,-121.56098)"
+       cx="300.10394"
+       cy="200.60478"
+       fx="300.10394"
+       fy="200.60478"
+       r="22.86916" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3438"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0650795,-6.1672143e-2,9.4458175e-2,1.6442991,-189.09992,-271.96871)"
+       x1="378.93771"
+       y1="278.60202"
+       x2="380.27319"
+       y2="243.91606" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3440"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.4785291,4.0425338e-2,3.8863939e-2,1.9024254,873.60305,-379.12871)"
+       x1="381.38742"
+       y1="277.495"
+       x2="380.5517"
+       y2="245.68338" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3446"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0650795,-6.1672143e-2,9.4458175e-2,1.6442991,-189.09992,-271.96871)"
+       x1="378.93771"
+       y1="278.60202"
+       x2="380.27319"
+       y2="243.91606" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3448"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.4785291,4.0425338e-2,3.8863939e-2,1.9024254,873.60304,-379.12871)"
+       x1="381.38742"
+       y1="277.495"
+       x2="380.5517"
+       y2="245.68338" />
+    <svg:radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3401"
+       id="radialGradient3455"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3676132,-1.9364236e-7,2.2735825e-7,1.6057341,-110.55723,-121.56135)"
+       cx="300.10394"
+       cy="200.60478"
+       fx="300.10394"
+       fy="200.60478"
+       r="22.86916" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3469"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0650795,-6.1672143e-2,9.4458175e-2,1.6442991,-189.10727,-272.03359)"
+       x1="378.93771"
+       y1="278.60202"
+       x2="380.27319"
+       y2="243.91606" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3471"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.4785291,4.0425338e-2,3.8863939e-2,1.9024254,873.59572,-379.19359)"
+       x1="381.38742"
+       y1="277.495"
+       x2="380.5517"
+       y2="245.68338" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3473"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.3921823,-2.976459e-2,-5.7309879e-2,0.5824937,479.63172,-7.4041802)"
+       x1="379.09573"
+       y1="240.92712"
+       x2="376.79556"
+       y2="281.01636" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3475"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.291416,-3.3330312e-2,5.0610171e-2,0.4881128,115.46972,20.57442)"
+       x1="389.63535"
+       y1="242.28218"
+       x2="387.06866"
+       y2="281.32513" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient3479"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.52335,0,0,1.0256962,-149.30296,-262.7395)"
+       x1="284.68652"
+       y1="410.46326"
+       x2="285.45923"
+       y2="485.69934" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient2724"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.52335,0,0,1.0256962,-149.30296,-262.7395)"
+       x1="284.68652"
+       y1="410.46326"
+       x2="285.45923"
+       y2="485.69934" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2726"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7672378,0,0,0.4874752,57.609043,-43.417197)"
+       x1="288.82358"
+       y1="398.85422"
+       x2="288.37628"
+       y2="482.55939" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient2728"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9649387,-1.2915552e-2,-3.672e-2,2.5569242,839.39029,-388.06537)"
+       x1="400.57785"
+       y1="369.53015"
+       x2="400.84448"
+       y2="304.07886" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient138"
+       id="linearGradient2730"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4132348,-7.9650257e-2,-4.1197677e-2,1.0713843,-132.04671,-220.80937)"
+       x1="303.01761"
+       y1="237.93179"
+       x2="297.0856"
+       y2="330.09561" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient2732"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0160687,0,0,1.5377875,-148.73571,-263.27837)"
+       spreadMethod="reflect"
+       x1="437.57941"
+       y1="528.87177"
+       x2="437.57941"
+       y2="394.10361" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient2734"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9027839,-7.217412e-2,0.1572996,2.0039544,-225.77671,-260.98637)"
+       x1="375.17325"
+       y1="419.78485"
+       x2="377.48541"
+       y2="324.03815" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient138"
+       id="linearGradient2736"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3994863,0,0,1.1399824,-164.14771,-248.60537)"
+       x1="320.75104"
+       y1="498.17776"
+       x2="321.32224"
+       y2="614.50439" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2738"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2781836,0,0,0.990788,-123.56671,-195.12637)"
+       x1="322.48257"
+       y1="435.26761"
+       x2="323.2514"
+       y2="488.48251" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2740"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7146337,0,0,2.1864375,-148.73571,-262.55337)"
+       x1="411.2215"
+       y1="242.94365"
+       x2="411.2215"
+       y2="331.44858" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2742"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7158338,0,0,2.1827625,-148.73571,-262.55337)"
+       x1="867.34546"
+       y1="234.73897"
+       x2="867.33453"
+       y2="314.83911" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient2744"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2643875,0,0,1.2357712,-148.73571,-262.55337)"
+       x1="440.54126"
+       y1="602.05945"
+       x2="540.23102"
+       y2="819.25677" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient2746"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6373885,0.2861762,-0.2248927,0.5792711,366.37829,45.41563)"
+       x1="381.56607"
+       y1="655.73102"
+       x2="279.64313"
+       y2="386.66583" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient2748"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.1800098,0.427313,0.4706466,1.1534175,394.15329,-308.86937)"
+       x1="418.28036"
+       y1="560.19635"
+       x2="558.62012"
+       y2="643.92542" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2750"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9523921,0.3463987,0.4208255,0.9487298,380.13829,-159.39037)"
+       x1="117.88966"
+       y1="587.23602"
+       x2="182.24524"
+       y2="704.73077" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2752"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0038118,-5.2260082e-2,-1.7408699e-2,1.0462729,-89.99871,-123.51367)"
+       x1="223.10072"
+       y1="570.41809"
+       x2="230.53499"
+       y2="710.97723" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2754"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.3742366,0.1592528,-0.1209348,0.3223549,390.33229,223.24263)"
+       x1="316.93988"
+       y1="474.01779"
+       x2="371.60889"
+       y2="582.63507" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient2756"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0650795,-6.1672143e-2,9.4458175e-2,1.6442991,-189.10727,-272.03359)"
+       x1="378.93771"
+       y1="278.60202"
+       x2="380.27319"
+       y2="243.91606" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient2758"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.4785291,4.0425338e-2,3.8863939e-2,1.9024254,873.59572,-379.19359)"
+       x1="381.38742"
+       y1="277.495"
+       x2="380.5517"
+       y2="245.68338" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2760"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.3921823,-2.976459e-2,-5.7309879e-2,0.5824937,479.63172,-7.4041877)"
+       x1="379.09573"
+       y1="240.92712"
+       x2="376.79556"
+       y2="281.01636" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2762"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.291416,-3.3330312e-2,5.0610171e-2,0.4881128,115.46972,20.574413)"
+       x1="389.63535"
+       y1="242.28218"
+       x2="387.06866"
+       y2="281.32513" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient2864"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.52335,0,0,1.0256962,-149.30296,-262.7395)"
+       x1="284.68652"
+       y1="410.46326"
+       x2="285.45923"
+       y2="485.69934" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2866"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7672378,0,0,0.4874752,57.609043,-43.417197)"
+       x1="288.82358"
+       y1="398.85422"
+       x2="288.37628"
+       y2="482.55939" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3038"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9649387,-1.2915552e-2,-3.672e-2,2.5569242,839.39029,-388.06537)"
+       x1="400.57785"
+       y1="369.53015"
+       x2="400.84448"
+       y2="304.07886" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient138"
+       id="linearGradient3040"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4132348,-7.9650257e-2,-4.1197677e-2,1.0713843,-132.04671,-220.80937)"
+       x1="303.01761"
+       y1="237.93179"
+       x2="297.0856"
+       y2="330.09561" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3042"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0160687,0,0,1.5377875,-148.73571,-263.27837)"
+       spreadMethod="reflect"
+       x1="437.57941"
+       y1="528.87177"
+       x2="437.57941"
+       y2="394.10361" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3044"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9027839,-7.217412e-2,0.1572996,2.0039544,-225.77671,-260.98637)"
+       x1="375.17325"
+       y1="419.78485"
+       x2="377.48541"
+       y2="324.03815" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient138"
+       id="linearGradient3046"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3994863,0,0,1.1399824,-164.14771,-248.60537)"
+       x1="320.75104"
+       y1="498.17776"
+       x2="321.32224"
+       y2="614.50439" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3048"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2781836,0,0,0.990788,-123.56671,-195.12637)"
+       x1="322.48257"
+       y1="435.26761"
+       x2="323.2514"
+       y2="488.48251" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3050"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7146337,0,0,2.1864375,-148.73571,-262.55337)"
+       x1="411.2215"
+       y1="242.94365"
+       x2="411.2215"
+       y2="331.44858" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3052"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7158338,0,0,2.1827625,-148.73571,-262.55337)"
+       x1="867.34546"
+       y1="234.73897"
+       x2="867.33453"
+       y2="314.83911" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient3054"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2643875,0,0,1.2357712,-148.73571,-262.55337)"
+       x1="440.54126"
+       y1="602.05945"
+       x2="540.23102"
+       y2="819.25677" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3056"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6373885,0.2861762,-0.2248927,0.5792711,366.37829,45.41563)"
+       x1="381.56607"
+       y1="655.73102"
+       x2="279.64313"
+       y2="386.66583" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient3058"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.1800098,0.427313,0.4706466,1.1534175,394.15329,-308.86937)"
+       x1="418.28036"
+       y1="560.19635"
+       x2="558.62012"
+       y2="643.92542" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3060"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9523921,0.3463987,0.4208255,0.9487298,380.13829,-159.39037)"
+       x1="117.88966"
+       y1="587.23602"
+       x2="182.24524"
+       y2="704.73077" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3062"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0038118,-5.2260082e-2,-1.7408699e-2,1.0462729,-89.99871,-123.51367)"
+       x1="223.10072"
+       y1="570.41809"
+       x2="230.53499"
+       y2="710.97723" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3064"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.3742366,0.1592528,-0.1209348,0.3223549,390.33229,223.24263)"
+       x1="316.93988"
+       y1="474.01779"
+       x2="371.60889"
+       y2="582.63507" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3128"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9649387,-1.2915552e-2,-3.672e-2,2.5569242,839.39029,-388.06537)"
+       x1="400.57785"
+       y1="369.53015"
+       x2="400.84448"
+       y2="304.07886" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient138"
+       id="linearGradient3130"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4132348,-7.9650257e-2,-4.1197677e-2,1.0713843,-132.04671,-220.80937)"
+       x1="303.01761"
+       y1="237.93179"
+       x2="297.0856"
+       y2="330.09561" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3132"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0160687,0,0,1.5377875,-148.73571,-263.27837)"
+       spreadMethod="reflect"
+       x1="437.57941"
+       y1="528.87177"
+       x2="437.57941"
+       y2="394.10361" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3134"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9027839,-7.217412e-2,0.1572996,2.0039544,-225.77671,-260.98637)"
+       x1="375.17325"
+       y1="419.78485"
+       x2="377.48541"
+       y2="324.03815" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient138"
+       id="linearGradient3136"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3994863,0,0,1.1399824,-164.14771,-248.60537)"
+       x1="320.75104"
+       y1="498.17776"
+       x2="321.32224"
+       y2="614.50439" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3138"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2781836,0,0,0.990788,-123.56671,-195.12637)"
+       x1="322.48257"
+       y1="435.26761"
+       x2="323.2514"
+       y2="488.48251" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3140"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7146337,0,0,2.1864375,-148.73571,-262.55337)"
+       x1="411.2215"
+       y1="242.94365"
+       x2="411.2215"
+       y2="331.44858" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3142"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7158338,0,0,2.1827625,-148.73571,-262.55337)"
+       x1="867.34546"
+       y1="234.73897"
+       x2="867.33453"
+       y2="314.83911" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient3144"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2643875,0,0,1.2357712,-148.73571,-262.55337)"
+       x1="440.54126"
+       y1="602.05945"
+       x2="540.23102"
+       y2="819.25677" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3146"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6373885,0.2861762,-0.2248927,0.5792711,366.37829,45.41563)"
+       x1="381.56607"
+       y1="655.73102"
+       x2="279.64313"
+       y2="386.66583" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient3148"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.1800098,0.427313,0.4706466,1.1534175,394.15329,-308.86937)"
+       x1="418.28036"
+       y1="560.19635"
+       x2="558.62012"
+       y2="643.92542" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3150"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9523921,0.3463987,0.4208255,0.9487298,380.13829,-159.39037)"
+       x1="117.88966"
+       y1="587.23602"
+       x2="182.24524"
+       y2="704.73077" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3152"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0038118,-5.2260082e-2,-1.7408699e-2,1.0462729,-89.99871,-123.51367)"
+       x1="223.10072"
+       y1="570.41809"
+       x2="230.53499"
+       y2="710.97723" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3154"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.3742366,0.1592528,-0.1209348,0.3223549,390.33229,223.24263)"
+       x1="316.93988"
+       y1="474.01779"
+       x2="371.60889"
+       y2="582.63507" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient3164"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.52335,0,0,1.0256962,-149.30296,-262.7395)"
+       x1="284.68652"
+       y1="410.46326"
+       x2="285.45923"
+       y2="485.69934" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3166"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7672378,0,0,0.4874752,57.609043,-43.417197)"
+       x1="288.82358"
+       y1="398.85422"
+       x2="288.37628"
+       y2="482.55939" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3230"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9649387,-1.2915552e-2,-3.672e-2,2.5569242,839.39029,-388.06537)"
+       x1="400.57785"
+       y1="369.53015"
+       x2="400.84448"
+       y2="304.07886" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient138"
+       id="linearGradient3232"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4132348,-7.9650257e-2,-4.1197677e-2,1.0713843,-132.04671,-220.80937)"
+       x1="303.01761"
+       y1="237.93179"
+       x2="297.0856"
+       y2="330.09561" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3234"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0160687,0,0,1.5377875,-148.73571,-263.27837)"
+       spreadMethod="reflect"
+       x1="437.57941"
+       y1="528.87177"
+       x2="437.57941"
+       y2="394.10361" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3236"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9027839,-7.217412e-2,0.1572996,2.0039544,-225.77671,-260.98637)"
+       x1="375.17325"
+       y1="419.78485"
+       x2="377.48541"
+       y2="324.03815" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient138"
+       id="linearGradient3238"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3994863,0,0,1.1399824,-164.14771,-248.60537)"
+       x1="320.75104"
+       y1="498.17776"
+       x2="321.32224"
+       y2="614.50439" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3240"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2781836,0,0,0.990788,-123.56671,-195.12637)"
+       x1="322.48257"
+       y1="435.26761"
+       x2="323.2514"
+       y2="488.48251" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3242"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7146337,0,0,2.1864375,-148.73571,-262.55337)"
+       x1="411.2215"
+       y1="242.94365"
+       x2="411.2215"
+       y2="331.44858" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3244"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7158338,0,0,2.1827625,-148.73571,-262.55337)"
+       x1="867.34546"
+       y1="234.73897"
+       x2="867.33453"
+       y2="314.83911" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient3246"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2643875,0,0,1.2357712,-148.73571,-262.55337)"
+       x1="440.54126"
+       y1="602.05945"
+       x2="540.23102"
+       y2="819.25677" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3248"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6373885,0.2861762,-0.2248927,0.5792711,366.37829,45.41563)"
+       x1="381.56607"
+       y1="655.73102"
+       x2="279.64313"
+       y2="386.66583" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient3250"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.1800098,0.427313,0.4706466,1.1534175,394.15329,-308.86937)"
+       x1="418.28036"
+       y1="560.19635"
+       x2="558.62012"
+       y2="643.92542" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3252"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9523921,0.3463987,0.4208255,0.9487298,380.13829,-159.39037)"
+       x1="117.88966"
+       y1="587.23602"
+       x2="182.24524"
+       y2="704.73077" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3254"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0038118,-5.2260082e-2,-1.7408699e-2,1.0462729,-89.99871,-123.51367)"
+       x1="223.10072"
+       y1="570.41809"
+       x2="230.53499"
+       y2="710.97723" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3256"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.3742366,0.1592528,-0.1209348,0.3223549,390.33229,223.24263)"
+       x1="316.93988"
+       y1="474.01779"
+       x2="371.60889"
+       y2="582.63507" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient3266"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.52335,0,0,1.0256962,-149.30296,-262.7395)"
+       x1="284.68652"
+       y1="410.46326"
+       x2="285.45923"
+       y2="485.69934" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3268"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7672378,0,0,0.4874752,57.609043,-43.417197)"
+       x1="288.82358"
+       y1="398.85422"
+       x2="288.37628"
+       y2="482.55939" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3312"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9649387,-1.2915552e-2,-3.672e-2,2.5569242,839.39029,-388.06537)"
+       x1="400.57785"
+       y1="369.53015"
+       x2="400.84448"
+       y2="304.07886" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient138"
+       id="linearGradient3314"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4132348,-7.9650257e-2,-4.1197677e-2,1.0713843,-132.04671,-220.80937)"
+       x1="303.01761"
+       y1="237.93179"
+       x2="297.0856"
+       y2="330.09561" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3316"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0160687,0,0,1.5377875,-148.73571,-263.27837)"
+       spreadMethod="reflect"
+       x1="437.57941"
+       y1="528.87177"
+       x2="437.57941"
+       y2="394.10361" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3318"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9027839,-7.217412e-2,0.1572996,2.0039544,-225.77671,-260.98637)"
+       x1="375.17325"
+       y1="419.78485"
+       x2="377.48541"
+       y2="324.03815" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient138"
+       id="linearGradient3320"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3994863,0,0,1.1399824,-164.14771,-248.60537)"
+       x1="320.75104"
+       y1="498.17776"
+       x2="321.32224"
+       y2="614.50439" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3322"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2781836,0,0,0.990788,-123.56671,-195.12637)"
+       x1="322.48257"
+       y1="435.26761"
+       x2="323.2514"
+       y2="488.48251" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3324"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7146337,0,0,2.1864375,-148.73571,-262.55337)"
+       x1="411.2215"
+       y1="242.94365"
+       x2="411.2215"
+       y2="331.44858" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3326"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7158338,0,0,2.1827625,-148.73571,-262.55337)"
+       x1="867.34546"
+       y1="234.73897"
+       x2="867.33453"
+       y2="314.83911" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient3328"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2643875,0,0,1.2357712,-148.73571,-262.55337)"
+       x1="440.54126"
+       y1="602.05945"
+       x2="540.23102"
+       y2="819.25677" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3330"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6373885,0.2861762,-0.2248927,0.5792711,366.37829,45.41563)"
+       x1="381.56607"
+       y1="655.73102"
+       x2="279.64313"
+       y2="386.66583" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient3332"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.1800098,0.427313,0.4706466,1.1534175,394.15329,-308.86937)"
+       x1="418.28036"
+       y1="560.19635"
+       x2="558.62012"
+       y2="643.92542" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3334"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9523921,0.3463987,0.4208255,0.9487298,380.13829,-159.39037)"
+       x1="117.88966"
+       y1="587.23602"
+       x2="182.24524"
+       y2="704.73077" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3336"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0038118,-5.2260082e-2,-1.7408699e-2,1.0462729,-89.99871,-123.51367)"
+       x1="223.10072"
+       y1="570.41809"
+       x2="230.53499"
+       y2="710.97723" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3338"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.3742366,0.1592528,-0.1209348,0.3223549,390.33229,223.24263)"
+       x1="316.93988"
+       y1="474.01779"
+       x2="371.60889"
+       y2="582.63507" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3382"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9649387,-1.2915552e-2,-3.672e-2,2.5569242,839.39029,-388.06537)"
+       x1="400.57785"
+       y1="369.53015"
+       x2="400.84448"
+       y2="304.07886" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient138"
+       id="linearGradient3384"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4132348,-7.9650257e-2,-4.1197677e-2,1.0713843,-132.04671,-220.80937)"
+       x1="303.01761"
+       y1="237.93179"
+       x2="297.0856"
+       y2="330.09561" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3386"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0160687,0,0,1.5377875,-148.73571,-263.27837)"
+       spreadMethod="reflect"
+       x1="437.57941"
+       y1="528.87177"
+       x2="437.57941"
+       y2="394.10361" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3388"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9027839,-7.217412e-2,0.1572996,2.0039544,-225.77671,-260.98637)"
+       x1="375.17325"
+       y1="419.78485"
+       x2="377.48541"
+       y2="324.03815" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient138"
+       id="linearGradient3390"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3994863,0,0,1.1399824,-164.14771,-248.60537)"
+       x1="320.75104"
+       y1="498.17776"
+       x2="321.32224"
+       y2="614.50439" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3392"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2781836,0,0,0.990788,-123.56671,-195.12637)"
+       x1="322.48257"
+       y1="435.26761"
+       x2="323.2514"
+       y2="488.48251" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3394"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7146337,0,0,2.1864375,-148.73571,-262.55337)"
+       x1="411.2215"
+       y1="242.94365"
+       x2="411.2215"
+       y2="331.44858" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3396"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7158338,0,0,2.1827625,-148.73571,-262.55337)"
+       x1="867.34546"
+       y1="234.73897"
+       x2="867.33453"
+       y2="314.83911" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient3398"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2643875,0,0,1.2357712,-148.73571,-262.55337)"
+       x1="440.54126"
+       y1="602.05945"
+       x2="540.23102"
+       y2="819.25677" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3400"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6373885,0.2861762,-0.2248927,0.5792711,366.37829,45.41563)"
+       x1="381.56607"
+       y1="655.73102"
+       x2="279.64313"
+       y2="386.66583" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient3402"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.1800098,0.427313,0.4706466,1.1534175,394.15329,-308.86937)"
+       x1="418.28036"
+       y1="560.19635"
+       x2="558.62012"
+       y2="643.92542" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3404"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9523921,0.3463987,0.4208255,0.9487298,380.13829,-159.39037)"
+       x1="117.88966"
+       y1="587.23602"
+       x2="182.24524"
+       y2="704.73077" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3406"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0038118,-5.2260082e-2,-1.7408699e-2,1.0462729,-89.99871,-123.51367)"
+       x1="223.10072"
+       y1="570.41809"
+       x2="230.53499"
+       y2="710.97723" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3408"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.3742366,0.1592528,-0.1209348,0.3223549,390.33229,223.24263)"
+       x1="316.93988"
+       y1="474.01779"
+       x2="371.60889"
+       y2="582.63507" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3454"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9649387,-1.2915552e-2,-3.672e-2,2.5569242,839.39029,-388.06537)"
+       x1="400.57785"
+       y1="369.53015"
+       x2="400.84448"
+       y2="304.07886" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient138"
+       id="linearGradient3456"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4132348,-7.9650257e-2,-4.1197677e-2,1.0713843,-132.04671,-220.80937)"
+       x1="303.01761"
+       y1="237.93179"
+       x2="297.0856"
+       y2="330.09561" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3458"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0160687,0,0,1.5377875,-148.73571,-263.27837)"
+       spreadMethod="reflect"
+       x1="437.57941"
+       y1="528.87177"
+       x2="437.57941"
+       y2="394.10361" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3460"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9027839,-7.217412e-2,0.1572996,2.0039544,-225.77671,-260.98637)"
+       x1="375.17325"
+       y1="419.78485"
+       x2="377.48541"
+       y2="324.03815" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient138"
+       id="linearGradient3462"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3994863,0,0,1.1399824,-164.14771,-248.60537)"
+       x1="320.75104"
+       y1="498.17776"
+       x2="321.32224"
+       y2="614.50439" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3464"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2781836,0,0,0.990788,-123.56671,-195.12637)"
+       x1="322.48257"
+       y1="435.26761"
+       x2="323.2514"
+       y2="488.48251" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3466"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7146337,0,0,2.1864375,-148.73571,-262.55337)"
+       x1="411.2215"
+       y1="242.94365"
+       x2="411.2215"
+       y2="331.44858" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3468"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7158338,0,0,2.1827625,-148.73571,-262.55337)"
+       x1="867.34546"
+       y1="234.73897"
+       x2="867.33453"
+       y2="314.83911" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient3470"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2643875,0,0,1.2357712,-148.73571,-262.55337)"
+       x1="440.54126"
+       y1="602.05945"
+       x2="540.23102"
+       y2="819.25677" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3472"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6373885,0.2861762,-0.2248927,0.5792711,366.37829,45.41563)"
+       x1="381.56607"
+       y1="655.73102"
+       x2="279.64313"
+       y2="386.66583" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient3474"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.1800098,0.427313,0.4706466,1.1534175,394.15329,-308.86937)"
+       x1="418.28036"
+       y1="560.19635"
+       x2="558.62012"
+       y2="643.92542" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3476"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9523921,0.3463987,0.4208255,0.9487298,380.13829,-159.39037)"
+       x1="117.88966"
+       y1="587.23602"
+       x2="182.24524"
+       y2="704.73077" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3478"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0038118,-5.2260082e-2,-1.7408699e-2,1.0462729,-89.99871,-123.51367)"
+       x1="223.10072"
+       y1="570.41809"
+       x2="230.53499"
+       y2="710.97723" />
+    <svg:linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3480"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.3742366,0.1592528,-0.1209348,0.3223549,390.33229,223.24263)"
+       x1="316.93988"
+       y1="474.01779"
+       x2="371.60889"
+       y2="582.63507" />
+  </svg:defs>
+  <svg:g
+     inkscape:groupmode="layer"
+     id="frame0"
+     inkscape:label="frame0"
+     style="display:inline">
+    <svg:g
+       id="g2687"
+       transform="translate(0,-0.2213731)">
+      <svg:g
+         id="g2644"
+         style="display:inline">
+        <svg:path
+           style="opacity:0.8;fill:#000000;stroke:none;stroke-width:1.25;display:inline;filter:url(#filter3563)"
+           d="M 292.60975,28.90364 C 185.69571,27.235015 191.67096,138.43626 192.3285,198.15364 C 192.89226,250.20364 154.106,279.71114 127.5785,320.27864 C 97.674303,365.67663 87.543573,431.01619 96.422253,490.87239 C 89.780803,491.32987 83.215603,493.12305 76.891003,498.65364 C 62.623213,510.75687 66.136003,539.40507 54.391005,552.62239 C -1.1201651,614.27398 81.187343,605.06418 118.266,650.02864 C 153.61899,692.07677 205.14942,697.39381 225.17225,657.18489 C 226.35983,654.92945 227.2262,652.51682 227.85975,649.96614 C 257.41198,652.75379 283.01502,643.38461 303.29725,645.02864 C 334.40096,646.7313 352.71477,654.75318 370.17225,653.30989 C 384.1406,681.83793 426.88102,684.5535 469.0785,662.49739 C 519.63097,635.72741 593.141,667.64114 566.4535,594.90364 C 561.10847,578.35611 574.42975,553.64489 565.73475,537.49739 C 555.56098,517.8749 533.7535,522.23489 520.67225,509.15364 C 509.68977,497.56123 502.10654,478.87063 485.29725,475.80989 C 487.03625,421.30654 473.49303,353.80369 433.8285,304.87239 C 401.471,266.22489 393.2235,239.28239 390.67225,203.12239 C 388.93601,161.89864 419.80725,38.81239 303.29725,29.43489 C 299.60952,29.140671 296.05859,28.957467 292.60975,28.90364 z"
+           id="path2662" />
+        <svg:g
+           id="g2563"
+           transform="translate(-0.4498367,-0.2213987)">
+          <svg:path
+             id="path106"
+             d="M 447.32729,527.74663 C 475.31229,487.46788 480.76979,356.51663 415.46854,275.95913 C 383.11104,237.31163 374.85604,210.37788 372.30479,174.21788 C 370.56854,132.99413 401.46104,9.91538 284.95104,0.53788 C 166.94354,-8.87712 173.28104,107.61288 173.95979,169.25663 C 174.52354,221.30663 135.74229,250.80788 109.21479,291.37538 C 60.11604,365.91288 64.26854,494.25038 118.46354,563.71538 C 187.10979,650.67538 245.90479,612.96288 284.95104,616.12788 C 358.06729,620.13038 360.48479,659.11663 447.32729,527.74663 z"
+             style="fill:#000000;stroke:none;stroke-width:1.25" />
+          <svg:path
+             id="path113"
+             d="M 162.27711,298.99257 C 142.0115,317.64773 89.26718,401.61676 172.66991,453.85728 C 202.07135,472.0492 146.45604,541.73617 119.752,507.98128 C 72.627231,447.38436 102.67999,350.88004 130.94945,316.30107 C 150.14614,291.78873 179.50057,282.29068 162.27711,298.99257 z"
+             style="fill:url(#linearGradient2728);stroke:none;stroke-width:0.99464899" />
+          <svg:path
+             id="path111"
+             d="M 168.00842,287.54166 C 134.60001,314.53776 73.770374,409.57952 162.49264,471.31385 C 191.63168,490.56173 136.67011,551.25382 105.80822,520.20914 C -1.492906,412.29787 108.60806,288.21363 146.50894,245.555 C 180.38203,208.45651 210.38669,254.31956 168.00842,287.54166 z"
+             style="fill:#000000;stroke:#000000;stroke-width:1.5625006" />
+          <svg:path
+             d="M 216.08402,59.364009 C 217.27405,90.31183 251.33194,117.26514 292.15444,119.5659 C 332.97694,121.86667 365.10542,98.64364 363.91539,67.695819 C 362.72536,36.747999 328.66747,9.794692 287.84497,7.493926 C 247.02247,5.193161 214.89399,28.416189 216.08402,59.364009 z"
+             id="path114"
+             style="fill:url(#linearGradient2730);stroke:none;stroke-width:1.26498997" />
+          <svg:path
+             id="path128"
+             d="M 403.48354,356.00288 C 387.43854,319.62413 353.34104,255.72038 352.61479,206.30538 C 352.61479,167.00288 234.89104,157.61663 225.44354,196.85788 C 215.99604,236.09913 192.01729,294.96163 176.75604,323.30288 C 161.49604,351.64288 116.99479,441.67163 164.40104,520.23538 C 207.09729,589.79038 336.55729,644.81788 405.66354,510.78913 C 428.91729,464.28038 424.76979,406.64538 403.48354,356.00288 z"
+             style="fill:url(#linearGradient2732);stroke:none;stroke-width:1.25" />
+          <svg:path
+             id="path112"
+             d="M 417.99044,329.00666 C 431.70017,354.95538 460.22858,423.19981 390.69746,460.53804 C 315.84902,500.17924 316.20892,581.76441 406.04872,542.94566 C 488.18159,507.85838 451.87107,366.0769 428.9001,332.15355 C 413.83858,308.39374 391.24959,279.31108 417.99044,329.00666 z"
+             style="fill:url(#linearGradient2734);stroke:none;stroke-width:1.15804005" />
+          <svg:path
+             id="path109"
+             d="M 406.21979,299.59663 C 428.05104,335.23163 480.44104,419.36288 410.32979,463.00038 C 315.86854,520.94413 342.61354,578.88913 428.82854,526.71788 C 550.21479,453.88788 443.60979,307.19788 394.91479,251.29538 C 339.35979,188.54538 384.22229,262.65413 406.21979,299.59663 z"
+             style="fill:#000000;stroke:#000000;stroke-width:1.5625" />
+          <svg:path
+             id="path125"
+             d="M 193.46684,369.81139 C 193.46684,409.52419 231.58162,461.11212 297.01946,460.64897 C 364.50418,461.20646 393.30771,409.52419 393.30771,369.81139 C 393.30771,330.09858 348.54316,297.86838 293.38663,297.86838 C 238.2314,297.86838 193.46684,330.09858 193.46684,369.81139 z"
+             style="font-size:12px;fill:url(#linearGradient2736);stroke:none;stroke-width:1.23705006;stroke-dasharray:none" />
+          <svg:path
+             id="path127"
+             d="M 229.07624,244.82218 C 229.80256,285.98159 256.58626,295.69095 290.48127,295.69095 C 324.37746,295.69095 348.98101,289.61499 351.88749,244.82218 C 351.88749,216.74303 324.37746,200.49354 290.48127,200.49354 C 256.58626,200.49354 229.07624,216.74303 229.07624,244.82218 z"
+             style="font-size:12px;fill:url(#linearGradient2738);stroke:none;stroke-width:1.38846004;stroke-dasharray:none" />
+          <svg:path
+             id="path129"
+             d="M 434.00479,308.04038 C 411.85979,274.29538 365.23604,222.58538 425.28354,315.30663 C 473.97229,391.61038 443.28729,440.64788 427.46354,454.10538 C 381.80479,494.80788 383.75604,522.04163 419.46979,500.61288 C 496.50104,454.83038 480.51354,377.80288 434.00479,308.04038 z"
+             style="fill:url(#linearGradient2740);stroke:none;stroke-width:1.25" />
+          <svg:path
+             id="path131"
+             d="M 113.53354,321.84663 C 132.68229,282.22038 193.70104,181.96913 110.62604,298.59288 C 35.04979,403.96413 88.09854,477.35913 97.54604,484.62663 C 106.99229,491.89288 138.96729,506.42663 129.51979,480.99288 C 120.07354,455.55913 72.97729,407.27663 113.53354,321.84663 z"
+             style="fill:url(#linearGradient2742);stroke:none;stroke-width:1.25" />
+          <svg:path
+             id="path132"
+             d="M 450.71729,633.59788 C 501.26979,606.82788 574.78229,638.75288 548.09479,566.01538 C 542.74979,549.46788 556.06354,524.75538 547.36854,508.60788 C 537.19479,488.98538 515.39354,493.34663 502.31229,480.26538 C 489.41479,466.65163 481.23854,443.20413 457.25729,446.83788 C 433.27729,450.47163 417.32604,479.91413 400.57729,515.87413 C 388.22354,541.67163 344.40104,577.95413 347.26479,606.82163 C 350.63479,651.19663 401.04854,659.55913 450.71729,633.59788 z"
+             style="fill:url(#linearGradient2744);stroke:#e68c3f;stroke-width:7.8125" />
+          <svg:path
+             id="path177"
+             d="M 82.24494,462.88931 C 90.01179,477.45399 122.03008,500.5657 143.36844,494.54174 C 165.14161,488.6335 174.9469,455.67689 170.68307,430.73455 C 166.72483,402.64565 143.36911,401.24959 114.0802,415.10503 C 82.59156,430.44169 73.069174,443.58645 82.24494,462.88931 z"
+             style="font-size:12px;fill:url(#linearGradient2746);stroke:none;stroke-width:2.85509992;stroke-dasharray:none" />
+          <svg:path
+             id="path133"
+             d="M 99.91795,621.11875 C 62.839278,576.15428 -19.472149,585.3777 36.039018,523.72611 C 47.784032,510.50878 44.278287,481.85435 58.546079,469.75112 C 75.517493,454.91038 94.23872,467.08152 111.44091,459.32031 C 128.6738,451.0007 146.68545,434.82678 167.72147,446.33083 C 188.75633,457.83446 191.01961,487.76222 193.0034,526.94033 C 194.7428,555.161 220.45875,602.35161 206.80553,628.28161 C 186.78271,668.4905 135.27094,663.16688 99.91795,621.11875 z"
+             style="fill:url(#linearGradient2748);stroke:#e68c3f;stroke-width:7.81249762" />
+          <svg:path
+             id="path134"
+             d="M 116.04364,561.0135 C 58.649181,476.2927 101.42547,476.90974 115.75386,470.50188 C 130.12397,463.63622 145.36533,450.33015 162.26421,459.70416 C 179.16214,469.07782 180.12915,493.60411 180.59268,525.71383 C 181.18098,548.84218 200.54356,587.28393 188.89777,608.74832 C 174.9287,633.76781 141.02669,597.42913 116.04364,561.0135 z"
+             style="fill:url(#linearGradient2750);stroke:none;stroke-width:1.52532005" />
+          <svg:path
+             id="path135"
+             d="M 462.46593,573.2131 C 548.36933,517.60369 508.18451,498.7241 495.14397,489.98944 C 479.50561,478.78744 479.38418,456.95537 460.16707,458.99225 C 440.95097,461.0292 429.76391,484.68716 416.80772,514.07072 C 407.24123,535.13616 374.41331,562.97528 376.76041,587.28248 C 379.8594,615.76955 425.25368,596.99356 462.46593,573.2131 z"
+             style="fill:url(#linearGradient2752);stroke:none;stroke-width:1.52532005" />
+          <svg:path
+             id="path136"
+             d="M 87.39871,462.09819 C 94.09281,473.77116 121.68879,492.2942 140.07997,487.46624 C 158.8459,482.73103 167.29697,456.31769 163.62209,436.32747 C 160.21059,413.8154 140.0807,412.69653 114.83706,423.80109 C 87.69751,436.0928 79.49031,446.62777 87.39871,462.09819 z"
+             style="font-size:12px;fill:#000000;stroke:none;stroke-width:2.85509992" />
+          <svg:path
+             id="path137"
+             d="M 105.88905,455.5601 C 110.15449,463.66511 128.34154,476.52638 140.81207,473.17413 C 153.53282,469.88628 159.75622,451.54645 157.69133,437.66645 C 155.85502,422.03542 142.33597,421.25855 125.12775,428.9689 C 106.61991,437.50352 100.88409,444.81837 105.88905,455.5601 z"
+             style="font-size:12px;fill:url(#linearGradient2754);stroke:none;stroke-width:2.85509992" />
+        </svg:g>
+      </svg:g>
+      <svg:path
+         d="M 314.16831,133.61019 C 313.01265,153.72746 322.6393,170.64739 335.67002,171.40192 C 348.70075,172.15644 360.20108,156.45985 361.35673,136.34258 C 362.51239,116.22531 352.88574,99.305374 339.85502,98.550854 C 326.82429,97.796323 315.32396,113.49292 314.16831,133.61019 z"
+         id="path2609"
+         style="fill:url(#linearGradient2756);stroke:none;stroke-width:1.17873001" />
+      <svg:path
+         sodipodi:nodetypes="csssssc"
+         d="M 290.51788,135.15074 C 290.04239,158.42607 274.99285,176.8935 256.90377,176.39892 C 238.81469,175.90433 224.53605,156.63502 225.01154,133.35969 C 225.15088,126.53908 226.54172,120.13134 228.89383,114.49264 C 234.56828,100.88926 245.8374,91.761862 258.62565,92.111513 C 269.05643,92.396707 278.22021,98.924634 284.01871,108.86361 C 288.27598,116.16082 290.71918,125.29676 290.51788,135.15074 z"
+         id="path2611"
+         style="fill:url(#linearGradient2758);stroke:none;stroke-width:0.93138498" />
+      <svg:path
+         d="M 275.53134,140.41284 C 275.80453,153.18925 269.35973,163.56084 261.13646,163.57844 C 252.91319,163.59603 246.02545,153.25297 245.75226,140.47655 C 245.47907,127.70013 251.92387,117.32854 260.14714,117.31095 C 268.37041,117.29336 275.25815,127.63642 275.53134,140.41284 z"
+         id="path2613"
+         style="fill:#000000;stroke:none;stroke-width:1.86495996" />
+      <svg:path
+         d="M 327.65696,140.54751 C 326.62578,151.12389 330.60317,160.2832 336.54069,161.00539 C 342.47821,161.72759 348.12746,153.73919 349.15863,143.16281 C 350.1898,132.58643 346.21242,123.42712 340.2749,122.70493 C 334.33738,121.98273 328.68813,129.97113 327.65696,140.54751 z"
+         id="path2615"
+         style="fill:#000000;stroke:none;stroke-width:2.39814997" />
+      <svg:path
+         d="M 272.10899,133.10646 C 272.81015,140.23301 269.48888,146.30542 264.69072,146.66958 C 259.89256,147.03373 255.43448,141.55173 254.73332,134.42518 C 254.03216,127.29863 257.35343,121.22621 262.15159,120.86205 C 266.94975,120.4979 271.40783,125.9799 272.10899,133.10646 z"
+         id="path2617"
+         style="fill:url(#linearGradient2760);stroke:none;stroke-width:3.1916101" />
+      <svg:path
+         d="M 332.68196,134.9396 C 332.06276,140.91144 334.45108,146.08315 338.01641,146.49093 C 341.58174,146.89871 344.97397,142.38815 345.59316,136.4163 C 346.21236,130.44446 343.82404,125.27275 340.25871,124.86497 C 336.69338,124.45719 333.30115,128.96776 332.68196,134.9396 z"
+         id="path2619"
+         style="fill:url(#linearGradient2762);stroke:none;stroke-width:4.12025976" />
+    </svg:g>
+    <svg:g
+       style="display:inline"
+       id="g2716"
+       transform="translate(-1.8627146e-6,-0.2213689)">
+      <svg:path
+         id="path2718"
+         d="M 338.85129,160.67175 C 329.91754,152.20925 307.83754,126.83925 266.40004,153.478 C 258.69754,158.4905 252.44754,158.94925 237.62379,165.29675 C 207.96629,177.483 222.14629,206.8705 253.55379,216.68175 C 267.00129,221.043 279.22379,237.37675 303.71504,235.9805 C 324.63254,234.75925 330.11379,221.138 342.96254,213.598 C 365.79879,200.70925 369.16879,183.2805 356.83754,174.03175 C 344.50504,164.783 339.68129,161.458 338.85129,160.67175 z"
+         style="fill:url(#linearGradient2724);stroke:#e68c3f;stroke-width:4.6875" />
+      <svg:path
+         id="path2720"
+         d="M 237.23004,184.31675 C 249.58379,185.043 276.47129,211.9305 304.81254,211.9305 C 333.15379,211.9305 349.86754,185.76925 354.22754,185.76925"
+         style="fill:none;stroke:#e68c3f;stroke-width:3.125" />
+      <svg:path
+         id="path2722"
+         d="M 324.76632,158.35215 C 320.27883,154.31949 306.12379,143.25321 287.35191,154.58277 C 283.39686,156.82605 279.31247,159.26769 273.23831,162.60282 C 261.20678,169.60071 267.16604,179.68533 281.58039,186.0661 C 288.1217,188.74362 298.90562,194.65263 307.1171,194.23924 C 316.24216,193.40054 322.14553,187.44924 328.19332,183.57324 C 339.28805,176.24476 338.61433,170.32742 333.46065,165.40066 C 329.56462,162.01788 325.18324,158.72682 324.76632,158.35215 z"
+         style="fill:url(#linearGradient2726);stroke:none" />
+    </svg:g>
+  </svg:g>
+  <svg:g
+     inkscape:groupmode="layer"
+     id="frame1"
+     inkscape:label="frame1"
+     style="display:none">
+    <svg:g
+       style="display:inline"
+       id="g2766"
+       transform="translate(0,-0.2213731)">
+      <svg:path
+         id="path2768"
+         d="M 292.60975,28.90364 C 185.69571,27.235015 191.67096,138.43626 192.3285,198.15364 C 192.89226,250.20364 154.106,279.71114 127.5785,320.27864 C 97.674303,365.67663 87.543573,431.01619 96.422253,490.87239 C 89.780803,491.32987 83.215603,493.12305 76.891003,498.65364 C 62.623213,510.75687 66.136003,539.40507 54.391005,552.62239 C -1.1201651,614.27398 81.187343,605.06418 118.266,650.02864 C 153.61899,692.07677 205.14942,697.39381 225.17225,657.18489 C 226.35983,654.92945 227.2262,652.51682 227.85975,649.96614 C 257.41198,652.75379 283.01502,643.38461 303.29725,645.02864 C 334.40096,646.7313 352.71477,654.75318 370.17225,653.30989 C 384.1406,681.83793 426.88102,684.5535 469.0785,662.49739 C 519.63097,635.72741 593.141,667.64114 566.4535,594.90364 C 561.10847,578.35611 574.42975,553.64489 565.73475,537.49739 C 555.56098,517.8749 533.7535,522.23489 520.67225,509.15364 C 509.68977,497.56123 502.10654,478.87063 485.29725,475.80989 C 487.03625,421.30654 473.49303,353.80369 433.8285,304.87239 C 401.471,266.22489 393.2235,239.28239 390.67225,203.12239 C 388.93601,161.89864 419.80725,38.81239 303.29725,29.43489 C 299.60952,29.140671 296.05859,28.957467 292.60975,28.90364 z"
+         style="opacity:0.8;fill:#000000;stroke:none;stroke-width:1.25;display:inline;filter:url(#filter3563)" />
+      <svg:g
+         transform="translate(-0.4498367,-0.2213987)"
+         id="g2770">
+        <svg:path
+           style="fill:#000000;stroke:none;stroke-width:1.25"
+           d="M 447.32729,527.74663 C 475.31229,487.46788 480.76979,356.51663 415.46854,275.95913 C 383.11104,237.31163 374.85604,210.37788 372.30479,174.21788 C 370.56854,132.99413 401.46104,9.91538 284.95104,0.53788 C 166.94354,-8.87712 173.28104,107.61288 173.95979,169.25663 C 174.52354,221.30663 135.74229,250.80788 109.21479,291.37538 C 60.11604,365.91288 64.26854,494.25038 118.46354,563.71538 C 187.10979,650.67538 245.90479,612.96288 284.95104,616.12788 C 358.06729,620.13038 360.48479,659.11663 447.32729,527.74663 z"
+           id="path2772" />
+        <svg:path
+           style="fill:url(#linearGradient3038);stroke:none;stroke-width:0.99464899"
+           d="M 162.27711,298.99257 C 142.0115,317.64773 89.26718,401.61676 172.66991,453.85728 C 202.07135,472.0492 146.45604,541.73617 119.752,507.98128 C 72.627231,447.38436 102.67999,350.88004 130.94945,316.30107 C 150.14614,291.78873 179.50057,282.29068 162.27711,298.99257 z"
+           id="path2774" />
+        <svg:path
+           style="fill:#000000;stroke:#000000;stroke-width:1.5625006"
+           d="M 168.00842,287.54166 C 134.60001,314.53776 73.770374,409.57952 162.49264,471.31385 C 191.63168,490.56173 136.67011,551.25382 105.80822,520.20914 C -1.492906,412.29787 108.60806,288.21363 146.50894,245.555 C 180.38203,208.45651 210.38669,254.31956 168.00842,287.54166 z"
+           id="path2776" />
+        <svg:path
+           style="fill:url(#linearGradient3040);stroke:none;stroke-width:1.26498997"
+           id="path2778"
+           d="M 216.08402,59.364009 C 217.27405,90.31183 251.33194,117.26514 292.15444,119.5659 C 332.97694,121.86667 365.10542,98.64364 363.91539,67.695819 C 362.72536,36.747999 328.66747,9.794692 287.84497,7.493926 C 247.02247,5.193161 214.89399,28.416189 216.08402,59.364009 z" />
+        <svg:path
+           style="fill:url(#linearGradient3042);stroke:none;stroke-width:1.25"
+           d="M 403.48354,356.00288 C 387.43854,319.62413 353.34104,255.72038 352.61479,206.30538 C 352.61479,167.00288 234.89104,157.61663 225.44354,196.85788 C 215.99604,236.09913 192.01729,294.96163 176.75604,323.30288 C 161.49604,351.64288 116.99479,441.67163 164.40104,520.23538 C 207.09729,589.79038 336.55729,644.81788 405.66354,510.78913 C 428.91729,464.28038 424.76979,406.64538 403.48354,356.00288 z"
+           id="path2780" />
+        <svg:path
+           style="fill:url(#linearGradient3044);stroke:none;stroke-width:1.15804005"
+           d="M 417.99044,329.00666 C 431.70017,354.95538 460.22858,423.19981 390.69746,460.53804 C 315.84902,500.17924 316.20892,581.76441 406.04872,542.94566 C 488.18159,507.85838 451.87107,366.0769 428.9001,332.15355 C 413.83858,308.39374 391.24959,279.31108 417.99044,329.00666 z"
+           id="path2782" />
+        <svg:path
+           style="fill:#000000;stroke:#000000;stroke-width:1.5625"
+           d="M 406.21979,299.59663 C 428.05104,335.23163 480.44104,419.36288 410.32979,463.00038 C 315.86854,520.94413 342.61354,578.88913 428.82854,526.71788 C 550.21479,453.88788 443.60979,307.19788 394.91479,251.29538 C 339.35979,188.54538 384.22229,262.65413 406.21979,299.59663 z"
+           id="path2784" />
+        <svg:path
+           style="font-size:12px;fill:url(#linearGradient3046);stroke:none;stroke-width:1.23705006;stroke-dasharray:none"
+           d="M 193.46684,369.81139 C 193.46684,409.52419 231.58162,461.11212 297.01946,460.64897 C 364.50418,461.20646 393.30771,409.52419 393.30771,369.81139 C 393.30771,330.09858 348.54316,297.86838 293.38663,297.86838 C 238.2314,297.86838 193.46684,330.09858 193.46684,369.81139 z"
+           id="path2786" />
+        <svg:path
+           style="font-size:12px;fill:url(#linearGradient3048);stroke:none;stroke-width:1.38846004;stroke-dasharray:none"
+           d="M 229.07624,244.82218 C 229.80256,285.98159 256.58626,295.69095 290.48127,295.69095 C 324.37746,295.69095 348.98101,289.61499 351.88749,244.82218 C 351.88749,216.74303 324.37746,200.49354 290.48127,200.49354 C 256.58626,200.49354 229.07624,216.74303 229.07624,244.82218 z"
+           id="path2788" />
+        <svg:path
+           style="fill:url(#linearGradient3050);stroke:none;stroke-width:1.25"
+           d="M 434.00479,308.04038 C 411.85979,274.29538 365.23604,222.58538 425.28354,315.30663 C 473.97229,391.61038 443.28729,440.64788 427.46354,454.10538 C 381.80479,494.80788 383.75604,522.04163 419.46979,500.61288 C 496.50104,454.83038 480.51354,377.80288 434.00479,308.04038 z"
+           id="path2790" />
+        <svg:path
+           style="fill:url(#linearGradient3052);stroke:none;stroke-width:1.25"
+           d="M 113.53354,321.84663 C 132.68229,282.22038 193.70104,181.96913 110.62604,298.59288 C 35.04979,403.96413 88.09854,477.35913 97.54604,484.62663 C 106.99229,491.89288 138.96729,506.42663 129.51979,480.99288 C 120.07354,455.55913 72.97729,407.27663 113.53354,321.84663 z"
+           id="path2792" />
+        <svg:path
+           style="fill:url(#linearGradient3054);stroke:#e68c3f;stroke-width:7.8125"
+           d="M 450.71729,633.59788 C 501.26979,606.82788 574.78229,638.75288 548.09479,566.01538 C 542.74979,549.46788 556.06354,524.75538 547.36854,508.60788 C 537.19479,488.98538 515.39354,493.34663 502.31229,480.26538 C 489.41479,466.65163 481.23854,443.20413 457.25729,446.83788 C 433.27729,450.47163 417.32604,479.91413 400.57729,515.87413 C 388.22354,541.67163 344.40104,577.95413 347.26479,606.82163 C 350.63479,651.19663 401.04854,659.55913 450.71729,633.59788 z"
+           id="path2794" />
+        <svg:path
+           style="font-size:12px;fill:url(#linearGradient3056);stroke:none;stroke-width:2.85509992;stroke-dasharray:none"
+           d="M 82.24494,462.88931 C 90.01179,477.45399 122.03008,500.5657 143.36844,494.54174 C 165.14161,488.6335 174.9469,455.67689 170.68307,430.73455 C 166.72483,402.64565 143.36911,401.24959 114.0802,415.10503 C 82.59156,430.44169 73.069174,443.58645 82.24494,462.88931 z"
+           id="path2796" />
+        <svg:path
+           style="fill:url(#linearGradient3058);stroke:#e68c3f;stroke-width:7.81249762"
+           d="M 99.91795,621.11875 C 62.839278,576.15428 -19.472149,585.3777 36.039018,523.72611 C 47.784032,510.50878 44.278287,481.85435 58.546079,469.75112 C 75.517493,454.91038 94.23872,467.08152 111.44091,459.32031 C 128.6738,451.0007 146.68545,434.82678 167.72147,446.33083 C 188.75633,457.83446 191.01961,487.76222 193.0034,526.94033 C 194.7428,555.161 220.45875,602.35161 206.80553,628.28161 C 186.78271,668.4905 135.27094,663.16688 99.91795,621.11875 z"
+           id="path2798" />
+        <svg:path
+           style="fill:url(#linearGradient3060);stroke:none;stroke-width:1.52532005"
+           d="M 116.04364,561.0135 C 58.649181,476.2927 101.42547,476.90974 115.75386,470.50188 C 130.12397,463.63622 145.36533,450.33015 162.26421,459.70416 C 179.16214,469.07782 180.12915,493.60411 180.59268,525.71383 C 181.18098,548.84218 200.54356,587.28393 188.89777,608.74832 C 174.9287,633.76781 141.02669,597.42913 116.04364,561.0135 z"
+           id="path2800" />
+        <svg:path
+           style="fill:url(#linearGradient3062);stroke:none;stroke-width:1.52532005"
+           d="M 462.46593,573.2131 C 548.36933,517.60369 508.18451,498.7241 495.14397,489.98944 C 479.50561,478.78744 479.38418,456.95537 460.16707,458.99225 C 440.95097,461.0292 429.76391,484.68716 416.80772,514.07072 C 407.24123,535.13616 374.41331,562.97528 376.76041,587.28248 C 379.8594,615.76955 425.25368,596.99356 462.46593,573.2131 z"
+           id="path2802" />
+        <svg:path
+           style="font-size:12px;fill:#000000;stroke:none;stroke-width:2.85509992"
+           d="M 87.39871,462.09819 C 94.09281,473.77116 121.68879,492.2942 140.07997,487.46624 C 158.8459,482.73103 167.29697,456.31769 163.62209,436.32747 C 160.21059,413.8154 140.0807,412.69653 114.83706,423.80109 C 87.69751,436.0928 79.49031,446.62777 87.39871,462.09819 z"
+           id="path2804" />
+        <svg:path
+           style="font-size:12px;fill:url(#linearGradient3064);stroke:none;stroke-width:2.85509992"
+           d="M 105.88905,455.5601 C 110.15449,463.66511 128.34154,476.52638 140.81207,473.17413 C 153.53282,469.88628 159.75622,451.54645 157.69133,437.66645 C 155.85502,422.03542 142.33597,421.25855 125.12775,428.9689 C 106.61991,437.50352 100.88409,444.81837 105.88905,455.5601 z"
+           id="path2806" />
+      </svg:g>
+    </svg:g>
+    <svg:path
+       style="fill:url(#linearGradient2642);stroke:none;stroke-width:1.17873001;display:inline"
+       id="path2630"
+       d="M 314.16831,133.61019 C 313.01265,153.72746 322.6393,170.64739 335.67002,171.40192 C 348.70075,172.15644 360.20108,156.45985 361.35673,136.34258 C 361.85468,127.67443 359.00739,118.24128 357.00895,114.86192 C 355.89587,112.9797 347.27105,112.19826 339.85502,111.76885 C 331.55177,111.28806 321.52642,113.19669 319.72949,114.88767 C 317.92276,116.58787 314.73576,126.38584 314.16831,133.61019 z"
+       sodipodi:nodetypes="csssssc" />
+    <svg:path
+       style="fill:url(#linearGradient2644);stroke:none;stroke-width:0.93138498;display:inline"
+       id="path2632"
+       d="M 290.51788,135.15074 C 290.04239,158.42607 274.99285,176.8935 256.90377,176.39892 C 238.81469,175.90433 224.53605,156.63502 225.01154,133.35969 C 225.15088,126.53908 228.91667,114.09809 230.38619,112.5739 C 232.54915,110.33047 249.46451,107.81662 256.9201,107.46145 C 265.42816,107.05613 281.71312,107.50204 283.80551,109.29 C 285.65087,110.86686 290.71918,125.29676 290.51788,135.15074 z"
+       sodipodi:nodetypes="csssssc" />
+    <svg:path
+       style="fill:#000000;stroke:none;stroke-width:1.86495996;display:inline"
+       id="path2634"
+       d="M 275.53134,140.41284 C 275.80453,153.18925 269.35973,163.56084 261.13646,163.57844 C 252.91319,163.59603 246.02545,153.25297 245.75226,140.47655 C 245.47907,127.70013 251.92387,117.32854 260.14714,117.31095 C 268.37041,117.29336 275.25815,127.63642 275.53134,140.41284 z" />
+    <svg:path
+       style="fill:#000000;stroke:none;stroke-width:2.39814997;display:inline"
+       id="path2636"
+       d="M 327.65696,140.54751 C 326.62578,151.12389 330.60317,160.2832 336.54069,161.00539 C 342.47821,161.72759 348.12746,153.73919 349.15863,143.16281 C 350.1898,132.58643 346.21242,123.42712 340.2749,122.70493 C 334.33738,121.98273 328.68813,129.97113 327.65696,140.54751 z" />
+    <svg:path
+       style="fill:url(#linearGradient2646);stroke:none;stroke-width:3.1916101;display:inline"
+       id="path2638"
+       d="M 272.10899,133.10646 C 272.81015,140.23301 269.48888,146.30542 264.69072,146.66958 C 259.89256,147.03373 255.43448,141.55173 254.73332,134.42518 C 254.03216,127.29863 257.35343,121.22621 262.15159,120.86205 C 266.94975,120.4979 271.40783,125.9799 272.10899,133.10646 z" />
+    <svg:path
+       style="fill:url(#linearGradient2648);stroke:none;stroke-width:4.12025976;display:inline"
+       id="path2640"
+       d="M 332.68196,134.9396 C 332.06276,140.91144 334.45108,146.08315 338.01641,146.49093 C 341.58174,146.89871 344.97397,142.38815 345.59316,136.4163 C 346.21236,130.44446 343.82404,125.27275 340.25871,124.86497 C 336.69338,124.45719 333.30115,128.96776 332.68196,134.9396 z" />
+    <svg:g
+       style="display:inline"
+       id="g2820"
+       transform="translate(-9.9125613e-7,-0.2213631)">
+      <svg:path
+         id="path2822"
+         d="M 338.85129,160.67175 C 329.91754,152.20925 307.83754,126.83925 266.40004,153.478 C 258.69754,158.4905 252.44754,158.94925 237.62379,165.29675 C 207.96629,177.483 222.14629,206.8705 253.55379,216.68175 C 267.00129,221.043 279.22379,237.37675 303.71504,235.9805 C 324.63254,234.75925 330.11379,221.138 342.96254,213.598 C 365.79879,200.70925 369.16879,183.2805 356.83754,174.03175 C 344.50504,164.783 339.68129,161.458 338.85129,160.67175 z"
+         style="fill:url(#linearGradient2864);stroke:#e68c3f;stroke-width:4.6875" />
+      <svg:path
+         id="path2824"
+         d="M 237.23004,184.31675 C 249.58379,185.043 276.47129,211.9305 304.81254,211.9305 C 333.15379,211.9305 349.86754,185.76925 354.22754,185.76925"
+         style="fill:none;stroke:#e68c3f;stroke-width:3.125" />
+      <svg:path
+         id="path2826"
+         d="M 324.76632,158.35215 C 320.27883,154.31949 306.12379,143.25321 287.35191,154.58277 C 283.39686,156.82605 279.31247,159.26769 273.23831,162.60282 C 261.20678,169.60071 267.16604,179.68533 281.58039,186.0661 C 288.1217,188.74362 298.90562,194.65263 307.1171,194.23924 C 316.24216,193.40054 322.14553,187.44924 328.19332,183.57324 C 339.28805,176.24476 338.61433,170.32742 333.46065,165.40066 C 329.56462,162.01788 325.18324,158.72682 324.76632,158.35215 z"
+         style="fill:url(#linearGradient2866);stroke:none" />
+    </svg:g>
+  </svg:g>
+  <svg:g
+     inkscape:groupmode="layer"
+     id="frame2"
+     inkscape:label="frame2"
+     style="display:none">
+    <svg:g
+       style="display:inline"
+       id="g3066"
+       transform="translate(0,-0.2213731)">
+      <svg:path
+         id="path3068"
+         d="M 292.60975,28.90364 C 185.69571,27.235015 191.67096,138.43626 192.3285,198.15364 C 192.89226,250.20364 154.106,279.71114 127.5785,320.27864 C 97.674303,365.67663 87.543573,431.01619 96.422253,490.87239 C 89.780803,491.32987 83.215603,493.12305 76.891003,498.65364 C 62.623213,510.75687 66.136003,539.40507 54.391005,552.62239 C -1.1201651,614.27398 81.187343,605.06418 118.266,650.02864 C 153.61899,692.07677 205.14942,697.39381 225.17225,657.18489 C 226.35983,654.92945 227.2262,652.51682 227.85975,649.96614 C 257.41198,652.75379 283.01502,643.38461 303.29725,645.02864 C 334.40096,646.7313 352.71477,654.75318 370.17225,653.30989 C 384.1406,681.83793 426.88102,684.5535 469.0785,662.49739 C 519.63097,635.72741 593.141,667.64114 566.4535,594.90364 C 561.10847,578.35611 574.42975,553.64489 565.73475,537.49739 C 555.56098,517.8749 533.7535,522.23489 520.67225,509.15364 C 509.68977,497.56123 502.10654,478.87063 485.29725,475.80989 C 487.03625,421.30654 473.49303,353.80369 433.8285,304.87239 C 401.471,266.22489 393.2235,239.28239 390.67225,203.12239 C 388.93601,161.89864 419.80725,38.81239 303.29725,29.43489 C 299.60952,29.140671 296.05859,28.957467 292.60975,28.90364 z"
+         style="opacity:0.8;fill:#000000;stroke:none;stroke-width:1.25;display:inline;filter:url(#filter3563)" />
+      <svg:g
+         transform="translate(-0.4498367,-0.2213987)"
+         id="g3070">
+        <svg:path
+           style="fill:#000000;stroke:none;stroke-width:1.25"
+           d="M 447.32729,527.74663 C 475.31229,487.46788 480.76979,356.51663 415.46854,275.95913 C 383.11104,237.31163 374.85604,210.37788 372.30479,174.21788 C 370.56854,132.99413 401.46104,9.91538 284.95104,0.53788 C 166.94354,-8.87712 173.28104,107.61288 173.95979,169.25663 C 174.52354,221.30663 135.74229,250.80788 109.21479,291.37538 C 60.11604,365.91288 64.26854,494.25038 118.46354,563.71538 C 187.10979,650.67538 245.90479,612.96288 284.95104,616.12788 C 358.06729,620.13038 360.48479,659.11663 447.32729,527.74663 z"
+           id="path3072" />
+        <svg:path
+           style="fill:url(#linearGradient3128);stroke:none;stroke-width:0.99464899"
+           d="M 162.27711,298.99257 C 142.0115,317.64773 89.26718,401.61676 172.66991,453.85728 C 202.07135,472.0492 146.45604,541.73617 119.752,507.98128 C 72.627231,447.38436 102.67999,350.88004 130.94945,316.30107 C 150.14614,291.78873 179.50057,282.29068 162.27711,298.99257 z"
+           id="path3074" />
+        <svg:path
+           style="fill:#000000;stroke:#000000;stroke-width:1.5625006"
+           d="M 168.00842,287.54166 C 134.60001,314.53776 73.770374,409.57952 162.49264,471.31385 C 191.63168,490.56173 136.67011,551.25382 105.80822,520.20914 C -1.492906,412.29787 108.60806,288.21363 146.50894,245.555 C 180.38203,208.45651 210.38669,254.31956 168.00842,287.54166 z"
+           id="path3076" />
+        <svg:path
+           style="fill:url(#linearGradient3130);stroke:none;stroke-width:1.26498997"
+           id="path3078"
+           d="M 216.08402,59.364009 C 217.27405,90.31183 251.33194,117.26514 292.15444,119.5659 C 332.97694,121.86667 365.10542,98.64364 363.91539,67.695819 C 362.72536,36.747999 328.66747,9.794692 287.84497,7.493926 C 247.02247,5.193161 214.89399,28.416189 216.08402,59.364009 z" />
+        <svg:path
+           style="fill:url(#linearGradient3132);stroke:none;stroke-width:1.25"
+           d="M 403.48354,356.00288 C 387.43854,319.62413 353.34104,255.72038 352.61479,206.30538 C 352.61479,167.00288 234.89104,157.61663 225.44354,196.85788 C 215.99604,236.09913 192.01729,294.96163 176.75604,323.30288 C 161.49604,351.64288 116.99479,441.67163 164.40104,520.23538 C 207.09729,589.79038 336.55729,644.81788 405.66354,510.78913 C 428.91729,464.28038 424.76979,406.64538 403.48354,356.00288 z"
+           id="path3080" />
+        <svg:path
+           style="fill:url(#linearGradient3134);stroke:none;stroke-width:1.15804005"
+           d="M 417.99044,329.00666 C 431.70017,354.95538 460.22858,423.19981 390.69746,460.53804 C 315.84902,500.17924 316.20892,581.76441 406.04872,542.94566 C 488.18159,507.85838 451.87107,366.0769 428.9001,332.15355 C 413.83858,308.39374 391.24959,279.31108 417.99044,329.00666 z"
+           id="path3082" />
+        <svg:path
+           style="fill:#000000;stroke:#000000;stroke-width:1.5625"
+           d="M 406.21979,299.59663 C 428.05104,335.23163 480.44104,419.36288 410.32979,463.00038 C 315.86854,520.94413 342.61354,578.88913 428.82854,526.71788 C 550.21479,453.88788 443.60979,307.19788 394.91479,251.29538 C 339.35979,188.54538 384.22229,262.65413 406.21979,299.59663 z"
+           id="path3084" />
+        <svg:path
+           style="font-size:12px;fill:url(#linearGradient3136);stroke:none;stroke-width:1.23705006;stroke-dasharray:none"
+           d="M 193.46684,369.81139 C 193.46684,409.52419 231.58162,461.11212 297.01946,460.64897 C 364.50418,461.20646 393.30771,409.52419 393.30771,369.81139 C 393.30771,330.09858 348.54316,297.86838 293.38663,297.86838 C 238.2314,297.86838 193.46684,330.09858 193.46684,369.81139 z"
+           id="path3086" />
+        <svg:path
+           style="font-size:12px;fill:url(#linearGradient3138);stroke:none;stroke-width:1.38846004;stroke-dasharray:none"
+           d="M 229.07624,244.82218 C 229.80256,285.98159 256.58626,295.69095 290.48127,295.69095 C 324.37746,295.69095 348.98101,289.61499 351.88749,244.82218 C 351.88749,216.74303 324.37746,200.49354 290.48127,200.49354 C 256.58626,200.49354 229.07624,216.74303 229.07624,244.82218 z"
+           id="path3088" />
+        <svg:path
+           style="fill:url(#linearGradient3140);stroke:none;stroke-width:1.25"
+           d="M 434.00479,308.04038 C 411.85979,274.29538 365.23604,222.58538 425.28354,315.30663 C 473.97229,391.61038 443.28729,440.64788 427.46354,454.10538 C 381.80479,494.80788 383.75604,522.04163 419.46979,500.61288 C 496.50104,454.83038 480.51354,377.80288 434.00479,308.04038 z"
+           id="path3090" />
+        <svg:path
+           style="fill:url(#linearGradient3142);stroke:none;stroke-width:1.25"
+           d="M 113.53354,321.84663 C 132.68229,282.22038 193.70104,181.96913 110.62604,298.59288 C 35.04979,403.96413 88.09854,477.35913 97.54604,484.62663 C 106.99229,491.89288 138.96729,506.42663 129.51979,480.99288 C 120.07354,455.55913 72.97729,407.27663 113.53354,321.84663 z"
+           id="path3092" />
+        <svg:path
+           style="fill:url(#linearGradient3144);stroke:#e68c3f;stroke-width:7.8125"
+           d="M 450.71729,633.59788 C 501.26979,606.82788 574.78229,638.75288 548.09479,566.01538 C 542.74979,549.46788 556.06354,524.75538 547.36854,508.60788 C 537.19479,488.98538 515.39354,493.34663 502.31229,480.26538 C 489.41479,466.65163 481.23854,443.20413 457.25729,446.83788 C 433.27729,450.47163 417.32604,479.91413 400.57729,515.87413 C 388.22354,541.67163 344.40104,577.95413 347.26479,606.82163 C 350.63479,651.19663 401.04854,659.55913 450.71729,633.59788 z"
+           id="path3094" />
+        <svg:path
+           style="font-size:12px;fill:url(#linearGradient3146);stroke:none;stroke-width:2.85509992;stroke-dasharray:none"
+           d="M 82.24494,462.88931 C 90.01179,477.45399 122.03008,500.5657 143.36844,494.54174 C 165.14161,488.6335 174.9469,455.67689 170.68307,430.73455 C 166.72483,402.64565 143.36911,401.24959 114.0802,415.10503 C 82.59156,430.44169 73.069174,443.58645 82.24494,462.88931 z"
+           id="path3096" />
+        <svg:path
+           style="fill:url(#linearGradient3148);stroke:#e68c3f;stroke-width:7.81249762"
+           d="M 99.91795,621.11875 C 62.839278,576.15428 -19.472149,585.3777 36.039018,523.72611 C 47.784032,510.50878 44.278287,481.85435 58.546079,469.75112 C 75.517493,454.91038 94.23872,467.08152 111.44091,459.32031 C 128.6738,451.0007 146.68545,434.82678 167.72147,446.33083 C 188.75633,457.83446 191.01961,487.76222 193.0034,526.94033 C 194.7428,555.161 220.45875,602.35161 206.80553,628.28161 C 186.78271,668.4905 135.27094,663.16688 99.91795,621.11875 z"
+           id="path3098" />
+        <svg:path
+           style="fill:url(#linearGradient3150);stroke:none;stroke-width:1.52532005"
+           d="M 116.04364,561.0135 C 58.649181,476.2927 101.42547,476.90974 115.75386,470.50188 C 130.12397,463.63622 145.36533,450.33015 162.26421,459.70416 C 179.16214,469.07782 180.12915,493.60411 180.59268,525.71383 C 181.18098,548.84218 200.54356,587.28393 188.89777,608.74832 C 174.9287,633.76781 141.02669,597.42913 116.04364,561.0135 z"
+           id="path3100" />
+        <svg:path
+           style="fill:url(#linearGradient3152);stroke:none;stroke-width:1.52532005"
+           d="M 462.46593,573.2131 C 548.36933,517.60369 508.18451,498.7241 495.14397,489.98944 C 479.50561,478.78744 479.38418,456.95537 460.16707,458.99225 C 440.95097,461.0292 429.76391,484.68716 416.80772,514.07072 C 407.24123,535.13616 374.41331,562.97528 376.76041,587.28248 C 379.8594,615.76955 425.25368,596.99356 462.46593,573.2131 z"
+           id="path3102" />
+        <svg:path
+           style="font-size:12px;fill:#000000;stroke:none;stroke-width:2.85509992"
+           d="M 87.39871,462.09819 C 94.09281,473.77116 121.68879,492.2942 140.07997,487.46624 C 158.8459,482.73103 167.29697,456.31769 163.62209,436.32747 C 160.21059,413.8154 140.0807,412.69653 114.83706,423.80109 C 87.69751,436.0928 79.49031,446.62777 87.39871,462.09819 z"
+           id="path3104" />
+        <svg:path
+           style="font-size:12px;fill:url(#linearGradient3154);stroke:none;stroke-width:2.85509992"
+           d="M 105.88905,455.5601 C 110.15449,463.66511 128.34154,476.52638 140.81207,473.17413 C 153.53282,469.88628 159.75622,451.54645 157.69133,437.66645 C 155.85502,422.03542 142.33597,421.25855 125.12775,428.9689 C 106.61991,437.50352 100.88409,444.81837 105.88905,455.5601 z"
+           id="path3106" />
+      </svg:g>
+    </svg:g>
+    <svg:path
+       style="fill:url(#linearGradient2663);stroke:none;stroke-width:1.17873001;display:inline"
+       id="path2651"
+       d="M 314.16831,133.61019 C 314.29181,154.36704 322.6393,170.64739 335.67002,171.40192 C 348.70075,172.15644 361.90297,156.48561 361.35673,136.34258 C 359.1013,136.26549 352.88574,136.61422 339.85502,135.8597 C 326.82429,135.10517 314.0448,131.82755 314.16831,133.61019 z"
+       sodipodi:nodetypes="cccsc" />
+    <svg:path
+       style="fill:url(#linearGradient2665);stroke:none;stroke-width:0.93138498;display:inline"
+       id="path2653"
+       d="M 290.51788,135.15074 C 290.89516,158.85246 274.99285,176.8935 256.90377,176.39892 C 238.81469,175.90433 224.88427,156.82455 225.01154,133.35969 C 225.01964,131.86711 249.46169,133.54777 262.24994,133.89742 C 272.68072,134.18262 290.71918,133.18492 290.51788,135.15074 z"
+       sodipodi:nodetypes="csssc" />
+    <svg:path
+       style="fill:#000000;stroke:none;stroke-width:1.86495996;display:inline"
+       id="path2655"
+       d="M 275.53134,140.41284 C 275.80453,153.18925 269.35973,163.56084 261.13646,163.57844 C 252.91319,163.59603 246.02545,153.25297 245.75226,140.47655 C 245.47907,127.70013 251.92387,117.32854 260.14714,117.31095 C 268.37041,117.29336 275.25815,127.63642 275.53134,140.41284 z" />
+    <svg:path
+       style="fill:#000000;stroke:none;stroke-width:2.39814997;display:inline"
+       id="path2657"
+       d="M 327.65696,140.54751 C 326.62578,151.12389 330.60317,160.2832 336.54069,161.00539 C 342.47821,161.72759 348.12746,153.73919 349.15863,143.16281 C 350.1898,132.58643 346.21242,123.42712 340.2749,122.70493 C 334.33738,121.98273 328.68813,129.97113 327.65696,140.54751 z" />
+    <svg:path
+       style="fill:url(#linearGradient2667);stroke:none;stroke-width:3.1916101;display:inline"
+       id="path2659"
+       d="M 272.10899,134.17243 C 271.95738,141.29898 269.48888,146.30542 264.69072,146.66958 C 259.89256,147.03373 255.11387,141.57602 254.73332,134.42518 C 254.67174,133.26805 272.4738,133.65486 272.10899,134.17243 z"
+       sodipodi:nodetypes="cssc" />
+    <svg:path
+       style="fill:url(#linearGradient2669);stroke:none;stroke-width:4.12025976;display:inline"
+       id="path2661"
+       d="M 332.68196,134.9396 C 332.06276,140.91144 334.45108,146.08315 338.01641,146.49093 C 341.58174,146.89871 344.82508,142.37083 345.59316,136.4163 C 345.78597,134.92152 333.72754,134.51079 332.68196,134.9396 z"
+       sodipodi:nodetypes="cssc" />
+    <svg:g
+       style="display:inline"
+       id="g3120"
+       transform="translate(-1.8627147e-6,4.206359e-6)">
+      <svg:path
+         id="path3122"
+         d="M 338.85129,160.67175 C 329.91754,152.20925 307.83754,126.83925 266.40004,153.478 C 258.69754,158.4905 252.44754,158.94925 237.62379,165.29675 C 207.96629,177.483 222.14629,206.8705 253.55379,216.68175 C 267.00129,221.043 279.22379,237.37675 303.71504,235.9805 C 324.63254,234.75925 330.11379,221.138 342.96254,213.598 C 365.79879,200.70925 369.16879,183.2805 356.83754,174.03175 C 344.50504,164.783 339.68129,161.458 338.85129,160.67175 z"
+         style="fill:url(#linearGradient3164);stroke:#e68c3f;stroke-width:4.6875" />
+      <svg:path
+         id="path3124"
+         d="M 237.23004,184.31675 C 249.58379,185.043 276.47129,211.9305 304.81254,211.9305 C 333.15379,211.9305 349.86754,185.76925 354.22754,185.76925"
+         style="fill:none;stroke:#e68c3f;stroke-width:3.125" />
+      <svg:path
+         id="path3126"
+         d="M 324.76632,158.35215 C 320.27883,154.31949 306.12379,143.25321 287.35191,154.58277 C 283.39686,156.82605 279.31247,159.26769 273.23831,162.60282 C 261.20678,169.60071 267.16604,179.68533 281.58039,186.0661 C 288.1217,188.74362 298.90562,194.65263 307.1171,194.23924 C 316.24216,193.40054 322.14553,187.44924 328.19332,183.57324 C 339.28805,176.24476 338.61433,170.32742 333.46065,165.40066 C 329.56462,162.01788 325.18324,158.72682 324.76632,158.35215 z"
+         style="fill:url(#linearGradient3166);stroke:none" />
+    </svg:g>
+  </svg:g>
+  <svg:g
+     inkscape:groupmode="layer"
+     id="frame3"
+     inkscape:label="frame3"
+     style="display:none">
+    <svg:g
+       style="display:inline"
+       id="g3168"
+       transform="translate(0,-0.2213731)">
+      <svg:path
+         id="path3170"
+         d="M 292.60975,28.90364 C 185.69571,27.235015 191.67096,138.43626 192.3285,198.15364 C 192.89226,250.20364 154.106,279.71114 127.5785,320.27864 C 97.674303,365.67663 87.543573,431.01619 96.422253,490.87239 C 89.780803,491.32987 83.215603,493.12305 76.891003,498.65364 C 62.623213,510.75687 66.136003,539.40507 54.391005,552.62239 C -1.1201651,614.27398 81.187343,605.06418 118.266,650.02864 C 153.61899,692.07677 205.14942,697.39381 225.17225,657.18489 C 226.35983,654.92945 227.2262,652.51682 227.85975,649.96614 C 257.41198,652.75379 283.01502,643.38461 303.29725,645.02864 C 334.40096,646.7313 352.71477,654.75318 370.17225,653.30989 C 384.1406,681.83793 426.88102,684.5535 469.0785,662.49739 C 519.63097,635.72741 593.141,667.64114 566.4535,594.90364 C 561.10847,578.35611 574.42975,553.64489 565.73475,537.49739 C 555.56098,517.8749 533.7535,522.23489 520.67225,509.15364 C 509.68977,497.56123 502.10654,478.87063 485.29725,475.80989 C 487.03625,421.30654 473.49303,353.80369 433.8285,304.87239 C 401.471,266.22489 393.2235,239.28239 390.67225,203.12239 C 388.93601,161.89864 419.80725,38.81239 303.29725,29.43489 C 299.60952,29.140671 296.05859,28.957467 292.60975,28.90364 z"
+         style="opacity:0.8;fill:#000000;stroke:none;stroke-width:1.25;display:inline;filter:url(#filter3563)" />
+      <svg:g
+         transform="translate(-0.4498367,-0.2213987)"
+         id="g3172">
+        <svg:path
+           style="fill:#000000;stroke:none;stroke-width:1.25"
+           d="M 447.32729,527.74663 C 475.31229,487.46788 480.76979,356.51663 415.46854,275.95913 C 383.11104,237.31163 374.85604,210.37788 372.30479,174.21788 C 370.56854,132.99413 401.46104,9.91538 284.95104,0.53788 C 166.94354,-8.87712 173.28104,107.61288 173.95979,169.25663 C 174.52354,221.30663 135.74229,250.80788 109.21479,291.37538 C 60.11604,365.91288 64.26854,494.25038 118.46354,563.71538 C 187.10979,650.67538 245.90479,612.96288 284.95104,616.12788 C 358.06729,620.13038 360.48479,659.11663 447.32729,527.74663 z"
+           id="path3174" />
+        <svg:path
+           style="fill:url(#linearGradient3230);stroke:none;stroke-width:0.99464899"
+           d="M 162.27711,298.99257 C 142.0115,317.64773 89.26718,401.61676 172.66991,453.85728 C 202.07135,472.0492 146.45604,541.73617 119.752,507.98128 C 72.627231,447.38436 102.67999,350.88004 130.94945,316.30107 C 150.14614,291.78873 179.50057,282.29068 162.27711,298.99257 z"
+           id="path3176" />
+        <svg:path
+           style="fill:#000000;stroke:#000000;stroke-width:1.5625006"
+           d="M 168.00842,287.54166 C 134.60001,314.53776 73.770374,409.57952 162.49264,471.31385 C 191.63168,490.56173 136.67011,551.25382 105.80822,520.20914 C -1.492906,412.29787 108.60806,288.21363 146.50894,245.555 C 180.38203,208.45651 210.38669,254.31956 168.00842,287.54166 z"
+           id="path3178" />
+        <svg:path
+           style="fill:url(#linearGradient3232);stroke:none;stroke-width:1.26498997"
+           id="path3180"
+           d="M 216.08402,59.364009 C 217.27405,90.31183 251.33194,117.26514 292.15444,119.5659 C 332.97694,121.86667 365.10542,98.64364 363.91539,67.695819 C 362.72536,36.747999 328.66747,9.794692 287.84497,7.493926 C 247.02247,5.193161 214.89399,28.416189 216.08402,59.364009 z" />
+        <svg:path
+           style="fill:url(#linearGradient3234);stroke:none;stroke-width:1.25"
+           d="M 403.48354,356.00288 C 387.43854,319.62413 353.34104,255.72038 352.61479,206.30538 C 352.61479,167.00288 234.89104,157.61663 225.44354,196.85788 C 215.99604,236.09913 192.01729,294.96163 176.75604,323.30288 C 161.49604,351.64288 116.99479,441.67163 164.40104,520.23538 C 207.09729,589.79038 336.55729,644.81788 405.66354,510.78913 C 428.91729,464.28038 424.76979,406.64538 403.48354,356.00288 z"
+           id="path3182" />
+        <svg:path
+           style="fill:url(#linearGradient3236);stroke:none;stroke-width:1.15804005"
+           d="M 417.99044,329.00666 C 431.70017,354.95538 460.22858,423.19981 390.69746,460.53804 C 315.84902,500.17924 316.20892,581.76441 406.04872,542.94566 C 488.18159,507.85838 451.87107,366.0769 428.9001,332.15355 C 413.83858,308.39374 391.24959,279.31108 417.99044,329.00666 z"
+           id="path3184" />
+        <svg:path
+           style="fill:#000000;stroke:#000000;stroke-width:1.5625"
+           d="M 406.21979,299.59663 C 428.05104,335.23163 480.44104,419.36288 410.32979,463.00038 C 315.86854,520.94413 342.61354,578.88913 428.82854,526.71788 C 550.21479,453.88788 443.60979,307.19788 394.91479,251.29538 C 339.35979,188.54538 384.22229,262.65413 406.21979,299.59663 z"
+           id="path3186" />
+        <svg:path
+           style="font-size:12px;fill:url(#linearGradient3238);stroke:none;stroke-width:1.23705006;stroke-dasharray:none"
+           d="M 193.46684,369.81139 C 193.46684,409.52419 231.58162,461.11212 297.01946,460.64897 C 364.50418,461.20646 393.30771,409.52419 393.30771,369.81139 C 393.30771,330.09858 348.54316,297.86838 293.38663,297.86838 C 238.2314,297.86838 193.46684,330.09858 193.46684,369.81139 z"
+           id="path3188" />
+        <svg:path
+           style="font-size:12px;fill:url(#linearGradient3240);stroke:none;stroke-width:1.38846004;stroke-dasharray:none"
+           d="M 229.07624,244.82218 C 229.80256,285.98159 256.58626,295.69095 290.48127,295.69095 C 324.37746,295.69095 348.98101,289.61499 351.88749,244.82218 C 351.88749,216.74303 324.37746,200.49354 290.48127,200.49354 C 256.58626,200.49354 229.07624,216.74303 229.07624,244.82218 z"
+           id="path3190" />
+        <svg:path
+           style="fill:url(#linearGradient3242);stroke:none;stroke-width:1.25"
+           d="M 434.00479,308.04038 C 411.85979,274.29538 365.23604,222.58538 425.28354,315.30663 C 473.97229,391.61038 443.28729,440.64788 427.46354,454.10538 C 381.80479,494.80788 383.75604,522.04163 419.46979,500.61288 C 496.50104,454.83038 480.51354,377.80288 434.00479,308.04038 z"
+           id="path3192" />
+        <svg:path
+           style="fill:url(#linearGradient3244);stroke:none;stroke-width:1.25"
+           d="M 113.53354,321.84663 C 132.68229,282.22038 193.70104,181.96913 110.62604,298.59288 C 35.04979,403.96413 88.09854,477.35913 97.54604,484.62663 C 106.99229,491.89288 138.96729,506.42663 129.51979,480.99288 C 120.07354,455.55913 72.97729,407.27663 113.53354,321.84663 z"
+           id="path3194" />
+        <svg:path
+           style="fill:url(#linearGradient3246);stroke:#e68c3f;stroke-width:7.8125"
+           d="M 450.71729,633.59788 C 501.26979,606.82788 574.78229,638.75288 548.09479,566.01538 C 542.74979,549.46788 556.06354,524.75538 547.36854,508.60788 C 537.19479,488.98538 515.39354,493.34663 502.31229,480.26538 C 489.41479,466.65163 481.23854,443.20413 457.25729,446.83788 C 433.27729,450.47163 417.32604,479.91413 400.57729,515.87413 C 388.22354,541.67163 344.40104,577.95413 347.26479,606.82163 C 350.63479,651.19663 401.04854,659.55913 450.71729,633.59788 z"
+           id="path3196" />
+        <svg:path
+           style="font-size:12px;fill:url(#linearGradient3248);stroke:none;stroke-width:2.85509992;stroke-dasharray:none"
+           d="M 82.24494,462.88931 C 90.01179,477.45399 122.03008,500.5657 143.36844,494.54174 C 165.14161,488.6335 174.9469,455.67689 170.68307,430.73455 C 166.72483,402.64565 143.36911,401.24959 114.0802,415.10503 C 82.59156,430.44169 73.069174,443.58645 82.24494,462.88931 z"
+           id="path3198" />
+        <svg:path
+           style="fill:url(#linearGradient3250);stroke:#e68c3f;stroke-width:7.81249762"
+           d="M 99.91795,621.11875 C 62.839278,576.15428 -19.472149,585.3777 36.039018,523.72611 C 47.784032,510.50878 44.278287,481.85435 58.546079,469.75112 C 75.517493,454.91038 94.23872,467.08152 111.44091,459.32031 C 128.6738,451.0007 146.68545,434.82678 167.72147,446.33083 C 188.75633,457.83446 191.01961,487.76222 193.0034,526.94033 C 194.7428,555.161 220.45875,602.35161 206.80553,628.28161 C 186.78271,668.4905 135.27094,663.16688 99.91795,621.11875 z"
+           id="path3200" />
+        <svg:path
+           style="fill:url(#linearGradient3252);stroke:none;stroke-width:1.52532005"
+           d="M 116.04364,561.0135 C 58.649181,476.2927 101.42547,476.90974 115.75386,470.50188 C 130.12397,463.63622 145.36533,450.33015 162.26421,459.70416 C 179.16214,469.07782 180.12915,493.60411 180.59268,525.71383 C 181.18098,548.84218 200.54356,587.28393 188.89777,608.74832 C 174.9287,633.76781 141.02669,597.42913 116.04364,561.0135 z"
+           id="path3202" />
+        <svg:path
+           style="fill:url(#linearGradient3254);stroke:none;stroke-width:1.52532005"
+           d="M 462.46593,573.2131 C 548.36933,517.60369 508.18451,498.7241 495.14397,489.98944 C 479.50561,478.78744 479.38418,456.95537 460.16707,458.99225 C 440.95097,461.0292 429.76391,484.68716 416.80772,514.07072 C 407.24123,535.13616 374.41331,562.97528 376.76041,587.28248 C 379.8594,615.76955 425.25368,596.99356 462.46593,573.2131 z"
+           id="path3204" />
+        <svg:path
+           style="font-size:12px;fill:#000000;stroke:none;stroke-width:2.85509992"
+           d="M 87.39871,462.09819 C 94.09281,473.77116 121.68879,492.2942 140.07997,487.46624 C 158.8459,482.73103 167.29697,456.31769 163.62209,436.32747 C 160.21059,413.8154 140.0807,412.69653 114.83706,423.80109 C 87.69751,436.0928 79.49031,446.62777 87.39871,462.09819 z"
+           id="path3206" />
+        <svg:path
+           style="font-size:12px;fill:url(#linearGradient3256);stroke:none;stroke-width:2.85509992"
+           d="M 105.88905,455.5601 C 110.15449,463.66511 128.34154,476.52638 140.81207,473.17413 C 153.53282,469.88628 159.75622,451.54645 157.69133,437.66645 C 155.85502,422.03542 142.33597,421.25855 125.12775,428.9689 C 106.61991,437.50352 100.88409,444.81837 105.88905,455.5601 z"
+           id="path3208" />
+      </svg:g>
+    </svg:g>
+    <svg:g
+       style="display:inline"
+       id="g3222"
+       transform="translate(-1.9912561e-6,4.8775266e-6)">
+      <svg:path
+         id="path3224"
+         d="M 338.85129,160.67175 C 329.91754,152.20925 307.83754,126.83925 266.40004,153.478 C 258.69754,158.4905 252.44754,158.94925 237.62379,165.29675 C 207.96629,177.483 222.14629,206.8705 253.55379,216.68175 C 267.00129,221.043 279.22379,237.37675 303.71504,235.9805 C 324.63254,234.75925 330.11379,221.138 342.96254,213.598 C 365.79879,200.70925 369.16879,183.2805 356.83754,174.03175 C 344.50504,164.783 339.68129,161.458 338.85129,160.67175 z"
+         style="fill:url(#linearGradient3266);stroke:#e68c3f;stroke-width:4.6875" />
+      <svg:path
+         id="path3226"
+         d="M 237.23004,184.31675 C 249.58379,185.043 276.47129,211.9305 304.81254,211.9305 C 333.15379,211.9305 349.86754,185.76925 354.22754,185.76925"
+         style="fill:none;stroke:#e68c3f;stroke-width:3.125" />
+      <svg:path
+         id="path3228"
+         d="M 324.76632,158.35215 C 320.27883,154.31949 306.12379,143.25321 287.35191,154.58277 C 283.39686,156.82605 279.31247,159.26769 273.23831,162.60282 C 261.20678,169.60071 267.16604,179.68533 281.58039,186.0661 C 288.1217,188.74362 298.90562,194.65263 307.1171,194.23924 C 316.24216,193.40054 322.14553,187.44924 328.19332,183.57324 C 339.28805,176.24476 338.61433,170.32742 333.46065,165.40066 C 329.56462,162.01788 325.18324,158.72682 324.76632,158.35215 z"
+         style="fill:url(#linearGradient3268);stroke:none" />
+    </svg:g>
+  </svg:g>
+  <svg:g
+     inkscape:groupmode="layer"
+     id="frame4"
+     inkscape:label="frame4"
+     style="display:none">
+    <svg:g
+       style="display:inline"
+       id="g3270"
+       transform="translate(0,-0.2213731)">
+      <svg:path
+         id="path3272"
+         d="M 292.60975,28.90364 C 185.69571,27.235015 191.67096,138.43626 192.3285,198.15364 C 192.89226,250.20364 154.106,279.71114 127.5785,320.27864 C 97.674303,365.67663 87.543573,431.01619 96.422253,490.87239 C 89.780803,491.32987 83.215603,493.12305 76.891003,498.65364 C 62.623213,510.75687 66.136003,539.40507 54.391005,552.62239 C -1.1201651,614.27398 81.187343,605.06418 118.266,650.02864 C 153.61899,692.07677 205.14942,697.39381 225.17225,657.18489 C 226.35983,654.92945 227.2262,652.51682 227.85975,649.96614 C 257.41198,652.75379 283.01502,643.38461 303.29725,645.02864 C 334.40096,646.7313 352.71477,654.75318 370.17225,653.30989 C 384.1406,681.83793 426.88102,684.5535 469.0785,662.49739 C 519.63097,635.72741 593.141,667.64114 566.4535,594.90364 C 561.10847,578.35611 574.42975,553.64489 565.73475,537.49739 C 555.56098,517.8749 533.7535,522.23489 520.67225,509.15364 C 509.68977,497.56123 502.10654,478.87063 485.29725,475.80989 C 487.03625,421.30654 473.49303,353.80369 433.8285,304.87239 C 401.471,266.22489 393.2235,239.28239 390.67225,203.12239 C 388.93601,161.89864 419.80725,38.81239 303.29725,29.43489 C 299.60952,29.140671 296.05859,28.957467 292.60975,28.90364 z"
+         style="opacity:0.8;fill:#000000;stroke:none;stroke-width:1.25;display:inline;filter:url(#filter3563)" />
+      <svg:g
+         transform="translate(-0.4498367,-0.2213987)"
+         id="g3274">
+        <svg:path
+           style="fill:#000000;stroke:none;stroke-width:1.25"
+           d="M 447.32729,527.74663 C 475.31229,487.46788 480.76979,356.51663 415.46854,275.95913 C 383.11104,237.31163 374.85604,210.37788 372.30479,174.21788 C 370.56854,132.99413 401.46104,9.91538 284.95104,0.53788 C 166.94354,-8.87712 173.28104,107.61288 173.95979,169.25663 C 174.52354,221.30663 135.74229,250.80788 109.21479,291.37538 C 60.11604,365.91288 64.26854,494.25038 118.46354,563.71538 C 187.10979,650.67538 245.90479,612.96288 284.95104,616.12788 C 358.06729,620.13038 360.48479,659.11663 447.32729,527.74663 z"
+           id="path3276" />
+        <svg:path
+           style="fill:url(#linearGradient3312);stroke:none;stroke-width:0.99464899"
+           d="M 162.27711,298.99257 C 142.0115,317.64773 89.26718,401.61676 172.66991,453.85728 C 202.07135,472.0492 146.45604,541.73617 119.752,507.98128 C 72.627231,447.38436 102.67999,350.88004 130.94945,316.30107 C 150.14614,291.78873 179.50057,282.29068 162.27711,298.99257 z"
+           id="path3278" />
+        <svg:path
+           style="fill:#000000;stroke:#000000;stroke-width:1.5625006"
+           d="M 168.00842,287.54166 C 134.60001,314.53776 73.770374,409.57952 162.49264,471.31385 C 191.63168,490.56173 136.67011,551.25382 105.80822,520.20914 C -1.492906,412.29787 108.60806,288.21363 146.50894,245.555 C 180.38203,208.45651 210.38669,254.31956 168.00842,287.54166 z"
+           id="path3280" />
+        <svg:path
+           style="fill:url(#linearGradient3314);stroke:none;stroke-width:1.26498997"
+           id="path3282"
+           d="M 216.08402,59.364009 C 217.27405,90.31183 251.33194,117.26514 292.15444,119.5659 C 332.97694,121.86667 365.10542,98.64364 363.91539,67.695819 C 362.72536,36.747999 328.66747,9.794692 287.84497,7.493926 C 247.02247,5.193161 214.89399,28.416189 216.08402,59.364009 z" />
+        <svg:path
+           style="fill:url(#linearGradient3316);stroke:none;stroke-width:1.25"
+           d="M 403.48354,356.00288 C 387.43854,319.62413 353.34104,255.72038 352.61479,206.30538 C 352.61479,167.00288 234.89104,157.61663 225.44354,196.85788 C 215.99604,236.09913 192.01729,294.96163 176.75604,323.30288 C 161.49604,351.64288 116.99479,441.67163 164.40104,520.23538 C 207.09729,589.79038 336.55729,644.81788 405.66354,510.78913 C 428.91729,464.28038 424.76979,406.64538 403.48354,356.00288 z"
+           id="path3284" />
+        <svg:path
+           style="fill:url(#linearGradient3318);stroke:none;stroke-width:1.15804005"
+           d="M 417.99044,329.00666 C 431.70017,354.95538 460.22858,423.19981 390.69746,460.53804 C 315.84902,500.17924 316.20892,581.76441 406.04872,542.94566 C 488.18159,507.85838 451.87107,366.0769 428.9001,332.15355 C 413.83858,308.39374 391.24959,279.31108 417.99044,329.00666 z"
+           id="path3286" />
+        <svg:path
+           style="fill:#000000;stroke:#000000;stroke-width:1.5625"
+           d="M 406.21979,299.59663 C 428.05104,335.23163 480.44104,419.36288 410.32979,463.00038 C 315.86854,520.94413 342.61354,578.88913 428.82854,526.71788 C 550.21479,453.88788 443.60979,307.19788 394.91479,251.29538 C 339.35979,188.54538 384.22229,262.65413 406.21979,299.59663 z"
+           id="path3288" />
+        <svg:path
+           style="font-size:12px;fill:url(#linearGradient3320);stroke:none;stroke-width:1.23705006;stroke-dasharray:none"
+           d="M 193.46684,369.81139 C 193.46684,409.52419 231.58162,461.11212 297.01946,460.64897 C 364.50418,461.20646 393.30771,409.52419 393.30771,369.81139 C 393.30771,330.09858 348.54316,297.86838 293.38663,297.86838 C 238.2314,297.86838 193.46684,330.09858 193.46684,369.81139 z"
+           id="path3290" />
+        <svg:path
+           style="font-size:12px;fill:url(#linearGradient3322);stroke:none;stroke-width:1.38846004;stroke-dasharray:none"
+           d="M 229.07624,244.82218 C 229.80256,285.98159 256.58626,295.69095 290.48127,295.69095 C 324.37746,295.69095 348.98101,289.61499 351.88749,244.82218 C 351.88749,216.74303 324.37746,200.49354 290.48127,200.49354 C 256.58626,200.49354 229.07624,216.74303 229.07624,244.82218 z"
+           id="path3292" />
+        <svg:path
+           style="fill:url(#linearGradient3324);stroke:none;stroke-width:1.25"
+           d="M 434.00479,308.04038 C 411.85979,274.29538 365.23604,222.58538 425.28354,315.30663 C 473.97229,391.61038 443.28729,440.64788 427.46354,454.10538 C 381.80479,494.80788 383.75604,522.04163 419.46979,500.61288 C 496.50104,454.83038 480.51354,377.80288 434.00479,308.04038 z"
+           id="path3294" />
+        <svg:path
+           style="fill:url(#linearGradient3326);stroke:none;stroke-width:1.25"
+           d="M 113.53354,321.84663 C 132.68229,282.22038 193.70104,181.96913 110.62604,298.59288 C 35.04979,403.96413 88.09854,477.35913 97.54604,484.62663 C 106.99229,491.89288 138.96729,506.42663 129.51979,480.99288 C 120.07354,455.55913 72.97729,407.27663 113.53354,321.84663 z"
+           id="path3296" />
+        <svg:path
+           style="fill:url(#linearGradient3328);stroke:#e68c3f;stroke-width:7.8125"
+           d="M 450.71729,633.59788 C 501.26979,606.82788 574.78229,638.75288 548.09479,566.01538 C 542.74979,549.46788 556.06354,524.75538 547.36854,508.60788 C 537.19479,488.98538 515.39354,493.34663 502.31229,480.26538 C 489.41479,466.65163 481.23854,443.20413 457.25729,446.83788 C 433.27729,450.47163 417.32604,479.91413 400.57729,515.87413 C 388.22354,541.67163 344.40104,577.95413 347.26479,606.82163 C 350.63479,651.19663 401.04854,659.55913 450.71729,633.59788 z"
+           id="path3298" />
+        <svg:path
+           style="font-size:12px;fill:url(#linearGradient3330);stroke:none;stroke-width:2.85509992;stroke-dasharray:none"
+           d="M 82.24494,462.88931 C 90.01179,477.45399 122.03008,500.5657 143.36844,494.54174 C 165.14161,488.6335 174.9469,455.67689 170.68307,430.73455 C 166.72483,402.64565 143.36911,401.24959 114.0802,415.10503 C 82.59156,430.44169 73.069174,443.58645 82.24494,462.88931 z"
+           id="path3300" />
+        <svg:path
+           style="fill:url(#linearGradient3332);stroke:#e68c3f;stroke-width:7.81249762"
+           d="M 99.91795,621.11875 C 62.839278,576.15428 -19.472149,585.3777 36.039018,523.72611 C 47.784032,510.50878 44.278287,481.85435 58.546079,469.75112 C 75.517493,454.91038 94.23872,467.08152 111.44091,459.32031 C 128.6738,451.0007 146.68545,434.82678 167.72147,446.33083 C 188.75633,457.83446 191.01961,487.76222 193.0034,526.94033 C 194.7428,555.161 220.45875,602.35161 206.80553,628.28161 C 186.78271,668.4905 135.27094,663.16688 99.91795,621.11875 z"
+           id="path3302" />
+        <svg:path
+           style="fill:url(#linearGradient3334);stroke:none;stroke-width:1.52532005"
+           d="M 116.04364,561.0135 C 58.649181,476.2927 101.42547,476.90974 115.75386,470.50188 C 130.12397,463.63622 145.36533,450.33015 162.26421,459.70416 C 179.16214,469.07782 180.12915,493.60411 180.59268,525.71383 C 181.18098,548.84218 200.54356,587.28393 188.89777,608.74832 C 174.9287,633.76781 141.02669,597.42913 116.04364,561.0135 z"
+           id="path3304" />
+        <svg:path
+           style="fill:url(#linearGradient3336);stroke:none;stroke-width:1.52532005"
+           d="M 462.46593,573.2131 C 548.36933,517.60369 508.18451,498.7241 495.14397,489.98944 C 479.50561,478.78744 479.38418,456.95537 460.16707,458.99225 C 440.95097,461.0292 429.76391,484.68716 416.80772,514.07072 C 407.24123,535.13616 374.41331,562.97528 376.76041,587.28248 C 379.8594,615.76955 425.25368,596.99356 462.46593,573.2131 z"
+           id="path3306" />
+        <svg:path
+           style="font-size:12px;fill:#000000;stroke:none;stroke-width:2.85509992"
+           d="M 87.39871,462.09819 C 94.09281,473.77116 121.68879,492.2942 140.07997,487.46624 C 158.8459,482.73103 167.29697,456.31769 163.62209,436.32747 C 160.21059,413.8154 140.0807,412.69653 114.83706,423.80109 C 87.69751,436.0928 79.49031,446.62777 87.39871,462.09819 z"
+           id="path3308" />
+        <svg:path
+           style="font-size:12px;fill:url(#linearGradient3338);stroke:none;stroke-width:2.85509992"
+           d="M 105.88905,455.5601 C 110.15449,463.66511 128.34154,476.52638 140.81207,473.17413 C 153.53282,469.88628 159.75622,451.54645 157.69133,437.66645 C 155.85502,422.03542 142.33597,421.25855 125.12775,428.9689 C 106.61991,437.50352 100.88409,444.81837 105.88905,455.5601 z"
+           id="path3310" />
+      </svg:g>
+    </svg:g>
+    <svg:path
+       style="fill:url(#linearGradient2616);stroke:#e68c3f;stroke-width:4.6875;display:inline"
+       d="M 338.85129,160.67176 C 329.91754,152.20926 307.83754,126.83926 266.40004,153.47801 C 258.69754,158.49051 252.44754,158.94926 237.62379,165.29676 C 207.96629,177.483 222.14629,206.8705 253.55379,216.68175 C 267.00129,221.043 279.22379,237.37675 303.71504,235.9805 C 324.63254,234.75925 330.11379,221.138 342.96254,213.598 C 365.79879,200.70925 369.16879,183.2805 356.83754,174.03175 C 344.50504,164.78301 339.68129,161.45801 338.85129,160.67176 z"
+       id="path2610" />
+    <svg:path
+       style="fill:url(#linearGradient2618);stroke:none;display:inline"
+       d="M 324.76632,158.35216 C 320.27883,154.3195 306.12379,143.25322 287.35191,154.58278 C 283.39686,156.82606 279.31247,159.2677 273.23831,162.60283 C 261.20678,169.60072 267.16604,179.68533 281.58039,186.0661 C 288.1217,188.74362 298.90562,194.65263 307.1171,194.23924 C 316.24216,193.40054 322.14553,187.44924 328.19332,183.57324 C 339.28805,176.24476 338.61433,170.32742 333.46065,165.40067 C 329.56462,162.01789 325.18324,158.72683 324.76632,158.35216 z"
+       id="path2614" />
+    <svg:path
+       style="fill:#000000;fill-opacity:1;stroke:#e68c3f;stroke-width:3.125;display:inline"
+       d="M 265.875,171.875 C 256.47389,171.95554 246.74579,182.59415 239.84375,184.34375 L 237.21875,184.3125 C 237.70756,184.34124 238.24774,184.42388 238.78125,184.53125 C 238.61143,184.55093 238.44706,184.58754 238.28125,184.59375 L 239.03125,184.59375 C 252.0621,187.46313 277.76657,211.9375 304.8125,211.9375 C 333.15376,211.9375 349.85875,185.78125 354.21875,185.78125 L 353.5625,185.78125 L 353.46875,185.78125 C 350.74993,185.51397 339.47792,172.52285 332.65625,172.34375 C 324.28987,172.1241 306.641,181.90625 300.09375,181.90625 C 291.30804,181.90625 278.12176,171.77225 265.875,171.875 z"
+       id="path2612" />
+    <svg:path
+       style="fill:url(#linearGradient3438);stroke:none;stroke-width:1.17873001;display:inline"
+       d="M 338.63235,98.59613 C 330.90457,98.75271 323.84231,104.64458 319.2886,113.72113 C 324.33942,105.93254 331.55918,101.20467 339.25735,101.62738 C 349.65943,102.19856 358.00091,112.02939 360.9136,125.50238 C 358.7781,110.50171 350.43856,99.240427 339.8511,98.62738 C 339.44389,98.603801 339.0363,98.587945 338.63235,98.59613 z"
+       id="path3412" />
+    <svg:path
+       style="fill:url(#linearGradient3440);stroke:none;stroke-width:0.93138498;display:inline"
+       d="M 257.44485,92.15863 C 245.15207,92.38898 234.41072,101.38661 228.9136,114.56488 C 226.56149,120.20358 225.14669,126.61926 225.00735,133.43988 C 224.98,134.77885 225.03288,136.09898 225.1011,137.40863 C 225.24546,130.58803 226.69558,124.17233 229.13235,118.53363 C 235.01102,104.93025 246.66511,95.808979 259.9136,96.15863 C 270.38878,96.435091 279.63535,102.57299 285.6636,112.00238 C 285.15455,110.94667 284.6166,109.93061 284.0386,108.93988 C 278.2401,99.000908 269.06314,92.475072 258.63235,92.18988 C 258.23272,92.178953 257.84139,92.151199 257.44485,92.15863 z"
+       id="path3414" />
+    <svg:path
+       style="fill:url(#radialGradient3410);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 277,203.10176 C 277.42264,203.10176 278.46511,199.56435 281.21389,196.39485 C 284.0115,193.16904 284.81059,192.03281 287.78951,191.19375 C 290.76843,190.35469 295.86773,192.58739 299.94953,192.66129 C 304.03133,192.73519 312.9627,188.48527 315.34703,192.29054 C 318.60722,195.37863 318.37999,196.78615 319.49575,198.91166 C 320.61151,201.03718 322.73832,206.43271 322.73832,206.43271 C 322.73832,206.43271 314.52167,210.94514 301.2723,210.3555 C 287.85883,209.75856 277,203.10176 277,203.10176 z"
+       id="path3397"
+       sodipodi:nodetypes="cszzzzczc" />
+  </svg:g>
+  <svg:g
+     inkscape:groupmode="layer"
+     id="frame5"
+     inkscape:label="frame5"
+     style="display:none">
+    <svg:g
+       style="display:inline"
+       id="g3340"
+       transform="translate(0,-0.2213731)">
+      <svg:path
+         id="path3342"
+         d="M 292.60975,28.90364 C 185.69571,27.235015 191.67096,138.43626 192.3285,198.15364 C 192.89226,250.20364 154.106,279.71114 127.5785,320.27864 C 97.674303,365.67663 87.543573,431.01619 96.422253,490.87239 C 89.780803,491.32987 83.215603,493.12305 76.891003,498.65364 C 62.623213,510.75687 66.136003,539.40507 54.391005,552.62239 C -1.1201651,614.27398 81.187343,605.06418 118.266,650.02864 C 153.61899,692.07677 205.14942,697.39381 225.17225,657.18489 C 226.35983,654.92945 227.2262,652.51682 227.85975,649.96614 C 257.41198,652.75379 283.01502,643.38461 303.29725,645.02864 C 334.40096,646.7313 352.71477,654.75318 370.17225,653.30989 C 384.1406,681.83793 426.88102,684.5535 469.0785,662.49739 C 519.63097,635.72741 593.141,667.64114 566.4535,594.90364 C 561.10847,578.35611 574.42975,553.64489 565.73475,537.49739 C 555.56098,517.8749 533.7535,522.23489 520.67225,509.15364 C 509.68977,497.56123 502.10654,478.87063 485.29725,475.80989 C 487.03625,421.30654 473.49303,353.80369 433.8285,304.87239 C 401.471,266.22489 393.2235,239.28239 390.67225,203.12239 C 388.93601,161.89864 419.80725,38.81239 303.29725,29.43489 C 299.60952,29.140671 296.05859,28.957467 292.60975,28.90364 z"
+         style="opacity:0.8;fill:#000000;stroke:none;stroke-width:1.25;display:inline;filter:url(#filter3563)" />
+      <svg:g
+         transform="translate(-0.4498367,-0.2213987)"
+         id="g3344">
+        <svg:path
+           style="fill:#000000;stroke:none;stroke-width:1.25"
+           d="M 447.32729,527.74663 C 475.31229,487.46788 480.76979,356.51663 415.46854,275.95913 C 383.11104,237.31163 374.85604,210.37788 372.30479,174.21788 C 370.56854,132.99413 401.46104,9.91538 284.95104,0.53788 C 166.94354,-8.87712 173.28104,107.61288 173.95979,169.25663 C 174.52354,221.30663 135.74229,250.80788 109.21479,291.37538 C 60.11604,365.91288 64.26854,494.25038 118.46354,563.71538 C 187.10979,650.67538 245.90479,612.96288 284.95104,616.12788 C 358.06729,620.13038 360.48479,659.11663 447.32729,527.74663 z"
+           id="path3346" />
+        <svg:path
+           style="fill:url(#linearGradient3382);stroke:none;stroke-width:0.99464899"
+           d="M 162.27711,298.99257 C 142.0115,317.64773 89.26718,401.61676 172.66991,453.85728 C 202.07135,472.0492 146.45604,541.73617 119.752,507.98128 C 72.627231,447.38436 102.67999,350.88004 130.94945,316.30107 C 150.14614,291.78873 179.50057,282.29068 162.27711,298.99257 z"
+           id="path3348" />
+        <svg:path
+           style="fill:#000000;stroke:#000000;stroke-width:1.5625006"
+           d="M 168.00842,287.54166 C 134.60001,314.53776 73.770374,409.57952 162.49264,471.31385 C 191.63168,490.56173 136.67011,551.25382 105.80822,520.20914 C -1.492906,412.29787 108.60806,288.21363 146.50894,245.555 C 180.38203,208.45651 210.38669,254.31956 168.00842,287.54166 z"
+           id="path3350" />
+        <svg:path
+           style="fill:url(#linearGradient3384);stroke:none;stroke-width:1.26498997"
+           id="path3352"
+           d="M 216.08402,59.364009 C 217.27405,90.31183 251.33194,117.26514 292.15444,119.5659 C 332.97694,121.86667 365.10542,98.64364 363.91539,67.695819 C 362.72536,36.747999 328.66747,9.794692 287.84497,7.493926 C 247.02247,5.193161 214.89399,28.416189 216.08402,59.364009 z" />
+        <svg:path
+           style="fill:url(#linearGradient3386);stroke:none;stroke-width:1.25"
+           d="M 403.48354,356.00288 C 387.43854,319.62413 353.34104,255.72038 352.61479,206.30538 C 352.61479,167.00288 234.89104,157.61663 225.44354,196.85788 C 215.99604,236.09913 192.01729,294.96163 176.75604,323.30288 C 161.49604,351.64288 116.99479,441.67163 164.40104,520.23538 C 207.09729,589.79038 336.55729,644.81788 405.66354,510.78913 C 428.91729,464.28038 424.76979,406.64538 403.48354,356.00288 z"
+           id="path3354" />
+        <svg:path
+           style="fill:url(#linearGradient3388);stroke:none;stroke-width:1.15804005"
+           d="M 417.99044,329.00666 C 431.70017,354.95538 460.22858,423.19981 390.69746,460.53804 C 315.84902,500.17924 316.20892,581.76441 406.04872,542.94566 C 488.18159,507.85838 451.87107,366.0769 428.9001,332.15355 C 413.83858,308.39374 391.24959,279.31108 417.99044,329.00666 z"
+           id="path3356" />
+        <svg:path
+           style="fill:#000000;stroke:#000000;stroke-width:1.5625"
+           d="M 406.21979,299.59663 C 428.05104,335.23163 480.44104,419.36288 410.32979,463.00038 C 315.86854,520.94413 342.61354,578.88913 428.82854,526.71788 C 550.21479,453.88788 443.60979,307.19788 394.91479,251.29538 C 339.35979,188.54538 384.22229,262.65413 406.21979,299.59663 z"
+           id="path3358" />
+        <svg:path
+           style="font-size:12px;fill:url(#linearGradient3390);stroke:none;stroke-width:1.23705006;stroke-dasharray:none"
+           d="M 193.46684,369.81139 C 193.46684,409.52419 231.58162,461.11212 297.01946,460.64897 C 364.50418,461.20646 393.30771,409.52419 393.30771,369.81139 C 393.30771,330.09858 348.54316,297.86838 293.38663,297.86838 C 238.2314,297.86838 193.46684,330.09858 193.46684,369.81139 z"
+           id="path3360" />
+        <svg:path
+           style="font-size:12px;fill:url(#linearGradient3392);stroke:none;stroke-width:1.38846004;stroke-dasharray:none"
+           d="M 229.07624,244.82218 C 229.80256,285.98159 256.58626,295.69095 290.48127,295.69095 C 324.37746,295.69095 348.98101,289.61499 351.88749,244.82218 C 351.88749,216.74303 324.37746,200.49354 290.48127,200.49354 C 256.58626,200.49354 229.07624,216.74303 229.07624,244.82218 z"
+           id="path3362" />
+        <svg:path
+           style="fill:url(#linearGradient3394);stroke:none;stroke-width:1.25"
+           d="M 434.00479,308.04038 C 411.85979,274.29538 365.23604,222.58538 425.28354,315.30663 C 473.97229,391.61038 443.28729,440.64788 427.46354,454.10538 C 381.80479,494.80788 383.75604,522.04163 419.46979,500.61288 C 496.50104,454.83038 480.51354,377.80288 434.00479,308.04038 z"
+           id="path3364" />
+        <svg:path
+           style="fill:url(#linearGradient3396);stroke:none;stroke-width:1.25"
+           d="M 113.53354,321.84663 C 132.68229,282.22038 193.70104,181.96913 110.62604,298.59288 C 35.04979,403.96413 88.09854,477.35913 97.54604,484.62663 C 106.99229,491.89288 138.96729,506.42663 129.51979,480.99288 C 120.07354,455.55913 72.97729,407.27663 113.53354,321.84663 z"
+           id="path3366" />
+        <svg:path
+           style="fill:url(#linearGradient3398);stroke:#e68c3f;stroke-width:7.8125"
+           d="M 450.71729,633.59788 C 501.26979,606.82788 574.78229,638.75288 548.09479,566.01538 C 542.74979,549.46788 556.06354,524.75538 547.36854,508.60788 C 537.19479,488.98538 515.39354,493.34663 502.31229,480.26538 C 489.41479,466.65163 481.23854,443.20413 457.25729,446.83788 C 433.27729,450.47163 417.32604,479.91413 400.57729,515.87413 C 388.22354,541.67163 344.40104,577.95413 347.26479,606.82163 C 350.63479,651.19663 401.04854,659.55913 450.71729,633.59788 z"
+           id="path3368" />
+        <svg:path
+           style="font-size:12px;fill:url(#linearGradient3400);stroke:none;stroke-width:2.85509992;stroke-dasharray:none"
+           d="M 82.24494,462.88931 C 90.01179,477.45399 122.03008,500.5657 143.36844,494.54174 C 165.14161,488.6335 174.9469,455.67689 170.68307,430.73455 C 166.72483,402.64565 143.36911,401.24959 114.0802,415.10503 C 82.59156,430.44169 73.069174,443.58645 82.24494,462.88931 z"
+           id="path3370" />
+        <svg:path
+           style="fill:url(#linearGradient3402);stroke:#e68c3f;stroke-width:7.81249762"
+           d="M 99.91795,621.11875 C 62.839278,576.15428 -19.472149,585.3777 36.039018,523.72611 C 47.784032,510.50878 44.278287,481.85435 58.546079,469.75112 C 75.517493,454.91038 94.23872,467.08152 111.44091,459.32031 C 128.6738,451.0007 146.68545,434.82678 167.72147,446.33083 C 188.75633,457.83446 191.01961,487.76222 193.0034,526.94033 C 194.7428,555.161 220.45875,602.35161 206.80553,628.28161 C 186.78271,668.4905 135.27094,663.16688 99.91795,621.11875 z"
+           id="path3372" />
+        <svg:path
+           style="fill:url(#linearGradient3404);stroke:none;stroke-width:1.52532005"
+           d="M 116.04364,561.0135 C 58.649181,476.2927 101.42547,476.90974 115.75386,470.50188 C 130.12397,463.63622 145.36533,450.33015 162.26421,459.70416 C 179.16214,469.07782 180.12915,493.60411 180.59268,525.71383 C 181.18098,548.84218 200.54356,587.28393 188.89777,608.74832 C 174.9287,633.76781 141.02669,597.42913 116.04364,561.0135 z"
+           id="path3374" />
+        <svg:path
+           style="fill:url(#linearGradient3406);stroke:none;stroke-width:1.52532005"
+           d="M 462.46593,573.2131 C 548.36933,517.60369 508.18451,498.7241 495.14397,489.98944 C 479.50561,478.78744 479.38418,456.95537 460.16707,458.99225 C 440.95097,461.0292 429.76391,484.68716 416.80772,514.07072 C 407.24123,535.13616 374.41331,562.97528 376.76041,587.28248 C 379.8594,615.76955 425.25368,596.99356 462.46593,573.2131 z"
+           id="path3376" />
+        <svg:path
+           style="font-size:12px;fill:#000000;stroke:none;stroke-width:2.85509992"
+           d="M 87.39871,462.09819 C 94.09281,473.77116 121.68879,492.2942 140.07997,487.46624 C 158.8459,482.73103 167.29697,456.31769 163.62209,436.32747 C 160.21059,413.8154 140.0807,412.69653 114.83706,423.80109 C 87.69751,436.0928 79.49031,446.62777 87.39871,462.09819 z"
+           id="path3378" />
+        <svg:path
+           style="font-size:12px;fill:url(#linearGradient3408);stroke:none;stroke-width:2.85509992"
+           d="M 105.88905,455.5601 C 110.15449,463.66511 128.34154,476.52638 140.81207,473.17413 C 153.53282,469.88628 159.75622,451.54645 157.69133,437.66645 C 155.85502,422.03542 142.33597,421.25855 125.12775,428.9689 C 106.61991,437.50352 100.88409,444.81837 105.88905,455.5601 z"
+           id="path3380" />
+      </svg:g>
+    </svg:g>
+    <svg:path
+       style="fill:url(#linearGradient2602);stroke:#e68c3f;stroke-width:4.6875;display:inline"
+       d="M 338.85129,160.67175 C 329.91754,152.20925 307.83754,126.83925 266.40004,153.478 C 258.69754,158.4905 252.44754,158.94925 237.62379,165.29675 C 207.96629,177.483 222.14629,206.8705 253.55379,216.68175 C 267.00129,221.043 279.22379,237.37675 303.71504,235.9805 C 324.63254,234.75925 330.11379,221.138 342.96254,213.598 C 365.79879,200.70925 369.16879,183.2805 356.83754,174.03175 C 344.50504,164.783 339.68129,161.458 338.85129,160.67175 z"
+       id="path2596" />
+    <svg:path
+       style="fill:#000000;fill-opacity:1;stroke:#e68c3f;stroke-width:3.125;display:inline"
+       d="M 301.375,150.5 C 273.91941,150.5 244.17136,182.32401 238.375,184.3125 L 238.3125,184.3125 L 237.21875,184.3125 C 237.45623,184.32646 237.72063,184.37333 237.96875,184.40625 C 250.62831,186.08577 277.01605,211.9375 304.8125,211.9375 C 332.20521,211.9375 348.73745,187.51092 353.75,185.875 L 354.875,185.875 C 354.65566,185.86175 354.43846,185.81549 354.21875,185.78125 L 354.1875,185.78125 C 342.04133,183.83524 329.18955,150.5 301.375,150.5 z"
+       id="path2598" />
+    <svg:path
+       style="fill:url(#radialGradient3432);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
+       d="M 277,203.10176 C 277.42264,203.10176 278.46511,199.56435 281.21389,196.39485 C 284.0115,193.16904 284.81059,192.03281 287.78951,191.19375 C 290.76843,190.35469 295.86773,192.58739 299.94953,192.66129 C 304.03133,192.73519 312.9627,188.48527 315.34703,192.29054 C 318.60722,195.37863 318.37999,196.78615 319.49575,198.91166 C 320.61151,201.03718 322.73832,206.43271 322.73832,206.43271 C 322.73832,206.43271 314.52167,210.94514 301.2723,210.3555 C 287.85883,209.75856 277,203.10176 277,203.10176 z"
+       id="path3430"
+       sodipodi:nodetypes="cszzzzczc" />
+    <svg:path
+       style="fill:url(#linearGradient3446);stroke:none;stroke-width:1.17873001;display:inline"
+       d="M 338.63235,98.59613 C 330.90457,98.75271 323.84231,104.64458 319.2886,113.72113 C 324.33942,105.93254 331.55918,101.20467 339.25735,101.62738 C 349.65943,102.19856 358.00091,112.02939 360.9136,125.50238 C 358.7781,110.50171 350.43856,99.240427 339.8511,98.62738 C 339.44389,98.603801 339.0363,98.587945 338.63235,98.59613 z"
+       id="path3442" />
+    <svg:path
+       style="fill:url(#linearGradient3448);stroke:none;stroke-width:0.93138498;display:inline"
+       d="M 257.44485,92.15863 C 245.15207,92.38898 234.41072,101.38661 228.9136,114.56488 C 226.56149,120.20358 225.14669,126.61926 225.00735,133.43988 C 224.98,134.77885 225.03288,136.09898 225.1011,137.40863 C 225.24546,130.58803 226.69558,124.17233 229.13235,118.53363 C 235.01102,104.93025 246.66511,95.808979 259.9136,96.15863 C 270.38878,96.435091 279.63535,102.57299 285.6636,112.00238 C 285.15455,110.94667 284.6166,109.93061 284.0386,108.93988 C 278.2401,99.000908 269.06314,92.475072 258.63235,92.18988 C 258.23272,92.178953 257.84139,92.151199 257.44485,92.15863 z"
+       id="path3444" />
+  </svg:g>
+  <svg:g
+     inkscape:groupmode="layer"
+     id="frame6"
+     inkscape:label="frame6"
+     style="display:none">
+    <svg:g
+       style="display:inline"
+       id="g3410"
+       transform="translate(0,-0.2213731)">
+      <svg:path
+         id="path3413"
+         d="M 292.60975,28.90364 C 185.69571,27.235015 191.67096,138.43626 192.3285,198.15364 C 192.89226,250.20364 154.106,279.71114 127.5785,320.27864 C 97.674303,365.67663 87.543573,431.01619 96.422253,490.87239 C 89.780803,491.32987 83.215603,493.12305 76.891003,498.65364 C 62.623213,510.75687 66.136003,539.40507 54.391005,552.62239 C -1.1201651,614.27398 81.187343,605.06418 118.266,650.02864 C 153.61899,692.07677 205.14942,697.39381 225.17225,657.18489 C 226.35983,654.92945 227.2262,652.51682 227.85975,649.96614 C 257.41198,652.75379 283.01502,643.38461 303.29725,645.02864 C 334.40096,646.7313 352.71477,654.75318 370.17225,653.30989 C 384.1406,681.83793 426.88102,684.5535 469.0785,662.49739 C 519.63097,635.72741 593.141,667.64114 566.4535,594.90364 C 561.10847,578.35611 574.42975,553.64489 565.73475,537.49739 C 555.56098,517.8749 533.7535,522.23489 520.67225,509.15364 C 509.68977,497.56123 502.10654,478.87063 485.29725,475.80989 C 487.03625,421.30654 473.49303,353.80369 433.8285,304.87239 C 401.471,266.22489 393.2235,239.28239 390.67225,203.12239 C 388.93601,161.89864 419.80725,38.81239 303.29725,29.43489 C 299.60952,29.140671 296.05859,28.957467 292.60975,28.90364 z"
+         style="opacity:0.8;fill:#000000;stroke:none;stroke-width:1.25;display:inline;filter:url(#filter3563)" />
+      <svg:g
+         transform="translate(-0.4498367,-0.2213987)"
+         id="g3415">
+        <svg:path
+           style="fill:#000000;stroke:none;stroke-width:1.25"
+           d="M 447.32729,527.74663 C 475.31229,487.46788 480.76979,356.51663 415.46854,275.95913 C 383.11104,237.31163 374.85604,210.37788 372.30479,174.21788 C 370.56854,132.99413 401.46104,9.91538 284.95104,0.53788 C 166.94354,-8.87712 173.28104,107.61288 173.95979,169.25663 C 174.52354,221.30663 135.74229,250.80788 109.21479,291.37538 C 60.11604,365.91288 64.26854,494.25038 118.46354,563.71538 C 187.10979,650.67538 245.90479,612.96288 284.95104,616.12788 C 358.06729,620.13038 360.48479,659.11663 447.32729,527.74663 z"
+           id="path3417" />
+        <svg:path
+           style="fill:url(#linearGradient3454);stroke:none;stroke-width:0.99464899"
+           d="M 162.27711,298.99257 C 142.0115,317.64773 89.26718,401.61676 172.66991,453.85728 C 202.07135,472.0492 146.45604,541.73617 119.752,507.98128 C 72.627231,447.38436 102.67999,350.88004 130.94945,316.30107 C 150.14614,291.78873 179.50057,282.29068 162.27711,298.99257 z"
+           id="path3419" />
+        <svg:path
+           style="fill:#000000;stroke:#000000;stroke-width:1.5625006"
+           d="M 168.00842,287.54166 C 134.60001,314.53776 73.770374,409.57952 162.49264,471.31385 C 191.63168,490.56173 136.67011,551.25382 105.80822,520.20914 C -1.492906,412.29787 108.60806,288.21363 146.50894,245.555 C 180.38203,208.45651 210.38669,254.31956 168.00842,287.54166 z"
+           id="path3421" />
+        <svg:path
+           style="fill:url(#linearGradient3456);stroke:none;stroke-width:1.26498997"
+           id="path3423"
+           d="M 216.08402,59.364009 C 217.27405,90.31183 251.33194,117.26514 292.15444,119.5659 C 332.97694,121.86667 365.10542,98.64364 363.91539,67.695819 C 362.72536,36.747999 328.66747,9.794692 287.84497,7.493926 C 247.02247,5.193161 214.89399,28.416189 216.08402,59.364009 z" />
+        <svg:path
+           style="fill:url(#linearGradient3458);stroke:none;stroke-width:1.25"
+           d="M 403.48354,356.00288 C 387.43854,319.62413 353.34104,255.72038 352.61479,206.30538 C 352.61479,167.00288 234.89104,157.61663 225.44354,196.85788 C 215.99604,236.09913 192.01729,294.96163 176.75604,323.30288 C 161.49604,351.64288 116.99479,441.67163 164.40104,520.23538 C 207.09729,589.79038 336.55729,644.81788 405.66354,510.78913 C 428.91729,464.28038 424.76979,406.64538 403.48354,356.00288 z"
+           id="path3425" />
+        <svg:path
+           style="fill:url(#linearGradient3460);stroke:none;stroke-width:1.15804005"
+           d="M 417.99044,329.00666 C 431.70017,354.95538 460.22858,423.19981 390.69746,460.53804 C 315.84902,500.17924 316.20892,581.76441 406.04872,542.94566 C 488.18159,507.85838 451.87107,366.0769 428.9001,332.15355 C 413.83858,308.39374 391.24959,279.31108 417.99044,329.00666 z"
+           id="path3427" />
+        <svg:path
+           style="fill:#000000;stroke:#000000;stroke-width:1.5625"
+           d="M 406.21979,299.59663 C 428.05104,335.23163 480.44104,419.36288 410.32979,463.00038 C 315.86854,520.94413 342.61354,578.88913 428.82854,526.71788 C 550.21479,453.88788 443.60979,307.19788 394.91479,251.29538 C 339.35979,188.54538 384.22229,262.65413 406.21979,299.59663 z"
+           id="path3429" />
+        <svg:path
+           style="font-size:12px;fill:url(#linearGradient3462);stroke:none;stroke-width:1.23705006;stroke-dasharray:none"
+           d="M 193.46684,369.81139 C 193.46684,409.52419 231.58162,461.11212 297.01946,460.64897 C 364.50418,461.20646 393.30771,409.52419 393.30771,369.81139 C 393.30771,330.09858 348.54316,297.86838 293.38663,297.86838 C 238.2314,297.86838 193.46684,330.09858 193.46684,369.81139 z"
+           id="path3431" />
+        <svg:path
+           style="font-size:12px;fill:url(#linearGradient3464);stroke:none;stroke-width:1.38846004;stroke-dasharray:none"
+           d="M 229.07624,244.82218 C 229.80256,285.98159 256.58626,295.69095 290.48127,295.69095 C 324.37746,295.69095 348.98101,289.61499 351.88749,244.82218 C 351.88749,216.74303 324.37746,200.49354 290.48127,200.49354 C 256.58626,200.49354 229.07624,216.74303 229.07624,244.82218 z"
+           id="path3433" />
+        <svg:path
+           style="fill:url(#linearGradient3466);stroke:none;stroke-width:1.25"
+           d="M 434.00479,308.04038 C 411.85979,274.29538 365.23604,222.58538 425.28354,315.30663 C 473.97229,391.61038 443.28729,440.64788 427.46354,454.10538 C 381.80479,494.80788 383.75604,522.04163 419.46979,500.61288 C 496.50104,454.83038 480.51354,377.80288 434.00479,308.04038 z"
+           id="path3435" />
+        <svg:path
+           style="fill:url(#linearGradient3468);stroke:none;stroke-width:1.25"
+           d="M 113.53354,321.84663 C 132.68229,282.22038 193.70104,181.96913 110.62604,298.59288 C 35.04979,403.96413 88.09854,477.35913 97.54604,484.62663 C 106.99229,491.89288 138.96729,506.42663 129.51979,480.99288 C 120.07354,455.55913 72.97729,407.27663 113.53354,321.84663 z"
+           id="path3437" />
+        <svg:path
+           style="fill:url(#linearGradient3470);stroke:#e68c3f;stroke-width:7.8125"
+           d="M 450.71729,633.59788 C 501.26979,606.82788 574.78229,638.75288 548.09479,566.01538 C 542.74979,549.46788 556.06354,524.75538 547.36854,508.60788 C 537.19479,488.98538 515.39354,493.34663 502.31229,480.26538 C 489.41479,466.65163 481.23854,443.20413 457.25729,446.83788 C 433.27729,450.47163 417.32604,479.91413 400.57729,515.87413 C 388.22354,541.67163 344.40104,577.95413 347.26479,606.82163 C 350.63479,651.19663 401.04854,659.55913 450.71729,633.59788 z"
+           id="path3439" />
+        <svg:path
+           style="font-size:12px;fill:url(#linearGradient3472);stroke:none;stroke-width:2.85509992;stroke-dasharray:none"
+           d="M 82.24494,462.88931 C 90.01179,477.45399 122.03008,500.5657 143.36844,494.54174 C 165.14161,488.6335 174.9469,455.67689 170.68307,430.73455 C 166.72483,402.64565 143.36911,401.24959 114.0802,415.10503 C 82.59156,430.44169 73.069174,443.58645 82.24494,462.88931 z"
+           id="path3441" />
+        <svg:path
+           style="fill:url(#linearGradient3474);stroke:#e68c3f;stroke-width:7.81249762"
+           d="M 99.91795,621.11875 C 62.839278,576.15428 -19.472149,585.3777 36.039018,523.72611 C 47.784032,510.50878 44.278287,481.85435 58.546079,469.75112 C 75.517493,454.91038 94.23872,467.08152 111.44091,459.32031 C 128.6738,451.0007 146.68545,434.82678 167.72147,446.33083 C 188.75633,457.83446 191.01961,487.76222 193.0034,526.94033 C 194.7428,555.161 220.45875,602.35161 206.80553,628.28161 C 186.78271,668.4905 135.27094,663.16688 99.91795,621.11875 z"
+           id="path3443" />
+        <svg:path
+           style="fill:url(#linearGradient3476);stroke:none;stroke-width:1.52532005"
+           d="M 116.04364,561.0135 C 58.649181,476.2927 101.42547,476.90974 115.75386,470.50188 C 130.12397,463.63622 145.36533,450.33015 162.26421,459.70416 C 179.16214,469.07782 180.12915,493.60411 180.59268,525.71383 C 181.18098,548.84218 200.54356,587.28393 188.89777,608.74832 C 174.9287,633.76781 141.02669,597.42913 116.04364,561.0135 z"
+           id="path3445" />
+        <svg:path
+           style="fill:url(#linearGradient3478);stroke:none;stroke-width:1.52532005"
+           d="M 462.46593,573.2131 C 548.36933,517.60369 508.18451,498.7241 495.14397,489.98944 C 479.50561,478.78744 479.38418,456.95537 460.16707,458.99225 C 440.95097,461.0292 429.76391,484.68716 416.80772,514.07072 C 407.24123,535.13616 374.41331,562.97528 376.76041,587.28248 C 379.8594,615.76955 425.25368,596.99356 462.46593,573.2131 z"
+           id="path3447" />
+        <svg:path
+           style="font-size:12px;fill:#000000;stroke:none;stroke-width:2.85509992"
+           d="M 87.39871,462.09819 C 94.09281,473.77116 121.68879,492.2942 140.07997,487.46624 C 158.8459,482.73103 167.29697,456.31769 163.62209,436.32747 C 160.21059,413.8154 140.0807,412.69653 114.83706,423.80109 C 87.69751,436.0928 79.49031,446.62777 87.39871,462.09819 z"
+           id="path3449" />
+        <svg:path
+           style="font-size:12px;fill:url(#linearGradient3480);stroke:none;stroke-width:2.85509992"
+           d="M 105.88905,455.5601 C 110.15449,463.66511 128.34154,476.52638 140.81207,473.17413 C 153.53282,469.88628 159.75622,451.54645 157.69133,437.66645 C 155.85502,422.03542 142.33597,421.25855 125.12775,428.9689 C 106.61991,437.50352 100.88409,444.81837 105.88905,455.5601 z"
+           id="path3452" />
+      </svg:g>
+    </svg:g>
+    <svg:path
+       style="fill:url(#linearGradient3469);stroke:none;stroke-width:1.17873001;display:inline"
+       id="path3457"
+       d="M 314.16831,133.61019 C 313.01265,153.72746 322.6393,170.64739 335.67002,171.40192 C 348.70075,172.15644 360.20108,156.45985 361.35673,136.34258 C 362.51239,116.22531 352.88574,99.305384 339.85502,98.550864 C 326.82429,97.796334 315.32396,113.49292 314.16831,133.61019 z" />
+    <svg:path
+       style="fill:url(#linearGradient3471);stroke:none;stroke-width:0.93138498;display:inline"
+       id="path3459"
+       d="M 290.51788,135.15074 C 290.04239,158.42607 274.99285,176.8935 256.90377,176.39892 C 238.81469,175.90433 224.53605,156.63502 225.01154,133.35969 C 225.15088,126.53908 226.54172,120.13134 228.89383,114.49264 C 234.56828,100.88926 245.8374,91.761874 258.62565,92.111524 C 269.05643,92.396714 278.22021,98.924644 284.01871,108.86361 C 288.27598,116.16082 290.71918,125.29676 290.51788,135.15074 z"
+       sodipodi:nodetypes="csssssc" />
+    <svg:path
+       style="fill:#000000;stroke:none;stroke-width:1.86495996;display:inline"
+       id="path3461"
+       d="M 275.53134,140.41284 C 275.80453,153.18925 269.35973,163.56084 261.13646,163.57844 C 252.91319,163.59603 246.02545,153.25297 245.75226,140.47655 C 245.47907,127.70013 251.92387,117.32854 260.14714,117.31095 C 268.37041,117.29336 275.25815,127.63642 275.53134,140.41284 z" />
+    <svg:path
+       style="fill:#000000;stroke:none;stroke-width:2.39814997;display:inline"
+       id="path3463"
+       d="M 327.65696,140.54751 C 326.62578,151.12389 330.60317,160.2832 336.54069,161.00539 C 342.47821,161.72759 348.12746,153.73919 349.15863,143.16281 C 350.1898,132.58643 346.21242,123.42712 340.2749,122.70493 C 334.33738,121.98273 328.68813,129.97113 327.65696,140.54751 z" />
+    <svg:path
+       style="fill:url(#linearGradient3473);stroke:none;stroke-width:3.1916101;display:inline"
+       id="path3465"
+       d="M 272.10899,133.10646 C 272.81015,140.23301 269.48888,146.30542 264.69072,146.66958 C 259.89256,147.03373 255.43448,141.55173 254.73332,134.42518 C 254.03216,127.29863 257.35343,121.22621 262.15159,120.86205 C 266.94975,120.4979 271.40783,125.9799 272.10899,133.10646 z" />
+    <svg:path
+       style="fill:url(#linearGradient3475);stroke:none;stroke-width:4.12025976;display:inline"
+       id="path3467"
+       d="M 332.68196,134.9396 C 332.06276,140.91144 334.45108,146.08315 338.01641,146.49093 C 341.58174,146.89871 344.97397,142.38815 345.59316,136.4163 C 346.21236,130.44446 343.82404,125.27275 340.25871,124.86497 C 336.69338,124.45719 333.30115,128.96776 332.68196,134.9396 z" />
+    <svg:path
+       style="fill:url(#linearGradient3479);stroke:#e68c3f;stroke-width:4.6875;display:inline"
+       d="M 338.85129,160.67175 C 329.91754,152.20925 307.83754,126.83925 266.40004,153.478 C 258.69754,158.4905 252.44754,158.94925 237.62379,165.29675 C 207.96629,177.483 222.14629,206.8705 253.55379,216.68175 C 267.00129,221.043 279.22379,237.37675 303.71504,235.9805 C 324.63254,234.75925 330.11379,221.138 342.96254,213.598 C 365.79879,200.70925 369.16879,183.2805 356.83754,174.03175 C 344.50504,164.783 339.68129,161.458 338.85129,160.67175 z"
+       id="path3477" />
+    <svg:path
+       style="fill:#000000;fill-opacity:1;stroke:#e68c3f;stroke-width:3.125;display:inline"
+       d="M 265.87475,171.87463 C 256.47364,171.95517 246.74554,182.59378 239.8435,184.34338 L 237.2185,184.31213 C 237.70731,184.34087 238.24749,184.42351 238.781,184.53088 C 238.61118,184.55056 238.44681,184.58717 238.281,184.59338 L 239.031,184.59338 C 252.06185,187.46276 277.76632,211.93713 304.81225,211.93713 C 333.15351,211.93713 349.8585,185.78088 354.2185,185.78088 L 353.56225,185.78088 L 353.4685,185.78088 C 350.74968,185.5136 339.47767,172.52248 332.656,172.34338 C 324.28962,172.12373 306.64075,181.90588 300.0935,181.90588 C 291.30779,181.90588 278.12151,171.77188 265.87475,171.87463 z"
+       id="path3451" />
+    <svg:path
+       style="fill:url(#radialGradient3455);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
+       d="M 276.99975,203.10139 C 277.42239,203.10139 278.46486,199.56398 281.21364,196.39448 C 284.01125,193.16867 284.81034,192.03244 287.78926,191.19338 C 290.76818,190.35432 295.86748,192.58702 299.94928,192.66092 C 304.03108,192.73482 312.96245,188.4849 315.34678,192.29017 C 318.60697,195.37826 318.37974,196.78578 319.4955,198.91129 C 320.61126,201.03681 322.73807,206.43234 322.73807,206.43234 C 322.73807,206.43234 314.52142,210.94477 301.27205,210.35513 C 287.85858,209.75819 276.99975,203.10139 276.99975,203.10139 z"
+       id="path3453"
+       sodipodi:nodetypes="cszzzzczc" />
+  </svg:g>
+</svg:svg>

Added: branches/commonification/tuxtype/trunk/data/images/tux4.png
===================================================================
(Binary files differ)


Property changes on: branches/commonification/tuxtype/trunk/data/images/tux4.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: branches/commonification/tuxtype/trunk/data/images/tux5.png
===================================================================
(Binary files differ)


Property changes on: branches/commonification/tuxtype/trunk/data/images/tux5.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: branches/commonification/tuxtype/trunk/data/images/tux6.png
===================================================================
(Binary files differ)


Property changes on: branches/commonification/tuxtype/trunk/data/images/tux6.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream


Property changes on: branches/commonification/tuxtype/trunk/data/menus
___________________________________________________________________
Added: svn:ignore
   + *~
*.o
Makefile
Makefile.in


Modified: branches/commonification/tuxtype/trunk/src/Makefile.am
===================================================================
--- branches/commonification/tuxtype/trunk/src/Makefile.am	2009-08-05 16:23:53 UTC (rev 1369)
+++ branches/commonification/tuxtype/trunk/src/Makefile.am	2009-08-05 16:42:16 UTC (rev 1370)
@@ -59,6 +59,7 @@
 tuxtype_SOURCES = 	\
 	playgame.c	\
 	main.c		\
+	menu.c		\
 	titlescreen.c	\
 	loaders.c	\
 	setup.c		\
@@ -83,6 +84,7 @@
 EXTRA_DIST = titlescreen.h \
 	playgame.h 	\
 	laser.h		\
+	menu.h		\
 	globals.h 	\
 	funcs.h 	\
 	pixels.h	\

Modified: branches/commonification/tuxtype/trunk/src/SDL_extras.c
===================================================================
--- branches/commonification/tuxtype/trunk/src/SDL_extras.c	2009-08-05 16:23:53 UTC (rev 1369)
+++ branches/commonification/tuxtype/trunk/src/SDL_extras.c	2009-08-05 16:42:16 UTC (rev 1370)
@@ -32,35 +32,89 @@
 
 SDL_Surface* screen;
 
+/*
+Return a pointer to the screen we're using, as an alternative to making screen
+global. Not sure what is involved performance-wise in SDL_GetVideoSurface,
+or if this check is even necessary -Cheez
+*/
 SDL_Surface* GetScreen()
 {
-  if (screen != SDL_GetVideoSurface() )
-  {
-    fprintf(stderr, "Video Surface changed from outside of SDL_Extras!\n");
-    screen = SDL_GetVideoSurface();
-  }
+    if (screen != SDL_GetVideoSurface() )
+    {
+      fprintf(stderr, "Video Surface changed from outside of SDL_Extras!\n");
+      screen = SDL_GetVideoSurface();
+    }
   return screen;
 }
-/* DrawButton() creates and draws a translucent button with */
-/* rounded ends.  All colors and alpha values are supported.*/
+
+
+/* DrawButton() creates a translucent button with rounded ends
+   and draws it on the screen.
+   All colors and alpha values are supported.*/
 void DrawButton(SDL_Rect* target_rect,
                 int radius,
                 Uint8 r, Uint8 g, Uint8 b, Uint8 a)
 {
+  DrawButtonOn(screen, target_rect, radius, r, g, b, a);
+}
+
+void DrawButtonOn(SDL_Surface* target,
+                SDL_Rect* target_rect,
+                int radius,
+                Uint8 r, Uint8 g, Uint8 b, Uint8 a)
+
+{
+  SDL_Surface* tmp_surf = CreateButton(target_rect->w, target_rect->h,
+                                       radius, r, g, b, a);
+  SDL_BlitSurface(tmp_surf, NULL, target, target_rect);
+  SDL_FreeSurface(tmp_surf);
+}
+
+/* CreateButton() creates a translucent button with rounded ends
+   All colors and alpha values are supported.*/
+SDL_Surface* CreateButton(int w, int h, int radius,
+                          Uint8 r, Uint8 g, Uint8 b, Uint8 a)
+{
   /* NOTE - we use a 32-bit temp surface even if we have a 16-bit */
   /* screen - it gets converted during blitting.                  */
   SDL_Surface* tmp_surf = SDL_CreateRGBSurface(SDL_SWSURFACE|SDL_SRCALPHA,
-                                          target_rect->w,
-                                          target_rect->h,
+                                          w,
+                                          h,
                                           32,
                                           rmask, gmask, bmask, amask);
+
   Uint32 color = SDL_MapRGBA(tmp_surf->format, r, g, b, a);
   SDL_FillRect(tmp_surf, NULL, color);
   RoundCorners(tmp_surf, radius);
+  return tmp_surf;
+}
+/* free every surface in the array together with the array itself */
+void FreeSurfaceArray(SDL_Surface** surfs, int length)
+{
+  int i;
 
-  SDL_BlitSurface(tmp_surf, NULL, screen, target_rect);
-  SDL_FreeSurface(tmp_surf);
+  if(surfs == NULL)
+    return;
+
+  for(i = 0; i < length; i++)
+    if(surfs[i] != NULL)
+      SDL_FreeSurface(surfs[i]);
+  free(surfs);
 }
+
+void UpdateRect(SDL_Surface* surf, SDL_Rect* rect)
+{
+  SDL_UpdateRect(surf, rect->x, rect->y, rect->w, rect->h);
+}
+
+void SetRect(SDL_Rect* rect, const float* pos)
+{
+  rect->x = pos[0] * screen->w;
+  rect->y = pos[1] * screen->h;
+  rect->w = pos[2] * screen->w;
+  rect->h = pos[3] * screen->h;
+}
+
 #endif
 
 
@@ -976,7 +1030,7 @@
   {
     if (blits[i].type == 'E') 
     {
-//       DEBUGCODE
+//       DEBUGCODE(debug_sdl)
 //       {
 //         fprintf(stderr, "Erasing blits[%d]\n", i);
 //         fprintf(stderr, "srcrect->x = %d\t srcrect->y = %d\t srcrect->w = %d\t srcrect->h = %d\n",
@@ -998,7 +1052,7 @@
   {
     if (blits[i].type == 'D') 
     {
-//       DEBUGCODE
+//       DEBUGCODE(debug_sdl)
 //       {
 //         fprintf(stderr, "drawing blits[%d]\n", i);
 //         fprintf(stderr, "srcrect->x = %d\t srcrect->y = %d\t srcrect->w = %d\t srcrect->h = %d\n",
@@ -1260,7 +1314,7 @@
     return NULL;
   }
 
-DEBUGCODE
+DEBUGCODE(debug_sdl)
 {
   fprintf( stderr, "\nEntering BlackOutline(): \n");
   fprintf( stderr, "BlackOutline of \"%s\"\n", t );
@@ -1337,7 +1391,7 @@
   out = SDL_DisplayFormatAlpha(bg);
   SDL_FreeSurface(bg);
 
-DEBUGCODE
+DEBUGCODE(debug_sdl)
   { fprintf( stderr, "\nLeaving BlackOutline(): \n"); }
 
 
@@ -1368,7 +1422,7 @@
   wcsncpy(wchar_tmp, t, length);
   wchar_tmp[length] = '\0';
 
-  DEBUGCODE
+  DEBUGCODE(debug_sdl)
   {
     fprintf(stderr, "In BlackOutline_w() - input wchar_t string is: %S\n", wchar_tmp);
   }
@@ -1376,7 +1430,7 @@
   i = ConvertToUTF8(wchar_tmp, tmp, 1024);
   //tmp[i] = 0;
 
-  DEBUGCODE
+  DEBUGCODE(debug_sdl)
   {
     fprintf(stderr, "In BlackOutline_w() - converted UTF8 string is: %s\n", tmp);
   }
@@ -1454,7 +1508,7 @@
   else
   {
     char buf[64];
-    DEBUGCODE { fprintf(stderr, "Setting font size to %d\n", size); }
+    DEBUGCODE(debug_sdl) { fprintf(stderr, "Setting font size to %d\n", size); }
     if(context != NULL)
       SDLPango_FreeContext(context);
     context = NULL;
@@ -1561,13 +1615,13 @@
   /* try to find font in default data dir: */
   sprintf(fn, "%s/fonts/%s", settings.default_data_path, font_name);
 
-  DEBUGCODE { fprintf(stderr, "load_font(): looking for %s using bundled data paths\n", fn); }
+  DEBUGCODE(debug_sdl) { fprintf(stderr, "load_font(): looking for %s using bundled data paths\n", fn); }
 
   /* try to load the font, if successful, return font*/
   loaded_font = TTF_OpenFont(fn, font_size);
   if (loaded_font != NULL)
   {
-    DEBUGCODE { fprintf(stderr, "load_font(): found bundled font: %s\n", fn); }
+    DEBUGCODE(debug_sdl) { fprintf(stderr, "load_font(): found bundled font: %s\n", fn); }
     return loaded_font;
   }
 
@@ -1600,13 +1654,13 @@
 
 
 
-  DEBUGCODE { fprintf(stderr, "load_font(): looking for %s\n in OS' font path\n", fn); }
+  DEBUGCODE(debug_sdl) { fprintf(stderr, "load_font(): looking for %s\n in OS' font path\n", fn); }
 
   /* try to load the font, if successful, return font*/
   loaded_font = TTF_OpenFont(fn, font_size);
   if (loaded_font != NULL)
   {
-    DEBUGCODE { fprintf(stderr, "load_font(): found font in OS' location: %s\n", fn); }
+    DEBUGCODE(debug_sdl) { fprintf(stderr, "load_font(): found font in OS' location: %s\n", fn); }
     return loaded_font;
   }
   /* We could not find desired font. If we were looking for something other  */

Modified: branches/commonification/tuxtype/trunk/src/SDL_extras.h
===================================================================
--- branches/commonification/tuxtype/trunk/src/SDL_extras.h	2009-08-05 16:23:53 UTC (rev 1369)
+++ branches/commonification/tuxtype/trunk/src/SDL_extras.h	2009-08-05 16:42:16 UTC (rev 1370)
@@ -63,7 +63,16 @@
 #ifndef HAVE_LIBT4KCOMMON
 /* "Public" function prototypes: */
 SDL_Surface* GetScreen();
-void DrawButton(SDL_Rect* target_rect, int radius, Uint8 r, Uint8 g, Uint8 b, Uint8 a);
+void DrawButton(SDL_Rect* target_rect,
+                int radius,
+                Uint8 r, Uint8 g, Uint8 b, Uint8 a);
+void DrawButtonOn(SDL_Surface* target,
+                SDL_Rect* target_rect,
+                int radius,
+                Uint8 r, Uint8 g, Uint8 b, Uint8 a);
+
+SDL_Surface* CreateButton(int w, int h, int radius,
+                          Uint8 r, Uint8 g, Uint8 b, Uint8 a);
 #endif
 void RoundCorners(SDL_Surface* s, Uint16 radius);
 SDL_Surface* Flip(SDL_Surface *in, int x, int y);

Modified: branches/commonification/tuxtype/trunk/src/alphabet.c
===================================================================
--- branches/commonification/tuxtype/trunk/src/alphabet.c	2009-08-05 16:23:53 UTC (rev 1369)
+++ branches/commonification/tuxtype/trunk/src/alphabet.c	2009-08-05 16:42:16 UTC (rev 1370)
@@ -121,7 +121,7 @@
   }
   
   /* fn should now contain valid path to keyboard.lst: */
-  DEBUGCODE{fprintf(stderr, "fn = %s\n", fn);}
+  DEBUGCODE(debug_alphabet){fprintf(stderr, "fn = %s\n", fn);}
 
   {
     char str[255];
@@ -163,7 +163,7 @@
        && (k < MAX_UNICODES)
        && !unicode_in_key_list(wide_str[2])) /* Make sure char not already added */
       {
-        DEBUGCODE
+        DEBUGCODE(debug_alphabet)
         {
           fprintf(stderr, "Adding key: Unicode char = '%C'\tUnicode value = %d\tfinger = %ld\n",
                   wide_str[2], wide_str[2], wcstol(&wide_str[0], NULL, 0)); 
@@ -483,7 +483,7 @@
   last_choice = choice;
 
   /* NOTE need %S rather than %s because of wide characters */
-  DEBUGCODE { fprintf(stderr, "Selected word is: %S\n", word_list[choice]); }
+  DEBUGCODE(debug_alphabet) { fprintf(stderr, "Selected word is: %S\n", word_list[choice]); }
 
   return word_list[choice];
 }
@@ -507,7 +507,7 @@
 
   FILE* wordFile = NULL;
 
-  DEBUGCODE { fprintf(stderr, "Entering GenerateWordList() for file: %s\n", wordFn); }
+  DEBUGCODE(debug_alphabet) { fprintf(stderr, "Entering GenerateWordList() for file: %s\n", wordFn); }
 
   num_words = 0;
 
@@ -520,7 +520,7 @@
   }
 
   /* --- load words from file named as argument: */
-  DEBUGCODE { fprintf(stderr, "Loading words from file: %s\n", wordFn); }
+  DEBUGCODE(debug_alphabet) { fprintf(stderr, "Loading words from file: %s\n", wordFn); }
 
   /* ignore the title (i.e. first line) */
   /* (compiler complains unless we inspect return value) */
@@ -529,7 +529,7 @@
   while (!feof(wordFile) && (num_words < MAX_NUM_WORDS))
   {
     ret = fscanf( wordFile, "%[^\n]\n", temp_word);
-    DEBUGCODE {fprintf(stderr, "temp_word = %s\n", temp_word);}
+    DEBUGCODE(debug_alphabet) {fprintf(stderr, "temp_word = %s\n", temp_word);}
 
     /* Ignore comment lines - starting with '#' */
     if (temp_word[0] == '#')
@@ -582,7 +582,7 @@
     /* If we make it to here, OK to add word: */
     /* NOTE we have to add one to the length argument */
     /* to include the terminating null.  */
-    DEBUGCODE
+    DEBUGCODE(debug_alphabet)
     {
       fprintf(stderr, "Adding word: %ls\n", temp_wide_word);
     }
@@ -627,7 +627,7 @@
 
     if (t[0] != 0)
     {
-      DEBUGCODE
+      DEBUGCODE(debug_alphabet)
       {
         fprintf(stderr, "Creating SDL_Surface for list element %d, char = '%lc', Unicode value = %d\n", i, *t, *t);
       }
@@ -1182,18 +1182,18 @@
   char buf[8];
 //  TTF_Font* smallfont = NULL;
 
-  DEBUGCODE { printf("Entering GenerateKeyboard\n"); }
+  DEBUGCODE(debug_alphabet) { printf("Entering GenerateKeyboard\n"); }
 
   if(!keyboard)
   {
-    DEBUGCODE { printf("Error - keyboard SDL_Surface ptr null\n"); }
+    DEBUGCODE(debug_alphabet) { printf("Error - keyboard SDL_Surface ptr null\n"); }
     return;
   }
 
 //   smallfont = LoadFont(settings.theme_font_name, 15);
 //   if(!smallfont)
 //   {
-//     DEBUGCODE { printf("Error loading font\n"); }
+//     DEBUGCODE(debug_alphabet) { printf("Error loading font\n"); }
 //     return;
 //   }
 
@@ -1239,7 +1239,7 @@
         new.y -= 9;
     }
 
-    DEBUGCODE { printf("Making %d : %C\n",i,keyboard_list[i].unicode_value); }
+    DEBUGCODE(debug_alphabet) { printf("Making %d : %C\n",i,keyboard_list[i].unicode_value); }
     ConvertToUTF8(t, buf, 8);
     tmp = SimpleText(buf, 15, &black);
 //    tmp = TTF_RenderUNICODE_Blended((TTF_Font*)smallfont, t, black);
@@ -1253,7 +1253,7 @@
   //Know this is safe - if NULL would have returned above:
 //  TTF_CloseFont(smallfont);
 
-  DEBUGCODE { printf("Leaving GenerateKeyboard\n"); }
+  DEBUGCODE(debug_alphabet) { printf("Leaving GenerateKeyboard\n"); }
 }
 
 
@@ -1343,7 +1343,7 @@
     i++;
   }
 
-  DEBUGCODE
+  DEBUGCODE(debug_alphabet)
   {
     fprintf(stderr, "char_list = %S\n", char_list);
   }
@@ -1380,7 +1380,7 @@
     i++;
   }
 
-  DEBUGCODE
+  DEBUGCODE(debug_alphabet)
   {
     fprintf(stderr, "char_list = %S\n", char_list);
   }
@@ -1405,7 +1405,7 @@
   /* unicode already in list: */
   if (char_list[i] == uc)
   {
-    DEBUGCODE{ fprintf(stderr,
+    DEBUGCODE(debug_alphabet){ fprintf(stderr,
                        "Unicode value: %d\tcharacter %lc already in list\n",
                         uc, uc);}
     return 0;
@@ -1413,7 +1413,7 @@
 
   if (char_list[i] == '\0')
   {
-    DEBUGCODE{ fprintf(stderr, "Adding unicode value: %d\tcharacter %lc\n", uc, uc);}
+    DEBUGCODE(debug_alphabet){ fprintf(stderr, "Adding unicode value: %d\tcharacter %lc\n", uc, uc);}
     char_list[i] = uc;
     char_list[i + 1] = '\0';
     return 1;

Modified: branches/commonification/tuxtype/trunk/src/convert_utf.c
===================================================================
--- branches/commonification/tuxtype/trunk/src/convert_utf.c	2009-08-05 16:23:53 UTC (rev 1369)
+++ branches/commonification/tuxtype/trunk/src/convert_utf.c	2009-08-05 16:42:16 UTC (rev 1370)
@@ -45,7 +45,7 @@
     return 0;
   }
 
-  DEBUGCODE {fprintf(stderr, "ConvertFromUTF8(): UTF8_word = %s\n", UTF8_word);}
+  DEBUGCODE(debug_convert_utf) {fprintf(stderr, "ConvertFromUTF8(): UTF8_word = %s\n", UTF8_word);}
 
   /* NOTE although we *should* be just able to pass "wchar_t" as the out_type, */
   /* iconv_open() segfaults on Windows if this is done - grrr....             */
@@ -61,7 +61,7 @@
   iconv_close(conv_descr);
   wcsncpy(wide_word, temp_wchar, max_length);
 
-  DEBUGCODE {fprintf(stderr, "ConvertToUTF8(): wide_word = %S\n", wide_word);}
+  DEBUGCODE(debug_convert_utf) {fprintf(stderr, "ConvertToUTF8(): wide_word = %S\n", wide_word);}
 
   return wcslen(wide_word);
 }
@@ -88,7 +88,7 @@
   size_t in_length = (size_t)UTF_BUF_LENGTH;
   size_t out_length = (size_t)UTF_BUF_LENGTH;
 
-  DEBUGCODE {fprintf(stderr, "ConvertToUTF8(): wide_word = %S\n", wide_word);}
+  DEBUGCODE(debug_convert_utf) {fprintf(stderr, "ConvertToUTF8(): wide_word = %S\n", wide_word);}
 
   if(max_length > UTF_BUF_LENGTH)
   {
@@ -111,7 +111,7 @@
   iconv_close(conv_descr);
   strncpy(UTF8_word, temp_UTF8, max_length);
 
-  DEBUGCODE {fprintf(stderr, "ConvertToUTF8(): UTF8_word = %s\n", UTF8_word);}
+  DEBUGCODE(debug_convert_utf) {fprintf(stderr, "ConvertToUTF8(): UTF8_word = %s\n", UTF8_word);}
 
   return strlen(UTF8_word);
 }

Modified: branches/commonification/tuxtype/trunk/src/globals.h
===================================================================
--- branches/commonification/tuxtype/trunk/src/globals.h	2009-08-05 16:23:53 UTC (rev 1369)
+++ branches/commonification/tuxtype/trunk/src/globals.h	2009-08-05 16:42:16 UTC (rev 1370)
@@ -42,12 +42,16 @@
 extern const int debug_options;
 extern const int debug_convert_utf;
 extern const int debug_multiplayer;
+extern const int debug_practice;
+extern const int debug_scripting;
+extern const int debug_laser;
+extern const int debug_alphabet;
 #ifndef HAVE_LIBT4KCOMMON
 extern const int debug_all;
 #endif
 
 /* debug macros */
-//#define DEBUGCODE(mask) if((mask) & debug_status)
+#define DEBUGCODE(mask) if((mask) & debug_status)
 #define DEBUGMSG(mask, ...) if((mask) & debug_status){ fprintf(stderr, __VA_ARGS__); fflush(stderr); }
 
 #ifdef HAVE_LIBT4KCOMMON
@@ -173,7 +177,6 @@
  */
 
 #define LOG( str ) if (settings.debug_on) fprintf( stderr, str );
-#define DEBUGCODE if (settings.debug_on) 
 #define DOUT(x) if (settings.debug_on) fprintf(stderr, "%s = %d\n", #x, x);
 
 
@@ -188,13 +191,13 @@
 #define FULL_CIRCLE	140
 
 /* Menu Prototypes */
-enum Game_Type { 
+/*enum Game_Type { 
   QUIT_GAME, CASCADE, OPTIONS, LESSONS,
   INSTRUCT_CASCADE, CASCADE1, CASCADE2, CASCADE3, CASCADE4,
   INSTRUCT_LASER, LASER1, LASER2, LASER3, LASER4,
   PHRASE_TYPING, ASDF, ALL, MAIN, SET_LANGUAGE, PROJECT_INFO, NOT_CODED,
   LEVEL1, LEVEL2, LEVEL3, LEVEL4, LASER, INSTRUCT, EDIT_WORDLIST, NONE};
-
+*/
 /* Title sequence constants */
 #define PRE_ANIM_FRAMES	 10
 #define PRE_FRAME_MULT	 3

Modified: branches/commonification/tuxtype/trunk/src/laser.c
===================================================================
--- branches/commonification/tuxtype/trunk/src/laser.c	2009-08-05 16:23:53 UTC (rev 1369)
+++ branches/commonification/tuxtype/trunk/src/laser.c	2009-08-05 16:42:16 UTC (rev 1370)
@@ -183,7 +183,7 @@
 				key_unicode = event.key.keysym.unicode;
 				//key_unicode = event.key.keysym.unicode & 0xff;
 
-				DEBUGCODE
+				DEBUGCODE(debug_laser)
 				{
 				  fprintf(stderr, "key_unicode = %d\n", key_unicode);
 				}
@@ -196,7 +196,7 @@
                                   key_unicode -= 32; //same for non-US chars
 
 				LOG ("After checking for lower case:\n");
-				DEBUGCODE
+				DEBUGCODE(debug_laser)
 				{
 				  fprintf(stderr,
                                    "key_unicode = %d\n", key_unicode);
@@ -616,7 +616,7 @@
 			MusicPlay(musics[MUS_GAME + (rand() % NUM_MUSICS)], 0);
       
 		/* Pause (keep frame-rate event) */
-                DEBUGCODE
+                DEBUGCODE(debug_laser)
                 {
                   fprintf(stderr, "now_time = %d\tlast_time = %d, elapsed time = %d\n",
                           now_time, last_time, now_time - last_time);
@@ -773,7 +773,7 @@
 
   sprintf(fname, "/images/backgrounds/%d.jpg", i);
 
-  DEBUGCODE { fprintf(stderr, "Will try to load file:\t%s", fname); }
+  DEBUGCODE(debug_laser) { fprintf(stderr, "Will try to load file:\t%s", fname); }
 
   FreeBothBkgds(); // LoadBothBkgds() actually does this just in case
 
@@ -817,7 +817,7 @@
   int add = (rand() % (diff_level + 2));
 
   LOG ("Entering laser_add_comet()\n");
-  DEBUGCODE { fprintf(stderr, "Adding %d comets \n", add); }
+  DEBUGCODE(debug_laser) { fprintf(stderr, "Adding %d comets \n", add); }
 
   if (0 == NUM_CITIES % 2) /* Even number of cities */
 	{
@@ -856,7 +856,7 @@
 
               add--;
             }
-            DEBUGCODE {if (location == MAX_COMETS) 
+            DEBUGCODE(debug_laser) {if (location == MAX_COMETS) 
 			printf("Location == MAX_COMETS, we have max on screen\n");}
 	  } 
 	}
@@ -873,7 +873,7 @@
             return; 
           }
 
-          DEBUGCODE {fprintf(stderr, "word is: %S\tlength is: %d\n", word, (int)wcslen(word));}
+          DEBUGCODE(debug_laser) {fprintf(stderr, "word is: %S\tlength is: %d\n", word, (int)wcslen(word));}
           do
           { 
   	    target = rand() % (NUM_CITIES - wcslen(word) + 1);
@@ -906,7 +906,7 @@
 				/* Save pointer for next time through: */
                                 prev_comet = &comets[location];
 
-				DEBUGCODE {fprintf(stderr, "Assigning letter to comet: %C\n", word[i]);}
+				DEBUGCODE(debug_laser) {fprintf(stderr, "Assigning letter to comet: %C\n", word[i]);}
 			}
 		}
 	}

Modified: branches/commonification/tuxtype/trunk/src/loaders.c
===================================================================
--- branches/commonification/tuxtype/trunk/src/loaders.c	2009-08-05 16:23:53 UTC (rev 1369)
+++ branches/commonification/tuxtype/trunk/src/loaders.c	2009-08-05 16:42:16 UTC (rev 1370)
@@ -158,7 +158,7 @@
   s3 = bind_textdomain_codeset(PACKAGE, "UTF-8");
   s4 = textdomain(PACKAGE);
 
-  DEBUGCODE
+  DEBUGCODE(debug_loaders)
   {
     fprintf(stderr, "PACKAGE = %s\n", PACKAGE);
     fprintf(stderr, "TUXLOCALE = %s\n", TUXLOCALE);
@@ -174,7 +174,7 @@
   /* on some Windows versions, AFAICT                                       */
   snprintf(buf, 30, "%s", settings.theme_locale_name);
   buf[5] = '\0';  //en_US" rather than "en_US.utf8"
-  DEBUGCODE { fprintf(stderr, "buf is: %s\n", buf); }
+  DEBUGCODE(debug_loaders) { fprintf(stderr, "buf is: %s\n", buf); }
 
   if (my_setenv("LANG", buf) == -1)
   {
@@ -206,7 +206,7 @@
 
   orig = LoadImageNoPrefix(datafile, IMG_REGULAR);
 
-  DEBUGCODE
+  DEBUGCODE(debug_loaders)
   {
      printf("Scaling %dx%d to: %dx%d, %dx%d\n", 
            orig->w, orig->h, RES_X, RES_Y, fs_res_x, fs_res_y);
@@ -235,7 +235,7 @@
   if (ret == 2) //orig won't be used at all
     SDL_FreeSurface(orig);
     
-  DEBUGCODE
+  DEBUGCODE(debug_loaders)
   {
     printf("%d images scaled\nLeaving LoadBothBkgds()\n", ret);
   }

Modified: branches/commonification/tuxtype/trunk/src/main.c
===================================================================
--- branches/commonification/tuxtype/trunk/src/main.c	2009-08-05 16:23:53 UTC (rev 1369)
+++ branches/commonification/tuxtype/trunk/src/main.c	2009-08-05 16:42:16 UTC (rev 1370)
@@ -44,6 +44,10 @@
 const int debug_options        = 1 << 13;
 const int debug_convert_utf    = 1 << 14;
 const int debug_multiplayer    = 1 << 15;
+const int debug_practice       = 1 << 16;
+const int debug_scripting      = 1 << 17;
+const int debug_laser          = 1 << 18;
+const int debug_alphabet       = 1 << 19;
 #ifndef HAVE_LIBT4KCOMMON
 const int debug_all            = ~0;
 #endif
@@ -97,9 +101,6 @@
     else if (  (strcmp(argv[i], "-sp") == 0)
             || (strcmp(argv[i], "--speed") == 0))
       settings.speed_up = 1;
-    else if (  (strcmp(argv[i], "-d") == 0)
-            || (strcmp(argv[i], "--debug") == 0))
-      settings.debug_on = 1;
     else if (  (strcmp(argv[i], "-s") == 0)
             || (strcmp(argv[i], "--sound") == 0))
       settings.sys_sound = 1;
@@ -172,6 +173,22 @@
     {
       debug_status |= debug_options;
     }
+    else if (strcmp(argv[i], "--debug-practice") == 0)
+    {
+      debug_status |= debug_practice;
+    }
+    else if (strcmp(argv[i], "--debug-scripting") == 0)
+    {
+      debug_status |= debug_scripting;
+    }
+    else if (strcmp(argv[i], "--debug-laser") == 0)
+    {
+      debug_status |= debug_laser;
+    }
+    else if (strcmp(argv[i], "--debug-alphabet") == 0)
+    {
+      debug_status |= debug_alphabet;
+    }
     else
     {
       fprintf(stderr, "Unknown option: %s\n", argv[i]);
@@ -187,6 +204,8 @@
   Uint32 lib_flags = 0;
   int i;
 
+  handle_command_args(argc, argv);
+
   srand(time(NULL));
 
   Opts_Initialize(); // First, initialize settings with hard-coded defaults 
@@ -194,10 +213,7 @@
   SetupPaths(NULL);
   LoadSettings();    // Second, read saved any saved settings
 
-  DEBUGCODE
-  {
-    fprintf(stderr, "\n%s, version %s BEGIN\n", PACKAGE, VERSION);
-  }
+  DEBUGMSG(debug_setup, "\n%s, version %s BEGIN\n", PACKAGE, VERSION);
 
   //Now initialize locale/gettext system.
   //This is done after reading settings just so we can print
@@ -210,7 +226,7 @@
     s3 = bind_textdomain_codeset(PACKAGE, "UTF-8");
     s4 = textdomain(PACKAGE);
 
-    DEBUGCODE
+    DEBUGCODE(debug_setup)
     {
       fprintf(stderr, "PACKAGE = %s\n", PACKAGE);
       fprintf(stderr, "TUXLOCALE = %s\n", TUXLOCALE);
@@ -223,7 +239,6 @@
     }
   }
 
-
   lib_flags = SDL_INIT_VIDEO;
 
   lib_flags |= SDL_INIT_AUDIO;

Added: branches/commonification/tuxtype/trunk/src/menu.c
===================================================================
--- branches/commonification/tuxtype/trunk/src/menu.c	                        (rev 0)
+++ branches/commonification/tuxtype/trunk/src/menu.c	2009-08-05 16:42:16 UTC (rev 1370)
@@ -0,0 +1,1070 @@
+/*
+  t4k-menu.c
+
+  Functions responsible for loading, parsing and displaying game menu.
+
+  Part of "Tux4Kids" Project
+  http://www.tux4kids.com/
+
+  Author: Boleslaw Kulbabinski <bkulbabinski at gmail.com>, (C) 2009
+
+  Copyright: See COPYING file that comes with this distribution.
+*/
+
+#ifndef HAVE_LIBT4KCOMMON
+#include "globals.h"
+#include "menu.h"
+#include "funcs.h"
+#include "compiler.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+struct mNode {
+  struct mNode* parent;
+
+  char* title;
+  int font_size;
+
+  char* icon_name;
+  sprite* icon;
+
+  SDL_Rect button_rect;
+  SDL_Rect icon_rect;
+  SDL_Rect text_rect;
+
+  /* submenu_size = 0 if no submenu */
+  int submenu_size;
+  struct mNode** submenu;
+
+  /* these fields are used only if submenu_size = 0 */
+  int activity;
+  int param;
+
+  /* these fields are used only if submenu_size > 0 */
+  bool show_title;
+  int entries_per_screen;
+  int first_entry;
+};
+
+typedef struct mNode MenuNode;
+
+/* titlescreen & menu frame rate */
+#define MAX_FPS                    30
+/* number of "real" frames per one sprite frame */
+#define SPRITE_FRAME_DELAY         6
+
+
+#define QUIT -2
+#define STOP -1
+#define RUN_MAIN_MENU -3
+
+int n_of_activities;
+char** activities;
+
+char* data_prefix;
+
+Mix_Chunk* snd_click;
+Mix_Chunk* snd_hover;
+char* music_path;
+
+#define N_OF_MENUS 10
+MenuNode* menus[N_OF_MENUS];
+
+/* font size used in current resolution */
+int curr_font_size;
+
+/* buffer size used when reading attributes or names */
+const int buf_size = 512;
+
+/* actions available while viewing the menu */
+enum { NONE, CLICK, PAGEUP, PAGEDOWN, STOP_ESC, RESIZED };
+
+/* stop button, left and right arrow positions do not
+   depend on currently displayed menu */
+SDL_Rect menu_rect, stop_rect, prev_rect, next_rect, menu_title_rect;
+SDL_Surface *stop_button, *prev_arrow, *next_arrow, *prev_gray, *next_gray;
+
+/*TODO: move these constants into a config file (maybe together with
+  titlescreen paths and rects ? ) */
+const float menu_pos[4] = {0.38, 0.23, 0.55, 0.72};
+const float stop_pos[4] = {0.94, 0.0, 0.06, 0.06};
+const float prev_pos[4] = {0.87, 0.93, 0.06, 0.06};
+const float next_pos[4] = {0.94, 0.93, 0.06, 0.06};
+const char* stop_path = "/images/status/stop.svg";
+const char* prev_path = "/images/status/left.svg";
+const char* next_path = "/images/status/right.svg";
+const char* prev_gray_path = "/images/status/left_gray.svg";
+const char* next_gray_path = "/images/status/right_gray.svg";
+const float button_gap = 0.2, text_h_gap = 0.4, text_w_gap = 0.5, button_radius = 0.27;
+const int min_font_size = 8, default_font_size = 20, max_font_size = 40;
+
+
+
+/* local functions */
+MenuNode*       create_empty_node();
+char*           get_attribute_name(const char* token);
+char*           get_attribute_value(const char* token);
+void            read_attributes(FILE* xml_file, MenuNode* node);
+MenuNode*       load_menu_from_file(FILE* xml_file, MenuNode* parent);
+void            free_menu(MenuNode* menu);
+
+SDL_Surface**   render_buttons(MenuNode* menu, bool selected);
+char*           find_longest_text(MenuNode* menu, int* length);
+void            set_font_size();
+void            prerender_menu(MenuNode* menu);
+
+
+/* initialization of menu module */
+void SetActivitiesList(int num, char** acts)
+{
+  n_of_activities = num;
+  activities = acts;
+}
+
+void SetMenuSounds(char* mus_path, Mix_Chunk* click, Mix_Chunk* hover)
+{
+  snd_click = click;
+  snd_hover = hover;
+  music_path = mus_path;
+}
+
+void SetImagePathPrefix(char* pref)
+{
+  data_prefix = pref;
+}
+
+/*
+  functions responsible for parsing menu files
+  and creating menu trees
+*/
+
+/* creates new MenuNode struct with all fields set to NULL (or 0) */
+MenuNode* create_empty_node()
+{
+  MenuNode* new_node = malloc(sizeof(MenuNode));
+  new_node->parent = NULL;
+  new_node->title = NULL;
+  new_node->icon_name = NULL;
+  new_node->icon = NULL;
+  new_node->submenu_size = 0;
+  new_node->submenu = NULL;
+  new_node->activity = 0;
+  new_node->param = 0;
+  new_node->first_entry = 0;
+  new_node->show_title = false;
+
+  return new_node;
+}
+
+/* read attributes and fill appropriate node fields */
+void read_attributes(FILE* xml_file, MenuNode* node)
+{
+  char attr_name[buf_size];
+  char attr_val[buf_size];
+  int i;
+
+  /* read tokens until closing '>' is found */
+  do
+  {
+    fscanf(xml_file, " %[^=\n]", attr_name);
+
+    DEBUGMSG(debug_menu_parser, "read_attributes(): read attribute name: %s\n", attr_name);
+    if(strchr(attr_name, '>'))
+      break;
+
+    fscanf(xml_file, "=\"%[^\"]\"", attr_val);
+    DEBUGMSG(debug_menu_parser, "read_attributes(): read attribute value: %s\n", attr_val);
+
+    if(strcmp(attr_name, "title") == 0)
+      node->title = strdup(attr_val);
+    else if(strcmp(attr_name, "entries") == 0)
+      node->submenu_size = atoi(attr_val);
+    else if(strcmp(attr_name, "param") == 0)
+      node->param = atoi(attr_val);
+    else if(strcmp(attr_name, "sprite") == 0)
+      node->icon_name = strdup(attr_val);
+    else if(strcmp(attr_name, "run") == 0)
+    {
+      if(strcmp(attr_val, "RUN_MAIN_MENU") == 0)
+        node->activity = RUN_MAIN_MENU;
+      else
+        for(i = 0; i < n_of_activities; i++)
+          if(strcmp(attr_val, activities[i]) == 0)
+            node->activity = i;
+    }
+    else
+      DEBUGMSG(debug_menu_parser, "read_attributes(): unknown attribute %s , omitting\n", attr_name);
+
+  } while(strchr(attr_val, '>') == NULL);
+}
+
+/* recursively read and parse given xml menu file and create menu tree
+   return NULL in case of problems */
+MenuNode* load_menu_from_file(FILE* xml_file, MenuNode* parent)
+{
+  MenuNode* new_node = create_empty_node();
+  char buffer[buf_size];
+  int i;
+
+  new_node->parent = parent;
+
+  DEBUGMSG(debug_menu_parser, "entering load_menu_from_file()\n");
+  fscanf(xml_file, " < %s", buffer);
+
+  if(strcmp(buffer, "menu") == 0)
+  {
+    read_attributes(xml_file, new_node);
+    if(new_node->title == NULL)
+    {
+      DEBUGMSG(debug_menu_parser, "load_menu_from_file(): no title attribute, exiting\n");
+      return NULL;
+    }
+
+    if(new_node->submenu_size > 0)
+    {
+      new_node->submenu = malloc(new_node->submenu_size * sizeof(MenuNode));
+      for(i = 0; i < new_node->submenu_size; i++)
+        new_node->submenu[i] = load_menu_from_file(xml_file, new_node);
+    }
+
+    fscanf(xml_file, " </%[^>\n]> ", buffer);
+    if(strcmp(buffer, "menu") != 0)
+      DEBUGMSG(debug_menu_parser, "load_menu_from_file(): warning - no closing menu tag, found %s instead\n", buffer);
+  }
+  else if(strcmp(buffer, "item") == 0)
+  {
+    read_attributes(xml_file, new_node);
+    if(new_node->title == NULL)
+    {
+      DEBUGMSG(debug_menu_parser, "load_menu_from_file(): no title attribute, exiting\n");
+      return NULL;
+    }
+  }
+  else
+  {
+    DEBUGMSG(debug_menu_parser, "load_menu_from_file(): unknown tag: %s\n, exiting\n", buffer);
+    return NULL;
+  }
+
+  DEBUGMSG(debug_menu_parser, "load_menu_from_file(): node loaded successfully\n");
+  return new_node;
+}
+
+/* recursively free all non-NULL pointers in a menu tree */
+void free_menu(MenuNode* menu)
+{
+  int i;
+
+  DEBUGMSG(debug_menu, "entering free_menu()\n");
+  if(menu != NULL)
+  {
+    if(menu->title != NULL)
+      free(menu->title);
+    if(menu->icon_name != NULL)
+      free(menu->icon_name);
+    if(menu->icon != NULL)
+      FreeSprite(menu->icon);
+
+    if(menu->submenu != NULL)
+    {
+      for(i = 0; i < menu->submenu_size; i++)
+        if(menu->submenu[i] != NULL)
+        {
+          free_menu(menu->submenu[i]);
+          menu->submenu[i] = NULL;
+        }
+      free(menu->submenu);
+    }
+
+    free(menu);
+  }
+}
+
+/* create a simple one-level menu.
+   All given strings are copied */
+void CreateOneLevelMenu(int index, int items, char** item_names, char** sprite_names, char* title, char* trailer)
+{
+  MenuNode* menu = create_empty_node();
+  int i;
+
+  if(title)
+  {
+    menu->title = strdup(title);
+    menu->show_title = true;
+  }
+  menu->submenu_size = items + (trailer ? 1 : 0);
+  menu->submenu = (MenuNode**) malloc(menu->submenu_size * sizeof(MenuNode*));
+  for(i = 0; i < items; i++)
+  {
+    menu->submenu[i] = create_empty_node();
+    menu->submenu[i]->title = strdup(item_names[i]);
+    if(sprite_names && sprite_names[i])
+      menu->submenu[i]->icon_name = strdup(sprite_names[i]);
+    menu->submenu[i]->activity = i;
+  }
+
+  if(trailer)
+  {
+    menu->submenu[items] = create_empty_node();
+    menu->submenu[items]->title = strdup(trailer);
+    menu->submenu[items]->activity = items;
+  }
+
+  menus[index] = menu;
+}
+
+
+
+/* Display the menu and run the event loop.
+   if return_choice = true then return chosen value instead of
+   running handle_activity()
+   this function is a modified copy of choose_menu_item() */
+int RunMenu(int index, bool return_choice, void (*draw_background)(), int (*handle_event)(SDL_Event*), void (*handle_animations)(), int (*handle_activity)(int, int))
+{
+  SDL_Surface** menu_item_unselected = NULL;
+  SDL_Surface** menu_item_selected = NULL;
+  SDL_Surface* title_surf;
+  SDL_Event event;
+  MenuNode* menu = menus[index];
+  MenuNode* tmp_node;
+
+  SDL_Rect tmp_rect;
+  sprite* tmp_sprite;
+  int i;
+  int stop = 0;
+  int items;
+
+  int action = NONE;
+
+  Uint32 frame_start = 0;       //For keeping frame rate constant
+  Uint32 frame_now = 0;
+  Uint32 frame_counter = 0;
+  int loc = -1;                  //The currently selected menu item
+  int old_loc = -1;
+  int click_flag = 1;
+
+  for(;;) /* one loop body execution for one menu page */
+  {
+    DEBUGMSG(debug_menu, "run_menu(): drawing whole new menu page\n");
+
+    draw_background();
+    /* render buttons for current menu page */
+    menu_item_unselected = render_buttons(menu, false);
+    menu_item_selected = render_buttons(menu, true);
+    items = min(menu->entries_per_screen, menu->submenu_size - menu->first_entry);
+
+    DEBUGMSG(debug_menu, "run_menu(): drawing %d buttons\n", items);
+    for(i = 0; i < items; i++)
+    {
+      if(loc == i)
+        SDL_BlitSurface(menu_item_selected[i], NULL, GetScreen(), &menu->submenu[menu->first_entry + i]->button_rect);
+      else
+        SDL_BlitSurface(menu_item_unselected[i], NULL, GetScreen(), &menu->submenu[menu->first_entry + i]->button_rect);
+      if(menu->submenu[menu->first_entry + i]->icon)
+        SDL_BlitSurface(menu->submenu[menu->first_entry + i]->icon->default_img, NULL, GetScreen(), &menu->submenu[menu->first_entry + i]->icon_rect);
+    }
+
+    SDL_BlitSurface(stop_button, NULL, GetScreen(), &stop_rect);
+
+    if(menu->entries_per_screen < menu->submenu_size)
+    {
+      /* display arrows */
+      if(menu->first_entry > 0)
+        SDL_BlitSurface(prev_arrow, NULL, GetScreen(), &prev_rect);
+      else
+        SDL_BlitSurface(prev_gray, NULL, GetScreen(), &prev_rect);
+      if(menu->first_entry + items < menu->submenu_size)
+        SDL_BlitSurface(next_arrow, NULL, GetScreen(), &next_rect);
+      else
+        SDL_BlitSurface(next_gray, NULL, GetScreen(), &next_rect);
+    }
+
+    if(menu->show_title)
+    {
+      menu_title_rect = menu->submenu[0]->button_rect;
+      menu_title_rect.y = menu_rect.y - menu_title_rect.h;
+      title_surf = BlackOutline(_(menu->title), curr_font_size, &red);
+      SDL_BlitSurface(title_surf, NULL, GetScreen(), &menu_title_rect);
+      SDL_FreeSurface(title_surf);
+    }
+    SDL_UpdateRect(GetScreen(), 0, 0, 0, 0);
+
+    SDL_WM_GrabInput(SDL_GRAB_OFF);
+
+    while (SDL_PollEvent(&event));  // clear pending events
+
+    /******** Main loop: *********/
+    stop = false;
+    DEBUGMSG(debug_menu, "run_menu(): entering menu loop\n");
+    while (!stop)
+    {
+      frame_start = SDL_GetTicks();         /* For keeping frame rate constant.*/
+
+      action = NONE;
+      while (!stop && SDL_PollEvent(&event))
+      {
+        switch (event.type)
+        {
+          case SDL_QUIT:
+          {
+            FreeSurfaceArray(menu_item_unselected, items);
+            FreeSurfaceArray(menu_item_selected, items);
+            return QUIT;
+          }
+
+          case SDL_MOUSEMOTION:
+          {
+            loc = -1;
+            for (i = 0; i < items; i++)
+            {
+              if (inRect(menu->submenu[menu->first_entry + i]->button_rect, event.motion.x, event.motion.y))
+              {
+                if(old_loc != i && snd_hover)
+                  PlaySound(snd_hover);
+                loc = i;
+                break;   /* from for loop */
+              }
+            }
+
+            /* "Left" button - make click if button active: */
+            if(inRect(prev_rect, event.motion.x, event.motion.y)
+               && menu->first_entry > 0)
+            {
+              if(click_flag)
+              {
+                if(snd_hover)
+                  PlaySound(snd_hover);
+                click_flag = 0;
+              }
+            }
+
+            /* "Right" button - make click if button active: */
+            else if(inRect(next_rect, event.motion.x, event.motion.y)
+               && menu->first_entry + items < menu->submenu_size)
+            {
+              if(click_flag)
+              {
+                if(snd_hover)
+                  PlaySound(snd_hover);
+                click_flag = 0;
+              }
+            }
+
+            /* "stop" button */
+            else if (inRect(stop_rect, event.motion.x, event.motion.y ))
+            {
+              if(click_flag)
+              {
+                if(snd_hover)
+                  PlaySound(snd_hover);
+                click_flag = 0;
+              }
+            }
+
+            else  // Mouse outside of arrow rects - re-enable click sound:
+              click_flag = 1;
+
+            break;
+          }
+
+          case SDL_MOUSEBUTTONDOWN:
+          {
+            loc = -1;  // By default, don't be in any entry
+            for (i = 0; i < items; i++)
+            {
+              if (inRect(menu->submenu[menu->first_entry + i]->button_rect, event.motion.x, event.motion.y))
+              {
+                // Play sound if loc is being changed:
+                if(snd_click)
+                  PlaySound(snd_click);
+                loc = i;
+                action = CLICK;
+                break;   /* from for loop */
+              }
+            }
+
+            /* "Left" button */
+            if (inRect(prev_rect, event.motion.x, event.motion.y)
+               && menu->first_entry > 0)
+            {
+              if(snd_click)
+                PlaySound(snd_click);
+              action = PAGEUP;
+            }
+
+            /* "Right" button - go to next page: */
+            else if (inRect(next_rect, event.motion.x, event.motion.y )
+               && menu->first_entry + items < menu->submenu_size)
+            {
+              if(snd_click)
+                PlaySound(snd_click);
+              action = PAGEDOWN;
+            }
+
+            /* "Stop" button - go to main menu: */
+            else if (inRect(stop_rect, event.button.x, event.button.y ))
+            {
+              if(snd_click)
+                PlaySound(snd_click);
+              action = STOP_ESC;
+            }
+
+            break;
+          } /* End of case SDL_MOUSEDOWN */
+
+          case SDL_KEYDOWN:
+          {
+            /* Proceed according to particular key pressed: */
+            switch (event.key.keysym.sym)
+            {
+              case SDLK_ESCAPE:
+              {
+                action = STOP_ESC;
+                break;
+              }
+
+              case SDLK_RETURN:
+              case SDLK_SPACE:
+              case SDLK_KP_ENTER:
+              {
+                if(snd_click)
+                  PlaySound(snd_click);
+                action = CLICK;
+                break;
+              }
+
+              /* Go to previous page, if present: */
+              case SDLK_LEFT:
+              case SDLK_PAGEUP:
+              {
+                if(snd_click)
+                  PlaySound(snd_click);
+                if (menu->first_entry > 0)
+                  action = PAGEUP;
+                break;
+              }
+
+              /* Go to next page, if present: */
+              case SDLK_RIGHT:
+              case SDLK_PAGEDOWN:
+              {
+                if(snd_click)
+                  PlaySound(snd_click);
+                if (menu->first_entry + items < menu->submenu_size)
+                  action = PAGEDOWN;
+                break;
+              }
+
+              /* Go up one entry, if present: */
+              case SDLK_UP:
+              {
+                if(snd_hover)
+                  PlaySound(snd_hover);
+                if (loc > 0)
+                  loc--;
+                else if (menu->submenu_size <= menu->entries_per_screen) 
+                  loc = menu->submenu_size - 1;  // wrap around if only 1 GetScreen()
+                else if (menu->first_entry > 0)
+                {
+                  loc = menu->entries_per_screen - 1;
+                  action = PAGEUP;
+                }
+                break;
+              }
+
+              case SDLK_DOWN:
+              {
+                if(snd_hover)
+                  PlaySound(snd_hover);
+                if (loc + 1 < min(menu->submenu_size, menu->entries_per_screen))
+                  loc++;
+                else if (menu->submenu_size <= menu->entries_per_screen) 
+                  loc = 0;  // wrap around if only 1 GetScreen()
+                else if (menu->first_entry + menu->entries_per_screen < menu->submenu_size)
+                {
+                  loc = 0;
+                  action = PAGEDOWN;
+                }
+                break;
+              }
+
+              /* Toggle GetScreen() mode: */
+              case SDLK_F10:
+              {
+                SwitchScreenMode();
+                action = RESIZED;
+                break;
+              }
+
+              /* Toggle menu music: */
+              case SDLK_F11:
+              {
+                if(IsPlayingMusic())
+                {
+                  AudioMusicUnload();
+                }
+                else if(music_path)
+                {
+                  AudioMusicLoad(music_path, -1);
+                }
+                break;
+              }
+
+              default:
+              {
+                /* Some other key - do nothing. */
+              }
+
+              break;  /* To get out of _outer_ switch/case statement */
+            }  /* End of key switch statement */
+          }  // End of case SDL_KEYDOWN in outer switch statement
+        }  // End event switch statement
+
+        if (old_loc != loc) {
+          DEBUGMSG(debug_menu, "run_menu(): changed button focus, old=%d, new=%d\n", old_loc, loc);
+          if(old_loc >= 0 && old_loc < items)
+          {
+            tmp_rect = menu->submenu[old_loc + menu->first_entry]->button_rect;
+            SDL_BlitSurface(menu_item_unselected[old_loc], NULL, GetScreen(), &tmp_rect);
+            if(menu->submenu[menu->first_entry + old_loc]->icon)
+              SDL_BlitSurface(menu->submenu[menu->first_entry + old_loc]->icon->default_img, NULL, GetScreen(), &menu->submenu[menu->first_entry + old_loc]->icon_rect);
+            SDL_UpdateRect(GetScreen(), tmp_rect.x, tmp_rect.y, tmp_rect.w, tmp_rect.h);
+          }
+          if(loc >= 0 && loc < items)
+          {
+            tmp_rect = menu->submenu[loc + menu->first_entry]->button_rect;
+            SDL_BlitSurface(menu_item_selected[loc], NULL, GetScreen(), &tmp_rect);
+            if(menu->submenu[menu->first_entry + loc]->icon)
+            {
+              SDL_BlitSurface(menu->submenu[menu->first_entry + loc]->icon->default_img, NULL, GetScreen(), &menu->submenu[menu->first_entry + loc]->icon_rect);
+              menu->submenu[menu->first_entry + loc]->icon->cur = 0;
+            }
+            SDL_UpdateRect(GetScreen(), tmp_rect.x, tmp_rect.y, tmp_rect.w, tmp_rect.h);
+          }
+          old_loc = loc;
+        }
+
+        if(handle_event(&event))
+          stop = true;
+
+        switch(action)
+        {
+          case RESIZED:
+            RenderTitleScreen();
+            menu->first_entry = 0;
+            PrerenderAll();
+            stop = true;
+            break;
+
+          case CLICK:
+            if(loc < 0 || loc >= items)
+            {
+              DEBUGMSG(debug_menu, "run_menu(): incorrect location for CLICK action (%d) !\n", loc);
+            }
+            else
+            {
+              tmp_node = menu->submenu[menu->first_entry + loc];
+              if(tmp_node->submenu_size == 0)
+              {
+                if(return_choice)
+                {
+                  FreeSurfaceArray(menu_item_unselected, items);
+                  FreeSurfaceArray(menu_item_selected, items);
+                  return tmp_node->activity;
+                }
+                else
+                {
+                  if(tmp_node->activity == RUN_MAIN_MENU)
+                  {
+                    /* go back to the root of this menu */
+                    menu = menus[index];
+                  }
+                  else
+                  {
+                    if(handle_activity(tmp_node->activity, tmp_node->param) == QUIT)
+                    {
+                      DEBUGMSG(debug_menu, "run_menu(): handle_activity() returned QUIT message, exiting.\n");
+                      FreeSurfaceArray(menu_item_unselected, items);
+                      FreeSurfaceArray(menu_item_selected, items);
+                      return QUIT;
+                    }
+                  }
+                }
+              }
+              else
+              {
+                menu->first_entry = 0;
+                menu = tmp_node;
+                menu->first_entry = 0;
+              }
+              stop = true;
+            }
+            break;
+
+          case STOP_ESC:
+            if(menu->parent == NULL)
+            {
+              FreeSurfaceArray(menu_item_unselected, items);
+              FreeSurfaceArray(menu_item_selected, items);
+              return STOP;
+            }
+            else
+              menu = menu->parent;
+            stop = true;
+            break;
+
+          case PAGEUP:
+            menu->first_entry -= menu->entries_per_screen;
+            stop = true;
+            break;
+
+          case PAGEDOWN:
+            menu->first_entry += menu->entries_per_screen;
+            stop = true;
+            break;
+        }
+
+      }  // End of SDL_PollEvent while loop
+
+      if(stop)
+        break;
+
+      if(!stop && frame_counter % 5 == 0 && loc >= 0 && loc < items)
+      {
+        tmp_sprite = menu->submenu[menu->first_entry + loc]->icon;
+        if(tmp_sprite)
+        {
+          SDL_BlitSurface(menu_item_selected[loc], NULL, GetScreen(), &menu->submenu[menu->first_entry + loc]->icon_rect);
+          SDL_BlitSurface(tmp_sprite->frame[tmp_sprite->cur], NULL, GetScreen(), &menu->submenu[menu->first_entry + loc]->icon_rect);
+          UpdateRect(GetScreen(), &menu->submenu[menu->first_entry + loc]->icon_rect);
+          NextFrame(tmp_sprite);
+        }
+      }
+
+      handle_animations();
+
+      /* Wait so we keep frame rate constant: */
+      frame_now = SDL_GetTicks();
+      if (frame_now < frame_start)
+        frame_start = frame_now;  // in case the timer wraps around
+      if((frame_now - frame_start) < 1000 / MAX_FPS)
+        SDL_Delay(1000 / MAX_FPS - (frame_now - frame_start));
+
+      frame_counter++;
+    } // End of while(!stop) loop
+
+    /* free button surfaces */
+    DEBUGMSG(debug_menu, "run_menu(): freeing %d button surfaces\n", items);
+    FreeSurfaceArray(menu_item_unselected, items);
+    FreeSurfaceArray(menu_item_selected, items);
+  }
+
+  return QUIT;
+}
+
+/* return button surfaces that are currently displayed (without sprites) */
+SDL_Surface** render_buttons(MenuNode* menu, bool selected)
+{
+  SDL_Surface** menu_items = NULL;
+  SDL_Rect curr_rect;
+  SDL_Surface* tmp_surf = NULL;
+  int i, items;
+
+  DEBUGMSG(debug_menu, "Entering render_buttons()\n");
+
+  items = min(menu->entries_per_screen, menu->submenu_size - menu->first_entry);
+  menu_items = (SDL_Surface**) malloc(items * sizeof(SDL_Surface*));
+  if(NULL == menu_items)
+  {
+    DEBUGMSG(debug_menu, "render_buttons(): failed to allocate memory for buttons!\n");
+    return NULL;  // error
+  }
+
+  for (i = 0; i < items; i++)
+  {
+    curr_rect = menu->submenu[menu->first_entry + i]->button_rect;
+    menu_items[i] = SDL_CreateRGBSurface(SDL_SWSURFACE|SDL_SRCALPHA,
+                                          curr_rect.w,
+                                          curr_rect.h,
+                                          32,
+                                          rmask, gmask, bmask, amask);
+
+    SDL_BlitSurface(GetScreen(), &curr_rect, menu_items[i], NULL);
+    /* button */
+    if(selected)
+      tmp_surf = CreateButton(curr_rect.w, curr_rect.h, button_radius * curr_rect.h, SEL_RGBA);
+    else
+      tmp_surf = CreateButton(curr_rect.w, curr_rect.h, button_radius * curr_rect.h, REG_RGBA);
+
+    SDL_BlitSurface(tmp_surf, NULL, menu_items[i], NULL);
+    SDL_FreeSurface(tmp_surf);
+
+    /* text */
+    tmp_surf = BlackOutline(_(menu->submenu[menu->first_entry + i]->title),
+                            curr_font_size, selected ? &yellow : &white);
+    SDL_BlitSurface(tmp_surf, NULL, menu_items[i], &menu->submenu[menu->first_entry + i]->text_rect);
+    SDL_FreeSurface(tmp_surf);
+  }
+
+  DEBUGMSG(debug_menu, "Leaving render_buttons()\n");
+  return menu_items;
+}
+
+/* recursively load sprites and calculate button rects
+   to fit into current screen */
+void prerender_menu(MenuNode* menu)
+{
+  SDL_Surface* temp_surf;
+  MenuNode* curr_node;
+  int i, imod, max_text_h = 0, max_text_w = 0;
+  int button_h, button_w;
+  bool found_icons = false;
+  char filename[buf_size];
+
+  if(NULL == menu)
+  {
+    DEBUGMSG(debug_menu, "prerender_menu(): NULL pointer, exiting !\n");
+    return;
+  }
+
+  if(0 == menu->submenu_size)
+  {
+    DEBUGMSG(debug_menu, "prerender_menu(): no submenu, exiting.\n");
+    return;
+  }
+
+  for(i = 0; i < menu->submenu_size; i++)
+  {
+    if(menu->submenu[i]->icon_name)
+      found_icons = true;
+    temp_surf = NULL;
+    temp_surf = SimpleText(_(menu->submenu[i]->title), curr_font_size, &black);
+    if(temp_surf)
+    {
+      max_text_h = max(max_text_h, temp_surf->h);
+      max_text_w = max(max_text_w, temp_surf->w);
+      SDL_FreeSurface(temp_surf);
+    }
+  }
+
+  button_h = (1.0 + 2.0 * text_h_gap) * max_text_h;
+  button_w = max_text_w + ( (found_icons ? 1.0 : 0.0) + 2.0 * text_w_gap) * button_h;
+
+  menu->entries_per_screen = (int) ( (menu_rect.h - button_gap * button_h) /
+                                   ( (1.0 + button_gap) * button_h ) );
+
+  for(i = 0; i < menu->submenu_size; i++)
+  {
+    curr_node = menu->submenu[i];
+    curr_node->button_rect.x = menu_rect.x;
+    imod = i % menu->entries_per_screen;
+    curr_node->button_rect.y = menu_rect.y + imod * button_h + (imod + 1) * button_gap * button_h;
+    curr_node->button_rect.w = button_w;
+    curr_node->button_rect.h = button_h;
+
+    curr_node->icon_rect = curr_node->button_rect;
+    curr_node->icon_rect.w = curr_node->icon_rect.h;
+
+    curr_node->text_rect.x = ( (found_icons ? 1.0 : 0.0) + text_w_gap) * curr_node->icon_rect.w;
+    curr_node->text_rect.y = text_h_gap * max_text_h;
+    curr_node->text_rect.h = max_text_h;
+    curr_node->text_rect.w = max_text_w;
+
+    if(curr_node->icon)
+      FreeSprite(curr_node->icon);
+
+    if(curr_node->icon_name)
+    {
+      sprintf(filename, "%s/images/sprites/%s", data_prefix, curr_node->icon_name);
+      DEBUGMSG(debug_menu, "prerender_menu(): loading sprite %s for item #%d.\n", filename, i);
+      curr_node->icon = LoadSpriteOfBoundingBox(filename, IMG_ALPHA, button_h, button_h);
+    }
+    else
+      DEBUGMSG(debug_menu, "prerender_menu(): no sprite for item #%d.\n", i);
+
+    prerender_menu(menu->submenu[i]);
+  }
+}
+
+void PrerenderMenu(int index)
+{
+  prerender_menu(menus[index]);
+}
+
+char* find_longest_text(MenuNode* menu, int* length)
+{
+  SDL_Surface* text = NULL;
+  char *ret = NULL, *temp = NULL;
+  int i;
+
+  if(menu->submenu_size == 0)
+  {
+    text = SimpleText(_(menu->title), curr_font_size, &black);
+    if(text->w > *length)
+    {
+      *length = text->w;
+      ret = menu->title;
+    }
+    SDL_FreeSurface(text);
+  }
+  else
+  {
+    for(i = 0; i < menu->submenu_size; i++)
+    {
+      temp = find_longest_text(menu->submenu[i], length);
+      if(temp)
+        ret = temp;
+    }
+  }
+  return ret;
+}
+
+/* find the longest text in all existing menus and binary search
+   for the best font size */
+void set_font_size()
+{
+  char* longest = NULL;
+  char* temp;
+  SDL_Surface* surf;
+  int length = 0, i, min_f, max_f, mid_f;
+
+  curr_font_size = default_font_size;
+
+  for(i = 0; i < N_OF_MENUS; i++)
+  {
+    if(menus[i])
+    {
+      temp = find_longest_text(menus[i], &length);
+      if(temp)
+        longest = temp;
+    }
+  }
+
+  if(!longest)
+    return;
+
+  min_f = min_font_size;
+  max_f = max_font_size;
+
+  while(min_f < max_f)
+  {
+    mid_f = (min_f + max_f) / 2;
+    surf = SimpleText(_(longest), mid_f, &black);
+    if(surf->w + (1.0 + 2.0 * text_w_gap) * (1.0 + 2.0 * text_h_gap) * surf->h < menu_rect.w)
+      min_f = mid_f + 1;
+    else
+      max_f = mid_f;
+    SDL_FreeSurface(surf);
+  }
+
+  curr_font_size = min_f;
+}
+
+/* prerender arrows, stop button and all non-NULL menus from menus[] array
+   this function should be invoked after every resolution change */
+void PrerenderAll()
+{
+  int i;
+  char fn[PATH_MAX];
+
+  SetRect(&menu_rect, menu_pos);
+
+  SetRect(&stop_rect, stop_pos);
+  if(stop_button)
+    SDL_FreeSurface(stop_button);
+  sprintf(fn, "%s%s", data_prefix, stop_path);
+  stop_button = LoadImageOfBoundingBox(fn, IMG_ALPHA, stop_rect.w, stop_rect.h);
+  /* move button to the right */
+  stop_rect.x = GetScreen()->w - stop_button->w;
+
+  SetRect(&prev_rect, prev_pos);
+  if(prev_arrow)
+    SDL_FreeSurface(prev_arrow);
+  sprintf(fn, "%s%s", data_prefix, prev_path);
+  prev_arrow = LoadImageOfBoundingBox(fn, IMG_ALPHA, prev_rect.w, prev_rect.h);
+  if(prev_gray)
+    SDL_FreeSurface(prev_gray);
+  sprintf(fn, "%s%s", data_prefix, prev_gray_path);
+  prev_gray = LoadImageOfBoundingBox(fn, IMG_ALPHA, prev_rect.w, prev_rect.h);
+  /* move button to the right */
+  prev_rect.x += prev_rect.w - prev_arrow->w;
+
+  SetRect(&next_rect, next_pos);
+  if(next_arrow)
+    SDL_FreeSurface(next_arrow);
+  sprintf(fn, "%s%s", data_prefix, next_path);
+  next_arrow = LoadImageOfBoundingBox(fn, IMG_ALPHA, next_rect.w, next_rect.h);
+  if(next_gray)
+    SDL_FreeSurface(next_gray);
+  sprintf(fn, "%s%s", data_prefix, next_gray_path);
+  next_gray = LoadImageOfBoundingBox(fn, IMG_ALPHA, next_rect.w, next_rect.h);
+
+  set_font_size();
+
+  for(i = 0; i < N_OF_MENUS; i++)
+    if(menus[i])
+      PrerenderMenu(i);
+}
+
+void LoadMenu(int index, const char* file_name)
+{
+  FILE* menu_file = NULL;
+
+  if(menus[index])
+  {
+    free_menu(menus[index]);
+    menus[index] = NULL;
+  }
+
+  menu_file = fopen(file_name, "r");
+  if(menu_file == NULL)
+  {
+    DEBUGMSG(debug_menu, "LoadMenu(): Could not load %s !\n", file_name);
+  }
+  else
+  {
+    menus[index] = load_menu_from_file(menu_file, NULL);
+    fclose(menu_file);
+  }
+}
+
+
+
+/* free all loaded menu trees */
+void UnloadMenus(void)
+{
+  int i;
+
+  DEBUGMSG(debug_menu, "entering UnloadMenus()\n");
+
+  if(stop_button)
+  {
+    SDL_FreeSurface(stop_button);
+    stop_button = NULL;
+  }
+
+  if(prev_arrow)
+  {
+    SDL_FreeSurface(prev_arrow);
+    prev_arrow = NULL;
+  }
+
+  if(next_arrow)
+  {
+    SDL_FreeSurface(next_arrow);
+    next_arrow = NULL;
+  }
+
+  for(i = 0; i < N_OF_MENUS; i++)
+    if(menus[i] != NULL)
+    {
+      DEBUGMSG(debug_menu, "UnloadMenus(): freeing menu #%d\n", i);
+      free_menu(menus[i]);
+    }
+
+  DEBUGMSG(debug_menu, "leaving UnloadMenus()\n");
+}
+
+#endif //HAVE_LIBT4KCOMMON

Added: branches/commonification/tuxtype/trunk/src/menu.h
===================================================================
--- branches/commonification/tuxtype/trunk/src/menu.h	                        (rev 0)
+++ branches/commonification/tuxtype/trunk/src/menu.h	2009-08-05 16:42:16 UTC (rev 1370)
@@ -0,0 +1,37 @@
+/*
+  menu.h
+
+  Functions responsible for loading, parsing and displaying game menu.
+  (interface)
+
+  Part of "Tux4Kids" Project
+  http://www.tux4kids.com/
+
+  Author: Boleslaw Kulbabinski <bkulbabinski at gmail.com>, (C) 2009
+
+  Copyright: See COPYING file that comes with this distribution.
+*/
+
+#ifndef MENU_H
+#define MENU_H
+
+#include "globals.h"
+
+#ifndef HAVE_LIBT4KCOMMON
+extern SDL_Rect menu_rect, stop_rect, prev_rect, next_rect;
+extern SDL_Surface *stop_button, *prev_arrow, *next_arrow, *prev_gray, *next_gray;
+
+void            SetActivitiesList(int num, char** acts);
+void            SetMenuSounds(char* mus_path, Mix_Chunk* click, Mix_Chunk* hover);
+void            SetImagePathPrefix(char* pref);
+
+void            CreateOneLevelMenu(int index, int items, char** item_names, char** sprite_names, char* title, char* trailer);
+int             RunMenu(int index, bool return_choice, void (*draw_background)(), int (*handle_event)(SDL_Event*), void (*handle_animations)(), int (*handle_activity)(int, int));
+void            PrerenderMenu(int index);
+void            PrerenderAll();
+void            LoadMenu(int index, const char* file_name);
+void            UnloadMenus(void);
+
+#endif // HAVE_LIBT4KCOMMON
+#endif // MENU_H
+

Modified: branches/commonification/tuxtype/trunk/src/playgame.c
===================================================================
--- branches/commonification/tuxtype/trunk/src/playgame.c	2009-08-05 16:23:53 UTC (rev 1369)
+++ branches/commonification/tuxtype/trunk/src/playgame.c	2009-08-05 16:42:16 UTC (rev 1370)
@@ -116,7 +116,7 @@
   Uint16 key_unicode;
   Uint32 last_time, now_time;
 
-  DEBUGCODE
+  DEBUGCODE(debug_game)
   {
     fprintf(stderr, "->Entering PlayCascade(): level=%i\n", diflevel);
   }
@@ -199,7 +199,7 @@
       if (settings.hidden && curlevel == 3)
         sprintf(filename, "/images/hidden.jpg");
 
-      DEBUGCODE
+      DEBUGCODE(debug_game)
       {
         fprintf(stderr, "->>Loading background: %s\n", filename);
       }
@@ -302,7 +302,7 @@
             /* See what Unicode value was typed: */
             key_unicode = event.key.keysym.unicode;
 
-            DEBUGCODE
+            DEBUGCODE(debug_game)
             {
               fprintf(stderr,
                       "\nkey_unicode = %d\twchar_t = %lc\t\n",
@@ -317,7 +317,7 @@
               key_unicode -= 32; //same for non-US chars
 
             LOG ("After checking for lower case:\n");
-            DEBUGCODE
+            DEBUGCODE(debug_game)
             {
               fprintf(stderr,
                       "key_unicode = %d\twchar_t = %lc\\n\n",
@@ -380,7 +380,7 @@
       /* Pause (keep frame-rate event) */
       now_time = SDL_GetTicks();
 
-      DEBUGCODE
+      DEBUGCODE(debug_game)
       {
         fprintf(stderr, "now_time = %d\tlast_time = %d, elapsed time = %d\n",
                 now_time, last_time, now_time - last_time);
@@ -609,7 +609,7 @@
 	char filename[FNLEN];
 
 	LOG( "=LoadOthers()\n" );
-	DEBUGCODE
+	DEBUGCODE(debug_game)
 	{
 	  fprintf(stderr, "settings.theme_font_name is %s\n",
                   settings.theme_font_name);
@@ -1038,7 +1038,7 @@
            /
            (fish_object[*fishies].dy);
 
-  DEBUGCODE 
+  DEBUGCODE(debug_game) 
   {
     /* NOTE need %S rather than %s because of wide characters */
     fprintf(stderr, "Spawn fishy with word '%S'\n", fish_object[*fishies].word);

Modified: branches/commonification/tuxtype/trunk/src/practice.c
===================================================================
--- branches/commonification/tuxtype/trunk/src/practice.c	2009-08-05 16:23:53 UTC (rev 1369)
+++ branches/commonification/tuxtype/trunk/src/practice.c	2009-08-05 16:42:16 UTC (rev 1370)
@@ -221,7 +221,7 @@
                                   medfontsize, phrase_draw_width);
 
         /* Draw the phrase to be typed up to the next wrapping point: */
-        DEBUGCODE
+        DEBUGCODE(debug_practice)
         {
           wchar_t buf[200];
           wcsncpy(buf, &phrases[cur_phrase][prev_wrap], wrap_pt + 1); 
@@ -247,7 +247,7 @@
                                   medfontsize, &white,
                                   cursor - prev_wrap);
 
-        DEBUGCODE
+        DEBUGCODE(debug_practice)
         {
           wchar_t buf[200];
           wcsncpy(buf, &phrases[cur_phrase][prev_wrap], cursor - prev_wrap); 
@@ -854,7 +854,7 @@
   int load_failed = 0;
   int labels_ok = 0;
 
-  DEBUGCODE { printf("Entering practice_load_media\n"); }
+  DEBUGCODE(debug_practice) { printf("Entering practice_load_media\n"); }
 
 
   /* load needed SDL_Surfaces: */
@@ -909,7 +909,7 @@
   GenerateKeyboard(keyboard);
 
   LOG("DONE - Loading practice media\n");
-  DEBUGCODE { printf("Leaving practice_load_media\n"); }
+  DEBUGCODE(debug_practice) { printf("Leaving practice_load_media\n"); }
   return 1;
 }
 
@@ -959,7 +959,7 @@
   calc_font_sizes();
   text_height = fontsize * 1.5;
 
-  DEBUGCODE
+  DEBUGCODE(debug_practice)
   {
     fprintf(stderr, "Entering recalc_positions(), screen is %d x %d\n", screen->w, screen->h); 
   }
@@ -1230,7 +1230,7 @@
     return 0;
   }
 
-  DEBUGCODE { printf("load_phrases(): phrases file is '%s'\n", fn ); }
+  DEBUGCODE(debug_practice) { printf("load_phrases(): phrases file is '%s'\n", fn ); }
 
   /* We know it will open OK because we already ran CheckFile() on it */ 
   fp = fopen(fn, "r");
@@ -1244,7 +1244,7 @@
     if (EOF != fscanf(fp, "%[^\n]\n", buf))
     {
       ConvertFromUTF8(phrases[num_phrases], buf, MAX_PHRASE_LENGTH);
-      DEBUGCODE {printf("phrase %d:\t%S\n", num_phrases, phrases[num_phrases]);}
+      DEBUGCODE(debug_practice) {printf("phrase %d:\t%S\n", num_phrases, phrases[num_phrases]);}
       num_phrases++;
     }
   }
@@ -1289,7 +1289,7 @@
   }
 
   DOUT(width);
-  DEBUGCODE{ fprintf(stderr, "wstr = %S\n", wstr);}
+  DEBUGCODE(debug_practice){ fprintf(stderr, "wstr = %S\n", wstr);}
   
   phr_length = wcslen(wstr);
 
@@ -1323,7 +1323,7 @@
     /* Copy string into buf and null terminate after point to be checked: */
     wcsncpy(buf, wstr, MAX_PHRASE_LENGTH);
     buf[word_end + 1] = '\0';
-    DEBUGCODE{ fprintf(stderr, "buf = %S\n", buf);}
+    DEBUGCODE(debug_practice){ fprintf(stderr, "buf = %S\n", buf);}
 
     /* Need to convert to UTF8 because couldn't get UNICODE version to work: */
     ConvertToUTF8(buf, UTF8buf, MAX_PHRASE_LENGTH);
@@ -1345,7 +1345,7 @@
     /* whether or not we are at the end of the string:                      */
     if (test_w > width)
     {
-      DEBUGCODE
+      DEBUGCODE(debug_practice)
       {
         fprintf(stderr, "width exceeded, returning end of previous word as wrap point\n");
         fprintf(stderr, "prev_word_end is %d\n", prev_word_end); 
@@ -1357,7 +1357,7 @@
     {
       if (i >= phr_length)
       {
-        DEBUGCODE
+        DEBUGCODE(debug_practice)
         {
           fprintf(stderr, "width not exceeded, returning because end of string reached\n");
           fprintf(stderr, "word_end is %d\n", word_end); 

Modified: branches/commonification/tuxtype/trunk/src/scripting.c
===================================================================
--- branches/commonification/tuxtype/trunk/src/scripting.c	2009-08-05 16:23:53 UTC (rev 1369)
+++ branches/commonification/tuxtype/trunk/src/scripting.c	2009-08-05 16:42:16 UTC (rev 1370)
@@ -148,7 +148,7 @@
     sprintf(script_path, "%s/scripts", settings.theme_data_path);
     if (CheckFile(script_path))
     {
-      DEBUGCODE {fprintf(stderr, "Using theme script dir: %s\n", script_path);}
+      DEBUGCODE(debug_scripting) {fprintf(stderr, "Using theme script dir: %s\n", script_path);}
       found = 1;
     }
   }
@@ -159,7 +159,7 @@
     sprintf( script_path, "%s/scripts", settings.default_data_path);
     if (CheckFile(script_path))
     {
-      DEBUGCODE { fprintf(stderr, "Using theme script dir: %s\n", script_path); }
+      DEBUGCODE(debug_scripting) { fprintf(stderr, "Using theme script dir: %s\n", script_path); }
       found = 1;
     }
   }
@@ -174,7 +174,7 @@
   /* If we get to here, we know there is at least a lesson script directory */
   /* but not necessarily any valid files.                              */
 
-  DEBUGCODE { fprintf(stderr, "script_path is: %s\n", script_path); }
+  DEBUGCODE(debug_scripting) { fprintf(stderr, "script_path is: %s\n", script_path); }
 
 
   /* FIXME looks like a place for scandir() - or our own w32_scandir() */
@@ -201,14 +201,14 @@
 
     sprintf(script_filenames[num_scripts], "%s", script_file->d_name);
     num_scripts++;
-    DEBUGCODE { fprintf(stderr, "Adding XML file no. %d: %s\n",
+    DEBUGCODE(debug_scripting) { fprintf(stderr, "Adding XML file no. %d: %s\n",
                 num_scripts, script_filenames[num_scripts]); }
 
   } while (1); /* Leave loop when readdir() returns NULL */
 
   closedir(script_dir);	
 
-  DEBUGCODE { fprintf(stderr, "Found %d . xml file(s) in script dir\n", num_scripts); }
+  DEBUGCODE(debug_scripting) { fprintf(stderr, "Found %d . xml file(s) in script dir\n", num_scripts); }
 
 
   /* let the user pick the lesson script */
@@ -417,7 +417,7 @@
     return 0; // bail if any errors occur
   }
 
-  DEBUGCODE { fprintf(stderr, "Attempting to run script: %s\n", fn); }
+  DEBUGCODE(debug_scripting) { fprintf(stderr, "Attempting to run script: %s\n", fn); }
 
   run_script();
   SDL_ShowCursor(1);
@@ -515,7 +515,7 @@
   char str[FNLEN];
   FILE* f = NULL;
     
-  DEBUGCODE
+  DEBUGCODE(debug_scripting)
   {
     fprintf(stderr, "\nEnter load_script() - attempt to load '%s'\n", fn);
   }

Modified: branches/commonification/tuxtype/trunk/src/setup.c
===================================================================
--- branches/commonification/tuxtype/trunk/src/setup.c	2009-08-05 16:23:53 UTC (rev 1369)
+++ branches/commonification/tuxtype/trunk/src/setup.c	2009-08-05 16:42:16 UTC (rev 1370)
@@ -56,7 +56,7 @@
 
   // Determine the current resolution: this will be used as the
   // fullscreen resolution, if the user wants fullscreen.
-  DEBUGCODE
+  DEBUGCODE(debug_setup)
   {
     fprintf(stderr, "Current resolution: w %d, h %d.\n", 
             video_info->current_w, video_info->current_h);
@@ -100,7 +100,7 @@
 
 
 
-  DEBUGCODE 
+  DEBUGCODE(debug_setup) 
   {
     video_info = SDL_GetVideoInfo();
     fprintf(stderr, "-SDL VidMode successfully set to %ix%ix%i\n",
@@ -190,7 +190,7 @@
   LOG("WIN32 not defined\n");
 #endif
 
-  DEBUGCODE { printf("LoadSettings: settings file is '%s'\n", fn ); }
+  DEBUGCODE(debug_setup) { printf("LoadSettings: settings file is '%s'\n", fn ); }
 
   LOG("LoadSettings: trying to open settings file\n");
 
@@ -246,11 +246,11 @@
     if (EOF == fscanf(fp, "%[^=]=%[^\n]\n", setting, value))
       break;
 
-    DEBUGCODE {fprintf(stderr, "%s = %s", setting, value );}
+    DEBUGCODE(debug_setup) {fprintf(stderr, "%s = %s", setting, value );}
       //For now we are not reading or saving the language selection: 
 //    if (strncmp( setting, "lang", FNLEN ) == 0 )
 //    {
-//      DEBUGCODE {fprintf(stderr, "LoadSettings: Setting language to %s\n", value);}
+//      DEBUGCODE(debug_setup) {fprintf(stderr, "LoadSettings: Setting language to %s\n", value);}
 //      strncpy(settings.lang, value, FNLEN - 1);
 //      setting_found = 1;
 //      SetupPaths(value); /* Does this really belong here? */ 
@@ -258,25 +258,25 @@
 //    else
     if (strncmp( setting, "o_lives", FNLEN ) == 0 )
     {
-      DEBUGCODE {fprintf(stderr, "LoadSettings: Setting lives to %s\n", value);}
+      DEBUGCODE(debug_setup) {fprintf(stderr, "LoadSettings: Setting lives to %s\n", value);}
       settings.o_lives = atoi(value);
       setting_found = 1;
    }
     else if (strncmp( setting, "mus_volume", FNLEN ) == 0 )
     {
-      DEBUGCODE {fprintf(stderr, "LoadSettings: Setting music volume to %s\n", value);}
+      DEBUGCODE(debug_setup) {fprintf(stderr, "LoadSettings: Setting music volume to %s\n", value);}
       settings.mus_volume = atoi(value);
       setting_found = 1;
     }
     else if (strncmp(setting, "sfx_volume", FNLEN) == 0)
     {
-      DEBUGCODE {fprintf(stderr, "LoadSettings: Setting effects volume to %s\n", value);}
+      DEBUGCODE(debug_setup) {fprintf(stderr, "LoadSettings: Setting effects volume to %s\n", value);}
       settings.sfx_volume = atoi(value);
       setting_found = 1;
     }
     else if (strncmp(setting, "menu_music", FNLEN) == 0)
     {
-      DEBUGCODE {fprintf(stderr, "LoadSettings: Setting menu music to %s\n", value);}
+      DEBUGCODE(debug_setup) {fprintf(stderr, "LoadSettings: Setting menu music to %s\n", value);}
       settings.menu_music = atoi(value);
       setting_found = 1;
     }
@@ -287,19 +287,19 @@
     }
     else if (strncmp( setting, "theme_font_name", FNLEN ) == 0 )
     {
-      DEBUGCODE {fprintf(stderr, "load_settings_fp(): Setting theme font to %s\n", value);}
+      DEBUGCODE(debug_setup) {fprintf(stderr, "load_settings_fp(): Setting theme font to %s\n", value);}
       strncpy(settings.theme_font_name, value, FNLEN - 1);
       setting_found = 1;
     }
     else if (strncmp( setting, "theme_locale_name", FNLEN ) == 0 )
     {
-      DEBUGCODE {fprintf(stderr, "load_settings_fp(): Setting theme locale to %s\n", value);}
+      DEBUGCODE(debug_setup) {fprintf(stderr, "load_settings_fp(): Setting theme locale to %s\n", value);}
       strncpy(settings.theme_locale_name, value, FNLEN - 1);
       setting_found = 1;
       fprintf(stderr, "load_settings_fp(): Setting theme locale to %s\n", value);
     }
     else
-      DEBUGCODE {fprintf(stderr, "load_settings_fp(): unrecognized string: %s\n", value);}
+      DEBUGCODE(debug_setup) {fprintf(stderr, "load_settings_fp(): unrecognized string: %s\n", value);}
 
   }
 
@@ -335,7 +335,7 @@
 	#endif
 
 
-	DEBUGCODE { printf("SaveSettings: settings file is '%s'\n", fn ); }
+	DEBUGCODE(debug_setup) { printf("SaveSettings: settings file is '%s'\n", fn ); }
 	
 	LOG("SaveSettings: trying to open settings file\n");
 	
@@ -383,7 +383,7 @@
   if (CheckFile(DATA_PREFIX))
   {
     strncpy(settings.default_data_path, DATA_PREFIX, FNLEN - 1);
-    DEBUGCODE {fprintf(stderr, "path '%s' found, copy to settings.default_data_path\n", DATA_PREFIX);}
+    DEBUGCODE(debug_setup) {fprintf(stderr, "path '%s' found, copy to settings.default_data_path\n", DATA_PREFIX);}
   }
   else
   {
@@ -399,7 +399,7 @@
 
     sprintf(full_theme_path, "%s/themes/%s", settings.default_data_path, theme_dir);
 
-    DEBUGCODE
+    DEBUGCODE(debug_setup)
     {
       fprintf(stderr, "SetupPaths(): checking for '%s' as theme path\n", full_theme_path);
     }
@@ -408,7 +408,7 @@
     {
       settings.use_english = 0;
       strncpy(settings.theme_data_path, full_theme_path, FNLEN - 1);
-      DEBUGCODE
+      DEBUGCODE(debug_setup)
       {
         fprintf(stderr, "settings.theme_data_path is: %s\n", settings.theme_data_path);
       }
@@ -423,7 +423,7 @@
       /* Load fontname or any other theme-specific settings: */
       sprintf(theme_settings_path, "%s/settings.txt", full_theme_path);
 
-      DEBUGCODE
+      DEBUGCODE(debug_setup)
       {
         fprintf(stderr, "theme_settings_path is: %s\n", theme_settings_path);
       }
@@ -448,7 +448,7 @@
   }
 
 
-  DEBUGCODE
+  DEBUGCODE(debug_setup)
   {
     fprintf(stderr, "Leaving SetupPaths():\n");
     fprintf(stderr, "default_data_path: '%s'\n", settings.default_data_path);
@@ -462,7 +462,7 @@
   if (CheckFile(VAR_PREFIX))
   {
     strncpy(settings.var_data_path, VAR_PREFIX, FNLEN - 1);
-    DEBUGCODE {fprintf(stderr, "path '%s' found, copy to settings.var_data_path\n", VAR_PREFIX);}
+    DEBUGCODE(debug_setup) {fprintf(stderr, "path '%s' found, copy to settings.var_data_path\n", VAR_PREFIX);}
   }
   else
   {
@@ -476,7 +476,7 @@
   if (CheckFile(VAR_PREFIX))
   {
     strncpy(settings.var_data_path, VAR_PREFIX, FNLEN - 1);
-    DEBUGCODE {fprintf(stderr, "path '%s' found, copy to settings.var_data_path\n", VAR_PREFIX);}
+    DEBUGCODE(debug_setup) {fprintf(stderr, "path '%s' found, copy to settings.var_data_path\n", VAR_PREFIX);}
   }
   else
   {

Modified: branches/commonification/tuxtype/trunk/src/titlescreen.c
===================================================================
--- branches/commonification/tuxtype/trunk/src/titlescreen.c	2009-08-05 16:23:53 UTC (rev 1369)
+++ branches/commonification/tuxtype/trunk/src/titlescreen.c	2009-08-05 16:42:16 UTC (rev 1370)
@@ -19,10 +19,72 @@
 
 #include "globals.h"
 #include "funcs.h"
+#include "menu.h"
+#include "compiler.h"
 #include "titlescreen.h"
 #include "SDL_extras.h"
 #include "convert_utf.h"
 
+/* these are all menu choices that are available in tuxtype.
+   By using a define we can create both an enum and
+   a string array without writing these names twice */
+#define QUIT -2
+#define STOP -1
+
+#define ACTIVITIES \
+  X( RUN_QUIT ),\
+  X( RUN_CASCADE ),\
+  X( RUN_INSTRUCTIONS ),\
+  X( RUN_COMET_ZAP ),\
+  X( RUN_LESSONS ),\
+  X( RUN_MAIN_MENU ),\
+  X( RUN_EDIT_WORD_LIST ),\
+  X( RUN_PHRASE_TYPING ),\
+  X( RUN_INFO ),\
+  X( RUN_SETUP ),\
+  X( N_OF_ACTIVITIES )  /* this one has to be the last one */
+
+/* create enum */
+#define X(name) name
+enum { ACTIVITIES };
+#undef X
+#define X(name) #name
+char* activities[] = { ACTIVITIES };
+#undef X
+
+enum { MENU_MAIN, MENU_LESSONS, MENU_LOGIN };
+
+/*TODO: move these constants into a config file
+  (together with menu.c constants ? ) */
+const float title_pos[4] = {0.0, 0.0, 0.3, 0.25};
+const float tux_pos[4]   = {0.0, 0.6, 0.3, 0.4};
+const char* bkg_path     = "/images/main_bkg.jpg";
+const char* standby_path = "/images/status/standby.svg";
+const char* title_path   = "/images/title1.svg";
+const char* egg_path     = "/images/title/egg.svg";
+const char* tux_path     = "/images/tux";
+char* menu_music_path    = "/sounds/tuxi.ogg";
+/* beak coordinates relative to tux rect */
+const float beak_pos[4]  = {0.36, 0.21, 0.27, 0.14};
+
+/* screen dimensions to which titlescreen graphics are currently rendered */
+int curr_res_x = -1;
+int curr_res_y = -1;
+
+SDL_Surface* logo = NULL;
+sprite* Tux = NULL;
+SDL_Surface* title = NULL;
+
+/* locations we need */
+SDL_Rect bkg_rect,
+         logo_rect,
+         tux_rect,
+         title_rect,
+         cursor;
+
+
+
+
 /* --- media for menus --- */
 
 /* images of regular and selected text of menu items: */
@@ -32,10 +94,8 @@
 static sprite* menu_gfx[TITLE_MENU_ITEMS + 1][TITLE_MENU_DEPTH + 1] = {{NULL}};
 
 /* --- other media --- */
-static SDL_Surface* title = NULL;
 static SDL_Surface* speaker = NULL;
 static SDL_Surface* speakeroff = NULL;
-static sprite* Tux = NULL;
 static Mix_Chunk* snd_move = NULL;
 static Mix_Chunk* snd_select = NULL;
 static Mix_Chunk* snd_welcome = NULL; 
@@ -47,11 +107,6 @@
 /* keep track of the width of each menu: */
 static int menu_width[TITLE_MENU_DEPTH + 1];
 
-static SDL_Rect Tuxdest;
-static SDL_Rect Titledest;
-static SDL_Rect spkrdest;
-static SDL_Rect cursor;
-
 /* Local function prototypes: */
 static void show_logo(void);
 static int load_media(void);
@@ -66,36 +121,7 @@
 
 /* --- menu text --- */
 
-/* --- define menu structure --- */
-/* (these values are all in the Game_Type enum in globals.h) */
-const int menu_item[][6] = {{0, 0,         0,         0,          0},
-			   {0, CASCADE,   LEVEL1,    LEVEL1,  EDIT_WORDLIST   },
-			   {0, LASER,     LEVEL2,    LEVEL2,  PHRASE_TYPING },
-			   {0, LESSONS,   LEVEL3,    LEVEL3,  PROJECT_INFO    },
-			   {0, OPTIONS,   INSTRUCT,  LEVEL4,  SET_LANGUAGE    },
-			   {0, QUIT_GAME, MAIN,      MAIN,    MAIN            }};
 
-/* --- menu icons --- */
-const char* menu_icon[][6] = 
-{{"", "", "", "", ""},
- {"", "cascade", "easy",   "grade1_", "list"   },
- {"", "comet",   "medium", "grade2_", "practice" },
- {"", "lesson","hard",   "grade3_", "keyboard"   },
- {"", "tux_config",  "tutor",  "grade4_", "lang" },
- {"", "quit",    "main",   "main",    "main"   }};
-
-     
-static const char* menu_text[] = 
-{"", "",            "",             "",            ""    ,
- "",gettext_noop("Fish Cascade"),gettext_noop("Easy"),gettext_noop("Space Cadet"),gettext_noop("Edit Word Lists"),
- "",gettext_noop("Comet Zap"),gettext_noop("Medium"),gettext_noop("Pilot"),gettext_noop("Phrase Typing"),
- "",gettext_noop("Lessons"),gettext_noop("Hard"), gettext_noop("Ace"),gettext_noop("Project Info"),
- "", gettext_noop("Options"),gettext_noop("Instructions"),gettext_noop("Commander"),gettext_noop("Setup Language"),
- "", gettext_noop("Quit"),gettext_noop("Main Menu"),gettext_noop("Main Menu"),gettext_noop("Main Menu")};
-
-
-
-
 /************************************************************************/
 /*                                                                      */ 
 /*         "Public" functions (callable throughout program)             */
@@ -112,8 +138,12 @@
 {
 
   Uint32 frame = 0;
+  Uint32 start_time = 0;
   Uint32 start = 0;
 
+  char fn[1000];
+  SDL_Rect tux_anim, title_anim;
+  int tux_pix_skip, title_pix_skip, curr_time;
   /* NOTE for 'depth', think pages like a restaurant menu, */
   /* not heirarchical depth - choice of term is misleading */
   int menu_depth; // how deep we are in the menu
@@ -121,8 +151,6 @@
   int i, j, tux_frame = 0;
   int done = 0;
   int firstloop = 1;
-  int menu_opt = NONE;
-  int sub_menu = NONE;
   int update_locs = 1;
   int redraw = 0;
   int key_menu = 1;
@@ -149,13 +177,6 @@
     PlaySound(snd_welcome);
   }
 
-  /* Load media and menu data: */
-  if (!load_media())
-  {
-    fprintf(stderr, "TitleScreen - load_media() failed!");
-    return;
-  }
-
   SDL_WM_GrabInput(SDL_GRAB_ON); // User input goes to TuxType, not window manager
 
 
@@ -165,20 +186,22 @@
 
   LOG( "->Now Animating Tux and Title onto the screen\n" );
 
-  Tuxdest.x = 0;
-  Tuxdest.y = screen->h;
-  Tuxdest.w = Tux->frame[0]->w;
-  Tuxdest.h = Tux->frame[0]->h;
+  LoadBothBkgds(bkg_path);
 
-  Titledest.x = screen->w;
-  Titledest.y = 10;
-  Titledest.w = title->w;
-  Titledest.h = title->h;
+  /* load menus */
+  SetActivitiesList(N_OF_ACTIVITIES, activities);
+  SetImagePathPrefix(settings.default_data_path);
+  //SetMenuSounds(menu_music_path, sounds[SND_POP], sounds[SND_TOCK]);
+  sprintf(fn, "%s%s", settings.default_data_path, "/menus/main_menu.xml");
+  LoadMenu(MENU_MAIN, fn);
+  PrerenderAll();
 
-  spkrdest.x = screen->w - speaker->w - 10;
-  spkrdest.y = screen->h - speaker->h - 10;
-  spkrdest.w = speaker->w;
-  spkrdest.h = speaker->h;
+  /* load titlescreen images */
+  if(RenderTitleScreen() == 0)
+  {
+    fprintf(stderr, "Media was not properly loaded, exiting");
+    return;
+  }
 
   /* --- wait if the first time in the game --- */
 
@@ -200,41 +223,53 @@
   SDL_UpdateRect(screen, 0, 0, 0, 0);
 
   /* --- Pull tux & logo onscreen --- */
-  for (i = 0; i <= (PRE_ANIM_FRAMES * PRE_FRAME_MULT); i++)
+  if(title && Tux && Tux->frame[0])
   {
-    start = SDL_GetTicks();
-    SDL_BlitSurface(CurrentBkgd(), &Tuxdest, screen, &Tuxdest);
-    SDL_BlitSurface(CurrentBkgd(), &Titledest, screen, &Titledest);
+    /* final tux & title positioins are already calculated,
+       start outside the screen */
+    tux_anim = tux_rect;
+    tux_anim.y = screen->h;
 
+    title_anim = title_rect;
+    title_anim.x = screen->w;
 
-    Tuxdest.y -= Tux->frame[0]->h / (PRE_ANIM_FRAMES * PRE_FRAME_MULT);
-    Titledest.x -= (screen->w) / (PRE_ANIM_FRAMES * PRE_FRAME_MULT);
-    /* Don't go past 0; */
-    if (Tuxdest.y < 0)
-      Tuxdest.y = 0;
-    if (Titledest.x < 0)
-      Titledest.x = 0;
+    for(i = 0; i < ANIM_FRAMES; i++)
+    {
+      start_time = SDL_GetTicks();
 
-    SDL_BlitSurface(Tux->frame[0], NULL, screen, &Tuxdest);
-    SDL_BlitSurface(title, NULL, screen, &Titledest);
+      /* Draw the entire background, over a black screen if necessary */
+      if(CurrentBkgd()->w != screen->w || CurrentBkgd()->h != screen->h)
+        SDL_FillRect(screen, &screen->clip_rect, 0);
 
-    SDL_UpdateRect(screen, Tuxdest.x, Tuxdest.y, Tuxdest.w, Tuxdest.h);
-    SDL_UpdateRect(screen, Titledest.x, Titledest.y, Titledest.w + 40, Titledest.h);
+      SDL_BlitSurface(CurrentBkgd(), NULL, screen, &bkg_rect);
 
-    while ((SDL_GetTicks() - start) < 33) 
-    {
-      SDL_Delay(2);
+      /* calculate shifts */
+      tux_pix_skip = (tux_anim.y - tux_rect.y) / (ANIM_FRAMES - i);
+      tux_anim.y -= tux_pix_skip;
+      title_pix_skip = (title_anim.x - title_rect.x) / (ANIM_FRAMES - i);
+      title_anim.x -= title_pix_skip;
+
+      /* update screen */
+      SDL_BlitSurface(Tux->frame[0], NULL, screen, &tux_anim);
+      SDL_BlitSurface(title, NULL, screen, &title_anim);
+
+      SDL_UpdateRect(screen, tux_anim.x, tux_anim.y, tux_anim.w,
+          min(tux_anim.h + tux_pix_skip, screen->h - tux_anim.y));
+      SDL_UpdateRect(screen, title_anim.x, title_anim.y,
+          min(title_anim.w + title_pix_skip, screen->w - title_anim.x), title_anim.h);
+
+      curr_time = SDL_GetTicks();
+      if((curr_time - start_time) < 1000 / ANIM_FPS)
+        SDL_Delay(1000 / ANIM_FPS - (curr_time - start_time));
     }
   }
 
-  recalc_rects();
-
   /* Pick speaker graphic according to whether music is on: */
-  if ( settings.menu_music )
+/*  if ( settings.menu_music )
     SDL_BlitSurface(speaker, NULL, screen, &spkrdest);
   else
     SDL_BlitSurface(speakeroff, NULL, screen, &spkrdest);
-
+*/
   /* Start playing menu music if desired: */
   if (settings.menu_music)
     AudioMusicLoad( "/sounds/tuxi.ogg", -1 );
@@ -244,608 +279,242 @@
   SDL_WM_GrabInput(SDL_GRAB_OFF);
 
 
-  /****************************
-  * Main Loop Starts Here ... *
-  ****************************/
+  run_main_menu();
 
 
-  menu_depth = 1;
-  firstloop = 1;
-  Tuxdest.y = screen->h - Tux->frame[0]->h;
+  LOG( "->>Freeing title screen images\n" );
 
+  LOG( "->TitleScreen():END \n" );
+}
 
-  while (!done) 
-  {
 
-    start=SDL_GetTicks();
 
-    /* ---process input queue --- */
+/************************************************************************/
+/*                                                                      */ 
+/*       "Private" functions (local to titlescreen.c)                   */
+/*                                                                      */
+/************************************************************************/
 
-    menu_opt = NONE; // clear the option so we don't change twice!
+void DrawTitleScreen(void)
+{
+  DEBUGMSG(debug_titlescreen, "Entering DrawTitleScreen()\n");
+  SDL_BlitSurface(CurrentBkgd(), NULL, screen, &bkg_rect);
+  SDL_BlitSurface(Tux->frame[0], NULL, screen, &tux_rect);
+  SDL_BlitSurface(title, NULL, screen, &title_rect);
+  //SDL_UpdateRect(screen, 0, 0, 0, 0);
+  DEBUGMSG(debug_titlescreen, "Leaving DrawTitleScreen()\n");
+}
 
-    old_key_menu = key_menu;
+/* Render and position all titlescreen items to match current
+   screen size. Rendering is done only if needed.
+   This function must be called after every resolution change
+   returns 1 on success, 0 on failure */
+int RenderTitleScreen(void)
+{
+  SDL_Surface* new_bkg = NULL;
+  char* path;
 
-    /* Retrieve any user interface events: */
-    while (SDL_PollEvent(&event))
-    {
-      switch (event.type)
-      {
+  if(curr_res_x != screen->w || curr_res_y != screen->h)
+  {
+    /* we need to rerender titlescreen items */
+    DEBUGMSG(debug_titlescreen, "Re-rendering titlescreen items.\n");
 
-        case SDL_MOUSEMOTION:
-        {
-          cursor.x = event.motion.x;
-          cursor.y = event.motion.y;
-          break;
-        }
-
-
-        /* Handle mouse clicks based on mouse location: */
-        case SDL_MOUSEBUTTONDOWN:
-        {
-          cursor.x = event.motion.x;
-          cursor.y = event.motion.y;
-
-          for (j = 1; j <= TITLE_MENU_ITEMS; j++)
-          {
-            if (inRect(menu_button[j], cursor.x, cursor.y))
-            {
-              menu_opt = menu_item[j][menu_depth];
-              if (settings.menu_sound)
-              {
-                PlaySound(snd_select);
-              }
-              DEBUGCODE
-              {
-                fprintf(stderr, "->>BUTTON CLICK menu_opt = %d\n", menu_opt);
-                fprintf(stderr, "->J = %d menu_depth=%d\n", j, menu_depth);
-              }
-            }
-          }
-
-          /* If mouse over speaker, toggle menu music off or on: */
-          if (inRect(spkrdest, cursor.x, cursor.y))
-          {
-            if (settings.menu_music)
-            {
-              AudioMusicUnload();
-              settings.menu_music = 0;
-            }
-            else
-            {
-              settings.menu_music = 1;
-              AudioMusicLoad("/sounds/tuxi.ogg", -1);
-            }
-            redraw = 1;
-          }
-          break;
-        }
-
-
-
-        case SDL_QUIT:
-        {
-          menu_opt = QUIT_GAME;
-          break;
-        }
-
-
-        /* Handle key press events based on key value: */
-        case SDL_KEYDOWN:
-        {
-          switch (event.key.keysym.sym)
-          {
-            case SDLK_ESCAPE:
-            {
-              /* Go to main menu (if in submenu) or quit: */
-              if (menu_depth != 1) 
-                menu_opt = MAIN;
-              else
-                menu_opt = QUIT_GAME;
-
-              if (settings.menu_sound)
-                PlaySound(snd_select);
-              break;
-            }
-
-
-            /* Toggle screen mode: */
-            case SDLK_F10:
-            {
-              SwitchScreenMode();
-              recalc_rects();
-              redraw = 1;
-              break;
-            }
-
-
-            /* Toggle menu music: */
-            case SDLK_F11:
-            {
-              if (settings.menu_music)
-              {
-                AudioMusicUnload( );
-                settings.menu_music = 0;
-              }
-              else
-              {
-                settings.menu_music = 1;
-                AudioMusicLoad("/sounds/tuxi.ogg", -1);
-              }
-              redraw = 1;
-              break;
-            }
-
-
-            /* --- reload translation/graphics/media: for themers/translaters --- */
-            case SDLK_F12:
-            {
-              unload_media();
-              LoadLang();
-              load_media();
-              redraw = 1;
-              break;
-            }
-
-
-            case SDLK_UP:
-            {
-              if (settings.menu_sound)
-                PlaySound(snd_move);
-              key_menu--;
-              if (key_menu < 1)
-                key_menu = 5;
-              break;
-            }
-
-
-            case SDLK_DOWN:
-            {
-              key_menu++;
-              if (settings.menu_sound)
-                PlaySound(snd_move);
-              if (key_menu > 5)
-                key_menu = 1;
-              break;
-            }
-
-
-            case SDLK_RETURN:
-            {
-              if (key_menu)
-              {
-                menu_opt = menu_item[key_menu][menu_depth];
-                if (settings.menu_sound)
-                  PlaySound(snd_select);
-              }
-              break;
-            }
-
-
-            default:     /* Some other key pressed - do nothing: */
-            {
-              break;
-            }
-          }             /* End of switch(event.key.keysym.sym) statement */
-        }               /* End of case: SDL_KEYDOWN: */
-
-
-        default:        /* Some other type of SDL event - do nothing;    */
-        {
-          break;
-        }
-      }                 /* End of switch(event.type) statement           */
-    }	              /* End of while (SDL_PollEvent(&event)) loop     */
-
-
-
-
-
-    /* --- do menu processing --- */
-
-
-    if (menu_opt == QUIT_GAME)
-      done = 1;
-
-
-    if (menu_opt == LASER)
+    /* we keep two backgrounds to make screen mode switch faster */
+    if(CurrentBkgd()->w != screen->w || CurrentBkgd()->h != screen->h)
     {
-      menu_depth = LASER_SUBMENU;
-      sub_menu = LASER;
-      update_locs = 1;
-      redraw = 1;
-    }
-
-
-    if (menu_opt == CASCADE)
-    {
-      menu_depth = CASCADE_SUBMENU;
-      sub_menu = CASCADE;
-      update_locs = 1;
-      redraw=1;
-    }
-
-
-    if (menu_opt == OPTIONS)
-    {
-      menu_depth = OPTIONS_SUBMENU;
-      sub_menu = OPTIONS;
-      update_locs = 1;
-      redraw = 1;
-    }
-
-
-    if (menu_opt == MAIN)
-    {
-      menu_depth = ROOTMENU;
-      update_locs = 1;
-      redraw = 1;
-    }
-
-
-    if (menu_opt == EDIT_WORDLIST)
-    {
-      not_implemented();
-//      ChooseFile();
-      redraw = 1;
-    }
-
-
-    if (menu_opt == PROJECT_INFO)
-    {
-      ProjectInfo();
-      redraw = 1;
-    }
-
-
-    if (menu_opt == LESSONS)
-    {
-//      not_implemented();
-      SDL_BlitSurface(CurrentBkgd(), NULL, screen, NULL);
-      SDL_Flip( screen );
-      unload_media();
-
-      if (settings.menu_music)
-        AudioMusicUnload( );
-
-      TestLesson();
-
-      load_media();
-
-      redraw = 1;
-
-      if (settings.menu_music)
-        AudioMusicLoad( "/sounds/tuxi.ogg", -1 );
-    }
-
-
-    if (menu_opt == SET_LANGUAGE)
-    {
-      unload_media();
-      ChooseTheme();
-      LoadLang();
-      LoadKeyboard();
-      load_media();
-      redraw = 1;
-
-      if (settings.menu_music)
-        AudioMusicLoad( "/sounds/tuxi.ogg", -1 );
-    }
-
-
-    if (menu_opt == LEVEL1)
-    {  
-      if (chooseWordlist()) 
+      new_bkg = LoadBkgd(bkg_path, screen->w, screen->h);
+      if(new_bkg == NULL)
       {
-        unload_media();
-
-        switch (sub_menu)
-        {
-          case CASCADE: PlayCascade( EASY ); break;
-          case LASER:   PlayLaserGame(  EASY ); break;
-        }
+        DEBUGMSG(debug_titlescreen, "RenderTitleScreen(): Failed to load new background.\n");
+        return 0;
       }
-
-      load_media();
-
-      if (settings.menu_music)
-        AudioMusicLoad("/sounds/tuxi.ogg", -1);
-
-      redraw = 1;
-    }
-
-
-    if (menu_opt == LEVEL2)
-    {
-      if (chooseWordlist())
+      else
       {
-        unload_media();
-
-        switch (sub_menu)
-        {
-          case CASCADE: PlayCascade( MEDIUM ); break;
-          case LASER:   PlayLaserGame(  MEDIUM ); break;
-        }
-
-
-        if (settings.menu_music)
-          AudioMusicLoad( "/sounds/tuxi.ogg", -1 );
+        DEBUGMSG(debug_titlescreen, "RenderTitleScreen(): New background loaded.\n");
+        //set_current_bkg(new_bkg);
       }
-
-      load_media();
-      redraw = 1;
     }
 
+    DEBUGMSG(debug_titlescreen, "Re-rendering titlescreen items.\n");
+    bkg_rect = CurrentBkgd()->clip_rect;
+    bkg_rect.x = (screen->w - bkg_rect.w) / 2;
+    bkg_rect.y = (screen->h - bkg_rect.h) / 2;
 
+    DEBUGMSG(debug_titlescreen, "Re-rendering titlescreen items.\n");
+    /* Tux in lower left corner of the screen */
+    SetRect(&tux_rect, tux_pos);
 
-    if (menu_opt == LEVEL3)
-    {
-      if (chooseWordlist())
-      {
-        unload_media();
+    path = GetSpriteFullPath(tux_path);
+    Tux = LoadSpriteOfBoundingBox(path, IMG_ALPHA, tux_rect.w, tux_rect.h);
+    if(path)
+      free(path);
 
-        switch (sub_menu)
-        {
-          case CASCADE: PlayCascade( HARD ); break;
-          case LASER:   PlayLaserGame(  HARD ); break;
-        }
-
-
-        if (settings.menu_music)
-          AudioMusicLoad( "/sounds/tuxi.ogg", -1 );
-      }
-
-      load_media();
-      redraw = 1;
-    }
-
-
-
-    if (menu_opt == LEVEL4)
+    if(Tux && Tux->frame[0])
     {
-      if (chooseWordlist())
-      {
-        unload_media();
-
-        switch (sub_menu)
-        {
-          case CASCADE: PlayCascade( INSANE ); break;
-          case LASER:   PlayLaserGame(  INSANE ); break;
-        }
-
-        if (settings.menu_music)
-          AudioMusicLoad( "/sounds/tuxi.ogg", -1 );
-      }
-
-      load_media();
-      redraw = 1;
+      tux_rect.w = Tux->frame[0]->clip_rect.w;
+      tux_rect.h = Tux->frame[0]->clip_rect.h;
     }
-
-
-
-    if (menu_opt == INSTRUCT)
+    else
     {
-//      unload_media();
-      not_implemented();
-
-//       switch (sub_menu)
-//       {
-//         case CASCADE: InstructCascade(); break;
-//         case LASER:   InstructLaser();   break;
-//       }
-
-//      load_media();
-
-//      if (settings.menu_music)
-//        AudioMusicLoad( "/sounds/tuxi.ogg", -1 );
-
-      redraw = 1;
+      DEBUGMSG(debug_titlescreen, "RenderTitleScreen(): Failed to load Tux image.\n");
+      return 0;
     }
 
+    /* "Tux, of math command" title in upper right corner */
+    SetRect(&title_rect, title_pos);
 
+    path = GetSpriteFullPath(title_path);
+    title = LoadImageOfBoundingBox(path, IMG_ALPHA, title_rect.w, title_rect.h);
+    if(path)
+      free(path);
 
-    if (menu_opt == PHRASE_TYPING)
+    if(title)
     {
-//      not_implemented();
-
-      unload_media();
-
-      Phrases(NULL);
-
-      load_media();
-
-      if (settings.menu_music)
-        AudioMusicLoad( "/sounds/tuxi.ogg", -1 );
-
-      redraw = 1;
+      title_rect.w = title->clip_rect.w;
+      title_rect.h = title->clip_rect.h;
     }
-
-    /* ------ End menu_opt processing ----------- */
-
-
-
-    if (redraw)
+    else
     {
-      LOG("TitleScreen() - redraw requested\n");
-      recalc_rects();
-
-      SDL_BlitSurface(CurrentBkgd(), NULL, screen, NULL); 
-      SDL_BlitSurface(title, NULL, screen, &Titledest);
-
-      if ( settings.menu_music )
-        SDL_BlitSurface(speaker, NULL, screen, &spkrdest);
-      else
-        SDL_BlitSurface(speakeroff, NULL, screen, &spkrdest);
-
-      /* Screen will be updated due to update_locs - see ~30 lines down: */
-//      SDL_UpdateRect(screen, 0, 0, 0, 0);
-      frame = redraw = 0;   // so we redraw tux
-      update_locs = 1;      // so we redraw menu
-      firstloop = 1;
+      DEBUGMSG(debug_titlescreen, "RenderTitleScreen(): Failed to load title image.\n");
+      return 0;
     }
 
+    curr_res_x = screen->w;
+    curr_res_y = screen->h;
 
+    DEBUGMSG(debug_titlescreen, "Leaving RenderTitleScreen().\n");
+  }
+  return 1;
+}
 
-    /* --- create new menu screen when needed --- */
 
-    if (update_locs)
-    {
-      LOG("TitleScreen() - update_locs requested\n");
+/* handle titlescreen events (easter egg)
+   this function should be called from event loops
+   return 1 if events require full redraw */
+int HandleTitleScreenEvents(SDL_Event* evt)
+{
+  return 0;
+}
 
-      /* --- erase the last menu --- */
-      for (i = 1; i <= TITLE_MENU_ITEMS; i++)
-      {
-        text_dst[i].x = screen->w/2 - 70;//290;
-        text_dst[i].w = reg_text[i][menu_depth]->w;
-        text_dst[i].h = reg_text[i][menu_depth]->h;
-        SDL_BlitSurface(CurrentBkgd(), &menu_button[i], screen, &menu_button[i]);
-        menu_button[i].w = menu_width[menu_depth] + 20;
-      }
+/* handle all titlescreen blitting
+   this function should be called after every animation frame */
+void HandleTitleScreenAnimations()
+{
+  static int frame_counter = 0;
+  int tux_frame;
 
+  DEBUGMSG(debug_titlescreen, "Entering HandleTitleScreenAnimations()\n");
+  /* --- make Tux blink --- */
+  switch (frame_counter % TUX6)
+  {
+    case 0:    tux_frame = 1; break;
+    case TUX1: tux_frame = 2; break;
+    case TUX2: tux_frame = 3; break;
+    case TUX3: tux_frame = 4; break;
+    case TUX4: tux_frame = 3; break;
+    case TUX5: tux_frame = 2; break;
+    default: tux_frame = 0;
+  }
 
-      update_locs = 0;
+  if (Tux && tux_frame)
+  {
+    /* Redraw background to keep edges anti-aliased properly: */
+    SDL_BlitSurface(CurrentBkgd(),&tux_rect, screen, &tux_rect);
+    SDL_BlitSurface(Tux->frame[tux_frame - 1], NULL, screen, &tux_rect);
+    UpdateRect(screen, &tux_rect);
+  }
 
-      /* --- draw the full menu --- */
+  frame_counter++;
+}
 
-      for (j = 1; j <= TITLE_MENU_ITEMS; j++)
-      {
-        DOUT(j);
-        DrawButton(&menu_button[j], 10, REG_RGBA);
-        if (reg_text[j][menu_depth] != NULL)
-          SDL_BlitSurface(reg_text[j][menu_depth], NULL, screen, &text_dst[j]);
-        if (menu_gfx[j][menu_depth] != NULL)
-          SDL_BlitSurface(menu_gfx[j][menu_depth]->default_img, NULL, screen, &menu_gfxdest[j]);
-      }
 
-      SDL_UpdateRect(screen, 0, 0, 0, 0);
+/* return QUIT if user decided to quit the application while running an activity
+   return 0 otherwise */
+int handle_activity(int act, int param)
+{
+  DEBUGMSG(debug_menu, "entering handle_activity()\n");
 
-      LOG("TitleScreen() - update_locs completed\n");
-    }
+  switch(act)
+  {
+    case RUN_EDIT_WORD_LIST:
+      not_implemented();
+      break;
 
+    case RUN_INSTRUCTIONS:
+      not_implemented();
+      break;
 
+    case RUN_INFO:
+      ProjectInfo();
+      break;
 
-    /* --- make tux blink --- */
+    case RUN_LESSONS:
+      SDL_BlitSurface(CurrentBkgd(), NULL, screen, NULL);
+      SDL_Flip( screen );
+      TestLesson();
+      break;
 
-    switch (frame % TUX6)
-    {
-      case 0:    tux_frame = 1; break;
-      case TUX1: tux_frame = 2; break;
-      case TUX2: tux_frame = 3; break;
-      case TUX3: tux_frame = 4; break;			
-      case TUX4: tux_frame = 3; break;
-      case TUX5: tux_frame = 2; break;
-      default: tux_frame = 0;
-    }
+    case RUN_SETUP:
+      ChooseTheme();
+      LoadLang();
+      LoadKeyboard();
+      break;
 
-    if (tux_frame)
-    {
-      SDL_Rect blink_src, blink_dest;
-      blink_src.x = 0;
-      blink_src.y = 0;
-      blink_src.w = Tuxdest.w;
-      blink_src.h = Tuxdest.h;
-      blink_dest.x = Tuxdest.x + blink_src.x;
-      blink_dest.y = Tuxdest.y + blink_src.y;
-      blink_dest.w = blink_src.w;
-      blink_dest.h = blink_src.h;
-//      SDL_BlitSurface(CurrentBkgd(), , screen, &Tuxdest);
-      SDL_BlitSurface(Tux->frame[tux_frame - 1], &blink_src, screen, &blink_dest);
-    }
-
-
-    /* --- check if mouse is in a menu option --- */
-
-    key_menu = 0;
-
-    for (j = 1; j <= TITLE_MENU_ITEMS; j++)
-    {
-      if ((cursor.x >= menu_button[j].x && cursor.x <= (menu_button[j].x + menu_button[j].w)) &&
-          (cursor.y >= menu_button[j].y && cursor.y <= (menu_button[j].y + menu_button[j].h)))
+    case RUN_CASCADE:
+      switch(param)
       {
-        key_menu = j; // update menu to point
-        break;        // Don't need to check rest of menu
+        case 0:
+          PlayCascade(EASY);
+          break;
+        case 1:
+          PlayCascade(MEDIUM);
+          break;
+        case 2:
+          PlayCascade(HARD);
+          break;
+        case 3:
+          PlayCascade(INSANE);
+          break;
       }
-    }
+      break;
 
-
-    /* --- return old selection to unselected state --- */
-
-    if (old_key_menu && (key_menu != old_key_menu))
-    {
-      SDL_BlitSurface(CurrentBkgd(), &menu_button[old_key_menu], screen, &menu_button[old_key_menu]);
-      DrawButton(&menu_button[old_key_menu], 10, REG_RGBA);
-      SDL_BlitSurface(reg_text[old_key_menu][menu_depth], NULL, screen, &text_dst[old_key_menu]);
-      SDL_BlitSurface(menu_gfx[old_key_menu][menu_depth]->default_img, NULL, screen, &menu_gfxdest[old_key_menu]);
-    }
-
-
-    /* --- draw current selection --- */
-
-    if ((key_menu != 0) &&
-       ((old_key_menu != key_menu) || (frame % 5 == 0))) // Redraw every fifth frame?
-    {
-      if (key_menu != old_key_menu)
+    case RUN_COMET_ZAP:
+      switch(param)
       {
-        REWIND(menu_gfx[key_menu][menu_depth]);
-        PlaySound(snd_move);
+        case 0:
+          PlayLaserGame(EASY);
+          break;
+        case 1:
+          PlayLaserGame(MEDIUM);
+          break;
+        case 2:
+          PlayLaserGame(HARD);
+          break;
+        case 3:
+          PlayLaserGame(INSANE);
+          break;
       }
+      break;
 
-      SDL_BlitSurface(CurrentBkgd(), &menu_button[key_menu], screen, &menu_button[key_menu]);
-      DrawButton(&menu_button[key_menu], 10, SEL_RGBA);
-      SDL_BlitSurface(sel_text[key_menu][menu_depth], NULL, screen, &text_dst[key_menu]);
-      SDL_BlitSurface(menu_gfx[key_menu][menu_depth]->frame[menu_gfx[key_menu][menu_depth]->cur], NULL, screen, &menu_gfxdest[key_menu]);
+    case RUN_PHRASE_TYPING:
+      Phrases(NULL);
+      break;
 
-      NEXT_FRAME(menu_gfx[key_menu][menu_depth]);
-    }
+    case RUN_QUIT:
+      return QUIT;
+  }
 
+  return 0;
+}
 
-    // HACK This is still more than we need to update every frame but
-    // it cuts cpu on my machine %60 so it seems better...
-    if ( settings.menu_music )
-      SDL_BlitSurface(speaker, NULL, screen, &spkrdest);
-    else
-      SDL_BlitSurface(speakeroff, NULL, screen, &spkrdest);
-
-    SDL_UpdateRect(screen, spkrdest.x, spkrdest.y, spkrdest.w, spkrdest.h);
-
-    for (i = 1; i < 6; i++)
-    {
-      SDL_UpdateRect(screen, menu_button[i].x, menu_button[i].y, menu_button[i].w, menu_button[i].h);
-    }
-
-    if (tux_frame)
-      SDL_UpdateRect(screen, Tuxdest.x, Tuxdest.y, Tuxdest.w, Tuxdest.h);
-
-    if (firstloop)
-      SDL_UpdateRect(screen, Tuxdest.x, Tuxdest.y, Tuxdest.w, Tuxdest.h);
-
-    firstloop = 0;
-
-    /* Wait so we keep frame rate constant: */
-    while ((SDL_GetTicks() - start) < 33)
-    {
-      SDL_Delay(20);
-    }
-
-    frame++;
-  } /* ----------- End of 'while(!done)' loop ------------  */
-
-
-
-  LOG( "->>Freeing title screen images\n" );
-
-  unload_media();
-
-  LOG( "->TitleScreen():END \n" );
+/* run main menu. If this function ends it means that tuxmath is going to quit */
+void run_main_menu(void)
+{
+  DEBUGMSG(debug_titlescreen, "Entering run_main_menu()\n");
+  RunMenu(MENU_MAIN, false, DrawTitleScreen, HandleTitleScreenEvents, HandleTitleScreenAnimations, handle_activity);
+  DEBUGMSG(debug_titlescreen, "Leaving run_main_menu()\n");
 }
 
-
-
-/************************************************************************/
-/*                                                                      */ 
-/*       "Private" functions (local to titlescreen.c)                   */
-/*                                                                      */
-/************************************************************************/
-
 static void show_logo(void)
 {
   if (settings.show_tux4kids)
@@ -872,237 +541,7 @@
 }
 
 
-/* Renders the menu text for all items and loads the associated */
-/* animated sprites, if any.                                    */
-static void load_menu(void)
-{
-  char fn[FNLEN];
-  int max, i, j;
 
-  SDL_ShowCursor(1);
-
-  LOG("loading & parsing menu\n");
-
-  for (j = 1; j <= TITLE_MENU_DEPTH; j++)  /* Each 'depth' is a different menu */
-  {
-    max = 0;
-    for (i = 1; i <= TITLE_MENU_ITEMS; i++)
-    {
-      DEBUGCODE
-      {
-        fprintf(stderr, "i = '%d'\tj = '%d'\ttext = '%s'\n",
-                i, j,  gettext(menu_text[j + 5 * i]));
-      }
-
-      /* --- create text surfaces --- */
-      reg_text[i][j] = BlackOutline( gettext(menu_text[j + 5 * i]), DEFAULT_MENU_FONT_SIZE, &white);
-      sel_text[i][j] = BlackOutline( gettext(menu_text[j + 5 * i]), DEFAULT_MENU_FONT_SIZE, &yellow);
-
-      /* (first make sure ptr valid to avoid segfault) */
-      if (sel_text[i][j] && sel_text[i][j]->w > max)
-        max = sel_text[i][j]->w;
-
-      /* --- load animated icon for menu item --- */
-      sprintf(fn, "/images/menu/%s", menu_icon[i][j]);
-      menu_gfx[i][j] = LoadSpriteNoPrefix(fn, IMG_ALPHA);
-    }
-    menu_width[j] = max + 20 + 40; // Not clear where '20' and '40' are coming from
-  }
-
-  recalc_rects();
-}
-
-
-
-static void recalc_rects(void)
-{
-  int i = 0;
-
-  Tuxdest.x = 0;
-  Tuxdest.y = screen->h - Tux->frame[0]->h;
-  Tuxdest.w = Tux->frame[0]->w;
-  Tuxdest.h = Tux->frame[0]->h;
-
-  Titledest.x = 0;
-  Titledest.y = 10;
-  Titledest.w = title->w;
-  Titledest.h = title->h;
-
-  spkrdest.x = screen->w - speaker->w - 10;
-  spkrdest.y = screen->h - speaker->h - 10;
-  spkrdest.w = speaker->w;
-  spkrdest.h = speaker->h;
-
-  /* --- setup menu item destinations --- */
-  menu_button[1].x = screen->w/2 - 120; //240;
-  menu_button[1].y = 100;
-  menu_button[1].w = menu_width[1];  //calc from width of widest menu item
-  menu_button[1].h = 50;
-
-  menu_gfxdest[1].x = menu_button[1].x + 6; // inset graphic by (6, 4) */
-  menu_gfxdest[1].y = menu_button[1].y + 4;
-  menu_gfxdest[1].w = 40;
-  menu_gfxdest[1].h = 50;
-
-  text_dst[1].x = screen->w/2 - 70;//290;
-  text_dst[1].y = menu_button[1].y + 15;
-
-  /* FIXME each menu item drawn hardcoded 60 pixels below last - */
-  /* perhaps increment should be "menu_button[j-1].h + MENU_ITEM_GAP" */
-  for (i = 2; i < 6; i++) 
-  {
-    /* --- setup location of button text --- */
-    text_dst[i].x = screen->w/2 - 70;
-    text_dst[i].y = text_dst[i - 1].y + 60;
-
-    /* --- setup location of button background --- */
-    menu_button[i].x = menu_button[i - 1].x;
-    menu_button[i].y = menu_button[i - 1].y + 60;
-    menu_button[i].w = menu_button[i - 1].w;
-    menu_button[i].h = menu_button[i - 1].h;
-
-    /* --- setup location of animated icon --- */
-    menu_gfxdest[i].x = menu_gfxdest[i - 1].x;
-    menu_gfxdest[i].y = menu_gfxdest[i - 1].y + 60;
-    menu_gfxdest[i].w = menu_gfxdest[i - 1].w;
-    menu_gfxdest[i].h = menu_gfxdest[i - 1].h;
-  }
-}
-
-
-
-static void unload_menu(void)
-{
-  int i,j;
-
-  for (i = 1; i <= TITLE_MENU_ITEMS; i++)
-  {
-    for (j = 1; j <= TITLE_MENU_DEPTH; j++)
-    {
-      if (reg_text[i][j])
-        SDL_FreeSurface(reg_text[i][j]);
-      if (sel_text[i][j])
-        SDL_FreeSurface(sel_text[i][j]);
-      if (menu_gfx[i][j])
-        FreeSprite(menu_gfx[i][j]);
-      reg_text[i][j] = sel_text[i][j] = NULL;
-      menu_gfx[i][j] = NULL;
-    }
-  }
-}
-
-
-static int load_media(void)
-{
-  DEBUGCODE
-  {
-    fprintf(stderr, "Entering load_media():\n");
-    fprintf(stderr, "default_data_path = %s\n", settings.default_data_path);
-    fprintf(stderr, "theme_data_path = %s\n", settings.theme_data_path);
-  }
-
-  /* Make sure everything is unloaded before we start: */
-  /* FIXME have not been to do this to run without crashing: */
-  //unload_media();
-
-  /* --- load sounds --- */
-  if (settings.menu_sound)
-  {
-    snd_move = LoadSoundNoPrefix("/sounds/tock.wav");
-    snd_select = LoadSoundNoPrefix("/sounds/pop.wav");
-    if (!snd_move || !snd_select)
-    {
-      fprintf(stderr, "Could not load menu sounds - turning menu_sound off\n");
-      settings.menu_sound = 0;
-    }
-  }
- 
-  /* --- load graphics --- */
-  LoadBothBkgds("/images/main_bkg.png");
-  title = LoadImageNoPrefix( "/images/title1.png", IMG_ALPHA );
-  speaker = LoadImageNoPrefix( "/images/sound.png", IMG_ALPHA );
-  speakeroff = LoadImageNoPrefix( "/images/nosound.png", IMG_ALPHA );
-//  sel = LoadSpriteNoPrefix("/images/menu/sel", IMG_ALPHA);
-//  reg = LoadSpriteNoPrefix("/images/menu/reg", IMG_ALPHA);
-  Tux = LoadSpriteNoPrefix("/images/tux", IMG_ALPHA);
-
-  DEBUGCODE
-  {
-    fprintf(stderr, "titlescreen.c load_media(): settings.theme_font_name is %s\n",
-            settings.theme_font_name);
-  }
-
-  /* Make sure we were successful: */
-  if (!CurrentBkgd()
-   || !title
-   || !speaker
-   || !speakeroff
-   || !Tux)
-  {
-    fprintf(stderr, "load_media() - could not load all needed files\n");
-    unload_media();
-    return 0;
-  }
-
-  /* Should probably call this directly from TitleScreen() */
-  load_menu();
-  return 1;
-}
-
-
-
-static void unload_media(void)
-{
-  LOG("Entering unload_media():\n");
-
-  /* --- unload sounds --- */
-  if (snd_move)
-  { 
-    Mix_FreeChunk(snd_move);
-    snd_move = NULL;
-  }
-  if (snd_select)
-  {
-    Mix_FreeChunk(snd_select);
-    snd_select = NULL;
-  }
-  if (snd_welcome)
-  {
-    Mix_FreeChunk(snd_welcome);
-    snd_welcome = NULL; 
-  }
-
-  /* --- unload graphics --- */
-  if (title)
-  {
-    SDL_FreeSurface(title);
-    title = NULL;
-  }
-  if (speaker)
-  {
-    SDL_FreeSurface(speaker);
-    speaker = NULL;
-  }
-  if (speakeroff)
-  {
-    SDL_FreeSurface(speakeroff);
-    speakeroff = NULL;
-  }
-
-  FreeBothBkgds();
-
-  if (Tux)
-  {
-    FreeSprite(Tux);
-    Tux = NULL;
-  }
-
-  LOG("Leaving load_media():\n");
-
-  unload_menu();
-}
-
-
 static void not_implemented(void)
 {
   SDL_Surface *s1 = NULL, *s2 = NULL, *s3 = NULL, *s4 = NULL;
@@ -1238,7 +677,7 @@
   /* If we get to here, we know there is at least a wordlist directory */
   /* but not necessarily any valid files.                              */
 
-  DEBUGCODE { fprintf(stderr, "wordPath is: %s\n", wordPath); }
+  DEBUGCODE(debug_titlescreen) { fprintf(stderr, "wordPath is: %s\n", wordPath); }
 
 
   /* FIXME looks like a place for scandir() - or our own w32_scandir() */
@@ -1281,7 +720,7 @@
 
   closedir(wordsDir);	
  
- DEBUGCODE { fprintf(stderr, "Found %d .txt file(s) in words dir\n", lists); }
+ DEBUGCODE(debug_titlescreen) { fprintf(stderr, "Found %d .txt file(s) in words dir\n", lists); }
 
 
 
@@ -1482,7 +921,7 @@
   SDL_FreeSurface(right);
   left = right = NULL; /* Maybe overkill - about to be destroyed anyway */
 
-  DEBUGCODE { fprintf( stderr, "Leaving chooseWordlist();\n" ); }
+  DEBUGCODE(debug_titlescreen) { fprintf( stderr, "Leaving chooseWordlist();\n" ); }
 
   if (stop == 2)
     return 0;

Modified: branches/commonification/tuxtype/trunk/src/titlescreen.h
===================================================================
--- branches/commonification/tuxtype/trunk/src/titlescreen.h	2009-08-05 16:23:53 UTC (rev 1369)
+++ branches/commonification/tuxtype/trunk/src/titlescreen.h	2009-08-05 16:42:16 UTC (rev 1370)
@@ -1,4 +1,8 @@
+/* trans_wipe() animation constants */
+#define ANIM_FRAMES                     30 /* frames to be displayed */
+#define ANIM_FPS                        25 /* max fps */
 
+
 /* --- SETUP MENU OPTIONS --- */
 
 #define TITLE_MENU_ITEMS                5




More information about the Tux4kids-commits mailing list