Bookmark and Share
SVG Animation Examples with Sources: Page #2 - 2013
Tutorial by Examples




SVG Animation Example: Simple 3D Text

Simple 3D Text

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<svg
   xmlns="http://www.w3.org/2000/svg"
   xmlns:xlink="http://www.w3.org/1999/xlink"
   version="1.1"
   onload="startUp()"
   onresize="resize()"
   onmousemove="mouseMove(evt)">

<script>

<![CDATA[

var xmlns="http://www.w3.org/2000/svg";
var xlinkns = "http://www.w3.org/1999/xlink"; 

var O = "";
var nx=ny=xm=ym=0;
var nShadow = 25;

function makeShadow(n,O)
{
	this.obj = document.createElementNS(xmlns,"text");
	this.O   = O;
     
	this.zOOm = 1.01 + (n/500);
	this.obj.zoom = this.zOOm;

      r = parseInt(255/nShadow) * n/2;
      g = parseInt(255/nShadow) * n/2;
	b =  parseInt(255/nShadow) * n;
	if(n>0)this.obj.color = "RGB("+(r)+","+(g)+","+(b)+")"; 
	this.obj.setAttributeNS(null,"fill",this.obj.color);
	this.obj.setAttributeNS(null,"font-family","ariel");
	this.obj.setAttributeNS(null,"font-size","80");
	Msg = document.createTextNode("BoGoToBoGo");	
	this.obj.appendChild(Msg);
    
	document.getElementById("textShadow").appendChild(this.obj);

	this.position = function(){
		with(this){
			obj.left = (400-xm)*(1 - zOOm);
			obj.top = (400-ym)*(1 - zOOm);
 
			this.obj.setAttributeNS(null,"x",obj.left);
			this.obj.setAttributeNS(null,"y",obj.top);

			if(O)O.position();
		}
	}
}

function startUp()
{
	resize();
	xm = nx / 2;
	ym = ny / 2;

	for(i=0;i<nShadow;i++)O = new makeShadow(i,O);
	O.position();
}

function mouseMove(event)
{
	xm = event.clientX;
	ym = event.clientY;
	O.position();
}

function resize()
{
      nx = screen.width;
      ny = screen.height;
}

]]>

</script>

<rect width="100%" height="100%" fill="white"/>

<g id="textShadow" transform="translate(100,200)">
</g>

</svg>






SVG Animation Example: SVG Digital Clock

SVG Digital Clock

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<svg
   xmlns="http://www.w3.org/2000/svg"
   xmlns:xlink="http://www.w3.org/1999/xlink"
   version="1.1"
   onload="startUp()">

<script>

<![CDATA[

/* Evolved from DHTML version 
   @ http://www.dhteumeuleu.com */

var xmlns="http://www.w3.org/2000/svg";
var xlinkns = "http://www.w3.org/1999/xlink"; 

var backX0;
var backY0;
var backWidth;
var backHeight;

var O=[];
var TM=[];
var Tm=[];
var A = 1000;


var digits = [
" ###   #  #### #### #   ###### ### ##### ###  ###      ",
"#   #  #      #    ##   ##    #   #    ##   ##   #     ",
"#   #  #      #    ##   ##    #        ##   ##   #  #  ",
"#   #  #   ###  ### ######### ####     # ###  ####     ",
"#   #  #  #        #    #    ##   #    ##   #    #  #  ",
"#   #  #  #        #    #    ##   #    ##   ##   #     ",
" ###   #  #########     #####  ###     # ###  ###      "
];


function startUp() {

      var myBack = document.getElementById("backGround");
      backX0 = myBack.getAttributeNS(null,"x");
      backY0 = myBack.getAttributeNS(null,"y");
      backWidth = myBack.getAttributeNS(null,"width");
      backHeight = myBack.getAttributeNS(null,"height");

      dayDisplay();
	timer();
	
      /* 
         k        0  1  2  3  4  5  6  7   -> 1st args of Cdigit
        display   *  *  :  *  *  :  *  *   -> 2nd args of Cdigit 
                                              ('10' for ':')
      */
      var k=0;   
	for(var i=0;i<6;i++){
		O[k] = new Cdigit(k++, TM[i]);
		if(i==1 || i==3) O[k] = new Cdigit(k++, 10);
	}      
	mainloop();
}

/* Input for Cdigit
   N = 0-7
   d = 0-9 or 10 */
  
function Cdigit(N,d){
	// digit prototype: 5 x 7 dots for each of digit from 0 to 9
	this.O = [];
	for(var i=0;i<7;i++){
		for(var j=0;j<5;j++){
			if(digits[i].charAt(5*d+j)!=" "){
				this.O.push(
                              // COjb(this.a, this.z)
					new CObj((
						(28*N)+(j*5))/(180/Math.PI),
						-42+i*12
					)
				);
			}
		}
	}
}

function CObj(a,z){
	// create led element
	this.o = document.createElementNS(xmlns,"circle");
	document.getElementById("clock3D").appendChild(this.o);
	this.a=a;
	this.z=z;
	this.plot=true;
}

// leds lighting

// main 3D function
CObj.prototype.anim=function() {
		// z axis rotation
            var x=Math.sin(A+this.a)*100;
		var y=Math.cos(A+this.a)*100;
		// simple 3D
		var x1=y;
		var zz=this.z;
		var y1=-zz;
		zz=x;
		// 2D projection
		var r=396/(396+zz);
		x=Math.round(backWidth/2-x1/r)+parseFloat(backX0);
		y=Math.round(backHeight/2-y1/r)+parseFloat(backY0);

		// leds lighting
		if(zz>0){
				this.o.setAttributeNS(null,"fill","#ff0000");
      			this.o.setAttributeNS(null,"cx",x);
      			this.o.setAttributeNS(null,"cy",y);
      			this.o.setAttributeNS(null,"r","5");
				this.o.setAttributeNS(null,"opacity","1.0");
		} 
		else {
                        this.o.setAttributeNS(null,"fill","#00ff00");
      			this.o.setAttributeNS(null,"cx",x);
      			this.o.setAttributeNS(null,"cy",y);
      			this.o.setAttributeNS(null,"r","5");
                        this.o.setAttributeNS(null,"opacity","0.3");
		}  	
	}

function mainloop() {
	// rotation speed
	A-=Math.PI/120; 
	// refresh time
	k=0;
	for(var i=0;i<6;i++){
		if(TM[i]!=Tm[i]){
			Tm[i]=TM[i];
			// destroy objects
			for(var j in O[k].O)document.getElementById("clock3D").removeChild(O[k].O[j].o);
			delete O[k];
			// create new digit
			O[k] = new Cdigit(k, TM[i]);
		}
            // skip colons
		k+=(i==1 || i==3)?2:1;
	}
	// call animation
	for(var i in O){
		for(var j in O[i].O){
			O[i].O[j].anim();
		}
	}
	setTimeout("mainloop()",20);
}

function timer(){
	// HH:MM:SS
	T = new Date();
	h = T.getHours();
	m = T.getMinutes();
	s = T.getSeconds();
 
	TM = [
		Math.floor(h/10),
		h%10,
		Math.floor(m/10),
		m%10,
		Math.floor(s/10),
		s%10
	];
	setTimeout("timer()" ,1000); 
}

function dayDisplay()
{
	var dayName = 
         new Array("Sunday","Monday","Tuesday","Thursday",
					"Friday","Saturday");
      var monthName = 
         new Array("January","February","March","April","May","June","July",
"August","September","October","November","December");

	var today = new Date();

	document.getElementById("date").firstChild.nodeValue = 
			dayName[today.getDay()-1]+", "
          		+ monthName[today.getMonth()]+" "
          		+ today.getDate()+", "+today.getFullYear();
}

]]>

</script>

<rect id="backGround" x="50" y="50" width="300" height="200" fill="black" stroke="#444" stroke-width="5"/>
<rect id="backGround" x="53" y="53" width="294" height="194" fill="none" stroke="#fff" stroke-width="1"/>

<g id="clock3D">
 <circle id="red" cx="-150" cy="-150" r="4" fill="red"/>
 <circle id="green" cx="-150" cy="-150" r="4" fill="green" opacity="0.3"/>
</g>

<text id="date" x="80" y="240" font-size="20" fill="white">
date
    <animate attributeName="opacity" dur="5s" 
      values="1;0;1" repeatCount="indefinite"/>
</text>

</svg>



SVG Picture Animation Example: Deformation -Renoir

Renoir Image Deformatiion

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<svg
   xmlns="http://www.w3.org/2000/svg"
   xmlns:xlink="http://www.w3.org/1999/xlink"
   version="1.1"
   width="100%"
   height="100%"
   onload="startUp()"
   onmousemove="mouseMove(evt)"
   onresize="resize()"
   onmousedown="mouseDown()"
   ondrag="mouseDrag()"
   onmouseup="mouseUp()">

<script>

<![CDATA[

var xmlns="http://www.w3.org/2000/svg";
var xlinkns = "http://www.w3.org/1999/xlink"; 

var scr;
var O;
var MP;
var P;
var xm;
var ym;
var mpw;
var mph;
var sx = 0;
var sy = 0;
var X;
var Y;
var drag = false;
var xd = 0;
var yd = 0;

function CObj(N, parent) {

	this.S = (N + 1) * P;

  	var cliprect = document.createElementNS(xmlns,"rect");
   	cliprect.setAttributeNS(null,"x",-Math.round(mpw/X-this.S/2));
	cliprect.setAttributeNS(null,"y",-Math.round(mph/Y-this.S/2));
	cliprect.setAttributeNS(null,"width",Math.round(this.S));
	cliprect.setAttributeNS(null,"height",Math.round(this.S));
	cliprect.setAttributeNS(null,"fill","none");
	cliprect.setAttributeNS(null,"id","rect"+N);
	definitions = document.getElementById("myDefs");
 	definitions.appendChild(cliprect);
	this.cliprect   = cliprect;

      var clippath = document.createElementNS(xmlns,"clipPath");
	clippath.setAttributeNS(null,"id","clip"+N);

	var clipuse = document.createElementNS(xmlns,"use");
	clipuse.setAttributeNS(xlinkns,"xlink:href","#rect"+N);
	clippath.appendChild(clipuse);

	pathgroup = document.getElementById("clipPathGroup");
 	pathgroup.appendChild(clippath);
 	this.clippath = clippath;

	var clippedimage = document.createElementNS(xmlns,"use");
	clippedimage.setAttributeNS(null,"id","clippedImage"+N);
	clippedimage.setAttributeNS(xlinkns,"xlink:href","#myImage");
	clippedimage.setAttributeNS(null,"clip-path","url(#clip"+N+")");
      var imagegroup = document.getElementById("imageGroup");
	imagegroup.insertBefore(clippedimage,imagegroup.firstChild);

	this.clippedimage   = clippedimage;

	this.S   = this.S * .5;
	this.PX  = xm;
	this.PY  = ym;
	this.x   = 0;
	this.y   = 0;
	this.sx  = 0;
	this.sy  = 0;
	this.parent = parent;
	if (N<NBi) {
		this.O = new CObj(N+1,this);          
	}
}

CObj.prototype.anim = function () {

	if (this.parent) {
		var x0 = this.parent.x;
		var y0 = this.parent.y;
	} 
	else {
		if (drag) {
			
			var x0 = xm;
			var y0 = ym;
		} else {
			var x0 = xd+sx;
			var y0 = yd+sy;
		}
	}
	var ddx = (x0-this.PX) * .5;
	var ddy = (y0-this.PY) * .5;
	this.x = this.PX+=ddx;
	this.y = this.PY+=ddy;
	this.left = Math.round(this.x - this.S);
	this.top = Math.round(this.y - this.S);

	if (this.O) {
   		this.O.cliprect.setAttributeNS(null,"x",this.left);
  		this.O.cliprect.setAttributeNS(null,"y",this.top);
    		this.O.clippedimage.setAttributeNS
			(null,"x",this.x-window.innerWidth/4);
		this.O.clippedimage.setAttributeNS
			(null,"y",this.y-window.innerHeight/4);
		this.O.anim();
     	}
}

function startUp()
{
	alert("Works for IE only at this time.\n Drag mouse to play this picture aniamtion -  http:\\www.bogotobogo.com");

	scr = document.documentElement;
	MP  = document.getElementById("myImage");
     	xd  = xm  = window.innerWidth/2;
	yd  = ym  = window.innerHeight/2;  

	scr.ondrag        = mouseDrag (); 
	scr.onmousedown   = mouseDown(); 
	scr.onmouseup = mouseUp(); 	
	N = 0;
	NBi = 30;
	mpw = parseInt(MP.getAttributeNS(null,"width"))
		*window.innerWidth/100;
	mph = parseInt(MP.getAttributeNS(null,"height"))				*window.innerHeight/100;
	X = 2;
	Y = 2.2;
	P = Math.max(mpw, mph)/NBi;
	O = new CObj(0);
	setInterval("randomxy()",30);
}
 
function randomxy()
{
	sx += Math.random() * 4 - 2;
	sy += Math.random() * 4 - 2;
	O.anim();
}

function mouseMove(e)
{
	xm=e.clientX;
	ym=e.clientY;
	sx = 0;
	sy = 0;
}

function mouseDown()
{
	drag = true;
	return false;
}

function mouseUp()
{
	drag = false;
	xd = xm;
	yd = ym;
	return false;
}

function mouseDrag()
{
	return false;
}

function resize()
{
     	xm  = window.innerWidth/2;
	ym  = window.innerHeight/2;
}

]]> </script>

<defs id="myDefs">
  <image id="myImage" xlink:href="../images/Renoir.jpg" width="50%" height="50%" preserveAspectRatio="none" />
  <!-- Javascript will generate ...
  <rect id="rect1" ..../>
  -->
</defs>

<g id="clipPathGroup">
 <!-- Javascript will generate ...
 <clipPath id="clip1">
   <use xlink:href="#rect1">
 </clipPath>
 -->
</g>

<g id="imageGroup">
 <!-- Javascript will generate ...
 <use id="clippedImage1" xlink:href="#myImage" clip-path="url(#clip1)" />
 -->
</g>

</svg>






SVG Animation Example: SVG Interactive Map of Europe with ViewBox

SVG Map of Europe with ViewBox

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
    "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" [
    <!ATTLIST svg
              xmlns:a3 CDATA #IMPLIED
              a3:scriptImplementation CDATA #IMPLIED>
    <!ATTLIST script
              a3:scriptImplementation CDATA #IMPLIED>
]>
<svg viewBox="0 0 600 600" preserveAspectRatio="none"
     xmlns="http://www.w3.org/2000/svg"
     xmlns:xlink="http://www.w3.org/1999/xlink"
     xmlns:a3="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
     a3:scriptImplementation="Adobe"
     onload="init(evt)"
     onzoom="updateTracker(evt)"
     onscroll="updateTracker(evt)"
     onresize="updateTracker(evt)">
    <script type="text/ecmascript" a3:scriptImplementation="Adobe"><![CDATA[
     	 /* Evolved from http://www.kevlindev.com */
        /*****
        *
        *   Globals
        *
        *****/
        var elems = {
            tracker: false,
            trans:   true,
            scale:   true,
            mx:      true,
            my:      true,
            ux:      true,
            uy:      true
        };
        var frame = {
            x_trans: 0,
            y_trans: 0,
            zoom   : 1,
            x_scale: 1,
            y_scale: 1
        };
        
        var countryName;

        /*****
        *
        *   init
        *
        *****/
function init(e) {
            if ( window.svgDocument == null )
                svgDocument = e.target.ownerDocument;

            // Find nodes by id and store in elems object
            for (var id in elems) getElement(id, elems[id]);

            // Update our tracking rectangle
            updateTracker(null);

		countryName = document.getElementById("countryName");
}

        /*****
        *
        *   getElement
        *
        *****/
function getElement(id, useFirstChild) {
            // Find the node with the specified id
            var node = svgDocument.getElementById(id);

            if ( useFirstChild ) {
                // Grab first child of node
                // This is used to get the text node of tspan and text elements
                elems[id] = node.firstChild;
            } else {
                // Don't need first child so use the node we just found
                elems[id] = node;
            }
}
        

        /*****
        *
        *   updateTracker
        *
        *****/
function updateTracker(e) {
            // Get the top-most SVG element
            var SVGRoot = svgDocument.documentElement;

            // Get the current zoom and pan settings
            var trans = SVGRoot.currentTranslate;
            var scale = SVGRoot.currentScale;

            // Determine the translation needed to move the upper-left
            // corner of our tracking rectangle to the upper-left of the
            // current view.

            // The zeros are used to reinforce that we are translating
            // the origin of the rectangle to the upper-left corner of the
            // current view.
            frame.x_trans = ( 0.0 - trans.x ) / scale;
            frame.y_trans = ( 0.0 - trans.y ) / scale;

            // Now that we have moved the rectangle's corner to the
            // upper-left position, let's scale the rectangle to fit
            // the current view.  X and Y scales are maintained seperately
            // to handle possible anamorphic scaling from the viewBox
            frame.zoom = scale;
            frame.x_scale = 1 / scale;
            frame.y_scale = 1 / scale;

            // Get the current viewBox
            var vbox = SVGRoot.getAttributeNS(null, "viewBox");

            if ( vbox ) {
                // We have a viewBox so, update our translation and scale
                // to take the viewBox into account

                // Break the viewBox parameters into an array to make life easier
                var params  = vbox.split(/\s+/);

                // Determine the scaling from the viewBox
                // Note that these calculations assume that the outermost
                // SVG element has height and width attributes set to 100%.
                var h_scale = window.innerWidth  / params[2];
                var v_scale = window.innerHeight / params[3];

                // Update our previously calculated transform
                frame.x_trans = frame.x_trans / h_scale + parseFloat(params[0]);
                frame.y_trans = frame.y_trans / v_scale + parseFloat(params[0]);
                frame.x_scale = frame.x_scale / h_scale;
                frame.y_scale = frame.y_scale / v_scale;
            }

            // Apply changes to the tracking rectangle
            updateTrackerTransform();
}

        
        /*****
        *
        *   updateCursor
        *
        *****/
function updateCursor(e) {
	// Get the mouse x and y coordinates
	var x = e.clientX;
	var y = e.clientY;

	// Calculate the user-coordinate using the scaling and
	// translation values we calculated for the tracking
	// rectangle
	var nx = x * frame.x_scale + frame.x_trans;
	var ny = y * frame.y_scale + frame.y_trans;
            
	// Update the cursor position
	//  elems.cursor.setAttributeNS(null, "cx", nx);
	//  elems.cursor.setAttributeNS(null, "cy", ny);

	// Update our text fields
	elems.mx.data = parseInt(x);
	elems.my.data = parseInt(y);
	elems.ux.data = parseInt(nx);
	elems.uy.data = parseInt(ny);
}


        /*****
        *
        *   updateTrackerTransform
        *
        *****/
function updateTrackerTransform() 
{
	// Build the text versions of the translate and scale transformation
	var trans = "translate(" + parseInt(frame.x_trans) + "," + parseInt(frame.y_trans) + ")"
	var scale = "scale(" + 1/frame.zoom.toFixed(1) + "," + 1/frame.zoom.toFixed(1) + ")";

	 // Apply the transformation to our tracking rectangle
	elems.tracker.setAttributeNS(null, "transform", trans + " " + scale);

	// Update our text fields
	elems.trans.data = trans;
	elems.scale.data = scale;
}

function mouseOver(e)
{
	// Get the mouse x and y coordinates
	var x = e.clientX;
	var y = e.clientY;

	// Calculate the user-coordinate using the scaling and
	// translation values we calculated for the tracking
	// rectangle
	var nx = x * frame.x_scale + frame.x_trans;
	var ny = y * frame.y_scale + frame.y_trans;


	var obj = e.target;

	obj.setAttributeNS(null,"style","fill: rgb(254, 254, 233);  stroke: red;stroke-width: 2;");

	countryName.setAttributeNS(null,"x",nx);
	countryName.setAttributeNS(null,"y",ny);
	countryName.firstChild.nodeValue =obj.getAttributeNS(null,"id");
	
}

function mouseOut(e)
{
	var obj = e.target;
	obj.setAttributeNS(null,"style","fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;");

	countryName.firstChild.nodeValue ="";

}


    ]]></script>


<!-- A group of elements collectively refered to as the tracker -->
<g id="tracker">
  <!-- Draw a visible rectangle to show the tracking area -->
  <rect x="0" y="0" width="100%" height="100%" fill="#008080" opacity="0.25"/>

  <!-- Draw a panel to display transformation info for the end-user -->
  <rect x="2" y="2" width="196" height="6em" fill="white" fill-opacity="0.4" stroke="black"/>
  <text>
   <tspan x="5" dy="1em">translate= </tspan><tspan id="trans"> </tspan>
   <tspan x="5" dy="1em">scale    = </tspan><tspan id="scale"> </tspan>
   <tspan x="5" dy="1em">mouse x  = </tspan><tspan id="mx"> </tspan>
   <tspan x="5" dy="1em">mouse y  = </tspan><tspan id="my"> </tspan>
   <tspan x="5" dy="1em">user x   = </tspan><tspan id="ux"> </tspan>
   <tspan x="5" dy="1em">user y   = </tspan><tspan id="uy"> </tspan>
 </text>


 <!--
  -  This is the actual tracking rectangle.  This is all that is needed
  -   to track the cursor.  Just place the "tracker" id here and remove 
  - this group  and all of the other elements in this group
 -->

 <rect x="0" y="0" width="100%" height="100%" opacity="0" onmousemove="updateCursor(evt)"/>

</g>

<!-- Map -->
<g id="Europa" onmousemove="updateCursor(evt)" opacity="0.7"
 transform="translate(50,150)">


  <rect width="449.40454" height="368.61963" x="0.0" y="0.0" style="stroke: rgb(100, 100, 100); stroke-width: 0.4252; 
fill: rgb(50,100,255); fill-rule: evenodd;" id="rect7"/> 

			<path d="M 258.3667,290.04443 C 258.03858,288.3667 257.0835,287.05761 255.76123,286.32861 C 253.5874,285.2622 254.76318,285.23193 254.49951,283.81054 C 252.99951,282.6621 255.7417,281.36327 254.58349,280.13085 C 255.55419,278.72558 253.38622,276.92431 255.47021,276.34521 C 256.14013,274.30175 253.4624,275.14794 254.01123,273.06396 C 253.37451,271.82226 254.50732,269.62841 255.60107,269.67382 C 256.84326,270.0371 258.31396,269.58349 259.06201,271.14355 C 260.00537,272.59326 261.78271,274.07812 260.73779,276.12646 C 260.73388,278.39843 261.60693,280.55126 263.25537,281.729 C 263.41357,282.49218 262.28076,284.56152 261.50146,285.44629 C 260.18115,286.74463 259.23779,288.29395 258.3667,290.04443 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Albania" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
			<path d="M 194.07178,293.96338 C 192.72217,293.80615 190.93701,292.15869 191.8374,290.39063 C 192.33349,288.17774 192.64013,285.36768 191.50146,283.44922 C 190.0288,282.6875 190.13623,280.53711 191.94482,281.09619 C 193.85888,281.60449 195.32568,280.01562 196.83935,278.89648 C 198.00732,280.29003 199.57763,281.87548 199.57763,283.96484 C 198.28271,285.45214 198.92919,287.52978 199.01904,289.34033 C 198.77099,290.52392 198.29443,293.56152 197.00146,292.34179 C 195.46826,291.61475 195.0542,293.0752 194.07178,293.96338 z M 228.8999,309.24219 C 227.25342,309.41114 226.03467,308.18506 224.76904,307.12012 C 221.65771,306.29395 219.01318,303.7251 215.78662,303.48926 C 213.84131,302.78858 215.39014,299.76416 216.84521,299.88135 C 218.24365,301.11084 219.31591,298.3086 220.46044,299.70801 C 222.73583,301.86621 225.75927,300.42041 228.3413,300.11572 C 229.33935,300.1206 231.812,298.35302 231.77099,300.0874 C 230.87451,301.73193 229.18701,303.92431 230.17919,305.92578 C 231.67138,306.99219 229.86474,308.37305 229.15966,309.22119 C 229.13232,308.86719 228.97607,309.2998 228.8999,309.24219 z M 222.40186,248.98438 C 221.54053,246.99463 220.31983,248.90284 219.04444,247.94532 C 218.4878,249.01368 216.9878,249.06104 215.78077,249.69239 C 214.66749,250.1626 213.91554,249.4629 213.1753,251.27442 C 213.79249,251.84376 215.12257,253.17628 214.87257,254.30469 C 213.22999,254.646 213.69093,256.8794 214.44484,258.01514 C 215.54054,259.82813 217.12453,260.80518 218.83742,261.5586 C 220.30031,262.2959 222.24367,262.97901 222.28273,265.27589 C 222.8882,267.84132 224.48585,269.70655 226.15773,271.32277 C 227.37257,272.07277 227.81007,273.37355 229.2339,273.63722 C 231.11867,274.4048 233.05226,274.29249 234.99562,273.98195 C 237.29054,274.59963 234.84132,275.64943 234.19874,276.72853 C 235.8296,278.1758 238.05226,278.28468 239.88624,279.33839 C 242.13429,280.39894 244.29444,281.71046 246.49171,282.90773 C 246.97999,284.38234 248.84327,284.52052 249.22609,286.2549 C 248.90968,287.52638 248.44875,289.64601 247.21242,287.85109 C 245.84523,287.4175 246.42336,284.78664 244.55422,285.11574 C 243.1382,285.3174 241.80813,284.44435 241.54836,283.50099 C 239.86672,282.96193 239.58742,285.6465 238.36672,286.37111 C 238.48391,287.75002 237.15188,289.43654 239.19875,289.72121 C 240.53469,290.38674 241.89602,290.70559 241.27297,292.71291 C 242.32961,294.75686 240.0718,294.15432 239.06594,294.57375 C 237.05422,294.92678 238.96633,297.58547 237.39016,298.05568 C 235.9761,298.70851 235.90578,301.64015 234.09719,301.21828 C 232.62844,301.66262 232.16164,298.60988 233.73586,298.61428 C 235.14406,297.30569 233.2007,295.65334 235.31203,295.72951 C 237.16359,295.75734 235.02492,293.54396 235.14797,292.39211 C 235.07375,290.49709 233.55617,289.37649 233.54445,287.43606 C 232.97023,285.13821 231.38039,288.022 230.30226,286.13528 C 228.37257,285.5176 229.21437,285.05618 228.95851,283.21878 C 228.15968,281.34573 226.14992,283.09769 225.51906,282.67239 C 227.37648,281.91653 224.94289,280.37796 224.08547,281.61428 C 223.24367,281.32131 223.00735,278.7842 221.75539,278.5591 C 219.91359,277.7256 217.77883,278.14064 216.08937,276.68508 C 213.78273,274.66164 211.33742,272.8052 209.10695,270.65285 C 205.82765,269.42678 203.64015,265.92287 202.61281,262.12355 C 201.46242,259.24318 198.9175,257.85109 196.4214,257.27687 C 194.81984,256.48683 193.01906,256.50929 191.68312,257.95656 C 190.16945,259.04152 188.85695,260.56056 186.97609,260.56838 C 187.59132,259.05324 187.00148,257.6177 185.27687,258.46145 C 184.18312,258.27737 182.33546,257.28616 182.64015,255.73 C 184.17531,254.69045 183.58937,253.40041 181.88234,253.18557 C 179.97609,251.68703 182.19875,251.76418 183.08351,251.38674 C 185.10695,250.2925 183.54445,249.87502 183.24171,248.42776 C 181.00538,247.6719 182.7046,246.32229 184.15577,246.53079 C 185.53858,246.82815 186.79639,245.4678 188.15382,246.50345 C 189.78273,246.17093 189.29444,244.00296 190.36671,243.55325 C 192.00538,241.78567 191.25343,244.84817 192.95655,245.20511 C 193.646,245.18558 194.54444,248.29202 195.22999,245.93216 C 195.30811,244.49075 196.33155,243.09134 196.96827,242.45706 C 197.55811,243.39602 198.46046,244.39554 199.61866,243.35257 C 200.69483,244.37894 201.73194,243.76028 200.78858,242.37064 C 200.90186,240.31644 203.646,243.51761 202.79835,241.09525 C 202.7339,238.93949 204.91554,241.07425 206.02296,240.59623 C 206.79444,239.16801 208.02296,239.12357 209.31984,239.04252 C 210.32375,239.93998 212.53859,237.67289 212.58156,239.40336 C 213.45851,240.12211 214.36281,241.66752 215.79445,241.55033 C 217.53859,242.24515 219.66164,241.72709 221.21242,242.78763 C 220.90578,243.85062 218.93703,244.34622 221.15773,244.9473 C 220.34132,245.86625 220.77492,246.77347 221.56203,247.62894 C 222.05615,247.85938 222.85889,248.25098 222.40186,248.98438 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Italy"  onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
			<path d="M 272.29248,225.08887 C 271.22217,224.21826 269.45264,224.40235 268.81396,223.10157 C 267.49169,222.92432 266.57958,221.72901 265.24755,222.36427 C 263.81591,221.67286 262.94872,224.17823 261.62841,222.43116 C 260.37841,222.61036 258.82372,222.19678 258.09716,223.75391 C 256.68505,224.35889 256.59716,223.08496 255.86474,222.47901 C 255.12451,221.72364 254.09521,220.66749 253.19091,222.06104 C 252.02294,223.18555 251.25341,221.55127 250.60107,220.60206 C 249.05029,220.29835 249.53662,218.18311 247.61865,218.61524 C 246.82568,217.20801 244.94677,219.55518 244.83935,217.78321 C 244.12255,216.81788 244.67333,216.24854 242.6499,216.41114 C 242.01123,216.0127 239.28662,214.4961 240.25732,216.2168 C 241.09521,216.92237 238.20068,218.52051 237.82177,216.82129 C 236.60693,215.72461 235.56786,215.34473 237.43505,214.44824 C 236.59521,213.104 235.01513,214.79638 234.47997,213.77685 C 233.64989,212.90966 232.13622,213.38525 231.08349,212.57226 C 231.06787,211.24902 228.71435,210.87304 229.21826,212.44238 C 226.90576,212.88183 230.43701,210.43115 228.91553,209.35302 C 227.64014,208.34667 227.69873,207.70654 226.92139,206.33642 C 227.79248,205.49413 228.0542,203.54736 226.70069,203.04833 C 226.86866,201.52489 226.9253,200.66601 225.2671,199.96532 C 222.90382,199.4287 225.72218,198.34325 225.83937,196.93456 C 226.03468,195.72997 224.21437,192.99608 226.41164,194.42235 C 227.28469,194.12206 225.36672,191.65331 227.10305,191.82762 C 229.53664,191.43846 231.87844,190.60643 234.34719,190.5161 C 236.27297,189.87987 237.75539,188.07079 239.81399,187.85497 C 242.58547,187.11913 245.49954,186.18993 248.31594,186.64794 C 249.94485,187.40185 251.37649,188.06933 248.89602,187.03954 C 247.71438,186.41698 249.22805,189.56835 250.06985,189.62597 C 252.24368,190.32519 254.30618,189.04199 256.29837,188.25829 C 255.64603,188.78661 252.51321,189.6494 253.75149,190.28417 C 255.64211,189.72558 257.33547,188.09276 259.36672,188.51366 C 264.46438,189.01854 269.56594,188.73387 274.66945,188.49462 C 276.03859,188.77489 277.00734,189.66552 277.4507,191.26171 C 278.53859,193.83056 279.58351,196.54345 280.16359,199.31493 C 279.81007,201.11815 277.61086,200.1035 276.71437,201.45311 C 275.01515,203.16209 276.54445,203.12108 277.75734,203.84666 C 279.48195,204.71336 277.76125,206.65086 277.93117,207.90574 C 278.55031,209.17478 278.81398,210.49656 280.07179,211.55467 C 282.21827,212.73631 279.30617,212.6074 281.0757,214.0449 C 281.40968,216.23094 279.22609,215.37742 278.38429,216.49802 C 276.53273,218.00046 274.6382,219.69724 273.11867,221.57419 C 272.03859,222.95603 274.58937,225.32907 273.2925,225.09958 C 272.96631,225.11035 272.59717,225.03857 272.29248,225.08887 z M 226.22803,192.25391 C 225.11084,193.6836 224.24365,191.0752 226.22998,192.25391 L 226.22803,192.25391 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Poland" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
			<path d="M 240.25732,227.85938 C 240.56201,226.87159 241.52685,225.55909 242.48584,226.39112 C 243.59522,226.4004 244.86475,226.41651 245.75146,225.54005 C 246.31005,224.85109 247.41162,224.70216 247.44873,223.2798 C 248.65381,223.34181 249.29053,221.32472 250.57373,221.97755 C 251.72803,220.84327 252.37256,223.8423 253.41162,221.71632 C 254.61474,220.54786 255.05224,222.4546 256.15185,222.45558 C 256.25341,223.77394 257.22216,224.20412 258.26708,223.57374 C 258.98388,222.14894 260.67528,222.48731 261.82763,222.5669 C 263.14599,224.05909 263.99365,221.58155 265.47216,222.33057 C 266.66552,221.94239 267.89013,222.8003 268.91161,223.3501 C 269.51903,224.41162 271.87645,224.23926 272.15966,225.31397 C 271.19872,226.68506 270.50536,228.5918 269.38622,229.64307 C 267.95849,230.20411 266.60888,229.35938 265.51513,228.30225 C 263.90575,228.55079 262.05615,228.04444 260.59716,228.87891 C 259.29443,230.10547 257.91552,231.65479 256.11864,230.91309 C 254.68309,230.91651 252.99559,231.25879 251.74364,231.69483 C 251.36473,233.84522 249.6245,233.06934 248.27489,233.13282 C 246.50536,233.19483 244.71239,232.9463 243.11669,231.95948 C 242.08153,232.91114 240.76122,230.91309 240.14599,229.92969 C 240.14014,229.25977 240.56006,228.46045 240.25732,227.85938 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Slovakia" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
			<path d="M 223.23584,227.89893 C 222.59912,226.48829 221.55029,225.26954 220.42529,225.34815 C 219.37451,224.68311 218.2749,223.50342 217.32763,222.9292 C 216.16747,223.04297 215.27294,221.59229 214.71044,220.72949 C 215.69872,218.5039 214.59521,218.87353 213.61474,217.28662 C 213.88818,215.87695 215.64013,216.30566 216.56396,215.52295 C 217.84716,215.50635 218.66357,214.80957 219.62451,214.10498 C 220.73389,214.04883 221.60107,213.43457 222.84521,213.26953 C 223.26709,212.54297 226.55615,212.95068 225.20654,211.76562 C 225.89209,210.45556 226.99756,212.62744 227.89013,212.82324 C 229.37646,212.6997 228.80029,211.41211 230.20068,211.46826 C 230.98584,212.45361 231.9292,213.42187 233.32763,213.22705 C 234.60888,213.45459 234.97411,214.74463 236.26122,213.84814 C 238.85497,214.06884 235.58934,215.21484 236.48583,215.79248 C 237.72411,215.92725 238.38036,218.83008 239.61278,217.14258 C 241.53466,217.20703 238.80809,214.43408 241.31786,215.76416 C 242.04442,216.91846 244.88817,215.74121 244.0913,217.11328 C 245.00146,216.55322 244.69482,219.77685 246.45263,218.09277 C 247.1499,219.08642 249.5913,218.14355 249.35888,219.76269 C 250.03271,220.39355 252.07763,221.62841 250.30029,221.92138 C 249.1499,221.5332 248.63623,223.39892 247.47412,223.23388 C 247.39795,224.64111 246.38428,224.86523 245.76514,225.50732 C 245.08936,226.16943 243.96045,226.58544 243.05811,226.31152 C 242.17139,226.18945 240.91358,225.89648 240.53858,227.27099 C 240.12647,228.36181 238.47608,226.16259 237.37256,227.17382 C 234.59131,228.02929 231.90186,226.34277 229.18897,225.76513 C 228.10499,227.17382 226.89405,229.11523 225.08155,228.47558 C 224.43311,228.42383 223.87842,227.90625 223.23584,227.89893 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Czech Republic" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
			<path d="M 250.93506,246.7793 C 249.00342,247.63672 246.66358,248.0376 244.73389,247.05909 C 242.81201,245.41065 240.5542,244.49171 238.48584,243.21534 C 237.7085,242.35304 236.03076,240.7754 236.73779,239.60255 C 238.53076,238.84425 236.27881,236.87208 237.70263,236.32618 C 240.34911,235.57618 236.26708,234.86817 237.76708,234.1836 C 238.75536,234.18848 241.06005,235.49171 240.86083,233.34034 C 242.01513,232.78223 243.13622,231.38526 244.35888,232.56104 C 246.49169,233.44434 248.79052,233.01319 251.00341,233.20411 C 251.39989,231.16163 252.9038,231.38868 254.30419,231.07862 C 256.03075,230.49708 258.09521,231.85303 259.437,229.91016 C 260.40966,228.67823 261.64403,228.28321 263.02489,228.40088 C 264.41551,228.29736 265.8413,228.05029 266.88231,229.40479 C 268.29247,230.40821 269.95262,228.88917 271.28075,230.23682 C 272.5327,230.81348 273.77684,231.39258 274.89989,232.29248 C 273.47411,234.17676 271.00341,233.35644 269.56591,235.24805 C 267.29443,238.50342 265.89013,243.3501 262.21239,244.69239 C 260.65184,244.73536 259.2202,245.41309 257.64403,244.96729 C 255.26904,244.68018 253.1167,245.91309 250.93506,246.7793 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Hungary" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
			<path d="M 259.4624,245.12549 C 260.99365,244.5957 262.86474,245.08447 264.09326,243.52344 C 266.65771,241.47852 267.67724,237.64551 269.75537,235.0874 C 271.25342,233.34472 273.6831,234.08203 275.09521,232.14453 C 276.47607,232.39648 277.8374,232.01221 279.22021,232.39453 C 280.82177,232.76807 282.49365,232.96142 284.11865,232.72851 C 284.39599,233.72558 285.95849,234.52246 286.98974,233.57324 C 287.84326,232.20801 289.61083,232.96386 290.86279,232.52246 C 292.50927,232.99658 293.23193,231.23193 294.34131,230.72119 C 295.78076,230.30371 297.64209,230.54883 298.21045,232.44824 C 299.35107,234.65722 300.78467,236.78418 302.4917,238.34375 C 303.91162,238.70703 304.34717,240.6748 304.49951,242.16211 C 304.42724,244.02149 303.19092,245.69873 303.8999,247.58643 C 303.45654,249.09327 304.34131,249.1792 305.02685,250.36963 C 306.44873,251.47363 307.44091,250.66748 308.59912,250.44238 C 309.83935,249.96533 311.02881,249.34082 312.34912,250.03955 C 313.64209,250.86084 311.98974,252.8916 311.2417,253.44922 C 309.62451,253.30762 308.20068,254.24317 307.37451,255.90918 C 306.32763,257.45703 306.36474,259.55029 306.07373,261.42188 C 303.24951,260.8252 300.40381,260.00586 297.84326,258.54004 C 295.62842,256.91309 293.29443,259.30078 291.1499,260.04443 C 289.68701,260.95507 288.06396,261.51904 286.4917,260.62597 C 285.04834,259.94628 283.53858,259.87451 282.17529,260.84765 C 280.13818,261.13671 278.26123,258.8496 276.1792,259.9829 C 274.15576,261.17772 274.55029,259.48241 274.44873,258.65966 C 273.42529,258.00585 271.83935,257.83349 271.53662,256.27929 C 273.38428,255.479 273.29443,255.36327 271.36279,254.53808 C 270.32373,255.26367 269.72998,256.97412 268.54443,255.2749 C 267.18505,254.83691 266.47021,254.43994 265.36474,253.87451 C 266.31786,252.91357 266.31005,253.27002 265.51708,252.47656 C 267.16552,251.17968 264.38036,250.95801 263.60302,250.46484 C 262.17529,249.84716 261.85497,248.58154 261.81982,247.39111 C 261.19287,246.30322 259.33154,246.61621 259.4624,245.12549 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Romania" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
			<path d="M 270.91943,271.00488 C 270.77881,269.39502 271.0874,267.63037 272.64599,267.31592 C 274.12451,266.9917 274.95068,265.04492 273.21435,264.24024 C 272.48193,263.10303 270.49365,262.43409 270.83349,260.78516 C 271.57568,259.91797 272.48974,257.4585 273.60302,258.25782 C 275.9331,258.12501 273.33154,260.53663 275.10693,260.31886 C 276.90381,259.49025 278.8081,259.60402 280.52685,260.63087 C 282.24169,261.75441 283.86474,259.19386 285.60888,260.36817 C 287.22802,260.94727 288.96435,261.61378 290.51122,260.37989 C 292.70263,259.58301 294.76903,257.61329 297.14013,258.0796 C 299.69286,259.81983 302.60888,260.6211 305.49365,261.30812 C 306.83935,261.49074 305.52099,264.41554 304.25537,263.43605 C 302.92529,263.73488 302.59131,265.76955 302.4917,267.16505 C 302.68311,268.99317 300.00342,268.49855 300.31592,270.59962 C 301.49365,270.38868 302.43115,272.3213 302.72608,273.48732 C 300.97413,273.56349 299.22217,273.438 297.51124,273.18019 C 295.89991,273.11671 294.83936,275.06691 293.5796,275.76515 C 291.53468,275.07033 292.72218,277.84523 291.58351,278.29396 C 289.86281,278.8921 288.04054,279.54103 286.37257,278.37501 C 284.38819,277.57569 282.30616,276.22022 280.24171,277.52101 C 278.34132,278.33058 276.25343,278.07765 274.29835,278.58595 C 274.22023,277.10841 274.8628,275.43458 273.88429,274.08009 C 273.31984,272.44093 271.17921,272.77736 270.93507,271.06739 L 270.93702,271.01466 L 270.91943,271.00488 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Bulgaria" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>

			<path d="M 284.36865,321.51758 C 284.78076,319.80567 282.34717,319.82178 281.36084,319.68604 C 280.08154,319.46094 278.6499,319.55274 277.48779,319.04981 C 277.20263,317.72413 278.66552,316.23926 278.90967,316.8335 C 279.28272,318.47412 281.17725,316.26514 281.2085,317.51661 C 280.63233,317.75831 282.50342,319.01661 283.30811,318.45216 C 284.646,318.0464 285.87061,318.15528 286.90967,318.77882 C 287.81006,319.5337 290.19483,318.14601 290.03272,319.4048 C 289.97022,321.16945 291.80616,319.06837 292.56983,319.53126 C 293.96045,317.78761 293.07374,321.9795 291.80225,320.86378 C 289.35498,321.02783 286.82178,321.25879 284.36865,321.51758 z M 258.3667,290.04443 C 259.31006,287.82519 260.87842,286.21972 262.26514,284.45263 C 262.78272,282.84667 263.4917,281.45458 265.12256,281.83935 C 266.48194,281.86132 267.54053,281.07763 268.37842,279.90917 C 269.77881,278.97753 271.53076,280.56298 272.86084,279.13671 C 275.55225,277.77489 278.63232,278.56835 281.3042,277.08739 C 283.60498,276.52587 285.67334,278.37059 287.86279,278.98094 C 289.25537,279.31151 290.63623,278.42528 292.00732,278.1533 C 291.97412,276.57518 292.33935,275.25242 294.01709,275.77586 C 295.97803,276.15086 295.271,277.86082 293.97803,278.75242 C 293.15381,279.53318 292.36084,282.02635 291.88037,282.13816 C 291.86279,280.21482 289.47607,281.35984 288.36084,280.89548 C 286.88818,281.04001 286.09912,279.48044 284.83545,280.72556 C 283.41357,281.95749 282.96826,278.99021 281.80615,281.13865 C 280.83349,282.72752 279.0581,281.06345 278.33349,281.97752 C 278.76708,283.66356 280.01904,283.86522 281.08154,284.87889 C 282.97607,286.49022 280.93701,285.66063 280.25537,284.72215 C 279.05225,283.71629 277.38037,285.17772 279.25342,285.89744 C 281.02295,286.92185 278.59522,287.53221 278.12061,285.6699 C 277.05811,284.70554 275.44288,285.08738 276.9878,286.42576 C 278.85499,287.1865 278.02296,287.66941 276.40968,287.21433 C 276.41749,285.80954 275.0796,284.91794 273.97023,284.32322 C 273.05031,283.95554 274.69093,281.44334 272.81593,283.13084 C 271.59718,283.42576 272.2964,284.9785 271.86476,286.35301 C 272.47414,287.69627 273.56984,288.36766 273.85304,289.8491 C 274.54835,290.49314 276.88624,292.17478 275.41554,292.93455 C 275.35695,293.00486 274.35695,290.15818 273.13624,291.84129 C 274.46046,292.98729 273.83546,294.70994 272.16554,294.55858 C 271.83742,294.91698 274.38234,295.28661 274.86671,296.06444 C 275.89601,296.2871 277.12843,297.23973 277.83155,298.07421 C 278.47803,298.03319 281.02882,298.7705 279.81593,299.80517 C 280.12843,300.5913 280.66749,303.90087 279.25538,302.31201 C 278.39796,301.44678 277.62452,299.5166 276.23976,300.46289 C 274.44679,300.93262 274.08937,300.89502 274.99171,302.44775 C 275.1128,304.01123 277.23976,302.83203 276.88233,304.29931 C 275.66358,304.79296 274.67725,305.53564 274.45655,303.94872 C 272.94678,303.36327 272.11085,303.52147 273.16553,305.4829 C 273.97217,306.54931 274.32569,308.1455 274.57178,309.79638 C 274.17139,310.1748 271.9292,308.00243 271.50342,310.24999 C 270.73389,310.85009 270.2085,307.63671 268.94287,307.31103 C 268.18115,309.23388 266.75342,308.35644 266.3667,306.66503 C 267.55225,305.16503 266.36279,303.6079 265.25342,302.72314 C 263.83936,301.85839 265.34326,299.47119 266.3003,299.48779 C 267.71436,300.17334 268.68507,297.9209 270.07178,299.41943 C 271.58545,299.85693 273.28662,301.87451 274.69678,300.16015 C 276.27881,299.13134 273.13819,299.3706 272.53858,298.50781 C 270.07374,297.06982 267.13038,297.36084 264.5542,298.16552 C 263.55225,297.72509 262.91358,295.8081 262.04443,294.82323 C 263.22021,294.94628 265.25537,293.62596 263.1792,293.15233 C 261.49756,294.05126 260.2085,291.9409 258.86279,291.03954 C 258.7085,290.7207 258.48779,290.33301 258.3667,290.04443 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Greece" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
			<path d="M 142.7417,194.66602 C 143.90186,195.23536 145.57764,196.19385 145.32959,197.96827 C 143.6167,199.23145 144.13623,200.43848 145.94092,200.06934 C 147.53858,198.24707 150.06201,198.94678 151.91358,199.7085 C 153.06397,200.41504 153.85303,202.46241 153.19288,203.83594 C 152.08155,205.87842 149.66358,205.82227 148.30616,207.63379 C 147.85304,208.52441 144.10889,208.64746 146.25538,208.94385 C 147.79444,209.19483 149.40186,209.60498 150.89015,209.19971 C 152.75929,209.78321 150.87257,211.96045 149.5464,211.792 C 148.8589,213.02686 147.5132,212.00294 146.26515,213.09718 C 144.52882,214.5547 142.52101,212.49025 140.66163,213.4463 C 139.29249,214.35548 138.08741,212.79493 136.74171,213.34327 C 135.19288,213.67042 133.6128,213.71241 132.0503,213.91993 C 133.04053,216.00831 130.05616,213.34327 129.40382,214.82569 C 128.09327,214.05714 126.89405,213.68311 125.53663,214.30909 C 123.4878,213.68409 124.09718,215.92823 122.97804,216.99854 C 121.81007,218.13038 121.02296,216.0044 119.77882,216.04786 C 118.7632,216.78175 117.12843,216.13673 115.93116,217.15919 C 114.79054,217.73439 113.98194,219.78614 112.80421,218.20655 C 110.23585,218.01661 111.78273,217.36378 113.37257,216.70655 C 114.63234,216.17921 115.29835,214.55958 116.69484,214.42139 C 118.06789,213.33643 117.7007,211.67676 119.42726,211.56348 C 119.37257,209.91651 121.52882,210.50391 122.60109,210.37989 C 123.82179,210.55665 125.5757,211.04053 126.51711,210.41602 C 126.58742,209.66358 129.42336,206.91309 127.42727,207.92237 C 125.46829,209.42432 123.18313,208.60401 121.19875,207.65137 C 119.01516,206.50635 116.26906,208.08985 114.29641,206.32617 C 114.09329,204.88818 116.51907,204.75 117.57571,204.44531 C 118.94876,204.07861 120.8179,203.24853 120.54641,201.16308 C 121.19094,198.86572 119.19875,199.55956 118.04446,199.46484 C 117.24368,198.833 119.51907,197.32959 120.43704,197.21338 C 122.65579,196.41309 125.05032,196.86426 127.33548,196.42285 C 126.24368,195.11816 126.59329,193.36377 127.29446,191.92383 C 128.53274,189.48389 125.9468,190.81299 124.9761,190.16944 C 123.38626,189.62208 123.48001,187.61329 124.77688,186.71583 C 126.96243,185.58985 124.84524,185.24073 123.56985,185.10938 C 122.05227,186.06446 120.32766,186.59522 118.72415,185.60157 C 118.15188,186.98194 116.58743,186.72999 115.37259,186.18604 C 113.99759,185.47852 116.27884,183.76856 116.72611,182.80665 C 118.65384,181.42286 115.52884,181.15919 116.07377,179.32862 C 117.77689,179.56202 117.99369,176.41407 116.33939,177.11133 C 115.30619,178.54346 113.82572,178.36524 112.58158,179.25098 C 111.14799,179.15039 112.58744,176.35889 113.35111,175.49317 C 115.00541,174.2671 112.26713,172.29981 111.83549,174.2085 C 110.96049,175.67334 108.67729,174.70411 110.16752,173.08008 C 111.09916,171.90235 112.5601,170.94287 111.34135,169.18604 C 113.4683,168.99854 112.44877,167.50196 111.13432,166.71583 C 112.05034,164.86524 113.5269,166.41212 114.82768,165.91163 C 115.62065,165.35499 112.0308,162.99024 114.62456,163.25392 C 117.50151,163.45412 113.81597,161.68019 115.49956,160.68751 C 116.52886,159.61866 117.87456,162.02003 119.16362,161.25147 C 121.44096,160.94629 123.85698,160.09376 126.08354,160.7378 C 127.54252,161.99219 124.61088,162.76319 123.79448,163.27735 C 122.34136,164.14551 120.23198,164.42921 119.7476,166.60547 C 121.05229,167.86426 123.00151,166.99707 124.56791,167.01367 C 126.94291,167.09326 129.29643,167.32519 131.67924,167.04492 C 133.5894,167.9834 132.06791,169.1416 131.37846,170.50342 C 131.70268,171.89209 129.6519,172.87158 129.04838,174.07862 C 128.72026,175.30323 125.67143,175.2129 126.39799,175.68409 C 127.78471,176.21241 129.19682,176.71973 126.98588,177.23682 C 125.57572,177.4419 124.42338,178.31348 122.89994,177.90137 C 120.52885,177.59766 123.30814,178.86914 124.23002,178.71192 C 126.01713,179.49854 127.6519,177.13331 129.38041,178.52686 C 130.90971,178.62891 131.92924,179.87696 133.06791,180.91748 C 134.86283,181.19629 134.07182,183.1582 134.85307,184.51514 C 135.33549,186.46973 136.80034,187.6416 138.48002,187.60645 C 139.88236,188.1504 140.76127,190.01124 142.01908,190.98291 C 143.35111,192.02002 141.42533,194.23145 142.75346,194.68457 L 142.7417,194.66602 z M 111.48584,182.32959 C 110.25732,180.7793 113.03076,178.78809 112.69092,181.37695 C 112.66162,181.80713 111.91553,182.51465 111.48584,182.32959 z M 108.59717,191.71045 C 108.4292,189.69483 105.08545,192.25879 105.97998,190.31006 C 104.84131,189.99365 103.58936,187.53858 102.87842,189.84961 C 101.31592,190.8833 99.39209,190.6665 98.02881,189.27197 C 96.42334,187.604 101.07764,188.04834 99.27881,187.10302 C 97.7124,186.11132 101.4624,187.12011 101.44287,185.30175 C 101.4917,183.56493 103.35303,183.86962 104.55029,183.36913 C 106.09326,182.81005 107.58935,183.78515 109.10302,183.50048 C 109.97802,184.44579 111.22411,185.94482 110.99169,187.46337 C 111.50341,188.72216 111.98974,190.26562 110.41357,191.09276 C 109.89795,191.50195 109.19092,191.67529 108.59717,191.71045 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Britain" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
			<path d="M 108.59717,191.71045 C 106.28272,191.55469 108.37647,193.38867 108.63623,194.85547 C 108.9585,196.45996 109.68701,198.17676 109.3667,199.83643 C 108.16748,200.6753 107.89209,202.57373 107.23584,203.67041 C 105.88428,203.354 104.69287,203.78076 103.61475,204.34912 C 101.28077,204.24463 99.09327,205.05566 97.08545,206.43066 C 95.95264,207.39599 94.72217,207.88232 93.34912,207.8872 C 91.66748,208.79199 89.84521,208.8081 88.03857,208.93115 C 88.56787,207.04101 87.75927,205.79736 86.14013,206.67041 C 83.85107,205.83301 87.45849,204.23437 86.76318,204.43701 C 85.65185,204.76855 82.81787,203.99072 85.24951,203.68945 C 86.43701,203.62256 88.40185,204.38086 88.38623,202.23144 C 88.97412,200.5957 91.4585,202.25488 91.88818,200.5454 C 91.3413,200.13183 88.00341,201.57519 89.95068,199.70751 C 89.50146,198.6787 90.88427,196.95312 92.3042,197.43505 C 94.18311,196.562 91.85498,196.45312 91.00537,196.33935 C 89.71435,196.34374 88.46435,195.62451 87.22607,196.06738 C 85.53271,196.07568 86.87255,194.27246 86.60302,194.2207 C 88.11669,194.49609 88.34325,192.47949 88.32763,192.05371 C 87.1499,191.4834 84.97607,192.40088 86.47802,190.19189 C 87.42138,188.7373 88.7456,189.46386 90.00536,189.76611 C 91.65575,189.25781 93.36474,189.9331 95.03466,190.03027 C 93.48193,188.09179 96.7495,188.9917 97.04247,187.37695 C 96.99169,186.56006 93.95458,187.54931 93.83935,186.89746 C 95.33154,186.62207 95.77099,185.63428 96.39013,184.00781 C 97.41943,183.50488 98.91552,182.74804 99.91161,183.08203 C 100.60497,184.41894 102.74755,184.14014 101.01317,185.94141 C 100.21044,186.94825 97.42137,186.27198 99.88036,187.47754 C 98.58348,187.71338 96.68114,188.6377 98.68505,189.80713 C 99.93505,190.64404 101.39794,190.79395 102.67724,189.92236 C 103.54052,187.78466 104.66357,189.65869 105.89013,190.25634 C 105.06396,192.22704 108.20654,189.79931 108.51513,191.55126 L 108.59716,191.70116 L 108.59716,191.71045 L 108.59717,191.71045 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Ireland" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
			<path d="M 6.13232,112.68311 C 7.41162,110.77735 9.6831,112.16602 11.39599,111.40674 C 11.00146,110.91944 8.53076,109.27539 10.64208,108.58838 C 12.36669,108.78662 14.12841,110.90869 15.88622,109.63477 C 16.29247,108.34131 12.58349,107.80079 14.90184,106.82813 C 17.23582,107.82422 19.95848,107.18116 22.06004,108.8252 C 23.76512,110.01807 22.49363,111.94239 21.79637,112.62696 C 22.88231,113.51173 23.8784,115.87842 25.13231,114.03663 C 26.33348,112.89259 28.55028,113.65431 29.29442,112.00538 C 28.69676,110.52686 29.01903,108.16407 30.61669,109.1089 C 31.72216,110.24904 33.11083,112.00538 34.64013,111.61427 C 34.37841,110.36622 34.38427,109.08888 36.23388,109.21388 C 37.64404,108.29103 38.62255,109.78468 39.81982,110.44142 C 40.65771,111.23683 43.29638,111.60695 41.78662,109.69923 C 40.77881,108.12892 43.80615,109.76173 44.63232,109.45411 C 46.67529,109.56349 48.93701,110.03126 50.7417,108.59425 C 50.12061,106.22706 51.35693,106.17677 52.9585,106.58253 C 54.37061,106.55763 55.13038,108.54884 56.6128,108.54298 C 57.79835,109.44728 59.42921,108.55909 60.42139,109.66993 C 59.94287,111.25001 60.17725,112.14063 61.97803,112.45899 C 63.43115,112.75001 65.08741,112.56348 66.41162,113.15284 C 67.57373,115.021 66.59326,118.55323 64.40771,118.2461 C 62.61279,117.68458 62.2749,119.02881 61.66748,120.45606 C 60.54834,122.06251 58.52881,122.12256 57.05029,121.23877 C 54.87256,123.17676 52.13427,123.64697 49.6167,124.65967 C 47.27881,125.42676 44.41553,124.13819 42.55225,126.41602 C 40.8042,128.02735 38.34717,127.66309 36.25733,127.68164 C 33.33936,127.45654 30.48975,126.66943 27.82374,125.20654 C 24.83155,124.74609 21.8296,125.37646 18.82179,124.87304 C 18.02296,124.99706 14.69484,124.47411 16.69484,123.62109 C 18.37843,122.8955 20.22218,122.57129 21.42531,120.8125 C 21.38039,120.19141 18.86476,120.93652 18.08742,119.96143 C 17.28469,118.39258 15.9507,118.70411 14.68703,118.96192 C 13.06984,118.90235 11.28664,119.67676 9.77492,119.05567 C 8.39601,117.8418 11.45461,117.47559 12.28469,117.36817 C 14.55813,117.37403 16.84328,116.89844 19.06985,116.53956 C 20.70071,116.14698 20.36282,113.69679 18.77297,113.7339 C 16.65383,113.33449 14.47609,112.80714 12.30813,113.36867 C 10.67336,114.13967 8.8804,114.39162 7.21633,113.53957 C 6.67529,113.46924 6.36084,113.24805 6.13232,112.68311 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Iceland" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
			<path d="M 93.80811,274.0835 C 92.63819,272.52881 95.37061,271.06592 94.31788,269.81348 C 93.64015,268.22657 92.68311,267.48487 91.3003,267.18164 C 90.76319,264.99023 93.2671,264.09326 94.69874,264.20605 C 96.16554,264.5166 97.18312,263.833 97.34327,262.16699 C 99.73194,260.17969 102.28272,263.02588 104.81007,262.89258 C 106.95265,263.24854 108.9214,261.40625 111.00343,261.80127 C 115.18702,264.29883 120.03273,262.73291 124.46437,263.93994 C 125.89796,263.52295 127.30031,261.96631 128.75734,263.2168 C 129.89211,264.34522 131.22609,264.27637 132.59718,264.3291 C 133.29445,265.37109 136.31788,264.48047 135.12452,266.07373 C 135.62843,266.79346 137.44874,266.4209 138.56007,267.24805 C 139.76905,267.22364 140.47218,268.8584 141.78077,268.05567 C 142.75343,269.07374 144.19679,268.53467 145.01515,269.18067 C 146.83937,269.41505 147.02296,268.40333 148.13038,268.06055 C 149.22413,268.74219 151.34913,268.14942 151.59522,269.91895 C 151.68311,271.84083 153.98389,269.50196 154.53077,270.98877 C 155.63038,271.05566 156.93116,270.91748 158.25343,271.36133 C 158.87062,270.93945 161.21241,269.78418 161.45655,271.35791 C 161.49952,272.66455 162.48194,274.45898 160.66749,274.89014 C 159.10304,276.15088 156.85694,276.20948 155.7339,278.11621 C 153.35695,278.81689 150.65773,278.80859 148.57765,280.39307 C 147.1382,281.47266 149.64601,282.7168 147.26906,282.8003 C 145.96633,283.29102 145.63039,285.43702 144.39992,286.24805 C 142.97219,287.30713 142.41554,289.15381 141.64992,290.84034 C 142.22414,292.53272 142.66554,294.55372 144.40187,294.91261 C 145.59718,296.06544 142.78078,296.56056 142.12257,297.28224 C 141.03077,298.11622 140.29445,299.38673 139.60304,300.64992 C 138.45656,301.86867 140.05421,303.97023 137.98781,303.60646 C 135.93898,303.44484 133.34328,304.49513 133.0132,307.26076 C 132.41554,308.67385 131.11476,309.65334 130.0425,308.68459 C 128.62062,308.72316 127.73391,310.15871 126.31398,309.23732 C 123.69679,309.38625 120.9546,309.10402 118.41359,309.5215 C 117.30421,310.98244 115.77687,311.28273 114.21632,311.48879 C 113.28859,313.16945 112.93116,313.39992 112.68702,313.8384 C 111.18311,314.7842 109.62647,313.11184 108.48194,312.12307 C 108.41163,310.36135 106.60108,310.07424 107.20655,308.67629 C 106.06593,306.79787 103.95655,306.04885 102.10499,305.97024 C 100.46632,306.50247 102.1089,303.5469 102.33351,302.60256 C 102.53078,301.20315 105.70851,300.55031 104.42335,299.45266 C 103.61085,298.32278 100.93312,299.4595 102.27882,297.22024 C 102.64796,295.88772 104.8921,294.68655 104.0464,293.4595 C 103.66554,292.26761 101.37843,290.79837 102.0464,290.02688 C 103.06593,289.6509 105.18117,289.78567 104.85695,287.85549 C 104.47609,285.49416 105.2964,283.16115 104.91945,280.82766 C 104.69679,278.90139 106.79836,279.07327 107.7632,278.27786 C 109.58156,277.918 109.1714,276.0347 107.60304,275.59085 C 106.50538,274.96634 105.74171,272.543 104.26906,273.78958 C 102.61672,274.71634 100.64601,273.90237 98.85695,274.08353 C 97.88625,272.31888 96.57961,273.02103 95.21437,273.60794 C 94.74561,273.76758 94.27686,273.92529 93.80811,274.0835 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Spain" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
			<path d="M 101.28662,306.03613 C 99.96631,306.74365 98.59131,308.02588 97.1206,306.97802 C 95.8374,306.90527 94.49951,306.33837 93.33349,307.24511 C 91.76122,307.82909 93.48974,304.83593 93.60302,303.87402 C 93.98193,302.00488 92.67333,300.91504 93.64404,299.39746 C 93.98584,297.49756 93.59131,296.85791 91.90576,297.64795 C 90.01318,297.104 92.03857,296.11719 93.02685,295.57324 C 92.56787,292.88623 91.78466,296.5791 90.41943,296.01758 C 88.60498,295.94385 90.65771,293.51563 90.43505,292.25928 C 90.06982,290.79688 92.02294,290.46533 92.20458,288.90088 C 92.99169,287.28955 92.96825,285.93359 93.2456,284.38916 C 93.56396,282.48145 95.00732,280.55273 93.96044,278.67041 C 93.68505,277.29932 92.88622,275.38916 93.6245,274.31689 C 94.76708,273.51074 96.25927,273.4121 97.49755,272.73144 C 98.45263,274.27148 99.90966,274.20117 101.35693,274.15771 C 102.79443,274.59228 104.04638,273.75781 105.32959,273.51416 C 106.58936,274.0498 107.17529,275.80176 108.58154,276.27978 C 110.10498,277.63427 107.35888,278.41503 106.50146,278.8955 C 104.99169,279.02636 104.61865,280.66259 105.03271,282.17431 C 104.91943,284.23681 104.59326,286.31005 104.88232,288.39794 C 104.57959,290.12304 102.61474,289.44335 101.62841,290.24706 C 102.66747,291.41552 103.56396,292.7412 104.46044,294.06542 C 103.437,295.43749 102.2495,296.78319 101.8413,298.61425 C 102.72802,298.64843 105.66942,299.22753 104.41357,300.42626 C 102.86865,301.40575 101.81396,303.05272 101.5288,305.13573 C 101.44678,305.43262 101.37061,305.74512 101.28662,306.03613 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Portugal" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
			<path d="M 0.21265,64.24951 C 1.24073,64.24902 2.24268,64.41113 3.17139,65.13867 C 6.27295,66.60596 9.42139,67.83789 12.64014,68.90332 C 14.33155,69.13379 15.48194,70.59863 16.03662,72.44678 C 16.68115,73.79932 18.51709,71.96192 19.49951,72.10254 C 21.6499,73.10205 21.27685,76.34424 21.76513,78.56494 C 20.44677,80.68359 18.22802,78.44092 16.46435,78.89111 C 14.02685,79.02099 11.60888,79.03711 9.23193,78.27343 C 7.66162,77.91601 6.75732,76.24267 5.90576,74.80468 C 4.18506,73.37011 2.24536,72.27587 0.21264,71.60986 L 0.21264,64.24951 L 0.21265,64.24951 z M 0.21265,2.60693 C 1.75342,2.9812 3.30616,3.12353 4.86084,2.51172 C 9.30225,1.9585 13.65186,0.6416 18.13037,0.51953 C 19.69092,0.97217 20.29639,2.43213 18.51904,3.33105 C 14.64795,4.79345 10.47216,5.55297 7.07568,8.43212 C 6.20654,10.11962 8.9038,10.23681 9.91552,9.78905 C 12.81786,9.39183 15.47411,7.62694 18.32177,6.84325 C 22.271,5.25977 26.396,4.47559 30.44482,3.42358 C 34.26513,2.58789 38.11279,3.57373 41.94482,3.49023 C 43.88037,3.06396 45.82177,2.66748 47.57568,1.57202 C 52.24365,0.18921 57.09521,1.17822 61.83935,1.3269 C 65.1538,1.3728 68.33544,2.62207 71.63232,2.8374 C 73.56005,4.1792 70.79834,4.87207 69.72216,4.79004 C 66.66161,5.48706 63.39989,5.02539 60.58154,6.8501 C 58.61865,8.23999 56.3667,8.57495 54.18506,9.22656 C 51.60303,10.49121 48.88623,11.41455 46.06983,11.00659 C 42.42335,11.10986 38.76319,11.02637 35.11866,11.06177 C 32.84718,11.55371 29.99561,11.23999 28.61475,13.90698 C 29.02881,15.87573 31.01319,14.12988 32.18702,14.30542 C 35.69874,13.55078 39.28663,13.8894 42.82764,14.12842 C 43.29248,16.13574 40.94287,16.06226 39.79834,16.22974 C 37.70654,16.5752 35.38232,15.99756 33.46826,17.15674 C 32.66748,18.41626 32.59912,20.25171 31.5581,21.4563 C 29.56396,22.78613 27.01708,21.22534 24.98193,22.16406 C 23.39404,24.48779 21.25341,26.39453 20.10693,29.07104 C 20.90771,30.16333 22.49755,30.91796 23.34326,29.34765 C 25.47998,27.0017 28.46435,27.66015 31.07568,28.06542 C 32.54638,28.49218 34.53857,27.88866 35.48779,29.63256 C 34.9956,31.05492 32.88623,29.70995 31.72412,30.03783 C 30.771,29.81737 27.77295,30.11986 29.44482,31.64916 C 31.45654,32.14257 33.65771,32.15917 35.68701,32.72265 C 37.6206,32.8269 39.91748,31.57079 41.54443,33.18896 C 42.73779,34.67382 41.23584,36.39526 39.82959,35.53613 C 36.27686,35.05688 32.68506,34.90454 29.12451,34.81909 C 27.02099,34.57422 25.14795,35.93579 23.18115,36.39306 C 21.28076,36.07885 19.48974,35.26904 17.54443,35.68871 C 15.51123,36.89354 18.07177,37.56469 19.11474,38.15087 C 23.01904,40.02441 27.36669,39.54394 31.46435,40.16405 C 33.32568,40.42064 35.00732,42.69774 34.72021,44.99413 C 33.78466,46.7539 32.07568,46.52831 30.59912,46.12401 C 29.15771,46.05174 27.66162,45.20751 26.26709,45.91551 C 25.93115,47.67674 26.91748,49.01072 28.39404,48.94383 C 30.71826,49.60936 33.06396,50.14012 35.41748,50.68846 C 37.39795,51.94139 35.19482,52.88377 33.96436,52.88817 C 29.57764,54.02489 25.06788,52.86717 20.63038,52.7954 C 19.34327,52.82372 17.74757,54.66112 20.00147,54.73729 C 22.7378,54.83592 25.5542,54.85545 28.12061,56.14159 C 28.71436,57.84276 28.31788,59.53368 26.56006,58.72509 C 24.49365,58.69579 22.26709,58.5415 20.41162,59.8037 C 16.1206,60.08837 11.64404,59.36376 7.89404,56.7285 C 5.58154,56.20018 3.41162,58.08202 1.17895,58.52391 C 0.85302,58.51561 0.53149,58.53758 0.21264,58.5786 L 0.21264,2.60693 L 0.21265,2.60693 z M 0.21265,80.19238 C 3.36231,79.98193 6.51807,80.25488 9.52295,81.54052 C 12.27686,81.60937 15.09131,81.48046 17.85693,81.80859 C 14.04834,84.45605 9.65576,85.29492 5.47802,86.74267 C 3.97802,87.01318 2.30395,85.61621 1.15966,87.28027 C 0.85009,87.54443 0.53442,87.79589 0.21264,88.03613 L 0.21264,80.19238 L 0.21265,80.19238 z M 17.92529,68.35449 C 15.15185,66.96826 12.21045,66.2334 9.32959,65.32324 C 7.47021,63.36572 10.34521,64.16064 11.48193,63.94482 C 14.20459,63.9873 16.89013,64.91162 19.4292,66.0542 C 20.31006,67.86719 19.35498,68.41309 17.92529,68.35449 M 190.45264,172.3125 C 191.15381,171.16406 192.07373,169.52002 193.39991,170.19824 C 195.31788,169.92676 197.54835,170.21484 198.84327,168.11719 C 199.8335,166.64405 201.53858,166.41699 203.01124,166.42725 C 204.85694,164.646 202.58351,167.44678 203.37843,168.35498 C 203.32374,169.68164 202.22999,171.29394 200.88429,170.96338 C 199.33741,171.18506 197.82179,170.98828 196.31593,170.8418 C 194.77882,170.32129 194.00538,171.42676 193.32179,172.85157 C 192.05029,173.93799 191.60693,173.41992 190.45264,172.3125 z M 197.91943,185.00879 C 196.25146,185.09863 194.57763,185.38818 192.91357,185.35547 C 193.31005,183.62695 192.75537,182.03809 191.44091,181.51172 C 190.32372,182.31543 188.85302,180.87061 190.687,179.78906 C 192.37059,178.68652 189.16942,177.43115 190.23778,175.81494 C 190.34911,173.26855 192.44872,175.68066 193.38817,175.09814 C 194.04637,173.19824 195.34715,172.99707 196.10106,174.58496 C 197.79442,174.96924 196.09325,170.9541 198.11668,171.7207 C 199.35106,171.77588 201.16746,171.46191 202.0327,172.23193 C 201.66161,174.32226 203.17528,174.94433 204.61864,174.67968 C 206.61864,174.1665 205.47411,177.52489 204.17919,177.36425 C 203.7163,177.104 201.31396,176.05224 202.09911,178.10058 C 201.55028,179.59326 200.65966,180.49804 199.29052,180.44775 C 199.72997,181.20459 197.80419,181.67675 198.04247,183.34326 C 198.28662,184.04199 196.89404,184.75781 197.91943,185.00879 z M 211.98975,184.90088 C 211.27686,183.21192 210.02491,183.40332 208.66553,183.36084 C 207.89991,183.3877 206.45069,180.03272 207.72022,180.09375 C 209.10108,179.17871 209.896,177.97607 210.83155,180.15723 C 212.69093,181.82911 212.17139,178.24805 213.11085,177.91162 C 214.83937,177.11963 215.19679,179.30273 214.51515,180.75683 C 212.11085,181.79052 214.42921,182.43163 214.21242,183.18847 C 213.41943,183.6665 212.88037,184.64746 211.98975,184.90088 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Denmark" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
			<path d="M 186.60107,235.07422 C 185.91552,233.79492 186.99365,232.35791 186.76904,231.06641 C 188.01318,230.13868 187.32373,228.01856 188.73584,227.28858 C 190.27686,226.21485 190.5874,225.17823 188.53272,225.10889 C 187.09327,225.72168 186.28467,223.96045 185.1167,224.44678 C 183.7085,224.51807 182.72803,224.62842 181.58936,223.48438 C 179.97998,222.68897 180.38624,221.37305 181.04248,220.16944 C 180.17725,220.06055 177.92529,218.89893 178.9917,217.55274 C 180.53076,216.5879 179.38037,214.05323 178.03076,213.6587 C 178.77295,212.16895 176.85498,211.7002 179.02295,210.91651 C 178.27881,210.25391 179.90576,208.44141 178.4917,207.40919 C 176.60889,206.68849 179.44482,205.35255 180.20264,206.29933 C 181.72217,206.22316 182.78272,205.31935 183.45459,203.96828 C 185.17139,202.91848 183.2749,201.77443 182.13232,201.83644 C 181.84521,199.72609 184.52099,201.84474 184.13427,199.58107 C 185.35693,198.73146 185.05224,196.35109 183.7495,196.15431 C 183.31591,194.5254 185.12841,193.88331 186.29247,194.07667 C 187.45849,194.29005 189.20067,193.10743 189.73778,194.83009 C 189.56395,196.99415 191.15966,195.2378 190.937,194.65089 C 193.10692,196.19532 191.14208,193.43116 192.70458,192.82716 C 193.56981,193.30665 197.09716,193.0088 194.7163,192.4756 C 193.79833,191.61232 194.83739,191.25441 194.04247,190.39796 C 195.32372,189.56251 190.79052,190.2295 193.45067,189.33741 C 195.65965,189.18995 194.07958,187.64063 193.15575,186.67872 C 191.9038,184.86427 194.56591,185.43653 195.47802,185.22315 C 196.92333,184.99561 198.38818,184.83497 199.54052,186.12208 C 201.72411,186.63038 199.33154,189.2881 200.91357,188.49269 C 201.72802,189.19581 202.88818,188.90724 203.98779,189.5591 C 204.94873,189.92824 207.54638,188.38332 206.60693,190.62551 C 204.98779,191.09768 204.50927,192.60696 206.55224,192.03615 C 207.60888,191.9214 208.93115,193.20265 209.67529,191.18215 C 211.86474,191.12942 213.84326,190.10842 215.8667,189.22854 C 217.23389,189.31741 217.88428,189.35745 219.03272,190.55471 C 219.90186,192.02346 221.8667,189.88235 222.11866,191.75735 C 221.81397,193.72024 223.90577,193.44583 224.5835,193.85745 C 225.45655,194.26272 226.25538,196.45413 225.58545,197.63772 C 224.51709,198.66458 223.58154,199.79299 225.63233,200.29202 C 227.83741,200.69534 225.76905,202.50686 227.09327,203.31692 C 228.36475,204.34573 226.90968,205.77395 227.06788,206.82083 C 227.49366,208.29837 228.33741,208.45071 229.20265,210.02542 C 229.18507,211.01468 228.25538,213.48147 226.99367,212.61087 C 227.0757,210.65384 224.28273,211.51761 225.51515,212.36233 C 224.27492,212.83108 223.10499,213.09817 222.0132,213.5259 C 220.81008,213.80471 219.85109,213.79787 218.9839,214.70852 C 217.94093,215.32375 216.8589,215.40823 215.5757,216.08889 C 214.42336,215.77004 212.7339,217.21047 214.22023,218.38967 C 216.24171,218.26076 213.93898,220.38967 215.1382,221.27004 C 215.51906,222.834 217.24953,222.66652 218.03273,223.38723 C 218.9214,224.2217 220.11085,225.58938 221.12648,225.30325 C 221.82179,225.86721 224.16164,227.88626 222.37257,228.3013 C 221.13038,229.11917 219.80616,227.39407 219.6089,229.76273 C 218.65187,230.49711 216.50343,230.47855 216.25148,231.69486 C 217.69484,233.168 216.96046,233.94242 217.90578,234.94779 C 217.4507,237.25101 216.39406,234.34574 215.67726,234.55424 C 214.31788,234.4932 213.30031,234.18852 212.15968,234.93852 C 210.76906,234.7603 209.66163,235.20707 208.50538,235.59135 C 207.81593,236.67973 205.80616,236.70121 205.30811,235.42826 C 203.77295,234.99711 203.07764,235.2056 202.53077,236.58402 C 201.20069,237.98441 201.45265,236.00345 200.29444,235.55131 C 199.28663,234.66654 198.10499,235.98832 196.8628,234.8682 C 195.68897,234.25394 194.31202,234.73685 193.14991,234.31302 C 191.91749,233.08255 191.73194,235.41409 190.84327,235.13675 C 189.69093,234.70755 188.41749,235.16605 187.29054,235.34866 C 187.06982,235.25977 186.8042,235.16016 186.60107,235.07422 z M 224.3667,192.59863 C 223.37647,192.84863 221.35498,191.82324 222.69873,191.32959 C 223.3042,191.68701 224.021,191.8252 224.3667,192.59863 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Germany" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
			<path d="M 197.92725,235.36963 C 198.66163,236.58154 197.51319,237.82275 198.28272,238.74463 C 199.73194,238.23291 200.27295,240.80713 201.66944,239.68701 C 203.53663,238.02734 202.74561,240.875 202.91163,242.09521 C 202.15772,241.38964 199.74171,241.69775 201.31593,243.00097 C 200.95265,245.60156 199.97413,242.13134 198.81593,243.65722 C 197.59327,244.8291 197.23195,241.01806 196.30421,242.88622 C 195.90577,244.13866 195.18898,245.52489 194.80421,246.71483 C 193.36085,246.70751 193.81983,244.93212 192.19288,244.57323 C 191.3589,242.88964 191.22608,242.68261 189.54835,244.03807 C 190.13819,245.37059 188.21437,247.15379 187.11671,246.15575 C 185.9546,245.79686 184.36476,247.35302 183.41359,246.16307 C 182.95265,244.88328 182.95656,241.84813 181.30031,242.96678 C 179.92531,243.15086 179.18117,245.89793 177.69875,244.81297 C 179.04445,243.89061 177.3882,241.53026 179.34719,241.11912 C 180.3218,240.15672 180.50149,239.14891 181.77297,238.39646 C 183.41359,236.96677 182.7632,237.06785 183.27883,235.67087 C 184.45071,235.57126 185.48977,236.72116 186.50539,235.15378 C 187.6343,235.13767 188.79836,235.34274 190.00344,234.82858 C 192.02297,235.74118 190.81594,234.2026 192.61282,234.00338 C 193.43899,234.10641 194.74368,234.83541 196.09524,234.5483 C 196.71436,234.70654 197.35107,235.09668 197.92725,235.36963 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Switzerland" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>

			<path d="M 197.92725,235.36963 C 199.09131,235.25147 200.24952,234.94531 200.91944,236.19238 C 201.11475,237.41015 202.81983,237.32812 203.02686,235.55029 C 203.41748,235.12841 205.74561,234.84033 205.9253,236.36816 C 207.32374,236.56494 208.44678,235.85058 209.47022,235.32177 C 210.33741,234.29491 212.39014,235.74023 213.06397,234.42382 C 214.18702,234.34911 215.4585,234.44872 216.51514,234.84716 C 216.40576,237.13134 219.21631,234.70068 217.38233,234.17089 C 218.01124,233.62597 215.34913,231.52343 216.88038,230.9121 C 217.97022,230.13476 220.21632,230.48095 220.03272,228.32323 C 221.26905,228.93749 222.37256,228.20702 223.60694,227.94823 C 225.22999,228.98534 227.35499,228.74999 228.38624,226.77294 C 229.1753,224.9121 230.8003,226.53612 232.06007,226.6289 C 233.94874,227.27685 235.85499,227.75634 237.79445,227.11376 C 238.89992,226.70263 240.97414,227.43358 240.24562,229.23144 C 239.62648,230.97167 242.36281,231.62939 242.28664,232.53124 C 240.53664,232.8081 241.20461,235.18114 239.22805,234.58593 C 238.0386,233.59081 236.3843,234.94335 238.48586,235.2163 C 238.99172,236.47167 235.83547,236.54394 237.67531,238.14696 C 237.39015,240.00926 235.36672,240.00096 234.6675,240.71825 C 235.27492,242.86376 232.47219,240.28221 231.7925,241.90184 C 229.99953,241.51854 228.0093,241.51854 226.72609,243.32323 C 225.67921,243.20262 224.26125,242.97753 223.07179,242.70311 C 220.10499,242.40086 217.15187,241.89842 214.22218,241.19969 C 213.02296,240.35496 212.85109,238.32323 211.65187,238.86912 C 210.41945,239.28514 209.15382,239.20896 207.96046,239.0532 C 206.56202,239.31443 206.08937,241.41795 204.43507,240.43455 C 202.88234,240.24803 202.74171,238.2573 201.18116,240.04685 C 200.09522,239.59665 198.90577,238.75388 198.15577,238.49314 C 197.20068,236.85547 199.021,236.89893 197.92725,235.36963 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Austria" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
			<path d="M 197.18701,266.58252 C 197.77099,268.05225 197.34717,269.41992 197.84131,270.82617 C 198.01709,272.62012 196.96436,273.88574 196.90772,275.6167 C 196.78858,277.42139 195.57569,278.32129 194.72217,276.9292 C 192.52686,276.81787 195.28858,275.08545 192.96826,275.1582 C 194.45264,273.39355 191.56982,274.53857 193.0874,272.90136 C 191.84521,272.14062 193.00342,271.46093 192.54638,270.45409 C 193.3374,269.26757 194.80029,269.15331 195.64794,268.53026 C 197.51709,269.62695 195.93115,266.68945 197.18701,266.58252 z M 133.00928,264.41699 C 134.5249,264.13916 135.36866,262.53125 135.44483,260.79687 C 135.77295,259.15039 136.09913,257.5039 136.42725,255.85888 C 138.67725,254.59765 135.4917,255.89843 136.45069,254.12695 C 136.56983,252.75927 136.77881,250.13672 137.35499,249.65039 C 138.36671,250.08594 139.46632,252.28809 139.6714,252.46728 C 139.33937,250.50585 137.89601,249.48486 136.80812,248.14794 C 137.26515,246.57323 138.25929,245.35302 136.75929,243.92431 C 135.72413,242.69189 133.93117,243.57372 133.25734,241.73779 C 131.38039,240.75244 132.69875,239.41992 131.90382,238.34375 C 130.90773,237.75781 128.30812,237.60547 129.87062,235.83252 C 128.855,234.62109 127.55812,236.62451 126.5171,235.09326 C 124.9839,234.49902 123.28663,233.85937 121.80812,233.58154 C 120.92335,232.21045 118.99757,234.55859 118.51515,232.53271 C 116.19679,232.13427 118.01906,231.68066 119.36867,231.67724 C 118.20461,229.99413 117.63039,231.34814 119.15578,229.70507 C 117.98586,229.98388 115.58937,229.85497 117.26906,228.6245 C 118.5132,228.16405 119.88234,227.92138 121.15578,227.38671 C 122.02297,228.21093 123.35305,227.48437 124.11086,226.72948 C 125.40383,226.36718 126.70266,226.21044 127.48977,227.73632 C 128.46829,229.69335 130.05032,227.23681 131.17727,228.15234 C 132.54641,227.59814 133.16555,227.77978 134.23977,228.09961 C 136.55813,228.19336 134.24563,226.78223 134.98977,225.02246 C 135.04836,223.53857 133.09915,222.97021 132.96243,221.15869 C 133.21048,220.14453 135.51907,221.64599 136.57571,220.80713 C 136.49173,221.86377 136.97415,223.93115 138.53469,222.86719 C 140.0386,222.86231 141.52688,223.35254 142.96633,223.49854 C 143.67922,223.42823 146.93703,222.40381 144.89406,222.18506 C 143.5464,221.39649 146.1714,220.20117 146.90773,219.89746 C 148.91359,219.15576 151.28664,219.24707 152.72804,217.14844 C 152.65577,215.53028 152.18507,212.95215 153.96242,212.5127 C 155.2632,211.49756 156.91554,212.01563 158.24758,211.26563 C 158.64602,212.68262 159.89016,214.93702 161.2261,213.46973 C 162.5054,212.73975 162.25149,216.52832 163.98196,215.51368 C 164.76907,216.688 166.28274,216.2002 167.56594,216.87208 C 167.84524,217.44825 167.09328,219.99708 168.94485,219.16505 C 170.13626,220.01124 171.6343,216.63282 171.36868,218.57325 C 171.10306,220.56446 172.61087,220.04151 173.77298,220.93018 C 174.77493,222.44727 175.90384,221.75049 177.02493,222.07276 C 178.6011,222.43702 180.42532,221.78419 181.58938,223.47315 C 182.75149,224.58838 183.73586,224.5127 185.1636,224.4292 C 186.31204,224.05176 187.22415,225.69971 188.67141,225.09229 C 190.94485,225.25635 189.86672,226.36963 188.5718,227.44336 C 187.2925,228.16992 188.01711,230.22315 186.76907,231.05371 C 186.97219,232.35107 185.93704,233.77832 186.6011,235.06299 C 185.56594,236.67871 184.48587,235.62647 183.28079,235.68604 C 182.66556,237.10059 183.48391,236.97999 181.79446,238.38624 C 180.52102,239.12794 180.26712,240.06642 179.4136,241.08595 C 177.46438,241.46583 178.92141,243.70509 177.81008,244.69777 C 178.54446,245.94142 179.93313,243.78859 180.82766,243.1172 C 182.51711,241.85011 182.87258,243.78126 183.25539,245.40675 C 183.92922,247.24806 180.49562,247.17872 183.20266,248.40577 C 183.46828,249.85059 185.20461,250.20313 183.12063,251.34327 C 182.29641,251.8755 179.92727,251.53809 181.81204,253.16114 C 183.35501,253.31837 184.3804,254.72218 182.69876,255.62794 C 182.14798,257.16993 184.09329,258.16261 185.13235,258.47218 C 186.67141,257.82179 187.84719,258.64406 186.86282,260.58253 C 185.0093,262.37452 182.84915,263.63526 181.00344,265.47315 C 178.6968,265.88526 176.11282,267.19678 174.02688,265.24317 C 172.89993,264.15088 171.47219,263.73145 170.10305,264.28223 C 168.39211,264.27491 166.85891,262.38379 165.14407,263.54639 C 163.4136,264.45557 161.29446,265.95557 161.01516,268.33692 C 161.69485,270.65479 161.3843,270.84327 159.48586,270.77784 C 158.42141,271.58643 157.24563,271.30372 156.04055,270.82618 C 154.68508,272.01173 153.95071,269.68702 152.42532,270.69581 C 151.19485,270.69239 151.61868,268.05811 149.7886,268.53956 C 148.14407,267.59278 147.37844,268.3711 146.58352,269.01417 C 145.18313,269.20899 144.43508,268.63819 142.95657,268.89454 C 142.20657,267.22462 140.65969,268.86183 139.8804,267.83302 C 138.87649,266.80372 137.38626,267.13234 136.12649,266.34962 C 134.27688,267.33155 136.45852,264.15528 134.21438,265.1631 C 133.81396,264.91504 133.40186,264.66309 133.00928,264.41699 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="France" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
			<path d="M 416.44287,355.9917 C 417.08545,358.0835 416.92334,358.6416 415.42334,359.40527 C 413.8374,360.97705 416.58545,360.69091 417.35498,360.21045 C 418.34521,360.979 418.41748,363.23389 419.05615,364.57568 C 420.32763,366.64306 417.69873,365.87646 416.68701,365.96093 C 415.11279,366.45312 414.3706,364.98339 413.85303,363.45507 C 412.26709,362.74169 410.22803,362.729 408.46826,362.27392 C 409.83545,360.57372 411.12451,358.74462 411.8667,356.52978 C 413.34326,355.90283 414.91748,356.12988 416.44287,355.9917 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="path47" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
			<path d="M 364.34717,333.35352 C 368.8335,330.57715 373.31983,327.80127 377.8042,325.02491 C 378.22217,321.7754 379.34717,318.59473 379.25147,315.29395 C 378.34522,313.78809 378.88624,311.63282 380.39991,311.14893 C 382.85694,311.13575 384.27686,308.5542 385.97999,306.81641 C 385.65577,305.68555 388.00147,304.85694 388.82179,305.6001 C 390.15382,305.52149 391.51515,306.09668 392.88234,306.15332 C 393.84718,304.60742 395.53468,306.10986 395.31007,307.71045 C 396.61476,308.99268 397.17726,305.82617 398.58155,306.55859 C 399.82764,308.9375 400.85694,311.85644 401.99171,314.45117 C 402.84913,315.52002 404.59132,315.42724 405.84523,315.65722 C 408.10304,315.49316 404.47804,317.54589 405.75539,318.85644 C 407.20851,320.51562 405.95266,321.5913 404.71633,322.67089 C 402.94094,324.08153 402.99563,327.02392 402.75539,329.32323 C 403.71437,330.91698 405.37062,332.00585 406.15578,333.60399 C 405.76516,335.75243 406.23,336.61473 408.00539,336.01854 C 409.74562,336.55028 410.89992,338.78612 412.66555,339.47508 C 413.99367,340.81492 416.28664,341.9868 415.73,344.53416 C 415.27102,346.02732 414.95266,347.62693 415.17336,349.22166 C 416.63039,348.77391 417.81984,349.54539 417.56594,351.49998 C 417.05617,353.1992 419.04836,353.83299 419.93117,354.81053 C 420.16164,355.89451 417.69289,355.39744 416.89406,355.51951 C 415.58937,356.64207 413.6089,355.62596 412.08547,356.45945 C 411.23195,357.49168 410.87063,359.30808 409.8843,360.39304 C 409.09328,361.99314 407.93508,362.6279 406.41946,362.19089 C 403.58548,362.00925 400.69876,362.10642 397.89602,361.75388 C 395.96438,360.73288 394.0718,359.58835 392.04055,358.87302 C 391.3843,357.41452 391.69289,355.60056 391.84133,354.11081 C 391.61477,352.03073 389.09328,354.49509 388.48,352.71384 C 387.46828,349.94236 384.65578,349.65525 382.68703,348.27146 C 379.10891,346.47361 375.60305,344.43943 372.01515,342.69431 C 370.41554,342.14255 368.83742,341.41697 367.36671,340.48923 C 366.51123,338.02246 365.35498,335.71729 364.34717,333.35352 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Iraq" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
			<path d="M 408.9917,293.92139 C 408.10693,295.76807 406.6167,294.92676 406.31006,293.10938 C 406.4624,291.61133 404.67725,291.31153 405.03662,289.99219 C 403.82178,289.93457 402.16553,290.85449 401.45264,289.19873 C 400.66553,287.86621 399.19092,289.29834 398.00342,288.64062 C 397.16944,287.16796 395.84131,287.04443 394.47608,287.02343 C 392.91553,287.45263 391.59131,285.59521 392.73194,284.00341 C 393.9878,282.49902 392.97608,281.14208 391.81006,280.21288 C 390.56006,278.94335 393.61279,279.541 394.28272,279.0664 C 395.63233,278.61328 396.98584,278.86035 398.35889,278.63378 C 399.75928,278.35497 400.65772,277.91112 401.63623,279.02538 C 400.65967,280.58056 403.75537,279.48729 403.8374,281.18407 C 402.66943,281.54637 402.5249,283.57567 404.09521,284.24364 C 405.00341,284.90331 406.92919,285.77098 405.28271,286.79393 C 403.07959,286.28172 405.36279,288.20604 406.08154,288.66209 C 406.56006,290.08201 409.18701,289.22801 408.9331,290.39988 C 407.75732,291.21629 410.3081,292.42918 408.68505,292.69334 C 409.21826,292.80811 409.22217,293.57227 408.9917,293.92139 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Armenia" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
			<path d="M 421.63818,298.51953 C 420.48193,297.50146 418.89209,298.05078 418.24365,296.32959 C 416.37451,296.01416 417.03662,294.27979 418.35888,293.74658 C 417.71435,292.83154 416.72607,291.87304 418.95654,291.80127 C 419.49756,290.43457 417.09521,290.2627 416.4956,289.21045 C 415.25537,288.92529 413.96044,290.52149 412.67724,290.94434 C 411.69677,291.97022 410.79833,292.97217 409.47607,293.32813 C 409.06201,294.68653 407.97998,291.74512 409.55615,292.16309 C 407.28076,291.42481 410.09326,289.76221 408.18115,289.75293 C 406.8706,289.57324 405.71435,288.72607 404.95849,287.52295 C 402.74169,286.27149 406.46435,287.5625 405.92724,285.52686 C 404.99365,284.88379 403.45849,284.11963 402.78271,282.7334 C 403.36669,281.53418 404.52685,280.48096 402.41162,280.05567 C 401.3335,279.84229 400.77295,278.74512 401.04834,277.76221 C 402.11475,276.59619 404.08936,277.01465 404.89795,278.44776 C 406.04053,279.34522 407.45654,278.40088 408.47412,279.49415 C 409.90576,280.68604 411.0581,277.25147 409.04248,277.36134 C 408.00146,277.23488 406.82178,275.17726 408.23193,274.58302 C 409.28466,273.79786 410.14599,274.40724 411.15966,275.31642 C 412.23193,275.98683 413.30028,276.90773 413.47411,278.13136 C 414.812,278.12892 416.61083,279.75685 417.46044,277.81495 C 418.29638,276.39698 420.20067,276.54444 420.70849,274.69337 C 421.76904,274.3462 422.31591,276.6714 423.29443,277.21632 C 424.50146,278.22609 423.91943,280.43312 425.35302,281.28028 C 426.24169,282.31348 427.14013,283.40479 428.66357,282.92774 C 429.58154,282.66651 431.78857,285.02198 430.56005,285.00098 C 429.39989,284.35157 428.08935,284.6045 427.02489,285.22461 C 425.21434,285.20117 426.09716,287.67481 425.33153,288.86914 C 424.25145,290.24268 426.41551,291.97266 424.56981,291.88086 C 424.54442,295.01465 423.6245,292.04053 422.84129,293.09717 C 422.77879,294.61377 422.51121,295.42237 422.15184,297.00098 C 421.98193,297.5 421.81201,298.05225 421.63818,298.51953 z M 398.00342,288.63721 C 399.18311,289.3545 400.67139,287.80176 401.45264,289.18701 C 402.08936,290.77344 403.71241,290.02148 404.84522,289.98828 C 404.79444,290.89892 406.31202,291.61865 406.22413,292.91211 C 407.26515,294.94092 407.37257,294.93848 405.45655,294.72852 C 403.8921,294.82569 402.18897,294.17432 401.45655,292.38477 C 399.52295,292.06738 399.43896,289.75195 398.00342,288.63721 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Azerbaijan" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
			<path d="M 209.15186,333.78027 C 208.93311,335.44384 208.94483,337.14697 209.00342,338.78369 C 208.46436,340.1748 206.78076,340.38818 205.78662,341.31738 C 204.28271,342.52929 202.7085,343.87597 201.45654,345.38379 C 200.75537,347.06299 202.50732,348.80713 201.61279,350.52051 C 201.10302,352.19239 199.43115,352.73487 198.36474,353.82617 C 197.05224,349.96484 196.17333,345.89746 195.00146,341.99707 C 194.51708,340.31543 192.8413,340.14795 192.04052,338.99365 C 191.00732,337.229 190.57958,334.33203 188.36864,334.32715 C 187.76122,332.18067 186.32372,329.97754 187.02489,327.6582 C 188.32372,325.9624 190.46044,324.98291 191.062,322.68457 C 191.33153,318.91016 190.61278,315.03955 191.1245,311.28809 C 191.5952,310.00196 192.87255,309.00098 193.45653,308.05518 C 195.27098,307.27686 196.69676,305.08301 198.82762,305.53809 C 200.14598,305.57666 201.72215,306.16163 201.88426,307.97413 C 202.13426,310.04835 203.97801,309.27393 204.81785,308.20851 C 205.86277,306.6714 207.46629,307.06007 206.31394,309.0674 C 205.72214,310.80422 203.39011,311.43263 203.69675,313.69631 C 204.11667,315.18361 205.14597,316.44094 206.41159,316.86428 C 206.9487,318.36184 207.59128,319.99905 206.2905,321.23391 C 205.46823,323.0762 203.58152,323.50979 202.53464,325.15871 C 201.53464,326.06789 200.28269,327.46242 201.63034,328.7632 C 202.67526,329.89308 203.90378,331.66945 205.40964,331.39504 C 206.95847,329.65627 207.20456,332.53225 208.07956,333.25051 C 208.43701,333.42725 208.79639,333.60059 209.15186,333.78027 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Tunisia" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
			<path d="M 443.1792,63.48682 C 445.0791,62.94873 446.70654,61.58692 448.47608,60.78223 C 448.85743,60.80616 449.2378,60.81543 449.61719,60.81104 L 449.61719,72.83106 C 447.34082,72.01563 444.96778,71.34815 442.62647,71.45411 C 440.84913,72.48097 438.24561,72.646 436.98585,70.61036 C 436.21046,68.66505 438.76124,67.27882 440.03468,68.20704 C 442.39406,68.77052 444.31202,66.67091 446.02296,65.08302 C 447.22218,63.62013 444.09132,64.2671 443.26319,63.51027 L 443.1792,63.48682 M 257.54248,188.51953 C 259.25928,187.75635 259.93896,187.20801 257.70654,187.67822 C 256.60888,188.23926 256.36865,186.42334 257.57568,185.61914 C 259.76123,185.54199 261.98974,186.14746 264.14404,185.64355 C 264.67138,184.13427 263.70068,183.29199 265.16552,182.79003 C 265.90771,183.16894 267.18896,183.8706 268.36864,183.99706 C 269.48192,184.53515 270.75926,184.1953 272.04833,184.21727 C 272.64794,184.98729 274.64989,185.55223 273.08349,186.66795 C 273.13232,188.78074 272.49365,188.8076 270.76122,188.68016 C 266.34326,189.11133 261.95654,188.59082 257.54248,188.51953 z M 447.62842,93.80176 C 446.26221,95.0376 448.57764,95.66895 449.61719,95.42188 L 449.61719,209.36915 C 449.19141,208.34425 447.23828,208.66212 446.31983,208.62501 C 444.90577,208.79884 443.28077,208.97364 442.63428,207.11573 C 440.86866,206.10694 439.15381,208.83057 437.40967,208.21534 C 436.51123,207.10548 434.85498,207.55909 433.70069,207.48389 C 431.7046,208.95703 429.70655,210.63721 427.31983,210.88477 C 425.80616,211.10254 425.47803,213.33741 423.96436,213.60938 C 422.89795,214.29688 421.01514,214.53272 421.96241,216.43555 C 422.77882,217.74024 422.04639,219.7251 420.63038,219.55323 C 418.2046,220.16358 417.58546,215.98927 415.33546,215.91553 C 413.80616,215.72217 414.28468,218.96582 412.69288,218.84864 C 410.76319,218.46534 411.13233,220.81495 410.83546,222.37159 C 410.51515,223.63966 413.47413,224.41847 411.22413,225.42286 C 409.90186,226.20802 409.63038,228.19923 408.80616,229.5586 C 409.9878,230.2544 412.0503,229.77393 412.54835,231.38087 C 412.06788,232.43898 413.93312,235.49855 414.06983,233.25245 C 415.25342,234.17237 416.72022,233.49268 417.93116,234.0547 C 418.8296,235.44337 420.51905,235.48683 421.06007,237.23878 C 421.7046,238.54347 423.33155,239.89357 423.45655,241.09327 C 422.68702,241.46583 420.146,239.61182 420.62452,241.7295 C 421.68897,242.61085 423.12647,243.14991 424.4214,243.6172 C 423.97999,245.22072 421.71046,244.81886 421.69288,246.16359 C 421.26905,246.95119 419.62452,245.94338 418.74366,247.55714 C 417.53663,247.75196 416.23389,248.63771 415.09132,247.73439 C 414.83155,248.8672 414.47999,250.07326 413.62648,251.3965 C 412.89601,252.80275 412.12062,254.07375 410.84718,254.77589 C 409.25538,256.10011 411.14601,257.41066 412.18507,257.60939 C 412.94288,258.59767 414.45265,259.6006 414.39991,261.29152 C 413.85889,264.14259 414.47803,261.72072 415.26124,260.65627 C 415.71241,261.56594 413.66554,263.50881 414.9839,264.61965 C 413.42921,266.30813 415.72804,266.81838 415.90187,268.30373 C 416.22023,269.55227 417.75343,269.9048 418.2046,271.43898 C 419.17726,272.5464 419.86476,273.83888 420.82765,274.46437 C 420.24953,276.62111 418.02492,276.42482 417.15773,278.23683 C 416.15382,279.62648 414.53078,277.95314 413.24367,278.09523 C 413.45265,276.3174 411.70851,276.01759 410.80226,275.07179 C 409.88038,274.01124 409.0171,274.71632 408.19288,273.49562 C 406.71827,273.52003 405.2378,272.93751 404.1753,271.61134 C 405.38038,269.83693 404.05225,269.24171 402.60499,269.57667 C 401.73194,268.83155 400.50147,267.9795 399.5171,268.27149 C 398.88038,269.19727 397.21046,267.11231 396.31202,268.63672 C 395.6421,269.39258 393.69483,269.8711 393.37061,268.67676 C 394.21827,267.64551 391.57178,267.39356 390.80616,267.07715 C 389.49171,267.05029 388.96827,264.72656 387.54054,265.43994 C 386.30421,265.17529 385.03663,264.54687 383.74952,265.16699 C 382.31788,265.42138 380.80811,264.86133 379.62843,264.05713 C 377.8257,264.46484 376.4839,262.4375 374.66945,262.81055 C 373.28078,261.84473 372.22609,263.4126 371.6382,263.6084 C 368.77101,261.40869 366.25734,258.37354 363.0132,257.01074 C 361.53273,257.05176 360.29054,256.12842 359.39406,254.77148 C 358.12844,254.88134 356.70656,255.49804 356.19484,253.37353 C 355.12843,252.2749 353.19875,250.96972 355.67726,250.72705 C 356.89796,250.74951 358.6714,251.02246 358.40578,248.90381 C 359.42922,247.92285 359.49367,245.42676 361.14211,245.89893 C 363.45656,246.16065 362.09328,243.88428 360.72805,243.42774 C 359.33547,243.01856 357.90774,241.22657 360.20852,241.45899 C 362.65383,241.40381 364.63625,239.53956 366.96047,238.85254 C 367.95266,237.49316 365.59524,237.05713 364.61477,237.62793 C 363.65188,237.41602 361.18508,238.97656 361.33938,237.43457 C 361.0386,235.50586 362.01126,234.63379 363.48586,234.64404 C 364.66359,233.95654 364.91359,232.84082 366.48195,233.23144 C 367.72609,232.87988 368.99757,234.18994 370.14797,233.24755 C 370.43313,231.77685 371.29641,230.45263 370.43703,229.01366 C 369.43703,228.47557 369.05226,226.44725 370.77492,226.93261 C 372.8589,226.49169 368.39211,225.94335 369.90969,225.21191 C 370.77883,224.80322 373.04641,224.08935 371.7925,222.64795 C 372.25734,220.69775 370.88234,222.05615 369.81789,221.68018 C 368.90773,220.46582 367.66359,220.83155 366.5425,219.91846 C 365.47023,219.98096 364.29055,219.40088 363.11672,219.16407 C 361.74367,217.74464 361.18313,219.07032 359.89992,219.07618 C 358.79054,218.32032 357.86867,217.98975 357.2964,216.61524 C 356.5171,215.13038 355.11281,216.69727 353.96437,216.50635 C 352.7007,217.26563 351.67531,216.79541 350.49562,216.82031 C 349.4214,215.90136 347.78078,215.21338 346.63624,216.50976 C 345.14991,215.64697 345.56983,214.29687 344.91358,212.9331 C 344.61475,211.2622 343.79053,211.14013 342.92139,210.42529 C 341.6167,210.76758 340.58545,210.08545 339.25928,210.26709 C 338.56006,209.4585 337.19873,206.90039 338.96826,206.99414 C 340.77295,206.54883 337.84131,205.55029 337.63428,204.42334 C 336.71436,203.15723 335.72022,202.01025 334.28662,202.74707 C 332.44678,201.76514 330.58545,204.1582 328.82568,202.74365 C 327.72802,202.14355 327.48193,205.60644 325.76904,204.58935 C 325.36474,204.60449 324.9292,204.38525 324.57373,204.29638 C 324.14404,203.42236 322.94678,202.61962 323.64209,201.23339 C 322.85693,200.13036 323.40576,199.30517 321.87842,198.35497 C 321.70459,196.54101 323.84717,196.56786 324.69287,197.44579 C 326.23779,197.69188 327.81787,197.20067 328.98389,195.97704 C 331.1753,195.70995 328.52295,194.76317 328.09912,193.85741 C 329.06787,193.21288 326.271,192.67723 325.54639,192.84374 C 323.72608,193.50927 325.92334,190.59472 324.00147,190.67235 C 322.57764,190.56542 321.8042,189.20262 321.06006,188.18114 C 320.81006,187.16161 320.72022,187.12499 319.54248,186.19237 C 317.63037,185.72362 320.96826,184.42479 319.78662,183.40526 C 318.21045,182.78807 320.81201,180.18505 318.75732,180.52391 C 317.68115,179.64256 316.45263,178.55955 315.05615,179.00633 C 314.04248,178.6699 312.67529,179.16112 311.81787,179.91795 C 309.76904,180.08104 312.06592,177.61326 310.3706,177.87791 C 309.31982,177.03758 307.75732,178.64402 307.07177,177.64207 C 306.24365,176.12937 304.76318,178.19871 303.95849,176.78562 C 304.45458,175.67332 304.11669,173.98923 303.11279,173.6616 C 302.53271,172.68064 302.55615,171.29392 301.0249,172.01121 C 301.88623,170.73533 301.29638,170.291 302.20263,169.2866 C 301.7788,168.52146 300.32763,167.88767 299.98193,167.32371 C 298.56591,167.32957 300.25341,165.47215 301.01709,165.3198 C 302.61084,165.37986 300.88037,163.67576 300.28271,163.04539 C 299.81005,161.87449 300.69677,160.6743 299.82177,159.19334 C 299.58739,157.40965 301.94677,157.7534 302.23779,156.08689 C 302.29443,154.86423 304.97217,155.7905 303.62451,154.32078 C 301.69482,153.5825 303.42334,151.96385 304.54443,153.39988 C 305.18701,152.26072 306.12255,152.55564 307.61084,152.72263 C 308.40576,151.49216 309.55225,150.69138 310.87256,151.36081 C 312.31006,151.74704 313.84131,152.95212 315.26904,151.78952 C 314.09326,149.85593 312.09521,149.09665 310.17529,149.60641 C 308.61865,149.75289 306.64599,149.90963 305.64599,148.16598 C 307.14208,146.43991 304.70458,146.16452 306.66357,145.05953 C 311.06787,141.98824 315.4038,138.74215 319.84716,135.77437 C 321.01904,134.39302 323.31396,132.54585 322.14989,130.34664 C 320.16747,127.77437 316.77098,128.10592 314.63622,125.78121 C 315.56981,124.99801 317.76122,124.00924 316.6206,122.36275 C 315.24951,120.32125 313.2749,118.60689 312.39794,116.24214 C 312.19286,114.14058 314.40966,112.97456 314.43896,111.17378 C 313.11865,108.1186 311.02685,105.81343 308.99755,103.44966 C 310.52294,101.61128 312.74169,100.90913 314.2495,99.03511 C 312.40575,97.29048 310.26903,96.02925 307.94677,95.5854 C 306.33154,95.49019 306.07763,93.19478 307.08154,91.977 C 307.04443,90.23335 309.27099,90.5229 310.04443,89.27143 C 312.38232,87.17963 315.18896,85.89497 318.13623,86.1728 C 319.57764,85.80024 320.54639,84.18891 322.12842,84.50288 C 323.55225,84.08003 324.98389,83.68257 326.33936,82.99458 C 326.82374,85.8144 329.63819,86.35786 331.67725,86.38276 C 333.85108,85.54682 332.72413,89.60053 334.45069,87.97065 C 335.92921,87.17036 337.67139,88.04536 339.27296,87.86176 C 342.39796,88.06196 345.56398,87.67035 348.59132,88.80707 C 352.6421,89.82074 356.94679,90.14789 360.49366,92.97406 C 364.32178,96.05511 369.19874,95.15277 373.3628,97.14154 C 374.54639,97.77777 376.46046,97.71674 376.95264,99.29779 C 376.25147,101.20355 378.35108,101.58978 378.57959,103.10297 C 376.98193,105.75971 374.17529,106.95942 371.67139,107.99408 C 366.896,109.60541 361.84717,109.9726 356.96045,108.89203 C 352.36865,108.39057 347.72607,108.12787 343.28662,106.52142 C 340.25928,105.67621 337.21826,104.92865 334.10889,104.71185 C 332.35108,102.53119 329.72608,102.01654 327.33936,102.69476 C 327.91163,103.13324 329.47217,104.42718 330.43506,105.1513 C 332.98584,106.17425 335.19287,108.39739 337.98779,108.58978 C 339.53662,108.83685 341.7456,109.85882 341.4331,112.13324 C 341.01904,113.74359 338.09716,112.79877 339.44482,114.73578 C 339.93115,116.74359 341.97802,117.76508 341.93896,120.01898 C 343.28271,122.04046 345.79638,120.95892 347.66162,121.62201 C 349.3374,121.27875 349.45068,124.12836 351.07178,124.00531 C 352.97217,124.09564 354.86475,124.24701 356.70264,124.87152 C 357.86866,124.01166 360.01709,124.97943 360.36084,122.98041 C 360.38037,121.03852 358.28857,120.42523 356.99951,121.1098 C 354.89209,121.30316 353.37256,119.46332 351.90967,117.9389 C 352.86084,116.82562 353.88819,115.10882 355.36084,116.08148 C 359.021,118.18939 363.14014,118.65033 367.06592,119.69427 C 368.60108,120.07757 370.12842,119.69427 371.63233,119.52679 C 372.86671,120.64447 374.80225,119.29827 373.75342,117.62835 C 372.55615,116.26995 370.94678,115.39007 370.42139,113.35687 C 371.52491,111.56146 373.69873,111.77582 375.3042,110.91449 C 378.021,110.24799 380.75732,109.43695 382.97022,107.31 C 384.40577,106.01166 386.271,107.42719 387.88233,107.41791 C 390.18116,107.41889 392.11085,109.36078 394.35108,109.43109 C 394.62452,107.74798 395.81788,106.51654 396.34913,105.05755 C 396.55421,103.34417 395.62843,101.643 394.09132,101.76116 C 391.8628,101.61907 392.89601,99.99016 394.2007,99.05999 C 395.45656,98.22308 396.0425,96.73284 395.14992,95.21478 C 394.29445,94.67474 392.0425,92.97064 394.02297,92.53851 C 396.31594,92.84222 398.60695,93.46869 400.93508,92.99554 C 402.6968,92.79046 404.80227,92.5722 405.95461,94.53509 C 406.99563,95.70697 408.30227,96.497 409.1675,97.90228 C 406.20461,98.29681 402.98781,97.7016 400.23977,99.17718 C 398.23977,100.59759 400.13821,101.53948 401.58352,101.8222 C 402.95852,102.43841 403.87063,104.1679 405.48586,104.15277 C 408.45461,105.10101 411.48391,103.87494 414.49758,103.93256 C 416.21828,103.03266 416.10305,99.91645 417.62258,98.79486 C 420.8218,98.47064 423.71633,96.69281 426.87258,96.09027 C 431.53664,94.37347 436.48391,94.09711 441.08547,92.13666 C 441.25344,94.16986 443.05617,93.99164 444.18313,93.19574 C 445.50149,92.63422 445.25735,90.2934 447.0679,90.5473 C 447.59866,90.44671 448.85257,90.18011 449.61722,90.31146 L 449.61722,93.29291 C 449.20898,93.76367 448.55713,93.90771 447.62842,93.80176 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Russia" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
			<path d="M 449.61719,271.1084 C 447.10889,271.58252 444.69629,272.78662 442.87451,274.97412 C 443.33349,273.4331 442.25342,272.30957 443.61084,271.16308 C 443.9292,269.79443 445.06982,268.11913 443.19092,267.75244 C 441.9624,267.67822 440.8374,267.68506 439.75733,267.2998 C 439.05225,265.98339 438.08155,264.77197 436.65186,265.31591 C 436.3003,264.63476 436.78858,262.52929 435.34913,262.11523 C 434.48194,261.04687 434.23975,259.19726 433.53468,258.21533 C 432.5171,257.51123 430.21046,258.49072 430.19679,256.62158 C 430.13234,254.61181 432.44874,255.39355 433.51515,255.46484 C 434.79249,255.91357 435.97023,256.6792 437.25148,255.88916 C 436.71046,254.91797 434.61867,254.83691 434.70656,253.44727 C 435.67922,252.48731 436.25539,251.75977 436.92922,250.29248 C 438.22805,250.2959 439.21828,249.84326 440.53078,250.22119 C 442.70851,249.86328 444.83547,250.51172 447.00148,250.59961 C 446.28273,249.58447 443.88039,249.93506 444.605,248.25684 C 445.55617,247.32178 446.53859,246.31641 446.54055,244.70264 C 446.98196,243.34815 445.63821,242.08936 446.84133,241.19043 C 446.45656,239.1665 444.34328,239.79346 443.02492,239.32471 C 441.76125,240.36084 439.66554,240.7334 438.5132,239.11182 C 436.66359,238.44141 434.63234,238.3169 432.98586,239.72217 C 431.15969,239.6084 429.95266,241.75391 428.17141,242.11182 C 426.90774,242.55664 425.46047,241.86084 424.60891,243.39258 C 423.37258,243.66309 421.98196,242.4082 420.75344,241.91016 C 419.81203,239.95508 422.39406,240.86475 423.24367,241.21289 C 423.87844,240.23877 421.76515,238.75537 421.27297,237.57617 C 420.72024,235.8081 419.23391,235.52246 418.20656,234.32666 C 417.13625,233.13281 415.46828,234.35742 414.26711,233.30713 C 414.11867,235.06397 412.08938,233.11524 412.65578,231.74512 C 412.46047,229.78028 410.37844,230.33203 409.21437,229.65918 C 408.54445,229.03027 410.14992,226.81397 410.65382,225.81201 C 412.26905,225.24463 412.44679,223.62744 410.72413,223.11328 C 411.22608,221.7539 410.47999,218.90723 412.14601,218.93213 C 413.75929,219.27295 413.97609,216.9209 414.72218,216.0127 C 416.99366,215.25342 417.79249,218.8628 419.63624,219.52832 C 420.84718,219.78271 422.5171,219.25195 422.30226,217.42139 C 421.60499,215.99756 421.34718,214.21387 423.12257,214.04493 C 424.40773,213.49659 425.48585,212.72462 426.28077,211.38722 C 427.7378,210.37355 429.58936,210.69581 430.99561,209.41652 C 432.46436,208.50343 433.76709,206.72902 435.5542,207.52736 C 437.00147,207.19826 437.75732,209.02345 439.23779,207.94826 C 440.48974,207.13332 442.4624,205.94387 443.27881,208.0674 C 444.2085,209.21584 445.9624,208.49758 447.21631,208.47658 C 448.45654,208.40529 449.04883,208.88674 449.61719,209.48586 L 449.61719,271.1084 L 449.61719,271.1084 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Kazakhstan" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
			<path d="M 448.41162,288.83398 C 449.10303,287.27197 449.42139,286.583 447.45654,287.26709 C 446.07959,286.94629 445.00146,287.9751 444.59326,285.94775 C 444.06787,284.3164 444.9292,283.17285 445.19092,281.63281 C 445.56397,278.81347 445.99951,281.0083 447.07764,281.72217 C 448.396,282.12842 449.00293,281.09229 449.61719,281.25244 L 449.61719,289.92529 C 449.70215,290.03711 448.82715,289.1416 448.41162,288.83398 M 449.61719,292.45752 C 448.95703,291.63428 448.10352,291.14404 447.13037,291.37695 C 445.95459,291.83545 447.3081,289.12011 448.48975,290.14306 C 449.08594,290.34033 449.42823,290.39648 449.60645,290.36572 L 449.61719,292.45752 M 445.75928,273.15332 C 444.58936,274.43896 445.6753,275.88379 445.02881,277.4248 C 445.45654,280.47509 444.98975,277.82421 443.87842,276.81298 C 443.51514,275.28466 442.42334,274.73193 444.23389,273.6162 C 445.83789,272.23632 447.69873,271.53515 449.61719,271.16015 L 449.61719,272.50976 C 450.00098,272.51367 447.00732,272.77686 445.75928,273.15332 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Turkmenistan" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
			<path d="M 442.11865,310.57129 C 444.57617,309.89893 447.14795,309.92725 449.61719,309.58447 L 449.61719,368.61963 L 436.12207,368.61963 C 434.87646,366.84668 434.23047,364.46192 433.12842,362.54004 C 431.88623,361.37647 432.88233,359.32813 431.52295,358.35791 C 430.40186,357.46582 429.84717,355.54785 428.84717,354.81396 C 427.57373,355.00634 426.06787,355.63427 424.98194,354.64404 C 423.22217,354.69433 424.75147,350.86133 422.78663,352.26172 C 421.62061,352.90137 421.8589,355.80762 420.09718,355.26172 C 419.71632,353.9502 417.38038,353.5249 417.53859,352.00488 C 417.77297,350.45947 417.25734,348.54785 415.67336,349.20068 C 414.45852,348.98388 415.34524,346.25097 415.56984,345.12597 C 416.25734,343.32275 415.35109,341.58007 414.01906,340.69091 C 412.31594,339.10351 410.36672,337.979 408.72218,336.25878 C 407.73195,335.25097 405.54445,337.29931 406.12062,334.7539 C 406.63039,332.78417 404.68117,332.02441 403.84132,330.71777 C 402.49562,329.79785 402.7007,328.13867 403.02687,326.59668 C 403.2046,324.72607 403.87648,323.10889 405.24757,322.12354 C 407.1421,321.14942 406.14405,319.71387 405.5503,318.10303 C 406.18311,316.38721 407.41944,315.3042 404.9585,315.54688 C 403.771,315.27833 402.00928,315.4087 401.71436,313.70362 C 400.67334,311.34669 399.69874,308.94923 398.71436,306.5586 C 398.85108,305.04249 396.46631,305.27881 396.66748,303.29298 C 397.7749,301.61915 394.13037,302.22169 395.94678,300.1836 C 397.18506,298.93702 396.74366,297.30811 395.49756,297.34327 C 394.50733,295.92286 395.63428,294.36524 394.65381,292.90186 C 393.99756,291.02442 396.94092,291.68506 396.1792,289.64161 C 397.45459,289.25489 398.28662,288.09327 399.03662,289.9087 C 399.50732,291.65479 401.00342,291.83985 401.85693,293.03321 C 402.90576,294.99219 405.10302,294.62208 406.72021,294.72608 C 408.0581,295.84424 408.87646,293.69971 409.85888,293.0459 C 411.44872,293.07031 411.86669,291.03369 413.27294,290.60254 C 414.50341,290.30957 415.72216,288.32422 416.89989,289.45752 C 417.35106,290.38818 420.312,291.08057 418.51512,291.89844 C 415.76512,292.12842 419.32176,293.09864 418.07176,294.10889 C 415.94481,294.80274 417.65965,296.12647 418.63621,296.88477 C 419.22996,298.06153 421.18894,297.48145 421.66551,298.80079 C 421.83739,300.59864 420.56981,302.6963 421.91551,304.0835 C 423.91551,305.58594 426.33739,305.32569 428.54832,305.91309 C 429.45848,308.5708 431.67918,309.93604 433.93504,310.36866 C 436.57568,311.58594 439.42529,311.44873 442.11865,310.57129 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Iran" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
			<path d="M 420.57812,368.61963 L 343.70117,368.61963 C 341.23584,368.71924 341.80615,367.35303 342.50928,365.64209 C 342.8335,363.97119 343.20069,362.31055 343.41358,360.6123 C 345.36475,360.77539 347.43897,361.57324 349.30811,361.41162 C 350.60108,360.19287 351.95264,359.0376 352.80811,357.30664 C 354.84327,356.65137 357.07569,356.32812 358.44873,354.17871 C 360.30615,353.07129 359.25732,351.71094 358.19678,350.34814 C 357.16553,348.84912 356.07764,347.40771 355.0249,345.93261 C 358.62646,344.27538 362.60498,343.93896 366.15967,342.2163 C 367.11475,340.81347 368.021,340.37792 369.32959,341.53417 C 372.02295,342.65478 374.67529,343.86376 377.22998,345.4121 C 380.68896,347.2788 384.31396,348.84667 387.59717,351.10644 C 388.26709,352.59082 389.09131,353.95361 390.68701,353.27783 C 392.66748,352.8208 391.39795,355.63281 391.69482,356.92822 C 391.33154,358.89111 392.91943,359.30468 394.13037,359.70508 C 396.16748,360.71436 398.0874,362.31983 400.39014,361.93555 C 404.66748,362.10303 408.96045,362.07032 413.17139,363.12012 C 414.58545,363.13428 414.26709,366.48242 416.00147,365.89991 C 417.1167,366.31837 418.83936,365.44288 419.59131,366.23975 C 419.79688,367.11523 420.1875,367.87012 420.57812,368.61963 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Saudi Arabia" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
			<path d="M 338.14014,346.9917 C 339.54444,351.11572 340.94873,355.23926 342.63037,359.21436 C 340.69873,361.32959 340.32568,364.70704 339.69873,367.62012 C 339.66455,367.9209 339.61182,368.27002 339.53613,368.61963 L 336.33252,368.61963 C 334.89404,366.99756 333.21826,365.58594 332.90967,363.06738 C 332.56983,361.3833 330.85694,360.82666 330.62842,358.98437 C 330.31983,357.55273 329.59522,355.2207 328.32178,357.01855 C 327.1167,358.59228 328.66358,360.2456 329.0503,361.86523 C 329.69483,364.58349 331.51026,366.48632 332.95069,368.61962 L 285.8457,368.61962 C 285.88134,366.04247 285.9414,363.46435 285.79638,360.90087 C 285.06786,358.75829 283.97802,356.31151 284.58935,353.99364 C 285.18701,352.60497 286.35497,351.25731 285.52685,349.64598 C 284.9038,348.08739 284.83544,346.16307 286.4663,345.53856 C 286.98192,344.52391 288.75146,346.00829 289.89599,345.19774 C 293.45849,344.59178 296.91161,346.36473 300.43115,346.80223 C 301.98388,346.45164 302.2749,348.91698 303.74756,348.41649 C 305.5835,348.31932 307.22608,349.20067 308.90381,349.9121 C 311.00733,350.84032 312.12256,347.86474 314.00928,347.40526 C 315.83545,346.46288 317.84131,346.14549 319.7085,345.32909 C 321.23194,345.23876 322.81006,345.38866 324.32764,345.7661 C 324.63623,347.34667 326.146,348.83055 327.4585,347.92577 C 328.60303,347.93358 330.02881,349.61425 331.05225,348.10839 C 332.021,347.04101 333.32569,348.80468 334.63819,348.59472 C 335.90576,348.60303 337.12451,347.79199 338.14014,346.9917 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Egypt" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
			<path d="M 285.61865,360.35449 C 286.23047,363.00976 285.75976,365.86621 285.84082,368.61963 L 199.85986,368.61963 C 199.78662,367.60742 199.70166,366.58838 199.94873,365.57617 C 200.06201,362.73926 199.5542,359.88818 198.17334,357.54297 C 197.17725,356.23438 197.06396,354.49414 198.56201,353.68115 C 199.97607,352.48681 202.0874,351.41308 201.85889,348.94385 C 201.48975,347.4502 200.66162,345.34668 202.26123,344.46289 C 204.26709,342.41211 206.47021,340.72119 208.84717,339.35596 C 209.29053,337.76416 208.71826,336.01465 209.11475,334.35059 C 209.47022,333.16358 211.51123,335.32325 212.52491,335.44288 C 214.55616,336.52833 216.75733,336.89503 218.9253,336.18849 C 220.82764,336.29591 222.81788,336.53517 224.62257,337.12453 C 225.88038,338.75588 227.78077,339.0923 229.48976,339.24904 C 231.28859,340.16115 230.77492,343.07668 232.18117,344.49904 C 233.40969,346.3589 235.24953,347.22023 237.19094,347.33644 C 241.18313,347.49904 245.14016,348.86671 248.39016,351.71095 C 250.08743,352.91798 252.02102,354.82325 254.03078,353.36427 C 255.83937,352.20656 258.18508,350.62013 258.34523,347.93165 C 257.11281,345.54688 256.86867,341.91749 259.09718,340.25685 C 261.40382,337.99171 264.3921,337.0381 267.2046,336.02296 C 269.81983,336.06642 272.68312,336.26319 274.79444,338.30226 C 274.46436,340.26613 275.94288,340.93898 277.29639,340.82521 C 279.12842,340.82082 280.60303,342.45998 282.47022,342.12355 C 283.75538,342.2632 286.12647,341.63185 286.02686,343.9966 C 287.88624,345.41213 284.88233,345.99806 285.06006,347.55324 C 285.3335,349.32277 286.44873,351.2173 285.19873,352.77297 C 283.60107,355.0083 284.81006,358.02344 285.61865,360.35449 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Libya" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
			<path d="M 94.82324,368.61963 C 94.86767,367.25 94.93603,365.88135 95.01709,364.51611 C 98.00928,363.13183 100.36279,360.14843 103.33545,358.83838 C 104.6792,358.86279 106.03467,359.24024 107.36279,358.8794 C 107.29834,356.70752 108.50341,356.4336 110.03857,356.64942 C 112.40966,356.25196 114.78662,354.9502 115.95654,352.31544 C 118.3374,351.55616 120.76123,350.46192 122.79834,348.90431 C 123.23193,347.63478 121.3335,345.72511 122.60498,344.51906 C 124.25342,343.64748 126.92725,344.78859 127.64014,342.14504 C 128.41358,340.97756 130.21826,342.05715 131.40381,341.67629 C 133.22803,341.62111 135.05615,341.67287 136.88233,341.66213 C 137.08741,340.21242 138.59913,338.0093 136.80616,337.25588 C 135.25928,335.83693 133.98389,333.55178 134.35889,331.09328 C 134.27686,328.54885 134.82178,325.66359 133.71045,323.40285 C 132.94873,323.01174 130.77295,321.26467 131.88037,320.74318 C 133.65381,320.64015 135.64209,319.95119 136.34326,317.77931 C 137.53076,316.33449 139.36279,316.60158 140.78076,315.57033 C 141.82373,314.78762 143.15185,317.1631 144.13037,315.41554 C 146.06006,312.23195 149.44678,310.86622 152.63232,310.81251 C 155.06591,310.49269 157.73584,311.14796 159.88623,309.41798 C 161.41553,310.563 163.12061,309.81984 164.5249,308.80763 C 166.26709,308.40919 168.1499,308.52492 169.90967,308.79005 C 172.17529,309.79396 174.63428,310.04151 176.93311,309.01124 C 178.39795,309.27149 179.11475,306.71925 180.27295,307.09181 C 181.63037,307.84767 183.31787,309.60304 184.61865,307.77052 C 185.59912,306.45558 187.66553,307.07423 188.22412,308.60939 C 189.60693,309.42482 191.22217,308.2881 192.71045,308.30373 C 193.76514,309.02199 190.91162,310.16213 191.07764,311.53127 C 190.68897,315.21779 191.29639,318.99221 191.06397,322.69094 C 190.47413,325.09524 188.05225,325.97317 186.97803,327.93117 C 186.41748,330.15529 187.79444,332.26857 188.37061,334.33303 C 190.60694,334.33694 191.01709,337.27004 192.06397,339.04201 C 192.97413,340.10256 194.56592,340.45998 195.08741,342.14601 C 196.14796,346.04591 197.09913,350.00929 198.36671,353.83302 C 196.71632,354.80958 197.52491,356.53077 198.32179,357.88234 C 200.08156,360.80959 200.11281,364.58498 199.76515,368.01857 C 199.82667,368.21974 199.87208,368.41994 199.90333,368.61964 L 94.82324,368.61964 L 94.82324,368.61963 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Algeria" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>

			<path d="M 131.42529,320.74072 C 131.65381,322.53955 133.22021,322.5957 134.01318,323.80615 C 134.83545,326.97265 134.04834,330.33154 134.48388,333.51611 C 135.04247,335.30468 136.13036,336.958 137.57177,337.83838 C 137.69091,338.98926 137.41943,341.76367 136.19872,341.65723 C 133.42333,341.59766 130.64794,341.75489 127.8745,341.63477 C 127.46434,343.34034 126.18309,344.1875 124.75145,344.06934 C 123.50536,344.03028 121.64793,344.35303 122.2495,346.41065 C 123.24755,347.96436 122.99364,349.58301 121.23778,349.93897 C 119.55614,350.98682 117.78075,351.73194 115.95458,352.31202 C 114.40185,355.80225 110.89208,356.86134 107.82372,356.74757 C 107.8745,358.75489 106.72802,359.45704 105.20849,358.97413 C 103.77685,358.61329 102.47411,358.9214 101.32177,360.02296 C 99.17724,361.43751 97.32568,363.4673 95.01513,364.51368 C 94.90331,365.87843 94.86279,367.24854 94.83154,368.61964 L 75.35449,368.61964 C 79.09228,367.24366 81.93506,363.72999 85.08154,361.06349 C 86.85302,358.60597 89.79443,356.15333 89.14209,352.4629 C 87.76709,350.25392 87.25342,347.02686 88.91357,344.81446 C 89.98193,342.98878 91.86279,341.19678 91.27295,338.70801 C 91.43897,336.73096 93.33154,335.90918 94.27686,334.45166 C 97.51709,330.66162 103.0503,331.32617 105.74756,326.64941 C 107.81592,323.55322 108.8042,319.69775 110.16944,316.13623 C 111.31983,315.30322 112.81006,314.78613 113.43897,316.66943 C 114.37452,318.68164 116.31788,319.3789 117.99561,320.07373 C 120.95264,320.00146 124.28077,320.86377 126.77686,318.44287 C 127.3667,320.06689 128.59913,320.75 130.03077,320.67041 C 130.4917,320.77832 130.96045,320.72314 131.42529,320.74072 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Morocco" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
			<path d="M 341.00439,316.78564 C 341.00439,316.78564 337.54296,318.30859 336.50439,318.44726 C 335.46582,318.58544 335.12011,318.16992 334.6582,319.41601 C 334.19677,320.6621 333.96582,320.10839 333.1582,319.41601 C 332.35058,318.72412 331.6582,319.69335 332.00439,320.52392 C 332.35058,321.35449 331.50439,323.59326 333.58154,323.59326 C 335.6582,323.59326 335.4082,323.43164 336.33154,323.29297 C 337.25439,323.15479 338.61963,322.08154 339.08154,321.94336 C 339.54297,321.80469 340.12011,321.38916 339.31201,320.69678 C 338.50439,320.00489 338.11963,319.83155 339.61963,318.58545 C 341.11963,317.33935 341.00439,316.78564 341.00439,316.78564 z " style="fill: rgb(254, 254, 233); fill-rule: evenodd; stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Cyprus" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
			<g id="g85">
				<path d="M 254.07373,274.37549 C 252.57373,274.19971 252.42139,272.19483 251.03857,271.65528 C 249.9956,271.31592 248.86279,270.93165 248.90576,269.52735 C 250.29443,269.01514 248.59521,267.8213 249.04834,266.64698 C 250.32764,266.46778 249.80029,264.99366 250.89014,264.396 C 251.58155,264.12891 253.0835,265.52784 252.021,263.69483 C 251.50733,262.28663 253.4917,263.15137 254.00928,263.6377 C 255.0542,264.25049 255.59326,265.64991 256.87256,265.78125 C 257.82373,265.81494 258.35694,267.06104 259.47217,267.15918 C 260.26319,268.37109 257.90772,267.84814 257.61865,268.51856 C 259.0874,269.17237 257.35693,270.62452 256.33935,269.79835 C 254.95849,268.92872 253.95068,270.93458 253.8081,272.26515 C 254.04443,272.95996 254.14404,273.62549 254.07373,274.37549 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Montenegro" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
				<path d="M 221.08545,242.53955 C 222.4917,242.4668 223.78076,242.9707 225.11475,243.05127 C 226.57373,243.98633 227.30616,242.45947 228.60694,241.87012 C 229.89991,241.16455 231.46046,242.56153 232.54835,241.28662 C 234.47413,242.02832 234.56983,241.29346 235.28273,240.25391 C 236.94093,239.13965 236.7925,242.16895 238.10109,242.7876 C 236.68312,241.38721 236.70265,243.7544 235.71632,243.28565 C 235.0503,244.61817 233.28273,243.95606 232.68702,245.17139 C 233.69483,245.81836 233.41358,247.63233 232.15772,247.24659 C 230.69678,247.55274 231.26124,248.12891 231.03467,249.03858 C 231.43506,250.43311 229.72412,249.76758 229.14405,249.46631 C 228.42725,249.81885 227.48585,249.52149 227.01124,248.55322 C 226.49562,248.54052 225.75343,250.15283 224.65186,249.54931 C 223.63624,249.34814 223.271,249.69824 222.31397,249.75097 C 219.93116,249.83642 222.43897,249.90331 222.53858,248.30273 C 220.81006,247.81494 221.21827,246.29296 220.53467,245.80664 C 222.80029,244.6206 218.25147,244.4707 220.62061,243.57617 C 221.16553,243.21338 221.63818,243.27051 221.08545,242.53955 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Slovenia" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
				<path d="M 243.72217,267.04541 C 242.56592,266.16992 241.32178,265.26514 240.3335,264.24951 C 238.79053,264.37353 237.64014,262.46924 236.12061,263.27441 C 234.69483,264.01513 234.37842,261.13427 232.8335,260.97851 C 231.82178,260.56152 230.25928,258.71581 230.30616,258.05029 C 232.146,258.17187 232.65772,258.17431 230.66554,257.27685 C 229.46046,256.52441 228.22023,255.11669 228.91554,253.35546 C 228.08546,252.05126 226.86085,251.11376 225.55421,250.65234 C 225.04835,252.19531 224.57765,253.17285 223.64015,254.03662 C 222.74171,255.26025 221.68898,252.65723 221.51124,251.63183 C 220.46827,249.67138 221.13819,249.82812 222.59132,249.68749 C 223.46437,249.63866 223.90382,249.51757 224.92921,249.49413 C 226.09913,250.53612 226.58937,247.64843 227.20069,248.83007 C 227.74757,250.04296 228.73194,249.40527 229.53467,249.57616 C 230.25342,250.29247 231.61475,249.90331 230.95069,248.68944 C 231.09522,247.98827 231.22413,247.33006 232.60499,247.17382 C 234.21241,247.23144 232.53468,245.32958 232.89601,244.78222 C 233.78859,244.25243 235.06398,244.39111 235.72023,243.31396 C 236.68703,243.77685 236.67335,241.40478 238.10304,242.81591 C 239.91359,244.52001 242.37452,244.97118 244.21632,246.70751 C 246.1128,248.21142 248.6753,247.67333 250.71827,246.88915 C 252.26319,246.67724 251.08155,249.16308 251.92921,249.19774 C 252.90577,249.42186 251.21046,250.5996 252.90968,251.03905 C 254.22999,250.92772 254.80226,252.11571 253.19874,251.48046 C 252.45265,251.78417 252.56983,253.49169 252.27882,253.84325 C 250.84718,254.47264 250.89015,252.97167 250.15577,252.43944 C 249.13233,252.48632 248.00343,251.90624 246.92139,252.2788 C 245.93701,252.00927 245.04248,252.62694 243.93701,252.09032 C 242.71631,251.78075 241.86084,252.0161 240.75342,251.44774 C 239.79444,251.33299 238.66162,251.39842 237.67139,251.64012 C 237.07373,253.31102 235.70655,252.84959 235.05225,251.43846 C 233.21045,250.59227 233.9917,253.3369 233.47998,254.04002 C 234.09326,255.01609 235.38428,255.28318 235.73975,256.7119 C 236.07373,257.91893 236.13819,258.31053 237.10889,259.38475 C 238.63428,259.47752 238.78467,261.45213 240.03858,261.98289 C 240.93702,263.10301 242.26905,263.22312 242.4917,264.76023 C 242.93506,265.2793 245.71826,266.72217 243.72217,267.04541 z M 244.28271,267.42725 C 245.25537,266.39991 245.98388,268.62842 247.11279,268.43506 C 247.84912,269.47705 249.05029,268.94043 249.21435,270.52832 C 248.71435,270.95703 247.15771,269.08301 246.30224,268.59131 C 245.62842,268.20215 244.95068,267.81885 244.28271,267.42725 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Crotia" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
				<path d="M 272.99561,257.88037 C 272.27686,259.16455 270.40772,260.0625 270.85889,261.85205 C 271.94873,263.12451 273.43311,264.13818 274.28467,265.56885 C 274.04834,267.67823 270.68897,267.06641 270.96045,269.60596 C 271.47217,271.45899 269.78272,271.12354 268.87451,271.26319 C 267.93896,271.32764 267.03467,271.88184 265.96631,271.69092 C 265.0542,272.85547 264.96045,272.48535 263.88623,272.17578 C 262.23779,272.02734 262.31396,273.89648 261.37061,274.28906 C 260.21241,273.19433 259.33155,270.98193 257.93702,269.99853 C 258.53468,268.64501 256.87843,267.97119 258.90186,268.19482 C 260.32959,267.80615 259.33155,266.73144 258.26905,266.75732 C 257.60303,265.47753 256.41944,265.90625 255.43702,265.07812 C 255.26905,263.86376 252.57764,263.58593 253.64014,262.74707 C 254.46631,262.62305 255.62256,262.26318 254.43311,260.93066 C 252.56397,259.14843 254.1167,260.35888 255.32569,259.71289 C 255.5171,259.17969 253.84131,258.51074 253.59131,257.85449 C 252.21631,258.03857 252.56201,256.00781 253.34131,255.39941 C 254.56787,254.25244 253.72022,252.75341 252.41748,253.74804 C 252.28857,253.81591 252.66553,251.98925 253.05225,251.44091 C 254.64209,252.17431 254.43116,251.00487 252.9917,251.0332 C 251.45459,250.61718 252.48193,249.63037 252.07764,249.1499 C 251.18897,249.3584 251.83936,246.86133 251.14795,246.70508 C 253.63623,245.5332 256.24756,244.52197 258.95264,245.09278 C 259.62256,245.88477 260.74756,246.58448 261.76514,247.40967 C 261.96241,248.4292 262.00342,249.86719 263.50147,250.40723 C 264.21631,251.04444 267.18506,251.10547 265.55225,252.47901 C 266.50342,253.38135 265.8042,252.84962 265.44678,254.16895 C 266.71631,254.44434 267.37647,254.92579 268.7417,255.46875 C 269.97998,257.32031 270.40576,254.50537 271.5874,254.67187 C 273.97802,255.60546 272.52295,255.38769 271.64209,256.56347 C 271.74365,257.48877 272.43115,257.58008 272.99561,257.88037 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Servia" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
				<path d="M 274.28271,278.57764 C 272.83154,278.98682 271.58349,280.26172 270.03076,279.65576 C 268.54638,278.91894 267.82959,280.96045 266.72021,281.46387 C 265.39013,281.69727 263.64599,282.69825 262.66943,281.13867 C 261.06396,279.81299 260.3374,276.98877 261.07763,274.81152 C 261.45654,274.37402 262.04247,273.38281 262.82568,272.57666 C 263.63427,271.40478 265.13232,273.07715 265.11084,272.31641 C 265.92334,271.09522 267.23779,272.21827 268.06201,271.31006 C 268.90967,271.21729 269.94287,271.21729 270.91943,271.00879 C 271.03662,272.7334 273.18701,272.34229 273.72607,273.89502 C 274.8081,275.19336 274.29248,276.99023 274.26513,278.50049 L 274.28075,278.58008 L 274.28271,278.57764 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Macedonia" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>

				<path d="M 244.28271,267.42725 C 243.74169,266.99024 244.82763,266.00489 243.10888,265.23731 C 241.92333,264.5962 242.22607,262.89698 240.67724,262.7085 C 239.59912,261.64551 238.80029,260.92823 237.96435,259.62745 C 236.82958,259.3672 235.85497,258.14259 236.01123,257.27686 C 235.50146,256.22657 234.92529,254.98829 233.87842,254.55567 C 233.49756,254.0586 233.396,251.93897 234.25342,251.33643 C 235.37451,250.96875 236.34131,254.09278 237.19483,252.22852 C 237.84913,250.68995 239.34913,252.00342 240.22217,251.23243 C 241.36279,251.93653 242.15576,251.70118 243.271,252.03126 C 244.40186,251.88282 245.47217,252.87159 246.45069,252.02442 C 247.41163,252.36915 248.58741,252.12891 249.53467,252.32325 C 250.87451,252.06641 250.41358,253.96973 251.59522,253.94874 C 252.40186,253.77735 254.56397,252.73438 253.81983,254.6294 C 253.22999,255.60303 252.31592,256.49366 252.79053,257.61915 C 253.92725,257.60157 254.19483,259.01563 255.30811,259.32032 C 255.97022,260.75001 252.78858,259.18116 253.58936,260.14307 C 254.46045,260.27344 255.69874,262.9253 254.3042,262.44483 C 253.81397,263.24854 251.6167,262.48438 251.94482,263.60938 C 253.11084,265.40333 251.67138,264.29297 250.90771,264.40381 C 249.80224,264.89649 250.42138,266.50879 249.13623,266.55664 C 248.41553,267.65478 250.39795,269.02246 248.89209,269.51807 C 247.81982,269.19141 247.10107,268.28662 245.93311,267.98536 C 245.40967,267.61475 244.92529,266.42188 244.28271,267.42725 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Bosnia" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
			</g>
			<g id="g99">
				<path d="M 273.02295,188.58057 C 271.94678,187.06397 274.67725,185.87207 273.13623,185.04981 C 272.14209,184.23292 271.12842,184.09083 269.79053,184.25293 C 268.70264,184.2832 267.36865,183.74902 266.22608,183.30322 C 265.58546,182.29541 263.65772,183.7207 264.58155,182.23486 C 263.54639,180.93652 263.24561,179.34033 263.3296,177.58691 C 263.41163,177.40429 264.98194,176.26367 266.06593,175.94091 C 267.81202,175.4497 269.5464,174.59862 271.33546,175.15429 C 272.52882,175.58105 273.9546,174.45458 274.85499,175.52929 C 276.09327,174.91894 277.38624,175.88769 278.64796,175.41357 C 280.02101,175.20605 281.19093,176.31933 282.51515,175.77392 C 283.59523,176.41503 285.1089,174.05273 285.66749,175.45312 C 286.76124,177.56005 289.32179,175.95361 290.65382,177.62109 C 291.92921,178.06738 292.91359,179.08593 293.94679,179.85693 C 296.08156,179.3999 294.41359,181.70507 294.5171,182.27685 C 296.50343,182.10449 295.82374,183.15331 294.81593,183.82617 C 293.44484,182.71875 292.96437,185.12109 291.59913,184.87256 C 289.99171,184.61279 290.3003,186.93067 289.88819,187.75391 C 288.14014,189.23536 290.63428,188.93555 290.24561,190.41651 C 288.92725,191.4795 289.04444,188.48096 287.89209,189.81544 C 286.86084,189.89308 285.98975,190.6631 284.78271,190.71192 C 285.34521,192.19434 282.86083,191.63526 282.0913,192.23536 C 281.18114,191.41505 279.83544,192.21681 278.67724,192.01319 C 277.32372,192.47803 277.25732,190.28077 276.54052,189.36915 C 275.45264,188.65771 274.24951,188.30713 273.02295,188.58057 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Lithuania" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
				<path d="M 303.25342,154.15527 C 305.07959,155.12353 302.95654,155.30273 302.37647,155.77148 C 302.04249,157.44726 300.37061,157.42724 299.74756,158.69873 C 300.23779,160.23291 300.34131,161.54785 300.10694,162.76318 C 300.7085,163.47558 302.15186,164.85107 301.46436,165.22851 C 300.20655,165.23925 299.43506,166.75781 299.24952,167.39648 C 298.05421,167.3999 297.00147,166.4414 295.90772,166.92773 C 294.93897,167.64502 293.48975,167.20214 292.85303,166.12304 C 291.85303,165.32226 290.79834,165.04443 289.60694,164.75292 C 288.49171,163.92187 287.58741,164.12011 286.79249,163.71435 C 285.39015,164.35449 283.68897,164.19824 282.38819,165.05371 C 283.15186,163.9873 283.46631,161.20215 281.75342,162.4956 C 280.94287,163.90673 279.00733,162.49218 278.57373,161.9248 C 279.19873,158.96972 277.94873,160.66748 276.93311,159.09375 C 277.00147,157.89258 276.771,157.02539 277.5542,156.41162 C 278.94482,156.2334 280.33936,156.29541 281.26318,155.53027 C 282.40966,154.87988 283.2749,154.83984 284.48584,154.89257 C 285.00342,153.21239 287.14209,155.73193 288.09522,154.3745 C 288.93897,153.99999 290.25928,154.3618 291.5796,154.18944 C 293.72804,154.08397 295.89015,154.6162 297.93898,155.08495 C 299.69482,154.60889 301.99561,156.18652 303.25342,154.15527 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Estonia" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
				<path d="M 299.47412,167.34277 C 300.64404,167.12597 300.72607,168.74072 302.15967,168.91064 C 301.81592,170.21337 301.58155,170.33789 301.19873,171.6455 C 301.38428,171.91503 302.75342,172.05566 303.02295,173.18212 C 303.59326,174.23778 304.31006,174.74218 304.13818,176.30858 C 303.53271,177.34129 301.88623,177.10399 301.13232,178.29588 C 300.82373,180.17332 299.10107,178.87156 298.01513,179.0366 C 296.83544,178.8701 296.13818,180.30564 294.94482,180.00926 C 293.48974,180.33055 292.98974,178.51365 291.72021,178.18699 C 290.50927,177.59178 289.53857,176.47019 288.13427,176.72361 C 286.69286,177.13963 285.91357,175.24705 285.04443,174.98191 C 283.86279,175.87595 282.4292,175.76609 281.1499,175.93845 C 279.50732,174.8696 277.70849,175.95115 276.01318,175.24363 C 274.78857,175.99363 274.09521,174.46531 272.81396,175.18845 C 271.11084,175.27976 269.45654,174.55906 267.81396,175.40036 C 266.73974,176.02634 264.81201,175.6196 264.39208,177.18747 C 262.32567,178.05222 263.00927,175.50485 263.11864,173.97311 C 263.2827,172.27487 265.82762,172.63131 265.25536,170.54635 C 265.31005,169.27047 266.74559,168.17135 267.66356,167.70016 C 269.2202,167.54196 270.72606,166.85055 272.2534,166.71237 C 272.45652,168.34567 274.43699,168.3901 275.23973,169.37594 C 275.74168,171.98336 278.44676,172.15182 280.19481,171.45797 C 281.41356,171.31637 282.85692,170.311 282.25926,168.60836 C 281.92723,167.16354 281.35301,165.27193 282.9077,164.71041 C 284.17332,164.20309 285.55223,164.24508 286.78465,163.68062 C 287.61668,164.15718 288.45653,163.82564 289.58153,164.72115 C 290.72606,164.99068 291.78075,165.23775 292.72606,166.00533 C 293.38622,167.08101 294.79833,167.60152 295.78856,166.94527 C 296.91747,166.50484 297.93504,167.19478 299.15184,167.38814 C 299.09131,167.64502 299.4917,167.15527 299.47412,167.34277 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Latvia" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
				<path d="M 278.0874,208.14844 C 278.62646,206.71875 280.38428,208.70996 281.25732,207.26465 C 282.23779,206.37061 283.00341,205.17529 284.54834,205.77539 C 285.88037,205.76855 287.17529,205.37109 288.51123,205.65674 C 289.82568,205.44971 291.22021,205.45313 292.44873,205.82666 C 293.57568,206.46533 294.97607,206.22656 296.25146,206.62842 C 297.50341,206.86865 298.64208,206.46192 298.91162,207.70215 C 299.6167,207.80029 301.61084,207.13965 301.4917,208.69092 C 301.9585,207.0503 303.18897,208.75879 304.16943,207.60449 C 305.14013,208.6792 306.26513,207.83105 307.18115,208.92529 C 307.89013,207.9834 309.74365,207.00097 310.13818,208.73535 C 310.71826,210.21777 312.33545,207.91992 313.14599,208.96631 C 314.29833,208.71533 315.91161,208.13086 316.59911,209.72901 C 319.09325,210.63965 316.62059,208.08887 317.71044,207.25196 C 318.61083,206.22315 319.42919,204.89747 320.61669,204.56934 C 321.86474,205.07325 322.96435,203.88868 324.37841,204.29395 C 325.687,204.72901 327.56786,205.042 328.04638,203.01905 C 328.63818,201.89161 330.31982,204.05469 331.46435,202.95557 C 332.86083,201.91748 334.40185,203.27344 335.83349,202.37549 C 336.83544,203.43164 337.70068,204.5918 338.69677,205.69531 C 341.08739,207.02002 337.85497,206.729 338.14208,207.8789 C 338.36669,209.56054 339.37841,210.77245 340.85888,210.26464 C 341.5913,211.25732 343.9624,209.30859 343.61083,211.42821 C 344.8706,211.00633 345.19872,213.49364 345.23778,214.59276 C 345.68114,216.11131 346.83739,216.70311 348.00536,215.84032 C 349.312,215.37499 350.12255,217.28807 351.38622,216.71141 C 352.33349,217.73094 353.68895,216.18504 354.86669,216.3701 C 355.97021,215.76317 357.36864,215.80076 357.68114,217.32615 C 358.42723,218.33103 359.62841,219.09959 360.72606,219.08787 C 361.58739,217.29246 362.63426,219.6118 364.01708,219.37254 C 365.18896,220.03807 366.32372,219.51072 367.32372,220.43797 C 368.83934,220.07811 369.22997,222.02684 370.71434,221.7866 C 372.37254,220.70506 371.3784,222.43699 372.20848,223.36521 C 372.29832,224.9238 369.23582,224.77244 369.77293,225.68992 C 371.15574,226.38377 371.99168,227.01414 369.87254,226.92869 C 368.7241,228.16502 370.80223,228.48973 370.74168,230.03758 C 370.98191,231.16844 370.37645,233.34569 369.31199,233.6494 C 367.78855,233.09178 366.23191,233.22411 364.66551,233.312 C 364.48582,235.04638 362.5659,234.59032 361.57762,235.16356 C 361.23778,236.60594 361.79051,238.82225 359.90965,238.37938 C 358.34129,238.68163 356.57176,238.19627 355.47606,239.90965 C 352.57176,241.11912 349.1245,240.11326 346.55418,242.45945 C 345.17332,243.36179 344.02684,240.41355 343.51316,243.0781 C 342.39207,245.22312 340.00925,243.73435 338.31004,244.18552 C 335.99363,244.21628 336.62449,245.15134 338.4409,245.83249 C 339.95067,246.91159 341.82762,247.62155 343.11278,248.92819 C 342.49169,250.64401 344.39403,250.95309 345.46044,250.44919 C 347.45849,249.74607 349.63036,249.49997 351.65185,250.19382 C 350.97216,251.5239 350.15966,252.60105 348.71435,252.54148 C 347.22021,252.76511 345.49365,251.3613 344.26123,253.05662 C 342.79248,254.67381 340.30225,253.07224 338.92529,255.05711 C 337.73193,257.0869 335.49951,256.1074 333.8706,255.57029 C 334.56982,254.21336 335.31396,252.3574 333.94091,251.19724 C 332.48388,250.37888 330.8081,249.86716 329.20458,250.37888 C 328.40966,249.18161 331.07763,248.5156 331.9077,247.84324 C 332.74168,246.95115 335.67918,247.51267 334.93309,245.7949 C 334.23192,244.18113 332.28075,245.20164 331.01317,245.04588 C 329.08544,245.18211 326.687,245.49803 325.51317,243.21531 C 327.41356,242.69187 326.73387,240.62107 325.49169,240.30125 C 324.58739,241.88084 322.83544,240.92918 321.50341,241.53953 C 320.09716,241.6323 318.82568,242.18308 318.03466,243.65037 C 316.50927,245.3823 315.02685,247.43211 312.79833,247.63328 C 310.80614,248.22166 313.22411,250.96482 311.25536,249.78611 C 310.02098,249.30418 308.98388,250.90623 307.69481,250.43406 C 307.45262,251.64597 304.9409,250.85154 304.72801,249.59519 C 303.74949,249.1616 306.99168,249.97361 305.95457,248.18894 C 307.14988,247.93796 307.07176,246.28464 308.12645,246.24802 C 308.89207,245.66599 308.81004,244.26999 308.27293,243.22947 C 309.15574,241.9697 310.0366,242.5698 310.42332,243.38426 C 310.63035,241.96385 311.92137,243.99803 312.51707,243.31297 C 313.32176,242.76561 313.4409,244.1494 314.78269,243.50731 C 315.28074,242.89891 313.15964,242.67381 314.20261,241.49169 C 314.353,239.88622 311.91745,240.2871 312.10691,239.08935 C 311.31003,238.75878 312.48777,237.5415 311.71824,236.92138 C 311.02683,237.46874 309.31199,236.08251 309.60496,235.24072 C 310.03855,233.96582 310.26316,233.51025 309.52684,232.58398 C 308.21434,233.6538 307.99168,231.32812 306.79051,231.3457 C 305.53074,231.52246 304.99559,231.79687 304.94285,230.80859 C 303.86668,231.20263 303.0991,230.18896 302.18504,229.70947 C 301.2534,229.12842 300.29637,229.49756 299.29051,229.4541 C 298.54246,230.74316 296.5952,228.96533 296.2827,230.19238 C 295.60692,230.5205 293.80418,230.31787 293.3784,231.56592 C 292.17723,233.05176 290.09129,232.32617 288.5034,232.80127 C 287.27293,232.42139 286.33152,235.05225 285.22215,233.70801 C 284.14598,233.04248 283.63621,232.65674 282.0659,232.79151 C 280.36278,232.99219 278.64988,231.77784 277.05418,232.36378 C 275.58934,232.03321 274.38621,232.38624 273.17918,231.10646 C 272.11473,230.64699 270.25145,229.79738 269.75926,229.39113 C 270.60887,227.959 271.45848,226.52687 272.30809,225.09474 C 274.90184,225.6421 272.91747,224.49953 272.99559,222.61281 C 272.94676,220.58107 275.04247,219.93752 276.01512,218.59572 C 277.37254,217.49172 278.65184,215.63429 280.40965,215.77834 C 282.51121,214.81984 279.0034,212.73488 281.13621,212.60988 C 280.29832,211.98049 279.20066,210.4922 278.32762,209.43508 C 278.56006,208.84814 278.54834,208.54102 278.0874,208.14844 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Ukraine" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
				<path d="M 277.75146,191.98438 C 278.9956,192.28126 280.3999,191.74366 281.62646,191.93555 C 282.49951,192.7334 284.03271,191.48926 284.94091,191.38477 C 284.37646,189.6587 286.9038,191.27002 287.14599,189.72657 C 288.56982,189.24122 288.75341,189.92335 289.74169,190.54786 C 291.72802,189.73927 288.31005,189.41261 289.46825,188.24317 C 290.67919,187.55176 289.58934,185.79835 290.92528,184.92335 C 292.45653,185.59669 292.89989,183.35646 294.20067,183.73341 C 294.92333,184.21388 296.83934,182.25099 295.20067,182.37648 C 293.60106,182.87355 295.20067,180.18166 295.61278,179.94142 C 296.76317,179.79249 297.59716,178.51515 298.91942,179.14357 C 300.39989,179.89357 300.95067,178.8213 301.78465,177.64943 C 302.89207,176.76222 304.05418,176.96486 305.14012,177.32228 C 306.41942,176.17726 307.06785,178.6841 308.20262,177.87062 C 308.96043,177.59523 311.38231,177.64455 310.97801,178.57619 C 310.20262,180.31398 312.2866,179.81252 313.02879,179.30031 C 314.19285,178.75881 315.30027,178.82228 316.56004,179.11525 C 317.61473,179.51955 318.68113,180.64455 319.6284,180.80861 C 318.66746,182.35646 319.9077,183.15236 319.91746,184.49904 C 318.43504,185.23488 319.10301,186.23342 320.22019,187.04299 C 321.51316,186.89748 320.2905,188.30276 321.68894,189.04445 C 322.13816,190.84816 324.40769,190.07326 325.00925,191.61916 C 323.80222,193.61037 326.04831,192.5425 326.94284,192.98342 C 329.05612,193.06057 327.59909,194.17141 329.09128,194.90285 C 331.11667,195.61037 328.32566,196.22219 327.66745,196.99709 C 326.33151,197.83596 324.80222,197.53566 323.49753,196.95314 C 322.02683,196.30666 321.1948,198.74318 322.77292,199.32863 C 323.5444,200.20412 323.28269,201.12306 323.56198,202.61476 C 324.06003,203.82765 325.21042,204.6172 323.00143,204.34328 C 321.85495,205.02199 320.48385,204.14748 319.59518,205.23293 C 318.80612,206.08352 317.12643,207.17092 317.37838,208.44973 C 318.94088,210.19534 316.32174,210.25784 315.70455,208.85744 C 314.58736,208.19728 313.2651,209.48781 312.30611,208.70168 C 311.00923,209.71975 310.08541,209.18215 309.43697,207.76272 C 308.37447,207.38186 307.09908,209.82766 306.49556,208.38381 C 305.14009,208.46242 304.50533,207.4219 303.144,208.10988 C 302.14986,206.86183 301.2397,209.8672 301.38228,207.86476 C 300.26314,207.20851 298.72798,208.4424 298.43697,207.19093 C 298.01314,206.23585 296.16353,207.04347 295.1108,206.46925 C 293.77877,206.33644 292.62057,205.91261 291.36275,205.69825 C 289.82369,205.27589 288.23775,205.95802 286.68306,205.56104 C 285.30415,206.14649 283.74751,205.42139 282.44283,205.98877 C 281.80221,207.13135 280.44674,208.27979 279.33736,207.69971 C 277.72213,207.9961 277.53267,208.09815 278.3647,205.99903 C 279.09908,204.40528 277.20064,203.23585 276.05025,203.22315 C 275.46822,202.31153 277.4565,200.58985 278.52681,200.53565 C 280.45259,200.88721 280.32173,198.42335 279.54439,197.05225 C 278.95068,195.36816 278.41553,193.59473 277.75146,191.98438 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Belarus" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
				<path d="M 295.28662,230.57422 C 296.23779,229.91699 296.65967,229.61719 298.05029,229.87256 C 299.0581,230.0542 299.92334,228.93506 300.97217,229.47656 C 301.96631,229.3042 302.98975,230.22754 303.80029,230.83789 C 305.16357,230.66797 304.98388,231.05469 305.38427,231.65039 C 306.13427,231.14404 307.89013,231.03369 308.1245,232.69092 C 309.16552,232.50586 310.29833,232.86084 309.94091,233.81836 C 309.91552,234.86572 308.90185,236.30274 310.64013,236.64111 C 311.31982,237.45556 312.50146,236.51465 311.8999,238.30322 C 311.72607,238.68359 312.16943,239.92334 313.31592,240.24121 C 314.84717,240.42041 313.56592,242.40088 314.26123,242.72656 C 315.90967,243.5459 313.89795,243.54004 313.18701,243.61523 C 313.2749,242.05078 311.6792,244.67773 311.40771,242.80419 C 310.18896,243.08788 310.28076,243.69237 309.66943,242.33642 C 307.70459,242.53466 308.82373,244.02978 308.53466,245.22656 C 308.92724,246.60205 307.03857,245.96826 307.05419,247.4082 C 305.52294,247.46826 306.5288,249.7334 305.11864,249.38867 C 303.91161,249.8706 303.57762,248.67627 303.89208,247.57812 C 302.95849,245.12207 305.44286,242.72119 304.08935,240.34423 C 303.94287,238.38134 301.98974,238.62206 301.30029,237.09716 C 299.74951,235.34521 298.58154,233.23583 297.4624,231.07861 C 296.73975,230.89795 296.02686,230.32129 295.28662,230.57422 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Moldova" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>

			</g>
			<g id="g113">
				<path d="M 184.62842,197.12012 C 185.45264,198.44873 184.021,200.23926 183.4624,200.77149 C 181.5874,200.04004 182.01123,203.00489 183.6499,202.06055 C 185.20459,203.45606 182.67138,203.84278 182.71826,205.36182 C 181.51514,206.39063 180.02685,206.04151 178.82959,206.13526 C 176.60889,206.56495 179.00732,207.37842 179.11475,208.81983 C 178.72217,210.26856 179.24952,211.07422 177.82373,211.72022 C 178.60498,212.38575 178.25928,214.35108 176.43896,213.72071 C 176.03076,212.66016 178.02294,210.75098 175.80615,210.36231 C 174.51513,209.85792 173.46631,210.43458 172.54248,208.98047 C 171.45264,208.93945 170.61279,208.86817 169.22998,209.1001 C 168.71436,209.92725 166.88818,209.68604 165.69873,209.32276 C 164.3999,208.41407 163.35693,207.65284 165.48389,206.81837 C 167.26123,205.54689 169.01319,204.01368 169.64014,201.52149 C 169.87842,199.83399 171.31397,198.9961 172.56983,199.37012 C 174.73389,200.58887 172.39405,201.1543 172.46045,202.07227 C 171.52881,203.90137 173.71826,203.25342 174.95264,203.83936 C 175.69092,203.32032 178.18311,201.57862 176.07569,201.45118 C 174.90967,200.47462 176.69092,199.438 174.25733,199.68067 C 174.07374,198.28712 174.46827,196.7461 176.01514,196.68165 C 177.82178,195.54835 179.83936,196.28419 181.75733,195.66651 C 182.76904,195.58447 183.60498,197.2583 184.62842,197.12012 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Netherlands" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
				<path d="M 158.24951,211.26904 C 159.93896,210.30957 161.7124,208.9497 163.6499,209.7456 C 165.01904,209.59667 166.08935,209.15966 167.50146,209.65771 C 168.93896,209.5498 169.37646,209.14209 170.85302,208.81738 C 171.75732,209.16894 173.10302,208.61133 173.73583,210.27636 C 174.78271,209.62353 176.89989,210.33495 176.92138,211.62206 C 175.75146,213.32909 176.56396,213.99608 178.23974,213.78026 C 179.58935,214.26219 180.44482,216.8203 178.88818,217.666 C 177.9292,217.63475 176.26513,218.51463 176.57959,220.19627 C 178.04639,221.48436 176.88037,222.12059 175.50732,222.12645 C 174.51513,222.1079 173.59716,220.0742 172.22802,220.27147 C 170.68896,220.67577 172.20654,216.32909 170.71825,218.48534 C 170.19286,219.28563 167.92723,219.65282 167.63036,218.68846 C 168.06005,217.10057 167.44677,216.30565 165.81786,216.43016 C 164.62059,216.05858 163.62255,215.62987 162.49169,214.8867 C 162.22021,212.21824 160.78271,214.37449 159.64794,213.71141 C 158.9585,213.07959 158.56592,212.2207 158.24951,211.26904 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Belgium" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
				<path d="M 177.02881,222.08105 C 177.93506,220.70019 175.4624,219.89892 177.08545,218.3916 C 178.54248,216.67578 178.68506,219.12646 179.85889,219.79931 C 182.16358,219.84033 179.94873,221.20995 180.49366,222.50488 C 179.41357,222.09375 178.15186,222.375 177.02881,222.08105 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Luxembourg" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
			</g>
			<g id="g121">
				<path d="M 280.12646,110.89014 C 278.56787,110.71387 276.9624,111.84961 275.47998,111.46631 C 274.11865,111.06006 272.78467,109.19678 271.44092,110.57129 C 269.66162,111.26367 269.03076,114.31397 266.87842,113.77149 C 265.28272,113.93702 264.52295,115.13428 266.14014,116.21045 C 265.44678,117.35498 263.32764,117.60693 263.0835,118.45801 C 263.58936,119.33008 266.68897,120.2251 264.73389,121.00928 C 262.74951,121.67823 262.27686,124.71338 260.18897,125.13379 C 258.65967,125.75879 257.12061,126.97363 255.58545,127.21387 C 254.20654,125.81592 253.20654,127.87061 252.19287,128.65821 C 250.51709,128.87012 249.10693,129.97852 248.01904,131.41749 C 246.76709,131.63233 244.79443,130.82569 245.93115,133.06739 C 245.04443,134.81837 243.6206,134.18116 242.25537,133.79542 C 242.73779,135.45851 243.88232,136.50343 242.97998,138.31642 C 242.90576,139.85402 240.03467,138.95753 241.24951,141.27931 C 241.29639,142.81886 241.69092,144.57521 242.21631,145.45656 C 241.07373,146.31935 244.35498,145.69679 244.84717,146.63429 C 246.44678,145.85988 247.17139,148.38624 248.48584,149.05909 C 249.91943,149.35645 251.02295,149.79835 251.79053,151.18165 C 253.27881,152.6753 250.4253,152.38575 249.71241,153.50196 C 248.04444,154.04884 246.17921,155.56202 244.53077,154.40284 C 242.73585,154.3711 240.92921,153.11622 239.20069,153.50977 C 237.7046,152.86866 236.48585,154.81299 238.81983,154.07227 C 239.98389,154.43213 241.34717,154.86084 242.43311,155.36377 C 243.60108,156.05518 244.60499,155.51856 245.8628,155.31787 C 246.94874,154.71777 248.49952,155.10937 249.21827,154.54834 C 250.65772,155.88281 246.80225,154.66895 248.18702,156.30029 C 246.67725,156.18066 246.08741,158.48779 244.8003,157.96191 C 244.93507,155.22558 244.06007,157.50586 243.33936,158.46923 C 242.01905,159.41601 241.17725,159.10058 240.14795,159.70214 C 238.93506,159.72411 236.44287,159.35985 238.02881,161.31249 C 239.50733,161.41503 239.77881,164.49267 238.58154,164.96386 C 236.31592,164.54052 238.67138,166.33105 238.03857,167.21581 C 239.44677,168.3164 236.59716,169.49413 237.10107,171.2495 C 236.97998,173.13524 235.45263,174.42772 234.6538,175.9912 C 233.93896,178.46337 232.70068,176.49462 231.39599,176.86766 C 230.07763,177.5576 228.62646,176.90868 227.24365,176.94139 C 227.02685,178.46239 224.70263,177.45116 224.43896,179.63768 C 225.20849,180.65526 224.94482,182.85252 223.09716,181.86815 C 221.39404,181.5454 219.72411,183.041 217.97607,182.34032 C 216.07959,182.583 217.00927,181.09325 217.76318,180.03856 C 216.51318,178.93016 215.44482,177.58934 214.50927,176.1035 C 216.20263,175.66405 215.66161,174.96922 217.08154,174.32225 C 216.26318,173.52049 215.37451,172.79539 214.3042,172.01366 C 212.90576,171.59081 213.04443,168.44384 211.45068,168.71581 C 212.14404,166.96288 209.83545,166.187 210.1206,164.93212 C 211.29443,163.42382 210.8374,161.84521 209.07372,162.68798 C 208.51122,161.66503 207.11864,161.9497 207.42138,159.57763 C 206.75927,158.33788 206.81591,155.979 208.32372,157.46142 C 208.97216,159.55663 210.35302,157.28564 210.4956,155.95898 C 209.61865,153.99169 210.23583,153.23535 211.34912,152.1914 C 211.65576,150.79345 214.0249,151.4414 214.56787,149.92626 C 214.68701,148.18017 215.69482,146.94628 214.1831,145.54345 C 212.34716,143.77392 214.02294,143.64257 215.54833,143.44091 C 216.81395,142.06054 216.69677,140.37109 214.79247,140.29345 C 213.41552,139.94775 211.98583,138.79833 213.01122,137.03124 C 214.16552,135.18749 212.21434,134.18554 211.83739,132.77147 C 212.41747,131.04735 212.66942,129.16307 212.9995,127.41942 C 214.69677,124.27147 217.97802,123.06835 220.9702,123.59422 C 222.06981,123.52879 224.08153,123.65867 224.31786,122.14842 C 224.32763,120.48875 222.42333,119.81737 222.07372,119.18358 C 223.82177,116.71092 226.812,114.7036 226.55419,110.99413 C 226.1538,108.63183 228.15771,109.14647 229.41942,109.10497 C 231.72997,107.35351 234.01317,105.37645 236.26317,103.62206 C 237.26903,102.38427 235.08739,100.45458 236.96239,99.74218 C 238.65575,98.23827 240.31786,95.74609 242.67723,96.62939 C 244.12645,96.75732 246.26317,97.4707 246.80809,95.26074 C 246.39207,93.1748 247.48778,92.11084 249.06786,93.14111 C 251.59911,93.85937 254.17724,94.38769 256.75341,94.7417 C 258.13036,93.48633 258.01708,91.12402 258.58739,89.31934 C 260.41747,89.14161 262.44677,88.92334 263.78856,90.74073 C 266.61473,93.02735 269.93895,94.13428 273.31981,94.42872 C 274.96043,94.50343 276.21239,95.90772 277.48583,96.98683 C 277.10302,98.69923 277.24755,100.41017 278.44872,101.5796 C 279.2495,102.93409 280.40184,104.82228 279.1206,106.29298 C 277.97412,107.48927 278.78662,109.29493 279.81201,110.1797 C 279.92139,110.38721 279.99756,110.74609 280.12646,110.89014 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Sweden" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
				<path d="M 268.88037,15.41626 C 263.58545,15.34595 258.27099,15.22412 252.99365,15.66138 C 251.38623,15.35205 249.77881,15.04248 248.17138,14.73438 C 249.48583,13.5752 251.02099,13.10328 252.5581,12.66138 C 254.0249,11.48584 255.61669,10.57202 257.1831,9.60742 C 259.01904,10.70898 260.76513,12.16919 262.91162,12.01562 C 265.34717,11.91943 268.01514,11.29833 270.16748,13.08789 C 271.61475,12.64038 272.84326,11.7439 273.95264,10.60937 C 275.76123,9.47265 276.29639,9.82885 275.23584,12.05786 C 274.91943,14.01587 277.46826,13.38086 278.37646,12.781 C 280.37255,11.50244 282.86474,10.35986 285.04443,11.51513 C 286.31396,13.57201 288.55029,12.76904 290.37646,12.7644 C 292.7124,12.47168 295.13037,12.64721 297.38232,13.30957 C 299.60498,14.3418 297.43505,14.896 296.22021,15.33203 C 292.44482,16.80859 288.60107,18.18213 284.61083,18.31225 C 281.98388,18.53588 279.57372,20.23998 276.89599,19.70312 C 272.37841,19.61987 267.86279,19.5354 263.34521,19.45239 C 262.76513,17.37451 265.39013,18.25244 266.39794,17.63818 C 267.50537,17.63013 268.04834,16.11035 268.88037,15.41626 z M 219.28467,15.29346 C 218.97608,17.30786 220.11475,18.21826 221.69092,17.97364 C 222.94873,17.9314 224.81201,19.08326 225.07373,16.8567 C 225.25732,15.13038 227.46826,15.18678 228.55225,15.51954 C 231.06006,16.68336 232.96241,19.2732 235.66944,19.8296 C 237.8296,19.58253 236.59913,18.00489 235.37647,17.15772 C 233.92139,15.65552 234.64209,14.39698 236.30616,14.01392 C 237.83546,13.40674 239.51319,14.34327 241.02491,14.64307 C 242.48389,14.68995 243.97413,14.49536 245.34132,15.24073 C 244.91163,16.82618 244.34718,18.43043 246.37648,18.29444 C 247.70265,17.62403 249.31984,16.17823 250.5757,17.78956 C 253.3882,20.19532 257.00539,19.53224 260.13429,20.9148 C 260.98976,21.10938 264.09913,22.18165 261.71241,22.35279 C 258.74561,23.48707 255.43702,22.75831 252.63233,24.49024 C 251.45655,26.80591 250.16749,29.30323 248.26905,30.74805 C 246.67921,30.92725 244.99561,30.79248 243.82178,32.33252 C 242.53858,33.00732 242.42725,35.11792 241.6753,35.83618 C 238.81983,37.11841 235.88038,35.3418 233.06397,34.69482 C 230.71827,34.06787 228.47413,33.07421 226.28663,31.8894 C 228.15577,30.0249 230.64796,30.979 232.86671,30.56176 C 234.97023,30.43749 237.07765,30.32738 238.95265,29.03954 C 236.70265,27.60155 234.13038,28.83202 231.71242,28.78295 C 229.23976,29.07104 226.75734,29.13329 224.27492,29.19311 C 222.37062,27.5664 223.48976,27.34594 225.2593,27.42822 C 229.6636,26.52343 234.17532,26.21509 238.41555,24.40698 C 235.49953,23.73437 232.47805,23.59131 229.6968,22.26587 C 227.40188,22.55908 225.89797,25.09961 223.56203,25.32349 C 221.20851,26.15332 218.65187,25.51807 216.47414,24.33203 C 214.56984,23.40747 212.46437,23.11426 210.7925,21.5874 C 212.24172,21.18213 213.69094,20.77636 215.1382,20.37109 C 214.00929,19.40551 212.94289,18.03906 211.49758,19.05273 C 210.07766,19.62939 208.355,19.93872 207.31399,18.32397 C 205.16555,17.16137 206.86477,16.36108 208.31399,15.93335 C 210.61672,15.70117 212.90579,15.42822 215.21438,15.56397 C 216.56201,15.34473 217.94092,15.40234 219.28467,15.29346 z M 207.4917,156.80273 C 206.80811,155.41992 204.78858,157.60449 204.26318,155.30761 C 204.5581,153.97363 203.50341,152.42138 202.94482,154.78271 C 203.39404,155.86083 201.8042,157.39257 200.87646,157.58691 C 199.53271,157.31836 198.29248,157.35156 197.07177,158.34277 C 196.96825,159.55566 194.96239,160.00439 194.04443,160.80127 C 192.86279,161.6499 191.29443,162.11377 190.35302,163.2002 C 189.57763,164.09424 187.94482,163.49415 186.85107,163.90235 C 185.59716,163.71241 183.80615,165.0459 183.00341,163.57618 C 181.83349,163.28126 180.27099,164.05177 181.52099,162.8672 C 179.52685,162.60255 177.86279,160.98048 175.84521,161.00294 C 174.26904,159.9297 175.14013,158.27247 175.27099,157.47218 C 176.25927,158.66359 176.97607,157.59474 178.55224,158.65822 C 176.63427,157.44631 181.18115,157.16847 178.41162,157.40529 C 176.89014,158.29006 176.35889,156.04347 178.21826,155.91554 C 181.20654,154.90529 176.26123,156.04347 177.93896,154.75685 C 179.95458,152.28175 176.65771,156.25539 176.89599,154.33693 C 175.88232,153.18166 176.60497,156.2881 174.66943,155.47072 C 174.38623,154.16603 173.31982,156.36086 172.84131,153.81105 C 174.09522,151.69337 174.88233,153.8921 174.87256,152.97072 C 176.56201,153.5967 175.85108,152.48439 177.49561,152.48439 C 179.646,151.59279 178.75928,151.78371 177.07178,152.14943 C 174.75928,152.15724 176.03076,151.25978 177.10889,150.30373 C 178.021,148.54836 175.10498,149.49367 174.21241,149.54885 C 172.02882,149.01467 173.84132,148.12844 174.99366,147.355 C 176.18507,145.85305 173.21436,147.05275 172.62257,146.22219 C 171.41749,144.87112 174.32765,143.68362 174.34327,143.35207 C 172.5171,142.93459 172.51515,141.53566 173.06202,140.15627 C 172.28663,137.94875 174.62647,138.55324 175.71827,138.2383 C 178.146,138.67385 176.09718,137.34719 174.9878,136.93459 C 174.521,135.25197 177.146,136.10305 177.78468,134.96877 C 178.7046,133.9175 180.9253,135.84182 181.27687,133.73342 C 181.53859,131.91115 183.67531,133.43557 184.77882,133.35842 C 186.54054,133.56545 187.37843,132.24172 185.06202,132.21438 C 183.07374,131.94485 183.8589,129.8887 185.58936,130.61477 C 187.32178,130.90823 189.14991,129.84036 190.72608,131.06497 C 190.39991,129.15237 192.25928,129.15335 192.86085,127.75931 C 194.1714,126.73831 195.64991,128.01224 196.66163,127.66898 C 197.38233,126.13138 199.40577,126.23685 199.92335,124.77933 C 200.46827,122.35208 203.05226,121.95462 204.64015,120.72904 C 205.78663,119.38968 207.05617,120.11625 208.37453,120.314 C 209.9468,119.81156 208.17141,118.18363 210.39211,117.8638 C 211.61086,117.49808 212.17531,115.15677 213.42922,115.6348 C 215.23586,116.62064 215.86281,113.67093 214.10305,113.45072 C 213.81985,112.83988 215.7886,111.28617 216.20071,110.12455 C 218.1011,110.96879 218.29446,109.59379 219.17141,108.50394 C 221.17922,108.75833 221.38625,107.51175 219.49368,106.88431 C 217.94876,106.22025 220.2554,104.1973 221.2261,105.01077 C 222.96829,105.05081 224.15579,104.85159 222.18704,103.29153 C 223.07571,102.81594 224.75149,102.63186 225.89602,102.00589 C 227.52102,101.85257 228.39602,101.38626 226.7886,100.42044 C 228.16946,99.8262 229.43118,98.53519 230.96829,99.34476 C 231.59329,99.24027 234.26126,98.74027 233.21243,97.72171 C 231.73391,96.97415 234.58938,95.92044 235.15774,95.53372 C 236.15188,96.64261 237.58157,97.12503 238.56008,95.58304 C 237.61281,93.53226 238.08938,93.40433 239.92531,93.62845 C 242.96437,93.55667 239.07765,92.20365 240.3882,91.64652 C 241.55031,90.92142 242.96437,90.95756 243.53468,89.4639 C 244.55812,88.52396 245.84718,89.25833 246.85695,88.6221 C 247.57765,86.60306 248.45265,86.6055 249.89992,87.24612 C 251.26711,86.72708 252.5757,86.97122 253.86476,87.60501 C 255.83156,88.43362 256.98585,85.87894 258.17531,84.45169 C 259.75343,82.51761 259.71242,84.99319 258.92531,86.34769 C 258.9507,87.1597 261.30031,85.27396 261.60695,84.1138 C 262.57961,83.13675 264.33937,83.85501 265.2925,82.40628 C 266.39211,81.39066 267.73195,83.63089 268.68117,83.32376 C 269.64211,82.11575 270.51906,80.09427 272.15383,80.88528 C 273.61672,80.64065 274.82961,82.4429 276.08352,82.4136 C 277.31008,80.88186 278.61868,78.59085 280.62454,78.8262 C 282.07181,79.47122 282.73001,77.15628 284.11282,76.9678 C 286.28274,76.14407 288.58743,75.92288 290.85305,76.06204 C 289.5425,77.23392 287.52688,77.65677 286.77883,79.48831 C 285.80031,81.76565 288.01906,81.84378 288.83742,80.23489 C 290.83547,78.54983 292.89015,76.79202 295.2593,75.94827 C 295.66946,77.18704 294.50149,80.43069 296.42532,79.19339 C 298.3218,78.95657 299.21634,76.56937 300.65774,75.54056 C 302.05422,75.54398 303.73196,74.66165 304.93899,75.72122 C 303.3843,76.46145 303.32376,77.7305 302.59329,79.11136 C 303.26321,79.70218 305.32962,80.06839 305.58157,78.1348 C 306.73196,77.15335 307.92337,75.57914 309.43118,76.60697 C 311.94095,77.65092 314.48391,78.8184 317.19095,78.53129 C 318.84525,78.71293 319.83548,80.54789 317.59329,80.68266 C 314.47806,82.02006 311.07181,81.14799 307.82767,81.28032 C 306.92533,81.25688 309.70267,82.71587 310.43119,82.8145 C 311.90189,82.75444 312.70658,84.70024 314.1558,84.16313 C 316.29447,83.83256 318.55424,83.40971 320.56205,84.65336 C 318.77299,86.87406 316.11869,85.81352 313.92728,86.71879 C 311.48197,87.78422 309.59134,90.03422 307.1558,91.10063 C 306.83939,88.88237 309.10892,87.94926 309.59916,86.25493 C 309.16947,84.91313 307.27299,84.76665 306.14994,84.40337 C 304.21244,83.88872 302.41556,82.34771 300.34525,83.10357 C 297.56791,83.54791 294.49955,82.77105 292.11869,84.9483 C 290.55619,85.80621 290.29838,87.80523 289.92533,89.56646 C 289.50541,91.17339 287.55814,90.95074 286.49174,91.78277 C 285.38627,93.26373 284.20658,92.62896 282.92533,91.8775 C 281.63431,91.05963 280.29056,90.78912 278.87455,91.28131 C 276.45072,91.68561 273.81596,91.94928 271.48978,90.95758 C 269.60697,89.62164 267.92923,87.46539 265.68509,87.15387 C 264.26712,87.32135 263.23978,89.19635 261.98587,89.35358 C 260.90775,89.38629 258.74954,88.5401 258.45657,90.10456 C 257.95071,91.63288 258.06595,94.14655 256.56985,94.72272 C 253.46633,94.26374 250.38235,93.53815 247.33547,92.65583 C 246.39797,93.77839 247.39016,95.99323 245.8257,96.78425 C 243.5425,97.16511 240.83351,95.40632 239.02101,97.81892 C 238.22804,98.97663 236.24757,99.63777 236.21828,101.11531 C 237.07961,102.59578 236.37453,104.18953 235.0093,104.65828 C 233.0425,106.02791 231.29641,108.01082 229.24563,109.10408 C 227.99954,109.04109 226.21047,108.81013 226.59719,111.00252 C 226.84133,114.81014 223.72219,116.80428 221.96438,119.38045 C 223.25344,119.71395 224.15188,120.87361 224.45071,122.39315 C 222.26712,124.83211 218.92141,122.54208 216.41751,124.17196 C 214.56009,125.10946 212.51517,126.9786 212.70462,129.66708 C 212.43314,131.26425 211.15189,133.11923 212.71829,134.24667 C 214.14993,135.38339 212.75149,137.29599 212.61673,138.86142 C 213.6304,140.12363 215.13431,140.14267 216.28861,140.97568 C 217.10111,142.09384 215.25345,144.06113 214.02299,143.75498 C 212.20463,143.85947 214.94877,145.91514 215.11869,147.11631 C 214.77494,148.28135 214.93314,150.59336 213.37846,150.92442 C 211.62846,151.05381 211.60502,152.47374 210.23002,153.26378 C 209.82768,154.39269 211.08354,156.38097 209.89799,157.70177 C 208.89795,159.70215 208.521,156.85205 207.4917,156.80273 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Norway" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>

				<path d="M 307.14404,91.10059 C 307.11084,92.45313 305.67724,94.36084 307.14404,95.21631 C 308.98779,96.01416 310.97021,96.24317 312.60693,97.66651 C 314.21631,98.40137 314.47412,99.58253 312.78076,100.42774 C 311.51709,101.42725 310.06201,102.11963 308.99756,103.44385 C 311.02686,105.80664 313.11475,108.11377 314.43701,111.16406 C 314.52295,112.64648 312.83545,113.6206 312.55029,115.12402 C 311.8706,117.2207 313.99365,118.57617 314.8706,120.07763 C 315.52099,121.30908 317.29833,122.25243 316.86083,123.91406 C 316.04833,124.99365 313.56395,125.72119 315.72606,126.75927 C 317.8452,127.99218 320.47411,128.21972 322.14989,130.33984 C 323.32762,132.53564 321.00731,134.39404 319.84325,135.77246 C 315.20458,138.87305 310.67919,142.26562 306.07567,145.46826 C 305.45848,147.08203 303.57762,146.65088 302.33934,147.14648 C 300.81786,146.96826 299.82762,148.65722 298.54246,147.46533 C 297.25926,147.78613 296.45848,148.73779 295.08348,147.95508 C 294.68895,145.3208 294.97606,148.4834 293.40379,148.63721 C 291.85106,148.04883 291.1284,150.06446 290.11863,149.14453 C 289.07175,148.49756 287.87449,150.00244 286.53074,149.96728 C 285.72215,150.16992 283.97605,149.85253 283.06785,150.96093 C 282.14597,151.25732 280.51512,150.90966 279.54246,151.17529 C 278.27293,151.68847 276.73191,151.86914 275.47019,151.44629 C 273.15378,151.08057 275.60105,148.40039 273.61667,149.0625 C 271.99753,149.27686 271.27097,149.72461 270.98386,148.54932 C 269.68698,148.80811 268.46433,147.64795 267.19675,147.40528 C 265.49167,146.54786 265.53464,143.82325 266.20456,142.10987 C 266.85104,140.37647 265.98386,138.97364 264.7905,137.94385 C 264.2905,136.9585 266.33738,134.80078 264.6948,134.00733 C 262.79832,133.96534 263.8198,131.68018 265.07175,131.28077 C 267.0698,131.1504 265.52292,128.18214 267.58152,128.80909 C 268.80613,129.271 270.36863,129.53321 271.08933,127.93018 C 271.72995,126.60157 271.89792,124.0586 273.26316,126.01758 C 274.77488,125.68262 275.94675,124.00098 277.32761,123.15039 C 279.40573,121.67969 281.46433,120.12549 283.5073,118.61865 C 284.90964,117.75488 286.38035,117.37842 287.94675,117.67871 C 288.54831,115.91601 285.91941,116.05908 287.3198,114.16064 C 287.83152,112.2246 285.25535,112.57861 284.19675,112.39111 C 282.79245,112.05566 281.68308,110.48681 280.11472,110.89013 C 279.65574,109.64794 277.853,108.37499 278.81784,106.89062 C 279.83542,105.62695 280.02878,103.84374 278.97018,102.51367 C 278.37252,101.05908 276.87838,100.08887 277.33932,98.24658 C 277.97604,96.42676 275.90573,95.74804 274.90573,94.92676 C 272.62057,93.94824 270.05417,94.23438 267.75925,93.14405 C 265.81589,92.25245 263.99948,90.90479 262.30613,89.52344 C 262.85105,88.86573 264.43113,87.47608 265.61863,87.16309 C 268.21824,87.39161 269.93308,90.39649 272.31004,91.30323 C 275.14402,91.97462 278.04442,91.46143 280.87254,90.94727 C 282.29637,91.46631 283.80613,92.53858 285.15574,92.76709 C 286.48582,91.55078 288.12644,91.08203 289.65183,90.33301 C 290.36081,88.52735 290.15378,86.07813 291.91355,85.10059 C 294.4155,82.65625 297.74167,83.60743 300.69871,83.04297 C 303.03269,82.34668 304.95066,84.56983 307.24168,84.62988 C 308.27098,85.04931 310.67527,85.8457 308.97996,87.31445 C 308.15576,88.46289 306.88232,89.38379 307.14404,91.10059 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Finland" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
			</g>
			<g id="g129">
				<path d="M 398.71436,306.55859 C 397.23194,305.729 396.71631,308.88574 395.32959,307.76562 C 395.4292,306.29296 394.08936,304.6206 393.01514,305.99365 C 391.75147,306.44482 390.33936,305.28711 388.99561,305.7041 C 388.03077,304.15527 386.22803,306.91504 385.71436,305.54492 C 384.83936,304.91308 383.81592,307.21972 382.52491,307.13086 C 380.37452,307.83838 378.15186,307.89941 375.98194,307.27148 C 373.35303,307.74951 371.18897,310.10156 368.44874,310.17627 C 365.78272,311.19922 363.31983,308.59424 360.69093,308.76074 C 358.31202,310.30273 355.50929,310.4751 352.94093,309.55029 C 351.23781,308.9165 351.96241,311.79004 352.58351,312.76025 C 352.07765,313.10449 350.70265,314.25439 350.01515,315.10742 C 348.92531,315.57275 347.33742,315.13232 346.90577,313.47607 C 346.79054,312.02783 349.17139,311.87304 349.28077,310.44091 C 348.66944,308.10937 347.38233,309.7954 346.23194,310.26318 C 346.13038,310.97412 344.72413,312.16699 343.69092,311.16894 C 342.25928,310.11767 340.29639,309.15087 338.92725,310.88085 C 337.64209,311.53905 337.09131,312.89501 336.3667,313.78905 C 335.37451,312.72362 333.85889,314.48534 332.60498,314.46874 C 330.19873,314.66308 327.73389,313.86425 326.10693,311.62841 C 324.25732,309.87597 321.79834,309.11913 319.47802,308.87792 C 317.71825,308.42919 317.39404,310.31688 317.35107,311.99608 C 317.43505,314.5742 315.48193,312.55174 314.38818,313.27928 C 312.78271,313.95897 310.45263,314.07616 309.88818,311.66698 C 309.29052,308.96239 308.50341,310.53026 307.2163,310.20311 C 306.14403,308.97606 304.57958,309.01952 303.59325,310.37645 C 301.562,310.77635 304.31005,307.89012 302.71044,308.05956 C 301.60888,307.7119 299.687,308.67382 299.09716,307.4702 C 300.14794,306.97704 301.07372,305.34471 298.88427,305.0786 C 297.37255,304.76464 298.91943,302.4453 298.28075,301.37645 C 296.97802,301.27147 296.04247,299.35741 294.71239,300.16844 C 293.17137,300.06639 294.4702,296.19823 295.56005,298.36473 C 297.02685,299.03856 297.77099,297.61375 296.51317,296.64256 C 294.11864,295.66014 298.71434,295.74119 297.312,294.44627 C 295.61278,294.18602 297.08934,293.18992 295.80419,292.08689 C 294.12646,292.11521 298.66552,289.99753 296.56786,289.95115 C 295.10302,290.03318 293.63036,290.88035 292.16356,290.68699 C 292.79637,289.57957 292.15575,287.68211 293.08544,286.999 C 294.03075,286.49705 294.75146,285.09226 296.05419,284.47947 C 297.16942,284.92478 298.6538,282.96873 299.36474,284.54295 C 300.04638,285.21092 303.21044,285.25486 301.63232,283.98143 C 301.4038,283.02391 303.94287,283.8784 302.88037,284.54637 C 304.97021,284.25926 307.08935,284.18309 309.16357,284.69041 C 310.48388,283.35936 305.94873,283.92723 308.5288,282.70994 C 310.30614,282.33152 312.16357,282.51316 313.88427,281.87889 C 312.60693,281.54979 310.94482,282.5869 310.12646,281.17577 C 308.16357,280.86669 309.48193,277.94139 310.9038,278.87352 C 312.65185,279.15526 314.57568,279.44286 316.22802,278.96434 C 318.07568,279.72313 320.2495,280.41209 322.06982,279.36424 C 322.40771,278.04246 323.56787,277.62059 324.85693,276.98875 C 328.73388,274.4824 333.19287,272.71482 337.62255,273.80955 C 339.437,274.16551 341.35497,274.51951 342.91747,273.08396 C 343.31395,274.22556 344.20263,275.83005 345.56591,275.874 C 346.81786,276.42722 348.58739,274.4531 349.04052,276.62888 C 349.55614,278.24363 351.09911,278.91208 352.33544,277.99314 C 354.21825,278.03757 355.40771,280.58201 357.4038,280.01316 C 360.12841,279.95457 362.86669,281.47703 365.53466,280.14695 C 368.10107,279.02634 370.67138,280.91453 373.30028,280.39793 C 375.31786,279.89061 377.3452,278.99266 379.1577,277.85252 C 380.1909,276.49412 381.8745,277.58543 383.21434,277.45066 C 385.03465,278.3657 386.7202,275.00242 388.36278,276.9199 C 390.05419,278.5742 392.08348,280.05808 393.35887,282.12302 C 393.33153,283.55466 391.46629,285.2739 392.76903,286.55124 C 394.28075,287.62936 396.62255,286.28903 397.75341,288.34909 C 398.58935,289.92038 395.24169,288.58688 396.16161,290.96921 C 394.47802,291.22116 394.26513,292.89548 395.14989,294.39548 C 394.85497,295.46677 395.1245,297.91013 396.19091,297.53415 C 397.75341,298.53122 395.57568,300.03024 395.42529,301.38962 C 396.90381,302.12546 396.62646,302.71384 397.05029,304.53366 C 397.52295,305.77246 399.01318,305.06348 398.71436,306.55859 z M 302.71045,273.48145 C 303.68311,274.3462 303.09522,276.46045 304.74561,276.80616 C 306.11475,277.89454 307.97803,277.70948 309.32178,278.78321 C 308.96826,280.62842 307.44873,281.07032 306.12842,280.37794 C 304.73389,279.53321 303.41748,279.9839 302.10889,280.43312 C 300.72412,280.08156 299.33545,280.605 298.9917,282.42287 C 297.33936,283.17189 295.57178,283.81252 294.31592,285.29494 C 292.92725,286.58058 292.63623,287.19435 292.91553,284.93068 C 293.96241,284.52394 295.90381,283.00392 293.72412,282.98537 C 291.91553,283.31838 291.68896,281.84621 292.88428,280.50295 C 293.36475,279.00783 295.03662,278.08693 295.37061,276.83742 C 293.95264,275.75148 293.51905,275.54299 295.26514,274.26662 C 296.46436,272.959 298.05811,273.00295 299.52686,273.46047 C 300.58545,273.46973 301.66553,273.46289 302.71045,273.48145 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Turkey" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
				<path d="M 371.99951,263.9248 C 372.22803,261.79296 373.96631,262.84423 375.11279,262.83984 C 376.81396,262.66992 378.09717,264.59179 379.84521,264.05713 C 381.58935,265.86328 383.97607,264.93359 386.01904,264.9292 C 387.0542,265.97656 388.67138,264.64649 389.40381,266.2417 C 390.62061,267.50244 392.41553,267.15332 393.75928,268.2041 C 392.51319,269.5874 395.1167,269.45264 395.83545,269.14648 C 396.55811,267.90087 398.21436,267.73584 399.14404,268.78222 C 399.88232,267.26122 401.29834,268.84521 402.22802,269.23437 C 402.88232,270.03613 405.5581,268.97656 404.38622,270.92187 C 403.92138,272.30957 405.94481,273.11132 406.91356,273.37109 C 408.58153,273.00244 409.10301,274.47509 407.48778,275.33398 C 407.59325,276.94531 409.06395,277.32617 410.01903,277.87939 C 410.69091,279.92431 408.38817,279.96777 407.50341,278.9165 C 406.20653,279.19531 404.92333,278.59082 404.00927,277.51757 C 402.82958,276.69921 401.42333,277.15282 400.45458,278.16405 C 398.8452,278.78759 397.1245,278.68114 395.49364,278.81444 C 394.07762,279.2119 392.55223,279.3159 391.19481,279.5576 C 389.69872,278.51805 388.57762,276.3408 386.75145,276.30418 C 385.42333,277.19139 384.04442,277.95115 382.51317,277.38621 C 381.2534,277.13279 379.00536,277.79832 380.62645,275.77586 C 381.51317,273.59031 380.39012,271.08006 379.86864,268.92625 C 378.98583,266.54393 376.71434,265.6909 374.69481,265.51854 C 373.75732,265.1167 372.70264,264.70898 371.99951,263.9248 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Georgia" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
				<path d="M 346.9917,336.67676 C 347.32568,335.50049 344.87842,334.12256 346.67139,333.51514 C 347.96436,332.43946 348.17334,331.8291 348.01319,330.73926 C 349.42725,329.63867 349.92139,330.61621 350.22217,328.82764 C 351.45655,328.11377 351.74951,327.11426 350.92334,325.9541 C 349.42139,325.60498 351.02295,323.85205 349.01318,324.604 C 347.36474,325.21728 347.04834,322.58984 347.55029,321.23535 C 348.6206,319.59912 345.90185,318.6792 346.85888,317.50635 C 347.19091,316.62598 347.44286,314.61621 348.71435,315.14746 C 350.27099,316.19726 350.63427,313.75391 351.80615,313.35303 C 353.78271,313.42139 351.24756,311.25098 351.93506,309.89991 C 352.57178,308.86475 354.45264,310.33204 355.60108,310.10841 C 357.57178,310.47999 359.31788,309.30079 361.13233,308.71486 C 363.61085,308.99855 365.98975,311.13722 368.53272,310.17043 C 371.23584,310.07668 373.37256,307.74953 375.97217,307.28322 C 378.86279,308.08693 382.12647,307.85842 384.65576,305.94826 C 385.76904,303.88918 386.54248,307.57814 384.97412,307.94142 C 383.70264,309.36769 382.48779,311.11134 380.60107,311.10402 C 378.96826,311.41017 378.27685,313.72316 379.24169,315.3008 C 379.33349,318.60109 378.21239,321.78127 377.79442,325.03225 C 369.69286,330.17434 361.40184,334.88967 353.43309,340.3262 C 351.46239,340.21145 349.85497,338.28811 348.05418,337.38577 C 347.71045,337.15039 347.29834,336.91455 346.9917,336.67676 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Syria" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
				<path d="M 343.40771,360.62402 C 343.43896,358.98144 342.76709,358.31103 343.66748,356.52148 C 344.24365,354.80566 343.47803,352.82421 344.57764,351.27978 C 345.33936,349.44091 346.00928,347.44775 346.07373,345.41796 C 346.75928,343.23241 346.3335,340.7539 346.80615,338.5039 C 346.00342,335.90917 347.99365,337.09521 348.99365,337.98583 C 350.47607,338.71239 351.79834,340.36815 353.44482,340.32274 C 356.9917,337.8076 360.6831,335.59862 364.35107,333.35594 C 365.48388,335.72752 366.44482,338.33299 367.56787,340.62987 C 366.31982,342.98387 363.63428,343.12352 361.5249,343.84764 C 359.35107,344.53221 357.11474,344.95506 355.01904,345.95018 C 356.63232,348.17088 358.26123,350.37254 359.73974,352.72313 C 358.19872,354.48143 356.72997,356.58104 354.4624,356.79686 C 352.86084,356.76854 352.23584,358.36131 351.26513,359.54002 C 350.16747,360.43406 349.26904,362.21775 347.77294,361.36814 C 346.31982,361.12305 344.85693,360.85254 343.40771,360.62402 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Jordan" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
				<path d="M 347.84131,324.57373 C 348.71436,324.82568 351.18701,323.84863 349.93311,325.44922 C 351.04053,325.52197 352.05811,327.45654 351.01123,328.12354 C 349.26318,328.74561 350.67725,330.67139 349.00342,330.14747 C 346.75342,330.57032 349.12256,332.09864 347.25147,332.85059 C 346.56202,333.93116 345.17139,333.90528 345.04835,335.24268 C 344.09913,335.08301 342.06983,335.63184 343.56983,334.03223 C 343.81006,332.50147 345.16163,331.32959 344.9878,329.68555 C 346.54444,329.63623 345.44288,326.76075 346.81788,326.13965 C 347.15186,325.56201 348.34131,325.62354 347.84131,324.57373 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Lebanon" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>
				<path d="M 342.63037,359.21436 C 340.94873,355.23829 339.54443,351.11573 338.14014,346.9917 C 340.60498,344.52979 341.49561,340.65088 342.10498,337.00879 C 343.10889,336.91943 342.66943,333.86328 344.31006,335.31738 C 345.56201,335.91894 345.50537,332.42187 346.33545,335.08545 C 347.60889,335.99024 346.25733,337.10596 346.80225,338.49805 C 346.3335,340.92725 346.73389,343.59912 345.97608,345.93116 C 346.06006,348.6836 344.30225,350.97706 343.89991,353.54591 C 344.05029,355.47705 343.64795,357.69922 342.63037,359.21436 z " style="fill: rgb(254, 254, 233); stroke: rgb(100, 100, 100); stroke-width: 0.4252; stroke-miterlimit: 1;" id="Israel" onmouseout="mouseOut(evt)" onmouseover="mouseOver(evt)"/>

			</g>
		</g>
  
<rect id="countryNameBox" x="-10000" y="-10000" width="196" height="45" fill="white" fill-opacity="0.4" stroke="white"/>

<text id="countryName" x="-10000" y="-10000" fill="black">
</text>

</svg>





SVG Animation Example: Battle of the Bulge - SMIL Path Animation

SMIL for Battle of Bulge

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<!-- 
Map source: 
	http://en.wikipedia.org/wiki/Battle_of_the_Bulge
War Front Source: 	http://memory.loc.gov/ammem/collections/maps/wwii/essay1.html
      Note) War front is not accurate in my simulation.
-->
<svg
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   version="1.0"
   width="1001.1429"
   height="904.92358"
   id="svg2"
   style="display:inline">
  <defs
     id="defs4" />
  <g transform="scale(0.8,0.8)">

  <path
     d="M 752.57204,388.57628 C 749.29505,392.78862 750.09305,403.09254 749.41248,407.88471 C 748.73191,412.67688 744.67121,403.60775 740.98699,401.21453 C 737.30277,398.82131 735.48532,412.44379 733.26362,413.15064 C 731.04192,413.85749 696.60388,416.58101 693.59358,421.22507 C 690.58328,425.86914 690.28815,427.47878 688.42666,433.32965 C 686.44125,439.57004 684.4536,444.96452 681.65747,448.95899 C 678.86134,452.95346 675.80643,451.47494 672.88091,450.7143 C 669.95539,449.95366 667.02987,446.50155 664.10435,444.39518"
     id="path6363"
     style="fill:none;fill-rule:evenodd;stroke:#75afbc;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
  <path
     d="M 546.59384,175.89046 C 546.59384,175.89046 547.60981,184.37869 546.59384,187.80591 C 544.57429,194.61857 535.4016,200.94913 536.14287,208.01605 C 536.6263,212.62479 546.41731,214.3213 544.60793,218.58749 C 538.01629,234.12937 516.23782,241.4286 511.84045,255.32678 C 510.31018,260.16329 510.04629,267.67737 511.42915,272.55806 C 514.24201,282.48579 529.25718,296.94651 528.07877,307.20132 C 526.44055,321.45759 519.05893,331.62325 518.85136,346.72845 C 518.70859,357.11779 498.99262,368.0802 492.97432,374.48126 C 488.82821,378.89106 491.09439,384.62128 494.25811,389.31534 C 496.79941,393.08593 488.25495,398.90177 487.0166,403.27693 C 485.2318,409.58271 492.09228,420.04359 486.66554,423.71767 C 481.35211,427.31504 472.19012,412.52088 469.26389,418.23147 C 467.27701,422.10891 471.23313,429.22006 472.41312,432.94509 C 474.33396,439.00884 489.08936,432.11362 489.00251,441.48071 C 488.97802,444.12168 479.82115,451.06717 479.71486,462.32241 C 479.68341,465.65273 471.28404,467.67131 470.13638,470.7978 C 468.69699,474.71905 466.58299,478.93244 463.1857,482.65301 C 461.20952,484.81724 466.87736,492.34534 465.17161,493.9868 C 460.18987,498.78079 458.92794,508.27923 457.57904,511.09762 C 456.3934,513.57488 451.19081,510.19414 448.64245,511.21808 C 447.64585,511.61852 447.25244,512.98802 446.30548,513.49482 C 444.46701,514.47874 441.29522,512.73138 439.35481,513.49482 C 436.15216,514.75488 435.19928,516.56779 431.06011,520.38526 C 429.30831,522.00091 425.79196,521.50667 423.8186,522.8427 C 421.16189,524.64138 420.65483,528.37636 419.49573,531.36799 C 418.57622,533.74123 414.20196,537.45229 415.46367,539.66269 C 418.01288,544.12867 429.57748,538.84752 433.39708,542.29049 C 436.61873,545.19446 437.16533,552.76678 439.82634,556.19184 C 444.90428,562.7278 450.71513,560.86059 455.93386,567.2847 C 461.27949,573.86502 464.12183,590.92789 470.13638,596.90296 C 474.48075,601.21881 487.69158,603.17254 490.0557,603.5628 C 492.1751,603.91267 491.08041,607.80482 492.97432,608.81841 C 495.33807,610.08345 500.26213,608.81074 501.91091,610.92478 C 506.0633,616.2489 515.32722,622.97468 512.6527,626.34052 C 506.89593,633.58532 504.10728,639.23721 499.52404,644.96571 C 495.04133,650.56856 487.5875,648.96273 485.73281,648.76716 C 482.52845,648.42927 478.76699,653.26123 475.74304,654.37383 C 470.95767,656.1345 463.85777,655.58173 460.61814,659.5193 C 458.15048,662.5186 461.37124,667.6692 460.20684,671.37451 C 458.93757,675.41353 452.69358,678.30967 451.27025,682.297 C 450.46909,684.54138 451.90638,687.94401 451.27025,690.24063 C 450.34294,693.5885 445.34948,696.69645 445.31253,700.17017 C 445.26144,704.97317 452.27797,710.73579 451.50085,715.47578 C 450.92051,719.01555 445.91352,718.80174 444.31958,722.01516 C 442.59369,725.49459 444.94956,731.39493 443.32662,734.92356 C 442.44646,736.83723 438.36185,739.88833 438.36185,739.88833"
     id="path6365"
     style="fill:none;fill-rule:evenodd;stroke:#75afbc;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
  <path
     d="M 506.3792,248.3761 C 506.3792,248.3761 495.56405,251.22072 490.98841,250.36201 C 487.31995,249.67355 482.99669,246.7156 480.06592,244.40429 C 475.18053,240.55148 471.19124,232.68006 466.16456,229.0135 C 462.07148,226.02793 455.37545,224.53357 450.42272,223.46707 C 442.70563,221.8053 432.1707,223.75626 424.4605,222.06282 C 416.12893,220.2329 404.96233,215.87787 398.64369,210.14738 C 385.98475,198.66677 381.41725,173.57415 369.84803,160.99615 C 357.76303,147.8574 337.06297,134.91401 321.19328,126.73924 C 305.61516,118.71466 282.84387,112.49419 266.08433,107.37664 C 248.56702,102.0277 224.29391,98.028295 207.00357,91.985854 C 193.75784,87.356882 178.00508,80.015086 164.16869,72.840647 C 160.9755,71.184913 157.83989,69.795623 155.07913,67.94931 C 140.4807,58.18632 114.06517,62.332312 114.16237,63.686665"
     id="path6375"
     style="fill:none;fill-rule:evenodd;stroke:#75afbc;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
  <path
     d="M 538.97632,226.32547 C 538.97632,226.32547 522.86002,229.89698 517.30169,233.97827 C 511.29893,238.38588 504.46673,246.68059 502.40738,253.83735 C 499.43164,264.17881 501.09206,279.71655 505.38625,289.5837 C 508.92053,297.70476 527.23124,312.91811 527.23124,312.91811"
     id="path6373"
     style="fill:none;fill-rule:evenodd;stroke:#75afbc;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
  <path
     d="M 706.45943,177.87637 C 715.39602,194.04326 723.4467,217.54382 733.26919,224.04873 C 743.09168,230.55364 745.6038,234.31927 748.1635,241.9219 C 750.7232,249.52453 752.32638,246.6956 755.11417,249.36906 C 757.90196,252.04252 763.3888,253.67186 766.53315,256.31974 C 769.67751,258.96762 773.41427,266.94932 776.46268,278.6612 C 779.5111,290.37308 785.20632,312.28651 783.41337,319.37232 C 781.62042,326.45813 763.87859,333.60855 768.51905,339.23139 C 773.15951,344.85424 766.76164,347.56901 769.01553,349.65741 C 771.26942,351.74581 779.68733,347.57499 778.4486,350.88096 C 777.20987,354.18694 777.77352,362.63527 777.31023,365.61952 C 776.84694,368.60378 778.65825,378.72232 774.97326,379.32557 C 771.28827,379.92882 772.01447,374.0651 769.36659,372.90665 C 766.71871,371.7482 762.23034,371.05095 759.08599,372.37489 C 755.94164,373.69883 752.71211,377.99675 751.55366,380.14815 C 750.39521,382.29955 749.65293,384.57629 752.13531,387.38966 C 754.6177,390.20303 761.2374,394.17485 765.04372,396.32625 C 768.85005,398.47765 771.82891,398.64315 773.48383,400.29807 C 775.13875,401.95299 772.98735,405.42833 774.97326,406.25579 C 776.95917,407.08325 782.25492,404.10439 786.8887,405.26284 C 791.52249,406.42129 800.79006,411.55155 802.77597,414.6959 C 804.76188,417.84025 797.55675,423.65445 801.20135,426.46593 C 804.84595,429.27741 810.15455,433.51357 812.70551,436.04441 C 815.25647,438.57525 821.31111,433.76767 824.62096,434.76062 C 827.93081,435.75357 830.2477,439.51974 830.08221,443.49156 C 829.91672,447.46338 826.15054,451.54045 824.33012,456.83621 C 822.5097,462.13196 823.13152,470.63231 821.64209,473.77666 C 820.15266,476.92101 817.3393,474.27313 814.69142,476.75552 C 812.04354,479.23791 808.89919,486.35408 805.75483,488.67097 C 802.61048,490.98786 799.13514,489.99491 795.82529,490.65688"
     id="path6361"
     style="fill:none;fill-opacity:0.52156863;fill-rule:evenodd;stroke:#75afbc;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
  <path
     d="M 831.33525,901.91334 C 829.20968,901.91334 834.12421,881.59632 838.40632,872.61891 C 840.8852,867.42197 837.5793,859.25067 835.37586,853.9311 C 832.75175,847.59592 825.17436,844.06004 824.26419,837.26357 C 823.93989,834.84196 821.97556,830.60394 821.7388,828.1722 C 821.19611,822.59836 818.23727,819.29074 816.68804,812.00976 C 814.55467,801.98349 818.4398,784.85736 814.16265,780.18996 C 803.50613,768.56113 778.6984,760.39497 765.67533,748.37015 C 748.49669,732.50829 722.19946,715.04137 709.61187,695.33714 C 707.00004,691.24866 702.64934,685.915 703.29842,681.70008 C 704.77019,672.14289 701.31574,660.96848 703.29842,653.16328 C 705.08838,646.11675 716.65855,642.63764 719.7134,635.73814 C 722.97265,628.377 713.77249,614.99504 718.19817,610.9894 C 731.36568,599.07162 741.48941,583.41424 750.52305,570.5833 C 756.0866,562.6811 776.44056,550.93924 779.56494,541.79396 C 784.14497,528.38788 793.01814,518.49622 793.45453,513.00461 C 795.02181,493.28185 788.75049,476.31521 791.9393,463.50713 C 795.036,451.06903 798.12264,433.84839 796.99006,421.08073 C 796.34629,413.82351 794.39081,403.59914 789.919,397.84722 C 783.51558,389.61074 767.42102,382.14276 758.60426,379.1594 C 749.20735,375.97972 743.24787,373.05561 739.41137,366.53249 C 736.08781,360.88151 731.69329,353.20634 727.28954,348.34974 C 721.50318,341.96835 709.75206,337.39518 705.06618,330.167 C 692.8238,311.28261 678.09189,282.53795 669.71084,260.46647 C 666.59106,252.25053 666.50437,239.35454 669.71084,231.17205 C 673.77938,220.78966 693.86742,213.49553 692.94435,202.3827 C 692.34105,195.11944 687.45289,177.23906 689.91389,176.62381"
     id="path3447"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#f7d3aa;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
  <path
     d="M 812.64743,901.6608 C 814.0548,894.38927 825.52161,879.27667 823.7591,871.60876 C 821.37082,861.21843 809.6425,842.12669 808.10174,827.16205 C 806.85869,815.0889 811.97541,801.9114 806.08143,791.30164 C 797.30438,775.50206 766.41342,763.49379 752.54335,751.90568 C 746.29442,746.68485 743.37515,740.1572 736.88599,735.23817 C 721.62175,723.6673 699.437,704.91059 691.42912,686.24578 C 689.10914,680.83836 693.44943,672.93696 693.44943,667.05288 C 693.44943,661.16879 686.29683,653.35586 688.39866,647.85998 C 690.41223,642.5949 700.90678,641.72664 703.55095,636.7483 C 707.24963,629.78459 702.157,615.88086 707.08649,609.72671 C 726.2969,585.7437 746.16275,568.4871 759.61442,549.3701 C 762.49057,545.28263 763.79972,538.20352 763.65503,533.20766 C 763.36091,523.05197 756.96864,510.49861 756.07888,500.3777 C 755.03537,488.50796 760.03072,471.56905 754.56366,460.98175 C 749.8362,451.82673 737.87546,449.12805 728.29969,445.32439 C 721.8773,442.77331 712.00229,443.11026 707.08648,438.25332 C 702.3783,433.60152 700.3407,425.64351 701.02557,419.06042 C 702.30203,406.79078 719.07279,393.51481 719.20832,381.1797 C 719.26044,376.43657 714.25212,373.12128 710.62202,370.06802 C 705.77942,365.99493 697.06297,365.18801 691.9342,361.48173 C 682.93955,354.98178 674.98234,333.82883 671.47862,331.93477 C 662.84531,327.26773 656.08086,328.5094 651.5281,323.60101 C 645.99824,317.6392 639.40627,305.97369 639.40627,297.84212 C 639.40627,283.61187 657.35003,269.26528 660.61947,255.41571 C 662.70824,246.56754 661.69669,233.70597 664.66008,225.11113 C 667.54506,216.74371 676.38438,210.39178 678.80222,201.87763 C 681.05118,193.95818 676.27684,176.62382 676.27684,176.62382"
     id="path3193"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#f7d3aa;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
  <path
     d="M 248.47723,639.27368 C 230.00503,630.61551 223.31722,618.0292 212.11174,606.94879 C 206.05082,598.19414 199.98991,589.43948 193.92899,580.68483 L 151.50258,497.85232 C 124.56518,431.18225 74.973025,309.89362 71.195455,297.84212 C 67.417885,285.79062 57.877875,244.3201 57.053315,220.06037 C 56.228765,195.80063 55.538085,122.97597 55.538085,108.43852 C 55.538085,93.901055 62.272435,78.47066 67.659915,69.547646 C 73.047395,60.624631 79.445035,58.09925 86.852815,54.395358"
     id="path3185"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#b00000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:32, 4;stroke-dashoffset:0;stroke-opacity:1" />
  <path
     d="M 941.44187,249.35479 L 977.80737,229.15174 L 963.66527,206.92839 L 935.38097,199.85732 L 910.12717,228.14159 L 941.44187,249.35479 z"
     id="path3195"
     style="opacity:1;fill:#a7a9ac;fill-rule:evenodd;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
  <path
     d="M 999.14287,362.92349 C 942.95237,421.01873 839.16302,532.66955 829.05621,536.19905 C 819.09643,539.67721 608.27825,517.6035 595.36223,514.77048 C 582.92853,512.04325 385.5412,451.62734 371.16318,442.33175 C 356.06573,432.57105 100.39812,88.464466 100.39812,88.464466"
     id="path3181"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#b00000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
  <path
     d="M 95.944195,277.63906 L 111.09648,268.54769 L 119.17771,257.43601 L 110.08633,245.31418 L 105.03557,245.31418 L 94.934035,232.1822 L 88.873125,237.23296 L 83.822365,254.40556 L 76.751295,258.44617 L 77.761445,270.568 L 88.873125,272.5883 L 95.944195,277.63906 z"
     id="path3199"
     style="opacity:1;fill:#a7a9ac;fill-rule:evenodd;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
  <path
     d="M 99.984805,81.669477 L 108.06603,85.710087 L 114.12694,82.679629 L 133.31984,86.720239 L 134.32999,61.466426 L 120.18786,63.486731 L 99.984805,81.669477 z"
     id="path3201"
     style="opacity:1;fill:#a7a9ac;fill-rule:evenodd;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
  <path
     d="M 772.24133,523.10613 C 777.81652,523.71552 782.41367,513.87812 783.85808,508.45892 C 786.73899,497.65022 777.94155,482.76858 778.30224,471.58835 C 778.76224,457.33007 788.30978,439.28851 786.636,425.12134 C 785.53076,415.76636 782.88168,401.62084 774.76671,396.83706 C 766.67873,392.06919 750.65381,387.28338 740.42152,380.16955 C 731.75834,374.14662 730.59967,360.45257 724.76416,356.93604 C 703.34703,344.0299 694.72865,338.77638 680.31744,312.9944 C 673.84547,301.4159 669.01681,280.3294 665.16516,276.37638 C 661.08482,272.18865 650.30179,279.14854 648.49764,284.71013 C 646.44195,291.04713 645.36918,302.95072 648.49764,308.95379 C 653.25132,318.07541 672.47886,318.80188 679.30729,327.13654 C 683.77436,332.58896 684.97447,342.87067 689.40882,348.34974 C 696.7915,357.47176 712.24955,361.5726 721.7337,366.53248 C 727.56697,369.58308 726.94681,381.23434 726.78446,386.73554 C 726.54956,394.69532 719.01656,403.73382 717.18801,411.48428 C 716.06974,416.22414 714.07236,423.04721 715.67278,427.64672 C 717.25763,432.20149 721.97181,438.95356 726.78446,439.26347 C 734.44481,439.75676 745.14777,439.01813 751.5332,443.30408 C 756.16261,446.41138 761.62421,451.97566 764.16011,456.94114 C 766.97136,462.44577 768.15657,470.9634 768.20072,477.14419 C 768.26015,485.46533 762.03135,496.17248 763.14995,504.41831 C 763.98804,510.5963 766.04367,522.4287 772.24133,523.10613 z"
     id="path3449"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#f7d3aa;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
  <path
     d="M 989.92917,330.92462 C 989.92917,333.29566 988.00707,335.21777 985.63607,335.21777 C 983.26497,335.21777 981.34287,333.29566 981.34287,330.92462 C 981.34287,328.55358 983.26497,326.63147 985.63607,326.63147 C 988.00707,326.63147 989.92917,328.55358 989.92917,330.92462 z"
     id="path3453"
     style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#121513;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
  <path
     d="M 665.41769,306.93349 C 665.41769,309.30453 663.49558,311.22664 661.12454,311.22664 C 658.7535,311.22664 656.83139,309.30453 656.83139,306.93349 C 656.83139,304.56245 658.7535,302.64034 661.12454,302.64034 C 663.49558,302.64034 665.41769,304.56245 665.41769,306.93349 z"
     id="path3455"
     style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#121513;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
  <path
     d="M 706.83395,465.52744 C 706.83395,467.89848 704.91184,469.82059 702.5408,469.82059 C 700.16976,469.82059 698.24765,467.89848 698.24765,465.52744 C 698.24765,463.1564 700.16976,461.23429 702.5408,461.23429 C 704.91184,461.23429 706.83395,463.1564 706.83395,465.52744 z"
     id="path3457"
     style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#121513;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
  <path
     d="M 642.18419,483.20511 C 642.18419,485.57615 640.26208,487.49826 637.89104,487.49826 C 635.52,487.49826 633.59789,485.57615 633.59789,483.20511 C 633.59789,480.83407 635.52,478.91196 637.89104,478.91196 C 640.26208,478.91196 642.18419,480.83407 642.18419,483.20511 z"
     id="path3459"
     style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#121513;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
  <path
     d="M 669.96338,555.43102 C 669.96338,557.80206 668.04127,559.72417 665.67023,559.72417 C 663.29919,559.72417 661.37708,557.80206 661.37708,555.43102 C 661.37708,553.05998 663.29919,551.13787 665.67023,551.13787 C 668.04127,551.13787 669.96338,553.05998 669.96338,555.43102 z"
     id="path3461"
     style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#121513;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
  <path
     d="M 806.33397,715.5402 C 806.33397,717.91124 804.41186,719.83335 802.04082,719.83335 C 799.66978,719.83335 797.74767,717.91124 797.74767,715.5402 C 797.74767,713.16916 799.66978,711.24705 802.04082,711.24705 C 804.41186,711.24705 806.33397,713.16916 806.33397,715.5402 z"
     id="path3463"
     style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#121513;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
  <path
     d="M 671.47861,894.84227 C 671.47861,897.21331 669.5565,899.13542 667.18546,899.13542 C 664.81442,899.13542 662.89231,897.21331 662.89231,894.84227 C 662.89231,892.47123 664.81442,890.54912 667.18546,890.54912 C 669.5565,890.54912 671.47861,892.47123 671.47861,894.84227 z"
     id="path3465"
     style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#121513;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
  <path
     d="M 560.36183,630.68737 C 560.36183,628.31633 558.43972,626.39422 556.06868,626.39422 C 553.69764,626.39422 551.77553,628.31633 551.77553,630.68737 C 551.77553,633.05841 553.69764,634.98052 556.06868,634.98052 C 558.43972,634.98052 560.36183,633.05841 560.36183,630.68737 z"
     id="path3467"
     style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#121513;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
  <path
     d="M 537.6334,693.82192 C 537.6334,696.19296 535.71129,698.11507 533.34025,698.11507 C 530.96921,698.11507 529.0471,696.19296 529.0471,693.82192 C 529.0471,691.45088 530.96921,689.52877 533.34025,689.52877 C 535.71129,689.52877 537.6334,691.45088 537.6334,693.82192 z"
     id="path3469"
     style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#121513;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
  <path
     d="M 416.29316,577.20921 C 416.29316,579.58025 414.37105,581.50236 412.00001,581.50236 C 409.62897,581.50236 407.70686,579.58025 407.70686,577.20921 C 407.70686,574.83817 409.62897,572.91606 412.00001,572.91606 C 414.37105,572.91606 416.29316,574.83817 416.29316,577.20921 z"
     id="path3471"
     style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#121513;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
  <path
     d="M 845.57887,823.63778 C 845.57887,826.00882 843.65676,827.93093 841.28572,827.93093 C 838.91468,827.93093 836.99257,826.00882 836.99257,823.63778 C 836.99257,821.26674 838.91468,819.34463 841.28572,819.34463 C 843.65676,819.34463 845.57887,821.26674 845.57887,823.63778 z"
     id="path3475"
     style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#121513;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
  <path
     d="M 244.86459,621.49492 C 244.86459,623.86596 242.94248,625.78807 240.57144,625.78807 C 238.2004,625.78807 236.27829,623.86596 236.27829,621.49492 C 236.27829,619.12388 238.2004,617.20177 240.57144,617.20177 C 242.94248,617.20177 244.86459,619.12388 244.86459,621.49492 z"
     id="path3477"
     style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#121513;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
  <path
     d="M 277.00744,555.78064 C 277.00744,558.15168 275.08533,560.07379 272.71429,560.07379 C 270.34325,560.07379 268.42114,558.15168 268.42114,555.78064 C 268.42114,553.4096 270.34325,551.48749 272.71429,551.48749 C 275.08533,551.48749 277.00744,553.4096 277.00744,555.78064 z"
     id="path3479"
     style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#121513;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
  <path
     d="M 308.43601,577.20921 C 308.43601,579.58025 306.5139,581.50236 304.14286,581.50236 C 301.77182,581.50236 299.84971,579.58025 299.84971,577.20921 C 299.84971,574.83817 301.77182,572.91606 304.14286,572.91606 C 306.5139,572.91606 308.43601,574.83817 308.43601,577.20921 z"
     id="path3481"
     style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#121513;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
  <path
     d="M 389.86459,431.49492 C 389.86459,433.86596 387.94248,435.78807 385.57144,435.78807 C 383.2004,435.78807 381.27829,433.86596 381.27829,431.49492 C 381.27829,429.12388 383.2004,427.20177 385.57144,427.20177 C 387.94248,427.20177 389.86459,429.12388 389.86459,431.49492 z"
     id="path3483"
     style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#121513;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
  <path
     d="M 434.3453,902.92349 C 435.86606,901.4028 420.74379,882.16217 409.09149,878.67983 C 404.55598,877.32437 403.18665,888.32039 398.48489,887.7712 C 395.4749,887.41962 389.75932,883.50415 390.90874,880.70013 C 393.18429,875.1489 402.16705,870.03289 400.00011,864.53769 C 398.03332,859.55004 391.23097,856.683 386.36305,854.43617 C 379.43492,851.23844 368.60984,852.43289 361.61432,849.38541 C 356.88308,847.32432 353.32814,840.04879 348.48233,838.27373 C 346.20589,837.43985 342.39735,839.64944 340.40111,838.27373 C 334.79363,834.40932 335.69002,823.3203 330.80466,818.57575 C 325.51073,813.4344 316.27252,810.65817 309.08638,808.9793 C 302.41536,807.42078 299.08176,798.38801 289.89349,793.32194 C 284.27533,790.2243 271.58054,802.31586 263.62952,800.89808 C 258.73639,800.02556 254.15222,795.99556 252.51785,791.30164 C 250.87439,786.58162 255.24324,779.58209 254.53815,774.63412 C 253.94421,770.46618 248.6958,766.71666 248.47723,762.51229 C 247.94207,752.21818 261.57308,741.2005 259.08383,731.19756 C 256.21477,719.6684 236.44514,718.92272 233.32495,707.45898 C 231.61058,701.16031 239.59257,693.16423 238.37571,686.75085 C 237.20013,680.55504 244.5361,677.47561 246.962,672.10363 C 248.8699,667.87874 244.14286,659.05235 244.43662,654.42596 C 245.2318,641.90276 258.01026,628.60452 256.55845,616.54524 C 256.14546,613.11476 252.93058,609.76253 249.48738,609.47418 C 240.56976,608.72737 229.95341,616.20287 223.22342,622.10108 C 218.16308,626.536 215.62532,636.45609 210.09143,640.28383 C 204.30794,644.28422 197.98679,647.18891 194.93915,651.39551 C 190.83612,657.05883 196.25953,673.1511 189.88838,683.72039 C 187.97851,686.88874 184.24754,693.8237 179.78686,694.83207 C 148.718,701.85545 128.84344,715.50753 113.11679,719.07573 C 100.77491,721.87596 90.472945,713.86378 79.276675,707.96405 C 67.363105,701.68635 43.616605,708.16783 36.850265,706.95389 C 29.212105,705.58355 18.459425,688.28206 12.606605,677.15439 C 10.646805,673.42831 13.915395,665.95168 17.657365,664.02241 C 20.632475,662.48852 27.049035,666.01795 29.274125,663.51734 C 32.800745,659.55404 41.359865,651.97658 40.385805,647.85997 C 38.264385,638.89437 36.844515,623.71067 33.314735,617.05032 C 29.896025,610.59956 22.816195,624.21113 16.647215,619.07062 C 8.8189655,612.54748 31.227825,595.84684 23.718285,578.66453 C 20.285655,570.81045 42.691345,565.00785 42.406105,556.44117 C 42.191705,550.0019 32.461425,540.61092 26.243665,542.29903 C 22.544325,543.30339 24.962855,553.72709 21.192905,554.42086 C 16.956945,555.20039 13.362715,547.60895 13.111685,543.30918 C 12.506235,532.93886 2.5891355,524.14456 2.0000055,525.12644"
     id="path4509"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:16, 4, 2, 4;stroke-dashoffset:0;stroke-opacity:1" />
  <path
     d="M 65.639615,2.3725008 C 49.784545,28.209975 28.114865,47.566018 1.4949255,55.910586"
     id="path4511"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:16, 4, 2, 4;stroke-dashoffset:0;stroke-opacity:1" />
  <path
     d="M 345.45188,2.8775778 C 346.09998,2.6615458 355.39797,22.305068 359.59401,28.131391 C 364.17156,34.487444 380.55661,26.409186 384.34275,31.161849 C 388.97761,36.979895 378.33794,51.520376 384.34275,55.910586 C 388.40879,58.883332 393.50568,49.089808 398.48488,49.849671 C 409.32796,51.504404 423.32567,49.848681 432.83007,48.839518 C 436.13465,48.488642 440.15813,52.412658 443.43668,51.869976 C 449.57119,50.854561 452.29906,41.523232 458.08388,39.243069 C 459.35259,38.742991 462.62957,39.243069 462.62957,39.243069"
     id="path4513"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:16, 4, 2, 4;stroke-dashoffset:0;stroke-opacity:1" />
  <path
     d="M 578.79711,902.41841 C 575.56125,900.10708 594.79989,880.6593 599.50524,874.63922 C 603.22131,869.88484 586.67521,867.3433 583.84788,862.01231 C 580.42833,855.56468 586.37182,843.47961 581.82757,837.76865 C 579.35113,834.6564 570.63255,837.43864 569.20066,833.72804 C 565.98834,825.40361 566.97245,813.82993 560.61437,807.46408 C 556.97374,803.81899 548.32942,801.64264 545.46208,797.36255 C 541.22438,791.0369 541.44542,779.5752 542.9367,772.10874 C 543.81307,767.72098 550.71144,763.39549 550.00777,758.97675 C 549.31672,754.63727 536.90011,752.48818 539.40116,748.87523 C 542.38953,744.5583 546.63163,736.36294 546.97731,729.68233 C 547.51999,719.19457 566.99792,716.1193 570.71589,710.48943 C 573.55122,706.19608 566.72212,698.57347 568.69559,693.82191 C 570.59937,689.23815 580.17522,690.15729 580.81742,685.23562 C 582.65617,671.14386 581.54043,650.34532 591.9291,639.77875 C 596.94331,634.67867 607.06904,631.52955 611.122,625.63662 C 613.70509,621.88086 610.96251,612.76063 615.16261,610.9894 C 620.60177,608.69565 627.94097,602.70245 630.31489,600.3828 C 635.71407,595.10705 638.50743,621.20371 645.97226,620.08078 C 649.67296,619.52409 647.20807,610.2104 650.51794,608.46402 C 654.09385,606.57727 660.88047,608.5488 663.64993,611.49448 C 666.80657,614.85199 663.49392,622.89879 666.17531,626.64677 C 667.47703,628.46628 672.7413,630.1823 672.7413,630.1823"
     id="path4515"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:16, 4, 2, 4;stroke-dashoffset:0;stroke-opacity:1" />
  <path
     d="M 594.95955,176.62381 C 594.95955,176.62381 597.55716,194.06903 603.04077,198.34209 C 614.35391,207.15776 630.16584,192.7441 634.86058,197.83701 C 638.98009,202.3059 632.51462,212.01916 633.34535,218.04006 C 634.56015,226.84467 652.56993,225.43452 657.58901,232.1822 C 659.93503,235.3362 651.70208,239.87196 651.5281,243.79895 C 651.31762,248.54979 659.42742,254.06039 657.58901,258.44617 C 654.93491,264.77791 640.00011,261.20154 636.37581,267.03246 C 634.21019,270.51659 638.91529,276.86292 637.38596,280.66952 C 635.86604,284.45268 627.8231,285.71957 627.28444,289.76089 C 626.5459,295.30183 636.82796,299.85624 637.38596,305.41826 C 637.75953,309.14191 632.84027,317.03501 632.84027,317.03501"
     id="path4517"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:16, 4, 2, 4;stroke-dashoffset:0;stroke-opacity:1" />
  <path
     d="M 777.00001,859.35206 C 777.00001,859.35206 787.12292,851.68959 792.00001,849.35206 C 799.70046,845.66133 812.05631,845.54498 819.14287,840.78063 C 825.26776,836.66282 829.498,826.92652 834.85715,821.85206 C 840.86337,816.16491 851.55417,811.64934 857.00001,805.42349 C 860.06267,801.92218 860.08447,793.31553 864.49997,791.85206 C 870.36607,789.90785 878.21477,798.03821 887.35717,796.49492 C 892.80287,795.57564 901.14967,803.52515 906.28577,801.49492 C 911.03377,799.6181 900.60487,784.53137 906.64287,779.35206 C 914.53747,772.58011 919.55187,788.37112 921.99997,786.85206 C 928.11667,783.05669 918.76667,768.08367 923.78577,762.92349 C 926.71447,759.91242 934.25027,763.87079 937.71427,761.49492 C 943.36507,757.61925 943.30157,745.43404 949.14287,741.85207 C 957.08927,736.97926 974.28247,749.09173 979.14287,741.13778 C 985.52517,730.69322 956.29627,718.01347 958.07147,710.78063 C 959.48207,705.03313 975.24727,713.18042 986.99997,711.49492 C 989.27967,711.16798 995.58377,725.63039 997.71427,724.35206"
     id="path4521"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:16, 4, 2, 4;stroke-dashoffset:0;stroke-opacity:1" />
  <path
     d="M 924.14287,874.7092 C 927.20107,871.28128 928.70957,855.24104 924.14287,852.2092 C 918.43967,848.4228 906.77347,848.46626 900.57147,842.92349 C 895.69907,838.569 888.72737,829.68888 883.42857,828.99492 C 881.57017,828.75154 879.40157,832.66323 880.21427,834.35206 C 883.12337,840.39673 896.27647,846.02063 904.49997,850.78063 C 913.22317,855.8298 913.49237,865.61282 916.28577,870.78063 C 917.53887,873.09898 922.38847,876.6757 924.14287,874.7092 z"
     id="path4523"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#f7d3aa;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
  <path
     d="M 997.71427,741.49492 L 871.99997,840.06635 L 830.57144,857.92349 L 757.7143,875.78063 L 694.85715,902.2092"
     id="path4507"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#b00000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
  <path
     d="M 950.21427,902.2092 C 950.21427,902.2092 929.64907,896.35125 929.49997,889.7092 C 929.43697,886.89754 933.86297,883.21183 936.64287,883.63778 C 940.21707,884.18543 940.16297,895.55601 945.57147,896.13778 C 956.72437,897.33746 971.79957,901.86457 970.57147,902.56635"
     id="path4525"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#f7d3aa;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
  <path
     d="M 729.30984,792.81686 C 729.30984,792.81686 712.02983,812.4787 702.03572,812.00976 C 593.19524,806.90276 418.78259,745.78368 284.84272,727.15695 C 271.42935,725.29158 255.5483,692.81176 255.5483,692.81176"
     id="path4527"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#b00000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:32, 4;stroke-dashoffset:0;stroke-opacity:1" />
  <path
     d="M 998.01037,638.26352 C 932.01377,662.17046 815.39922,706.582 801.03067,708.9742 C 786.66212,711.36639 533.91943,705.33921 519.70319,703.92344 C 505.42838,702.50184 340.73783,660.48688 248.47723,639.27368"
     id="path3183"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#b00000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
  <rect
     width="534.38397"
     height="173.75954"
     ry="1.4979272"
     x="463.63306"
     y="2.8709259"
     id="rect4529"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
  <rect
     width="997.13544"
     height="900.92358"
     x="2"
     y="2"
     id="rect3179"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
  <path
     d="M 614.41612,185.22078 C 614.41612,185.22078 617.41482,176.85161 617.41482,176.85161 M 621.84948,188.24867 C 621.84948,188.24867 625.30543,180.31579 625.30543,180.31579 M 630.25385,191.82953 C 630.25385,191.82953 633.59696,183.84843 633.59696,183.84843 M 638.56408,195.33038 C 638.56408,195.33038 641.90718,187.34928 641.90718,187.34928 M 646.87431,198.83122 C 646.87431,198.83122 650.21741,190.85013 650.21741,190.85013 M 655.16909,202.33408 C 655.16909,202.33408 658.52508,194.35839 658.52508,194.35839 M 663.47366,205.84834 C 663.47366,205.84834 666.82965,197.87265 666.82965,197.87265 M 671.77823,209.36261 C 671.77823,209.36261 675.13422,201.38692 675.13422,201.38692 M 680.08279,212.87687 C 680.08279,212.87687 683.43878,204.90118 683.43878,204.90118 M 688.24761,216.42074 C 688.24761,216.42074 691.71491,208.49284 691.71491,208.49284 M 696.50214,220.0509 C 696.50214,220.0509 699.96944,212.123 699.96944,212.123 M 704.6041,223.72892 C 704.6041,223.72892 708.18499,215.85164 708.18499,215.85164 M 711.96677,227.33598 C 711.96677,227.33598 716.30063,219.84736 716.30063,219.84736 M 717.14263,231.53108 C 717.14263,231.53108 723.38031,225.5357 723.38031,225.5357 M 722.04731,237.50502 C 722.04731,237.50502 729.12771,232.53201 729.12771,232.53201 M 725.99788,244.09469 C 725.99788,244.09469 733.77832,240.30906 733.77832,240.30906 M 728.93631,251.08623 C 728.93631,251.08623 737.24746,248.68174 737.24746,248.68174 M 734.95846,262.33839 C 734.95846,262.33839 741.28844,256.44014 741.28844,256.44014 M 743.24156,269.23116 C 743.24156,269.23116 748.17402,262.12209 748.17402,262.12209 M 751.01016,274.33393 C 751.01016,274.33393 755.70305,267.06414 755.70305,267.06414 M 757.11327,278.91581 C 757.11327,278.91581 762.9386,272.51813 762.9386,272.51813 M 760.10889,283.20124 C 760.10889,283.20124 768.13056,279.96131 768.13056,279.96131 M 761.95841,290.10193 C 761.95841,290.10193 770.49857,288.7131 770.49857,288.7131 M 762.58203,297.84678 C 762.58203,297.84678 771.23405,297.73979 771.23405,297.73979 M 762.19565,305.85276 C 762.19565,305.85276 770.79861,306.77961 770.79861,306.77961 M 760.8154,313.19218 C 760.8154,313.19218 769.10164,315.6796 769.10164,315.6796 M 757.88738,319.99607 C 757.88738,319.99607 765.54761,324.0196 765.54761,324.0196 M 753.66138,327.13187 C 753.66138,327.13187 760.94537,331.80216 760.94537,331.80216 M 748.78035,334.40649 C 748.78035,334.40649 755.91728,339.29884 755.91728,339.29884 M 743.68484,341.80107 C 743.68484,341.80107 750.79971,346.72503 750.79971,346.72503 M 738.63958,348.6043 C 738.63958,348.6043 745.41739,353.98286 745.41739,353.98286 M 733.07548,355.4758 C 733.07548,355.4758 739.73902,360.99592 739.73902,360.99592 M 727.30239,362.43502 C 727.30239,362.43502 733.98216,367.93542 733.98216,367.93542 M 721.44064,369.67328 C 721.44064,369.67328 728.31233,374.93181 728.31233,374.93181 M 715.8095,377.32197 C 715.8095,377.32197 722.97399,382.17349 722.97399,382.17349 M 710.66084,385.60357 C 710.66084,385.60357 718.22718,389.79976 718.22718,389.79976 M 706.37833,394.87969 C 706.37833,394.87969 714.47377,397.93418 714.47377,397.93418 M 704.16151,405.88822 C 704.16151,405.88822 712.7775,406.67293 712.7775,406.67293 M 704.95284,417.55908 C 704.95284,417.55908 713.36321,415.5289 713.36321,415.5289 M 709.66484,428.16748 C 709.66484,428.16748 717.02149,423.61268 717.02149,423.61268 M 715.7465,436.30471 C 715.7465,436.30471 722.40647,430.7807 722.40647,430.7807 M 721.7733,443.25791 C 721.7733,443.25791 728.30915,437.58771 728.30915,437.58771 M 727.14339,449.67784 C 727.14339,449.67784 734.09826,444.53106 734.09826,444.53106 M 731.07174,455.80129 C 731.07174,455.80129 738.93815,452.19884 738.93815,452.19884 M 732.47961,461.15084 C 732.47961,461.15084 741.13066,461.00631 741.13066,461.00631 M 731.5455,468.12047 C 731.5455,468.12047 739.99045,470.00451 739.99045,470.00451 M 729.30636,476.33877 C 729.30636,476.33877 737.62397,478.72452 737.62397,478.72452 M 726.85172,485.94844 C 726.85172,485.94844 735.37803,487.41814 735.37803,487.41814 M 726.15415,496.95014 C 726.15415,496.95014 734.78257,496.3046 734.78257,496.3046 M 727.44301,506.77615 C 727.44301,506.77615 735.95093,505.20284 735.95093,505.20284 M 729.55914,516.17145 C 729.55914,516.17145 737.92793,513.97274 737.92793,513.97274 M 732.04888,525.12556 C 732.04888,525.12556 740.34011,522.64968 740.34011,522.64968 M 734.57961,533.66758 C 734.57961,533.66758 742.90207,531.30004 742.90207,531.30004 M 737.02926,542.34565 C 737.02926,542.34565 745.35172,539.97812 745.35172,539.97812 M 738.97837,550.56469 C 738.97837,550.56469 747.44267,548.7702 747.44267,548.7702 M 740.22361,558.44356 C 740.22361,558.44356 748.84534,557.71352 748.84534,557.71352 M 740.38144,565.98799 C 740.38144,565.98799 748.99763,566.77504 748.99763,566.77504 M 739.0021,572.16825 C 739.0021,572.16825 746.93793,575.6155 746.93793,575.6155 M 735.58473,577.91306 C 735.58473,577.91306 742.27422,583.40055 742.27422,583.40055 M 731.55737,581.59221 C 731.55737,581.59221 735.40139,589.34362 735.40139,589.34362 M 725.00344,583.24206 C 725.00344,583.24206 726.64576,591.73742 726.64576,591.73742 M 714.9889,585.66989 C 714.9889,585.66989 717.93582,593.80374 717.93582,593.80374 M 704.55331,592.92995 C 704.55331,592.92995 710.78736,598.93014 710.78736,598.93014 M 697.98627,601.13387 C 697.98627,601.13387 705.19804,605.91483 705.19804,605.91483 M 692.93231,609.23934 C 692.93231,609.23934 700.43745,613.546 700.43745,613.546 M 688.45058,616.95125 C 688.45058,616.95125 695.9044,621.34552 695.9044,621.34552 M 683.94259,624.0947 C 683.94259,624.0947 691.07989,628.98584 691.07989,628.98584 M 679.41041,629.37027 C 679.41041,629.37027 685.14395,635.84977 685.14395,635.84977 M 672.96905,634.26211 C 672.96905,634.26211 677.95136,641.33647 677.95136,641.33647 M 665.46792,639.54991 C 665.46792,639.54991 670.58585,646.52615 670.58585,646.52615 M 657.47144,646.57311 C 657.47144,646.57311 663.86014,652.40844 663.86014,652.40844 M 651.34789,657.00825 C 651.34789,657.00825 659.44591,660.05232 659.44591,660.05232 M 648.96708,667.63666 C 648.96708,667.63666 657.5446,668.77124 657.5446,668.77124 M 648.669,678.09947 C 648.669,678.09947 657.31295,677.71741 657.31295,677.71741 M 650.18632,688.52937 C 650.18632,688.52937 658.61247,686.56522 658.61247,686.56522 M 653.8656,698.49176 C 653.8656,698.49176 661.753,694.93372 661.753,694.93372 M 658.30751,707.09574 C 658.30751,707.09574 665.88389,702.91674 665.88389,702.91674 M 663.23529,715.29255 C 663.23529,715.29255 670.52022,710.62346 670.52022,710.62346 M 668.44177,723.12051 C 668.44177,723.12051 675.5033,718.11974 675.5033,718.11974 M 673.78144,730.56541 C 673.78144,730.56541 680.75506,725.44268 680.75506,725.44268 M 679.32288,737.88473 C 679.32288,737.88473 686.19467,732.62634 686.19467,732.62634 M 684.94499,745.10802 C 684.94499,745.10802 691.72998,739.73789 691.72998,739.73789 M 690.56465,752.20805 C 690.56465,752.20805 697.32552,746.80751 697.32552,746.80751 M 696.10271,759.22091 C 696.10271,759.22091 702.91604,753.88691 702.91604,753.88691 M 702.10628,766.67759 C 702.10628,766.67759 708.54602,760.8991 708.54602,760.8991 M 709.54274,773.68316 C 709.54274,773.68316 715.079,767.0333 715.079,767.0333 M 717.19551,779.50506 C 717.19551,779.50506 722.23786,772.47341 722.23786,772.47341 M 724.94603,784.80539 C 724.94603,784.80539 729.66844,777.55472 729.66844,777.55472 M 732.49215,789.7421 C 732.49215,789.7421 737.21455,782.49143 737.21455,782.49143 M 740.03081,794.6806 C 740.03081,794.6806 744.75777,787.43291 744.75777,787.43291 M 747.18558,799.54696 C 747.18558,799.54696 752.22453,792.51282 752.22453,792.51282 M 754.19058,804.77095 C 754.19058,804.77095 759.46098,797.90881 759.46098,797.90881 M 760.27228,810.03186 C 760.27228,810.03186 766.30649,803.83054 766.30649,803.83054 M 765.20079,815.49736 C 765.20079,815.49736 772.33394,810.60117 772.33394,810.60117 M 768.3645,821.88767 C 768.3645,821.88767 776.40962,818.70317 776.40962,818.70317 M 769.92207,828.0976 C 769.92207,828.0976 778.55503,827.53924 778.55503,827.53924 M 768.9306,833.18608 C 768.9306,833.18608 776.94904,836.4371 776.94904,836.4371 M 765.40298,840.53323 C 765.40298,840.53323 773.04249,844.59549 773.04249,844.59549 M 761.11761,848.12792 C 761.11761,848.12792 768.60842,852.45891 768.60842,852.45891 M 756.55466,855.48481 C 756.55466,855.48481 763.85147,860.13565 763.85147,860.13565 M 751.70306,862.93037 C 751.70306,862.93037 758.9261,867.69498 758.9261,867.69498 M 746.74108,870.41522 C 746.74108,870.41522 753.94276,875.21216 753.94276,875.21216 M 741.72681,877.91012 C 741.72681,877.91012 748.92849,882.70706 748.92849,882.70706 M 736.65375,885.67132 C 736.65375,885.67132 743.99875,890.24536 743.99875,890.24536 M 731.58468,894.4511 C 731.58468,894.4511 739.47863,897.99168 739.47863,897.99168"
     id="path5295"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#1821de;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
  <path
     d="M 554.14287,176.49492 C 554.14287,176.49492 556.75752,187.62648 555.57144,192.2092 C 553.94822,198.48093 541.49415,203.88352 543.42858,210.06635 C 544.31979,212.91484 551.69163,210.83379 552.7143,213.63777 C 555.14616,220.30549 545.35499,228.53712 541.28572,234.35206 C 534.92894,243.43582 518.28617,251.19697 517.00001,262.2092 C 515.93255,271.34889 524.90338,282.72339 531.28572,289.35206 C 538.70374,297.05638 532.71449,307.51332 536.28572,310.78063 C 541.31025,315.37756 552.48338,303.99913 559.14287,305.42349 C 563.3338,306.31986 564.22338,315.89318 568.42858,315.06635 C 575.90192,313.59694 588.68824,304.74899 595.2143,309.35206 C 597.72148,311.12047 595.40774,316.40099 598.07144,317.92349 C 604.8824,321.81647 618.43332,308.96021 630.57144,315.78063 C 637.838,319.86372 643.95528,329.99673 650.57144,335.06635 C 657.51406,340.38612 668.78882,344.54403 675.57144,350.06635 C 684.21517,357.10396 686.39777,373.99407 690.57144,378.63778 C 692.75851,381.07116 707.86633,369.47978 714.14287,378.99492 C 718.15462,385.07666 705.22051,393.22024 701.28573,399.35206 C 698.2304,404.11337 691.51277,408.94243 689.85715,414.35206 C 687.65869,421.5354 688.83556,433.14795 693.07144,439.35206 C 696.26139,444.02424 703.56649,444.31694 708.42858,447.2092 C 712.11188,449.40025 716.68721,452.89639 719.85715,455.78063 C 722.21338,457.92449 723.85575,463.12634 727.00001,463.63778 C 733.06031,464.62354 743.58813,447.63041 744.85715,453.63778 C 745.81341,458.1646 750.34502,468.03203 754.85716,473.99492 C 759.99323,480.78236 740.81204,490.04943 739.14287,498.63778 C 738.56471,501.61258 737.58847,508.10341 740.57144,508.63778 C 748.86278,510.1231 753.21948,513.7577 755.57144,518.63778 C 757.63713,522.92388 760.84312,530.76762 757.7143,534.35206 C 752.64135,540.16372 740.43319,532.19152 733.42858,535.42349 C 724.73356,539.43543 720.1397,551.80781 712.00002,556.85207 C 708.24499,559.17911 702.14896,559.34495 698.78572,562.2092 C 695.05838,565.38352 693.81368,572.46935 690.57144,576.13777 C 688.59998,578.36837 683.22113,579.49422 682.00001,582.2092 C 680.20723,586.19518 686.22283,592.34318 684.85715,596.49492 C 683.86175,599.521 676.84353,600.45604 677.00001,603.63778 C 677.9979,623.92789 670.08492,640.62744 668.78572,655.42349 C 667.36337,671.62209 681.26624,698.59363 682.00001,711.13777 C 682.70989,723.27342 686.00537,712.58913 693.78572,716.85206 C 699.4671,719.96495 706.00094,742.34851 709.85715,749.35206 C 712.49222,754.13781 722.3889,753.38014 726.28573,757.2092 C 730.04525,760.90334 730.04836,769.60452 734.14287,772.92349 C 738.09971,776.13087 746.32933,774.38992 750.57144,777.2092 C 754.3908,779.74752 756.08649,787.68074 760.57144,788.63777 C 769.41767,790.52546 780.52841,788.55339 787.7143,792.92349 C 792.14636,795.61885 796.80657,801.56773 798.42858,806.49492 C 800.5068,812.80796 798.02077,821.86479 796.28573,828.28064 C 792.67606,841.62853 777.71273,854.00874 772.7143,867.92349 C 768.33683,880.10961 757.09785,902.75061 756.28573,902.2092"
     id="path4519"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:16, 4, 2, 4;stroke-dashoffset:0;stroke-opacity:1" />
  <path
     d="M 617.18291,176.62381 C 615.77346,177.6809 684.27469,204.48322 714.15755,219.05022 C 726.40883,225.02235 735.15592,241.64583 737.39106,250.36495 C 740.3728,261.9965 760.95102,267.0892 766.68549,277.63906 C 771.68217,286.83159 771.64152,301.70021 769.71594,311.98425 C 767.5638,323.4783 757.51437,336.09433 751.02812,345.82436 C 740.20218,362.06437 720.72692,379.46837 714.15755,397.84722 C 712.3187,402.99169 711.72482,410.75519 713.1474,416.02996 C 717.02125,430.3938 737.34059,442.89169 740.42152,457.44622 C 742.71199,468.26658 734.23989,482.75224 734.36061,493.81171 C 734.60973,516.63354 751.23097,545.90346 748.50274,568.563 C 747.62732,575.83392 743.18469,583.27631 737.39107,587.75589 C 731.79425,592.08331 721.07256,590.93033 715.16771,594.82696 C 703.10078,602.78997 696.75765,623.15752 686.88343,633.71784 C 679.63933,641.46529 665.50184,647.0302 660.61947,656.44627 C 655.87454,665.59727 655.79926,681.21343 659.60932,690.79146 C 668.79766,713.8898 692.8139,741.05264 706.07633,758.47168 C 718.91654,775.33617 754.54637,789.7499 770.7261,808.9793 C 775.17952,814.27213 779.93259,826.64368 777.79717,833.22296 C 770.82133,854.71569 734.32867,899.18579 738.40122,901.91334"
     id="path3191"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#1821de;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
  <path
     d="M 498.43601,373.63778 C 498.43601,376.00882 496.5139,377.93093 494.14286,377.93093 C 491.77182,377.93093 489.84971,376.00882 489.84971,373.63778 C 489.84971,371.26674 491.77182,369.34463 494.14286,369.34463 C 496.5139,369.34463 498.43601,371.26674 498.43601,373.63778 z"
     id="path3473"
     style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#121513;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
  <path
     d="M 97.964495,78.639019 C 97.964495,78.639019 103.77175,62.343859 110.08633,56.920739 C 116.40091,51.497619 121.88693,47.593924 140.39091,47.32429 C 158.89489,47.054656 190.64881,56.942943 227.26403,70.557799 C 263.87925,84.172655 341.39348,120.52328 379.29199,143.79385 C 417.1905,167.06442 463.94125,203.23132 480.81232,220.06037 C 497.68339,236.88942 496.53528,237.75077 501.01537,245.31418 C 505.49546,252.87759 508.28225,262.60605 508.59151,269.55784 C 508.90076,276.50963 507.58136,289.76089 507.58136,289.76089"
     id="path3189"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#b00000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:32, 4;stroke-dashoffset:0;stroke-opacity:1" />
  <path
     d="M 918.20837,301.88273 C 883.52647,328.82013 823.85195,379.59248 814.16266,382.69493 C 804.57898,385.76356 758.27049,384.71818 730.32,385.72539"
     id="path3187"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#b00000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
  <path
     d="M 604.89465,86.676151 L 604.89465,97.208021"
     id="path4167"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#1821de;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
  <path
     d="M 597.75638,86.676151 L 597.75638,97.208021"
     id="path4169"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#1821de;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
  <path
     d="M 590.61812,86.676151 L 590.61812,97.208021"
     id="path4171"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#1821de;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
  <path
     d="M 583.47985,86.676151 L 583.47985,97.208021"
     id="path4173"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#1821de;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
  <path
     d="M 576.34159,86.676151 L 576.34159,97.208021"
     id="path4175"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#1821de;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
  <path
     d="M 569.20332,86.676151 L 569.20332,97.208021"
     id="path4177"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#1821de;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
  <path
     d="M 562.06506,86.676151 L 562.06506,97.208021"
     id="path4179"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#1821de;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
  <path
     d="M 554.92679,86.676151 L 554.92679,97.208021"
     id="path4181"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#1821de;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
  <path
     d="M 547.78853,86.676151 L 547.78853,97.208021"
     id="path4183"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#1821de;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
  <path
     d="M 540.65026,86.676151 L 540.65026,97.208021"
     id="path4185"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#1821de;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
  <path
     d="M 533.512,86.676151 L 533.512,97.208021"
     id="path4187"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#1821de;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
  <path
     d="M 526.37373,86.676151 L 526.37373,97.208021"
     id="path4189"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#1821de;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
  <path
     d="M 524.34379,115.45414 L 615.69556,115.45414"
     id="path6379"
     style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ff6600;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
  <path
     d="M 524.34379,86.658471 L 615.69556,86.658471"
     id="path6381"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#1821de;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
  <path
     d="M 612.03292,86.676151 L 612.03292,97.208021"
     id="path3205"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#1821de;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
  <path
     d="M 880.91537,143.18377 L 880.91537,149.50289"
     id="path4223"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
  <path
     d="M 806.52653,143.18377 L 806.52653,149.50289"
     id="path4263"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" />
  <path
     d="M 732.13768,143.18377 L 732.13768,149.50289"
     id="path4265"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" />
  <path
     d="M 657.74887,143.18377 L 657.74887,149.50289"
     id="path4267"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" />
  <path
     d="M 583.36004,143.18377 L 583.36004,149.50289"
     id="path4269"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" />
  <path
     d="M 620.57264,143.18377 L 620.57264,149.50289"
     id="path4271"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" />
  <path
     d="M 796.45489,150.20501 L 796.45489,156.52413"
     id="path4273"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" />
  <path
     d="M 750.11463,150.20501 L 750.11463,156.52413"
     id="path4275"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" />
  <path
     d="M 703.77441,150.20501 L 703.77441,156.52413"
     id="path4277"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" />
  <path
     d="M 657.43417,150.20501 L 657.43417,156.52413"
     id="path4279"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" />
  <path
     d="M 611.09395,150.20501 L 611.09395,156.52413"
     id="path4281"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" />
  <path
     d="M 507.43874,252.70557 C 507.43874,252.70557 506.27047,247.9318 506.27047,247.9318 M 475.95932,246.74278 C 475.95932,246.74278 479.35704,243.19235 479.35704,243.19235 M 455.73688,229.32358 C 455.73688,229.32358 457.11344,224.60574 457.11344,224.60574 M 427.34245,227.00377 C 427.34245,227.00377 427.76764,222.10764 427.76764,222.10764 M 397.88066,215.2836 C 397.88066,215.2836 400.86196,211.37687 400.86196,211.37687 M 380.44123,189.25917 C 380.44123,189.25917 384.90215,187.19655 384.90215,187.19655 M 367.02728,164.54003 C 367.02728,164.54003 370.72365,161.30148 370.72365,161.30148 M 345.32061,146.30858 C 345.32061,146.30858 348.12442,142.27202 348.12442,142.27202 M 320.48581,131.41339 C 320.48581,131.41339 322.79831,127.07672 322.79831,127.07672 M 293.85389,120.59884 C 293.85389,120.59884 295.43808,115.9464 295.43808,115.9464 M 265.81977,111.95162 C 265.81977,111.95162 267.23485,107.24488 267.23485,107.24488 M 237.49829,104.76391 C 237.49829,104.76391 238.62156,99.979169 238.62156,99.979169 M 208.56772,97.208376 C 208.56772,97.208376 210.12573,92.547135 210.12573,92.547135 M 180.7683,85.923395 C 180.7683,85.923395 182.85995,81.476002 182.85995,81.476002 M 154.02005,72.550993 C 154.02005,72.550993 156.51345,68.315811 156.51345,68.315811 M 128.20212,66.123349 C 128.20212,66.123349 128.11287,61.209613 128.11287,61.209613"
     id="path1082"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#75b0bd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.99215686" />
  <path
     d="M 539.08252,226.77039 C 539.08252,226.77039 537.94145,221.99002 537.94145,221.99002 M 513.8723,237.47141 C 513.8723,237.47141 510.46446,233.93018 510.46446,233.93018 M 501.55318,261.4653 C 501.55318,261.4653 496.65695,261.04259 496.65695,261.04259 M 505.53281,288.72595 C 505.53281,288.72595 500.97677,290.56801 500.97677,290.56801 M 523.84734,309.38277 C 523.84734,309.38277 520.57241,313.04747 520.57241,313.04747"
     id="path3087"
     style="opacity:1;fill:none;fill-rule:evenodd;stroke:#75b0bd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.99215686" />
  <text
     x="494.29657"
     y="40.673595"
     id="text7234"
     xml:space="preserve"
     style="font-size:28px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="494.29657"
       y="40.673595"
       id="tspan7236">ARDENNES  COUNTEROFFENSIVE</tspan></text>
  <text
     x="621.97687"
     y="69.460701"
     id="text7238"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="621.97687"
       y="69.460701"
       id="tspan7240">16 - 26  December 1944</tspan></text>
  <text
     x="636.95264"
     y="97.447105"
     id="text7242"
     xml:space="preserve"
     style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="636.95264"
       y="97.447105"
       id="tspan7244">ALLIED  FRONT LINE, 15 DEC</tspan></text>
  <text
     x="637.94562"
     y="119.2921"
     id="text7246"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="637.94562"
       y="119.2921"
       id="tspan7248" /></text>
  <text
     x="636.95264"
     y="119.29208"
     id="text7250"
     xml:space="preserve"
     style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="636.95264"
       y="119.29208"
       id="tspan7252">LIMIT OF GERMAN PENETRATION, 26 DEC</tspan></text>
  <text
     x="576.38245"
     y="140.15096"
     id="text7254"
     xml:space="preserve"
     style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="576.38245"
       y="140.15096"
       id="tspan7256">10</tspan></text>
  <text
     x="654.85687"
     y="140.15096"
     id="text7258"
     xml:space="preserve"
     style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="654.85687"
       y="140.15096"
       id="tspan7260">0</tspan></text>
  <text
     x="724.59491"
     y="140.15096"
     id="text7262"
     xml:space="preserve"
     style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="724.59491"
       y="140.15096"
       id="tspan7264">10</tspan></text>
  <text
     x="799.2583"
     y="140.15096"
     id="text7266"
     xml:space="preserve"
     style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="799.2583"
       y="140.15096"
       id="tspan7268">20</tspan></text>
  <text
     x="873.2757"
     y="140.14412"
     id="text7270"
     xml:space="preserve"
     style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="873.2757"
       y="140.14412"
       id="tspan7272">30</tspan></text>
  <text
     x="604.90497"
     y="170.90331"
     id="text7274"
     xml:space="preserve"
     style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="604.90497"
       y="170.90331"
       id="tspan7276">10</tspan></text>
  <text
     x="654.70074"
     y="170.90331"
     id="text7278"
     xml:space="preserve"
     style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="654.70074"
       y="170.90331"
       id="tspan7280">0</tspan></text>
  <text
     x="695.76025"
     y="170.90331"
     id="text7282"
     xml:space="preserve"
     style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="695.76025"
       y="170.90331"
       id="tspan7284">10</tspan></text>
  <text
     x="741.74506"
     y="170.90331"
     id="text7286"
     xml:space="preserve"
     style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="741.74506"
       y="170.90331"
       id="tspan7288">20</tspan></text>
  <text
     x="787.0838"
     y="170.90331"
     id="text7290"
     xml:space="preserve"
     style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="787.0838"
       y="170.90331"
       id="tspan7292">30</tspan></text>
  <text
     x="895.12067"
     y="143.12299"
     id="text7294"
     xml:space="preserve"
     style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="895.12067"
       y="143.12299"
       id="tspan7296">MILES</tspan></text>
  <text
     x="809.72662"
     y="169.93274"
     id="text7298"
     xml:space="preserve"
     style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="809.72662"
       y="169.93274"
       id="tspan7300">KILOMETERS</tspan></text>
  <text
     x="935.83173"
     y="346.67856"
     id="text7306"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="935.83173"
       y="346.67856"
       id="tspan7308">Bonn</tspan></text>
  <text
     x="663.76239"
     y="295.04495"
     id="text7310"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="663.76239"
       y="295.04495"
       id="tspan7312">Aachen</tspan></text>
  <text
     x="447.29846"
     y="363.55878"
     id="text7314"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="447.29846"
       y="363.55878"
       id="tspan7316">Liége</tspan></text>
  <text
     x="607.164"
     y="462.85419"
     id="text7318"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="607.164"
       y="462.85419"
       id="tspan7320">Elsenborn</tspan></text>
  <text
     x="547.58685"
     y="487.67804"
     id="text7322"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="547.58685"
       y="487.67804"
       id="tspan7324">Malmédy</tspan></text>
  <text
     x="607.164"
     y="545.26935"
     id="text7326"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="607.164"
       y="545.26935"
       id="tspan7328">St. Vith</tspan></text>
  <text
     x="763.0578"
     y="739.88831"
     id="text7330"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="763.0578"
       y="739.88831"
       id="tspan7332">Bitburg</tspan></text>
  <text
     x="850.43774"
     y="829.25415"
     id="text7334"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="850.43774"
       y="829.25415"
       id="tspan7336">Trier</tspan></text>
  <text
     x="603.1922"
     y="883.86664"
     id="text7338"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="603.1922"
       y="883.86664"
       id="tspan7340">LUXEMBOURG</tspan></text>
  <text
     x="127.58083"
     y="107.30865"
     id="text7342"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="127.58083"
       y="107.30865"
       id="tspan7344">ANTWERP</tspan></text>
  <text
     x="104.72931"
     y="297.03085"
     id="text7346"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="104.72931"
       y="297.03085"
       id="tspan7348">BRUSSELS</tspan></text>
  <text
     x="205.01767"
     y="553.21295"
     id="text7350"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="205.01767"
       y="553.21295"
       id="tspan7352">Dinant</tspan></text>
  <text
     x="300.34125"
     y="556.19183"
     id="text7354"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="300.34125"
       y="556.19183"
       id="tspan7356">Celles</tspan></text>
  <text
     x="393.67889"
     y="565.12842"
     id="text7358"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="393.67889"
       y="565.12842"
       id="tspan7360">Marche</tspan></text>
  <text
     x="391.69299"
     y="444.98102"
     id="text7362"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="391.69299"
       y="444.98102"
       id="tspan7364">Huy</tspan></text>
  <text
     x="517.79816"
     y="619.74084"
     id="text7366"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="517.79816"
       y="619.74084"
       id="tspan7368">Houffalize</tspan></text>
  <text
     x="440.34778"
     y="678.3252"
     id="text7370"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="440.34778"
       y="678.3252"
       id="tspan7372">Bastogne</tspan></text>
  <text
     x="260.62308"
     y="619.74084"
     id="text7374"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="260.62308"
       y="619.74084"
       id="tspan7376">Givet</tspan></text>
  <text
     x="726.71021"
     y="461.92099"
     transform="matrix(0.8113113,0.5846143,-0.5846143,0.8113113,0,0)"
     id="text7378"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="726.71021"
       y="461.92099"
       id="tspan7380">BELGIUM</tspan></text>
  <text
     x="731.78815"
     y="500.08408"
     transform="matrix(0.809701,0.5868426,-0.5868426,0.809701,0,0)"
     id="text7382"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="731.78815"
       y="500.08408"
       id="tspan7384">FRANCE</tspan></text>
  <text
     x="572.00592"
     y="-485.57767"
     transform="matrix(0.5681027,0.8229577,-0.8229577,0.5681027,0,0)"
     id="text7386"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#74afbc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="572.00592"
       y="-485.57767"
       id="tspan7388">Roer R</tspan></text>
  <text
     x="-360.27197"
     y="585.76489"
     transform="matrix(0.2043683,-0.9788941,0.9788941,0.2043683,0,0)"
     id="text7390"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#74afbc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="-360.27197"
       y="585.76489"
       id="tspan7392">Ourthe R</tspan></text>
  <text
     x="283.46036"
     y="3.3553784"
     transform="matrix(0.9011441,0.4335196,-0.4335196,0.9011441,0,0)"
     id="text7394"
     xml:space="preserve"
     style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#74afbc;fill-opacity:0.93333333;fill-rule:nonzero;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="283.46036"
       y="3.3553784"
       id="tspan7396">ALBERT CANAL</tspan></text>
  <text
     x="415.7338"
     y="797.96429"
     transform="matrix(0.7824611,-0.6226994,0.6226994,0.7824611,0,0)"
     id="text7398"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#b00000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="415.7338"
       y="797.96429"
       id="tspan7400">FIFTEENTH</tspan></text>
  <text
     x="442.4902"
     y="826.43829"
     transform="matrix(0.7951953,-0.6063534,0.6063534,0.7951953,0,0)"
     id="text7402"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#b00000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="442.4902"
       y="826.43829"
       id="tspan7404">SIXTH Pz</tspan></text>
  <text
     x="439.98975"
     y="814.12231"
     transform="matrix(0.7850887,-0.6193833,0.6193833,0.7850887,0,0)"
     id="text7406"
     xml:space="preserve"
     style="font-size:20.00000191px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#b00000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="439.98975"
       y="814.12231"
       id="tspan7408">XXXX</tspan></text>
  <text
     x="275.1525"
     y="954.68634"
     transform="matrix(0.7044216,-0.7097819,0.7097819,0.7044216,0,0)"
     id="text7410"
     xml:space="preserve"
     style="font-size:20.00000381px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#b00000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="275.1525"
       y="954.68634"
       id="tspan7412">SIXTH Pz</tspan></text>
  <text
     x="265.19156"
     y="982.02905"
     transform="matrix(0.6854462,-0.7281233,0.7281233,0.6854462,0,0)"
     id="text7414"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#b00000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="265.19156"
       y="982.02905"
       id="tspan7416">XXXX</tspan></text>
  <text
     x="247.00711"
     y="1001.7292"
     transform="matrix(0.6833456,-0.7300951,0.7300951,0.6833456,0,0)"
     id="text7418"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#b00000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="247.00711"
       y="1001.7292"
       id="tspan7420">FIFTH Pz</tspan></text>
  <text
     x="569.78833"
     y="928.52332"
     transform="matrix(0.9393866,-0.3428597,0.3428597,0.9393866,0,0)"
     id="text7422"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#b00000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="569.78833"
       y="928.52332"
       id="tspan7424">FIFTH Pz</tspan></text>
  <text
     x="576.22095"
     y="952.09338"
     transform="matrix(0.937523,-0.3479234,0.3479234,0.937523,0,0)"
     id="text7426"
     xml:space="preserve"
     style="font-size:19.99999809px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#b00000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="576.22095"
       y="952.09338"
       id="tspan7428">XXXX</tspan></text>
  <text
     x="574.82275"
     y="962.375"
     transform="matrix(0.9434195,-0.3316016,0.3316016,0.9434195,0,0)"
     id="text7430"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#b00000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="574.82275"
       y="962.375"
       id="tspan7432">SEVENTH</tspan></text>
  <text
     x="166.26221"
     y="1202.3451"
     transform="matrix(0.7410686,-0.6714293,0.6714293,0.7410686,0,0)"
     id="text7434"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#b00000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="166.26221"
       y="1202.3451"
       id="tspan7436">B</tspan></text>
  <text
     x="216.8988"
     y="1207.0624"
     transform="matrix(0.7853018,-0.6191132,0.6191132,0.7853018,0,0)"
     id="text7438"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#b00000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="216.8988"
       y="1207.0624"
       id="tspan7440">XXXXX</tspan></text>
  <text
     x="386.3884"
     y="1189.0035"
     transform="matrix(0.8539743,-0.5203152,0.5203152,0.8539743,0,0)"
     id="text7442"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#b00000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="386.3884"
       y="1189.0035"
       id="tspan7444">G</tspan></text>
  <text
     x="501.89813"
     y="671.20575"
     transform="matrix(0.9760303,0.2176348,-0.2176348,0.9760303,0,0)"
     id="text7446"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#b00000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="501.89813"
       y="671.20575"
       id="tspan7448">OBJECTIVE SEVENTH ARMY</tspan></text>
  <text
     x="305.32425"
     y="77.498062"
     transform="matrix(0.3850056,0.9229142,-0.9229142,0.3850056,0,0)"
     id="text7450"
     xml:space="preserve"
     style="font-size:20.00000191px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#b00000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="305.32425"
       y="77.498062"
       id="tspan7452">OBJECTIVE FIFTH Pz ARMY</tspan></text>
  <text
     x="183.30501"
     y="-38.829971"
     transform="matrix(0.9120993,0.4099694,-0.4099694,0.9120993,0,0)"
     id="text7454"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#b00000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="183.30501"
       y="-38.829971"
       id="tspan7456">OBJECTIVE SIXTH Pz ARMY</tspan></text>
  <text
     x="-63.788696"
     y="115.56264"
     transform="matrix(0.8251848,-0.5648629,0.5648629,0.8251848,0,0)"
     id="text7458"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#74afbc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="-63.788696"
       y="115.56264"
       id="tspan7460">Scheide R</tspan></text>
  <path
     d="M 4.440941,152.55604 C 4.440941,152.55604 13.265081,159.01702 17.349351,158.01729 C 21.665331,156.96085 22.561551,145.20975 26.782411,146.59832 C 29.798901,147.59068 30.083361,156.61062 34.726041,157.02434 C 37.606581,157.28103 43.009291,157.22664 43.105911,154.33631 C 43.242851,150.24011 39.761351,142.41095 42.173201,136.66878 C 43.709001,133.01231 34.187391,129.67546 34.726041,125.74629 C 35.228531,122.0809 40.732551,120.60202 44.159101,119.2069 C 54.682211,114.9224 71.946191,119.15693 80.838171,114.61815 C 90.825661,109.52017 86.973551,88.329772 93.515971,79.222867 C 98.115761,72.820079 114.16133,64.011275 114.16237,63.686665"
     id="path6367"
     style="fill:none;fill-rule:evenodd;stroke:#75afbc;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
  <path
     d="M 105.3712,68.912148 C 106.83256,67.868322 91.732431,57.080601 82.302641,52.473342 C 77.306141,50.032124 81.941751,39.722625 78.767081,35.156879 C 77.321591,33.077998 71.854261,30.39769 70.968861,28.025503 C 67.843611,19.652253 65.061151,9.7443298 58.060461,5.5988556 C 54.343841,3.3980516 47.801151,4.3621636 43.662631,5.5988556 C 38.200451,7.2310905 33.426841,16.773499 27.775361,16.024873 C 22.441421,15.318309 15.859911,2.6199936 15.859911,2.6199936"
     id="path6369"
     style="fill:none;fill-rule:evenodd;stroke:#75afbc;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
  <path
     d="M 113.72613,63.862196 C 114.2242,63.613162 92.409871,55.368363 87.849081,47.799401 C 85.947401,44.643418 93.067821,38.809627 90.827941,35.883953 C 87.711051,31.812751 77.082411,23.488263 74.444201,15.528396 C 73.315691,12.123513 73.451251,3.6129476 73.451251,3.6129476"
     id="path6371"
     style="fill:none;fill-rule:evenodd;stroke:#75afbc;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
  <path
     d="M 583.33313,149.492 L 881.21937,149.492"
     id="path6377"
     style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
  <text
     x="806.25507"
     y="213.802"
     id="text2760"
     xml:space="preserve"
     style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"><tspan
       x="806.25507"
       y="213.802"
       id="tspan2762">COLOGNE</tspan></text>
 </g>
  <g
     id="g6706"  transform="scale(0.8,0.8)">
  <path
       id="War Fronts"
       style="opacity:1;fill:none;fill-rule:evenodd;stroke:#ff6600;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" >
<animate dur="20s" repeatCount="1" fill="freeze" 
 attributeName="d" values=
"m 725.76576,432.93004 c 0,0 10.38792,11.34249 12.7576,18.42765 1.8749,5.60579 1.35949,11.8438 0.70876,17.71889 -0.40376,3.64532 -2.0431,7.05023 -2.83502,10.63133 -0.88061,3.98213 -1.91559,7.97595 -2.12628,12.04885 -0.1713,3.31153 0.2844,6.63389 0.70876,9.92258 0.49218,3.81428 1.07726,7.64002 2.12627,11.34009 0.89755,3.16583 2.67825,6.03908 3.54378,9.21382 1.13397,4.15938 0.93496,8.61427 2.12626,12.7576 0.84867,2.95169 2.70773,5.54978 3.54378,8.50507 1.23706,4.37278 1.7708,8.93589 2.12627,13.46636 0.33264,4.2395 0.68118,8.55998 0,12.7576 -0.23934,1.47489 -0.74583,2.91782 -1.41751,4.25253 -1.29636,2.57602 -3.52446,4.58717 -4.96129,7.08756 -1.68535,2.93286 -1.29547,7.57132 -4.25254,9.21382 -1.6651,0.92488 -3.7773,-0.92203 -5.67004,-0.70875 -2.74787,0.30963 -5.21286,1.8489 -7.79631,2.83502 -3.56583,1.3611 -7.44495,2.15143 -10.63134,4.25253 -1.67358,1.10355 -2.92584,2.74969 -4.25253,4.25254 -1.78269,2.0194 -3.32624,4.23811 -4.96129,6.3788 -1.43403,1.87751 -2.80567,3.8024 -4.25253,5.67004 -0.92644,1.19588 -1.92831,2.33288 -2.83503,3.54378 -1.72852,2.30839 -3.17345,4.8248 -4.96129,7.08756 -1.76367,2.23218 -3.71838,4.30897 -5.67004,6.3788 -2.75052,2.91707 -5.60913,5.73229 -8.50507,8.50506 -2.7779,2.65975 -5.89781,4.9691 -8.50507,7.79632 -1.82614,1.98019 -3.36154,4.2116 -4.96129,6.3788 -1.71267,2.32017 -3.48557,4.60991 -4.96128,7.08755 -1.35165,2.26934 -2.93692,4.51684 -3.54378,7.08756 -0.75991,3.21905 0,6.61505 0,9.92258 0,2.36252 -0.46765,4.77178 0,7.08755 0.96408,4.77409 3.53924,9.08674 5.67004,13.46636 1.06414,2.18723 2.37653,4.24481 3.54378,6.3788 1.67393,3.06033 3.05699,6.29128 4.96129,9.21383 2.9411,4.51372 6.3572,8.71881 9.92258,12.7576 1.76892,2.0038 3.93851,3.63384 5.67004,5.67004 4.71475,5.54433 12.7576,17.71889 12.7576,17.71889;
m 724.6859,434.91804 c 0,0 7.19548,17.00919 8.01866,26.06063 0.51798,5.69555 -0.43256,11.54091 -2.00467,17.03964 -1.72559,6.03554 -4.02798,12.19403 -8.01865,17.03964 -3.9509,4.79732 -9.57397,8.05895 -15.03498,11.02565 -9.10589,4.94678 -19.5765,6.86553 -29.06762,11.02565 -4.1055,1.79951 -7.61996,5.19992 -12.02798,6.01399 -6.28261,1.16026 -12.77131,-0.83628 -19.07382,-1.88306 -5.72167,-0.9503 -11.63551,-6.32817 -16.93889,-3.97983 -4.72837,2.09373 -7.96706,8.41496 -7.52361,13.5671 0.51581,5.99288 5.86099,11.526 11.31923,14.05352 4.94132,2.28815 10.88691,-0.53936 16.33088,-0.41519 6.32187,0.14419 12.76324,-0.0847 18.92271,1.34628 5.95312,1.38305 11.74164,3.76185 16.98926,6.89472 4.12889,2.46498 10.0622,4.50151 11.11776,9.19296 0.96742,4.2997 -2.84857,8.53385 -5.59881,11.97761 -2.93577,3.67608 -7.97656,5.1807 -11.14726,8.65618 -3.19333,3.50029 -4.27249,8.65859 -7.65384,11.97761 -3.5482,3.48279 -7.8918,6.59305 -12.71588,7.79631 -4.39614,1.09652 -9.03877,-0.67991 -13.5671,-0.83036 -4.47942,-0.14882 -9.04405,-0.91661 -13.44549,-0.0712 -4.67014,0.89702 -9.16805,2.87144 -13.22314,5.35561 -3.64969,2.23582 -8.22921,4.3936 -9.70024,8.41296 -1.40046,3.82653 0.94038,8.11414 1.88306,12.07835 0.7548,3.17413 1.80481,6.28149 3.00699,9.31457 1.52187,3.83967 3.6478,7.4145 5.30524,11.19762 1.22372,2.79316 2.4585,5.59102 3.42218,8.48421 1.23371,3.70388 2.04861,7.53474 3.00699,11.31922 1.00817,3.98108 1.40977,8.14513 2.88539,11.97761 1.61007,4.18166 4.77105,7.6428 6.42917,11.80564 1.92781,4.83993 2.52128,10.11351 4.00933,15.10621 1.49578,5.01864 2.29317,10.39496 4.94043,14.91338 2.31498,3.95127 2.41984,1.88305 9.26419,10.14492 3.61722,4.36637 3.78957,9.31953 6.60114,13.44549 2.98781,4.38458 0.70875,11.75527 10.73207,11.75527 10.02332,0 8.00784,-2.56365 11.8812,-2.1054 7.91738,0.93668 16.11897,-6.46478 16.11897,-6.46478;
m 722.99144,435.13188 c 0,0 3.12969,15.66597 2.97707,22.70799 -0.23231,10.7187 -2.36075,21.96378 -7.79776,31.20409 -2.42528,4.1218 -6.42909,7.25566 -10.47826,9.80036 -7.18789,4.51722 -15.84918,6.09072 -23.74331,9.21382 -7.34302,2.90507 -14.15901,7.70817 -21.97143,8.85945 -7.74482,1.14132 -15.58926,-1.45555 -23.38893,-2.12627 -4.36888,-0.37569 -11.6686,-5.79747 -13.11198,-1.06313 -1.44338,4.73433 -9.16189,11.51071 -8.10216,18.00667 0.98929,6.06422 7.62647,9.81075 12.51393,13.53449 7.35844,5.60637 16.29034,8.78861 24.64721,12.75606 6.97793,3.31279 16.44406,3.17667 21.26267,9.21382 1.19957,1.50292 1.49261,3.79567 1.06313,5.67005 -1.37723,6.01059 -5.83363,11.49566 -10.98571,14.88387 -8.71436,5.73091 -20.06635,6.44549 -30.47649,7.08755 -14.58271,0.89941 -32.14946,4.48227 -43.58847,-4.60691 -5.0892,-4.04376 -3.30222,-12.70169 -6.37881,-18.42764 -2.39307,-4.45382 -4.23771,-11.15355 -9.21382,-12.04885 -7.41876,-1.33477 -13.53636,7.00314 -19.1364,12.04885 -3.12498,2.81565 -5.55292,13.48075 -7.79631,9.92258 -12.22326,-19.3869 -19.13622,-11.05664 -27.64147,-8.50507 0,0 -10.00794,1.61245 -14.17511,4.25253 -5.36991,3.40207 -14.05586,7.95221 -12.7576,14.17511 1.16601,5.58895 11.34009,7.08756 15.59262,7.08756 2.12626,0 12.40322,0.35438 22.14861,0.70876 9.74539,0.35437 12.68898,-0.11529 18.95921,0.70875 10.54596,1.38597 23.22232,-0.0453 31.11285,7.08756 4.09778,3.7043 3.52517,10.47032 5.28775,15.70549 1.76258,5.23516 3.55111,10.46166 5.28775,15.70548 3.88084,11.71828 7.23124,23.61783 11.46833,35.21206 2.80092,7.66434 5.5881,15.36982 9.21382,22.68018 3.29452,6.64258 6.26665,13.72919 11.34009,19.1364 8.39211,8.94422 21.3501,10.85932 28.62447,20.73405 6.26515,8.50475 2.7893,13.55747 8.93957,22.14566 2.40452,3.35765 2.74522,8.25838 6.85432,8.67169 3.51616,0.35367 8.9681,-2.46882 11.00341,-3.91615 8.82497,-6.27553 19.89542,-12.92947 19.89542,-12.92947;
m 720.25408,433.68341 c 0.46036,4.5184 0.47969,9.9041 2.76993,18.92373 0.60167,2.36956 1.52506,6.73227 0.2696,15.06055 -1.54214,10.23003 -1.31492,13.38037 -8.86794,21.9628 -3.55385,4.0382 -12.81014,5.23768 -17.71889,7.79632 -9.55468,4.98029 -17.01692,4.58603 -27.64147,6.3788 -10.27398,1.73362 -20.88689,0.54387 -31.18525,2.12626 -6.96631,1.07041 -14.58599,1.21173 -20.55391,4.96129 -5.68636,3.57265 -10.08602,9.43137 -12.7576,15.59263 -1.42226,3.28006 -2.49599,7.22274 -1.41751,10.63133 1.26086,3.98501 5.30381,6.52643 8.50506,9.21382 3.01153,2.52813 7.08756,4.96129 9.92258,6.3788 2.83502,1.41752 9.65778,4.07247 10.63134,8.50507 1.2466,5.67574 -10.63133,9.21383 -13.46636,9.21383 -2.83502,0 -18.7009,-5.23955 -24.80644,-7.79632 -7.09484,-2.97105 -18.31388,-6.97821 -24.0977,-12.04884 -4.33696,-3.80217 -21.2199,4.33716 -26.93271,3.54378 -5.69842,-0.79138 -18.99941,7.96565 -24.09769,10.63133 -5.69524,2.9778 -29.22795,13.22824 -35.43778,14.88387 -8.49549,2.26502 -25.398,12.45459 -34.02027,14.17511 -8.19128,1.63452 -28.59249,7.26234 -35.43778,12.04885 -6.17444,4.31742 -20.19778,3.76498 -23.38894,8.50506 -2.08399,3.09551 0.95682,16.84003 2.83502,19.84515 3.54378,5.67004 22.45146,11.83614 31.89401,17.71891 5.02903,3.13311 40.47977,13.51134 44.6516,17.71888 4.66944,4.7094 12.04884,6.37881 37.56404,-10.63133 2.94861,-1.96574 20.93283,-25.78832 29.76774,-27.64147 7.55988,-1.5857 23.28524,6.21685 28.35023,12.04884 6.42658,7.39977 6.9706,18.58418 7.79631,28.35023 0.6001,7.09758 -2.18043,14.13997 -2.12627,21.26267 0.047,6.18312 -9.92258,8.50506 2.12627,18.42764 12.04884,9.92257 15.42345,4.71832 23.38893,5.67005 10.08709,1.20522 17.90794,2.76142 27.64148,5.67004 8.66405,2.58903 20.19069,8.9926 25.5152,16.30139 5.32582,2.06982 2.98253,8.25885 5.75891,13.1257 5.57512,9.77288 4.85726,22.3656 10.52635,21.53966 5.66909,-0.82593 28.35647,-19.32306 33.96421,-21.40822;
m 717.25699,435.05185 c 0,0 6.05331,33.94763 -2.25957,47.40837 -2.49526,4.04048 -7.79274,5.91153 -12.42005,6.97914 -6.75005,1.55737 -13.8516,-1.8824 -20.74666,-1.214 -9.60642,0.93123 -18.46184,6.03957 -28.04185,7.21172 -5.96741,0.73014 -12.10929,-1.16201 -18.03512,-0.14833 -10.23827,1.75138 -19.00128,9.2707 -29.30296,10.59916 -8.90008,1.14772 -18.23019,-5.06149 -26.811,-2.43499 -9.66984,2.95985 -16.00287,12.40033 -23.50125,19.18567 -4.95156,4.48071 -8.53128,10.57409 -14.15186,14.18018 -7.40193,4.74898 -16.91895,5.14174 -24.74288,9.15765 -10.6995,5.4919 -18.80592,15.54995 -29.90058,20.19202 -12.83314,5.36947 -28.00281,3.05259 -40.91331,8.2333 -12.66356,5.08162 -21.08718,19.88214 -34.58155,21.90468 -14.08694,2.11136 -28.51658,-4.82981 -41.21772,-11.27813 -9.0996,-4.61983 -14.72734,-14.70195 -23.9498,-19.07139 -7.25841,-3.43891 -15.53054,-5.44814 -23.55396,-5.08006 -9.09994,0.41746 -21.15761,0.5148 -26.07454,8.18338 -2.88846,4.50493 -0.73002,11.33762 2.02367,15.92617 7.56487,12.60553 33.73851,24.34024 35.99309,25.48799 2.25457,1.14775 30.32972,25.50646 32.66293,25.94808 2.33321,0.44161 16.8331,28.7942 29.05837,39.74209 11.85822,10.61919 26.23132,18.99358 41.41331,23.77814 10.2469,3.22928 21.72311,0.10277 32.10245,2.87703 5.64931,1.50999 10.11164,6.71948 15.92402,7.36064 5.02883,0.55473 9.79432,-2.76889 14.83419,-3.21223 6.76516,-0.59511 16.57624,9.40212 20.35933,0.7693 1.47679,-3.36995 -9.87864,-19.64288 -5.55679,-28.18969 3.24508,-6.4174 12.54013,-10.91476 19.52038,-9.18568 7.14084,1.76886 12.84075,10.28794 13.27415,17.63183 0.77533,13.13775 -21.49594,21.05637 -19.87176,34.11637 2.05639,16.53535 18.33344,34.84676 34.97345,35.7166 10.24674,0.53564 14.30672,-15.5271 23.71206,-19.62859 13.89542,-6.05954 31.2238,-12.07036 45.08797,-5.93968 10.71631,4.73871 14.79577,18.39896 20.05442,28.86993 3.419,6.80787 0.0126,19.34974 7.26966,21.66753 15.80565,5.04808 40.2561,-29.27734 40.2561,-29.27734"/>
</path>

</g>

</svg>





SVG Math Animation Example: Apollonian Gasket (-3,5,8,8)- Soddy(three tangential Circles) and Descartes' theorem. It may be slow because it's calculating circles on the fly.

Apollonian Gasket(-3,5,8,8)

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/SVG/DTD/svg10.dtd" >

<svg
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   version="1.1"
   width="100%"
   height="100%"
   xml:space="preserve"
   onload = "startup(evt)">

<script>

<![CDATA[

var xmlns="http://www.w3.org/2000/svg";
var xlinkns = "http://www.w3.org/1999/xlink"; 

var stageText;
var circlesText;
var totalCirclesText;
var redStop;

var drawingScale = 200*3;
var circles = new Array();

var curvaturePool = [-3];
var circlesMap = [3,1,2,5,4];

var O = {};

var currentCircle = 1;
var lenTangentArray = 3;

var nStage = 0;

function startup(evt)
{
	init();

	// Setting up initial configuration
      // 1st circle at the origin (0,0). Vertex A
	// The center of circle 2 and 3 are B and C, respectively.

      var Ax = 0.0;
      var Ay = 0.0;

	// The three curvatures are:
      var curvA = 5;
	var curvB = 8;
    	var curvC = 8;

      // The three radii are:
      var a = 1/curvA;
	var b = 1/curvB;
	var c = 1/curvC;

	/* To calculate the center position of circle 2 (B) and 3 (C),
	   we need the half angle A */ 
	angleA2 = Math.asin (b/(a+b));

	var By = b;
 	var Bx = (a+b)*Math.cos(angleA2);
 
	var Cy = -b;
	var Cx =  Bx;

  	// curvature of the outer circumcircle
	curvD=soddy(a,b,c,4);
	
	// center of the outer circumcircle
	Dx = -1/curvD - a;
	Dy = 0.0;

	// Now, put the data into circle object

  	O = {x:0, y:0, curvature:1, tangents:[], stage:0};
  	circles[0]= O; //junk 

      // valid index starts from 1 not 0

  	O = {x:Ax, y:Ay, curvature:curvA, tangents:[2,3,4], stage:0};
  	circles[1]= O;	

  	O = {x:Bx, y:By, curvature:curvB, tangents:[1,3,4], stage:0};
  	circles[2]= O; 
 
  	O = {x:Cx, y:Cy, curvature:curvC, tangents:[1,2,4], stage:0};
  	circles[3]= O; 

      // 4th circle: outer circle
  	O = {x:Dx, y:Dy, curvature:curvD, tangents:[1,2,3], stage:0};
  	circles[4]= O;

      // Apollonian 5th 
  	O = {x:0, y:0, curvature:0, tangents:[],  stage:0};
  	circles[5]= O;  

	circles[5].curvature=soddy(1/circles[1].curvature,1/circles[2].curvature,1/circles[3].curvature,5);
     
      // Now we have a configuration to start

	// To get 5th circle, 
	currentCircle = 5;

	findApollonian(2,3,4,1,currentCircle);
	
	for(i=1;i<=currentCircle;i++) {
      	drawCircle(i);
		curvaturePool.push(circles[i].curvature);
	}

	displayStatus();
}

function soddy(r1,r2,r3,n)
{
	var r;
  	if(n==4) {
		r = r1*r2*r3/
		( (r1*r2+r2*r3+r1*r3) - 2*Math.sqrt(r1*r2*r3*(r1+r2+r3)) )
	}
  	if(n==5) {
		r = r1*r2*r3/
		((r1*r2+r2*r3+r1*r3) + 2*Math.sqrt(r1*r2*r3*(r1+r2+r3)))
	}
	curv = 1/r
	return curv;	
}

function stageUp()
{
	nStage++;
/*
	if(nStage>=4) alert("It will be getting slower and slower.\n If you see the red highlight at the center of the button, it tells you it's done for the stage");
*/
	nextCircle(currentCircle);
	displayStatus();
}

function init()
{
	stageText = document.getElementById("stage"); 
	stageText.firstChild.nodeValue=0;
	circlesText = document.getElementById("circles"); 
	circlesText.firstChild.nodeValue=5;
	totalCirclesText = document.getElementById("totalCircles"); 
	totalCirclesText.firstChild.nodeValue=5;
	redStop = document.getElementById("RedStop");
}

function displayStatus()
{
	stageText.firstChild.nodeValue=nStage;
	if(nStage==0) {
		circlesText.firstChild.nodeValue=5;
		totalCirclesText.firstChild.nodeValue=5;
	}
	else {
		circlesText.firstChild.nodeValue=Math.pow(3,nStage)*2;
		totalCirclesText.firstChild.nodeValue=Math.pow(3,nStage+1)+2;
	}
}

function nextCircle()
{	
	var fourCircles = [];
 	var iStartingCircle = [];
  	var nSC = 0;
		
	ilen = 1;
      for(var i=1;i<=currentCircle;i++) {
		if(circles[i].tangents.length >= lenTangentArray) {
			lenTangentArray = circles[i].tangents.length;
		}
	}

 	for(var i=1;i<=currentCircle;i++) { 
		if(circles[i].tangents.length < lenTangentArray) {
			iStartingCircle[nSC] = i;
			nSC++;
		}
	}

	for(var ns=0;ns<nSC;ns++) 
 	{
        iStart = iStartingCircle[ns];
	  ilen = circles[iStart].tangents.length;
	  var isThere = 0;
	  var isTangent = 1;
	  var isNewFour = 1;

	  for(var i=0;i<ilen;i++) {
		i1 = iStart;
		//i4 as one Apollonian
		i4 = circles[iStart].tangents[i]; 
		for(var j=0;j<ilen;j++) {
 			if(j==i) {
				continue;
			}
			i2 = circles[iStart].tangents[j];
			for(var k=0;k<ilen;k++) {
				if(k==j || k==i) {
					continue;
				}
				i3 = circles[iStart].tangents[k];
				/* (1) Check if the first three circles (i1,i2,i3) are neighbors. i1 has i2,i3 but i2 and i3 may not touching each other (2) Check if i4 touches i1,i2,i3.*/
				isTangent = checkTangency(i1,i2,i3,i4);

				if(isTangent==0) {
					continue;
				}
				var curv = getCurvature(i1,i2,i3,i4);

				// Check if this circle has been made in the previous stages.
				isThere=checkCurvature(curv);
				if(isThere==1) {
					st1=circles[i1].stage;
					st2=circles[i2].stage;
					st3=circles[i3].stage;
					st4=circles[i4].stage;

					if( st1!=nStage-1 && st2!=nStage-1 && st3!=nStage-1 && st3!=nStage-1) continue;
				}

				//Check if the 4 circles are in current set
				
				if(fourCircles.length>0){
				 isNewFour = checkFourCircles(i1,i2,i3,i4,fourCircles);
				}
				if(isNewFour==0) {
				  continue;
				}

				fourCircles.push(i1);
				fourCircles.push(i2);
				fourCircles.push(i3);
				fourCircles.push(i4);
			}
		}
 	  }
	}

	nset = fourCircles.length/4;
	for(var i=0;i<nset;i++) {

		currentCircle++;

		O = {x:0, y:0, curvature:1, tangents:[]};

		circles[currentCircle] = O;

		i1 = fourCircles[4*i];
		i2 = fourCircles[4*i+1];
		i3 = fourCircles[4*i+2];
		i4 = fourCircles[4*i+3];
		
		findApollonian(i1,i2,i3,i4,currentCircle);
		drawCircle(currentCircle);
		curvaturePool.push(circles[currentCircle].curvature);
	}	
}

/* Check if a set of 4 circles are already in the set */
function checkFourCircles(n0,n1,n2,n3,cset)
{
	// return 0: duplicate
	//        1: new - OK to put it into the list 
	nset = cset.length/4;
  	narr = [n0,n1,n2];
	narr.sort();
	for(var i=0;i<nset;i++) {
		// compare Apollonian first
		// if it's different, the two can't be the same
		if(n3!=cset[4*i+3]) continue;
		var carr = [cset[4*i],cset[4*i+1],cset[4*i+2]];
		carr.sort();
		if(narr[0]==carr[0]&&
			narr[1]==carr[1]&&
				narr[2]==carr[2]) {
			return 0;
		}
	}
  	return 1;
}

/* Check (1) circle n3 is in the tangents array of n2, vise versa.
	   (2) circles n1, n2 and n3 shares n4
   The conditions (1) and (2) should be met to get an Apollonian */ 
function checkTangency(n1,n2,n3,n4)
{
	var pass = 0;
      var passlimit = 12;

	// n1 in n2
	for(var i=0;i<circles[n2].tangents.length;i++) {
		if(n1==circles[n2].tangents[i]) {
			pass++;
			break;
		}	
	}
      // n1 in n3
	for(var i=0;i<circles[n3].tangents.length;i++) {
		if(n1==circles[n3].tangents[i]) {
			pass++;
			break;
		}	
	}
      // n1 in n4
	for(var i=0;i<circles[n4].tangents.length;i++) {
		if(n1==circles[n4].tangents[i]) {
			pass++;
			break;
		}	
	}
	// n2 in n1
	for(var i=0;i<circles[n1].tangents.length;i++) {
		if(n2==circles[n1].tangents[i]) {
			pass++;
			break;
		}	
	}
	// n2 in n3
	for(var i=0;i<circles[n3].tangents.length;i++) {
		if(n2==circles[n3].tangents[i]) {
			pass++;
			break;
		}	
	}
	// n2 in n4
	for(var i=0;i<circles[n4].tangents.length;i++) {
		if(n2==circles[n4].tangents[i]) {	
			pass++;
			break;
		}
	}
	// n3 in n1
	for(var i=0;i<circles[n1].tangents.length;i++) {
		if(n3==circles[n1].tangents[i]) {
			pass++;
			break;
		}	
	}
	// n3 in n2
	for(var i=0;i<circles[n2].tangents.length;i++) {
		if(n3==circles[n2].tangents[i]) {	
			pass++;
			break;
		}
	}
	// n3 in n4
	for(var i=0;i<circles[n4].tangents.length;i++) {
		if(n3==circles[n4].tangents[i]) {	
			pass++;
			break;
		}
	}
	// n4 in n1
	for(var i=0;i<circles[n1].tangents.length;i++) {
		if(n4==circles[n1].tangents[i]) {	
			pass++;
			break;
		}
	}
	// n4 in n2
	for(var i=0;i<circles[n2].tangents.length;i++) {
		if(n4==circles[n2].tangents[i]) {	
			pass++;
			break;
		}
	}
	// n4 in n3
	for(var i=0;i<circles[n3].tangents.length;i++) {
		if(n4==circles[n3].tangents[i]) {	
			pass++;
			break;
		}
	}
	if(pass>=passlimit) {
   	  return 1;
	}
	return 0;
}

// Check if a circle already been made in the previous stages. 
// It's done by comparing the curvatures.
function checkCurvature(cv)
{
	for(var i=0;i<curvaturePool.length;i++) {
		if( Math.round(cv) == Math.round(curvaturePool[i]) ) return 1;
	}
	return 0;
}

// input: 	i1,i2,i3 = tangent circles
//		i4 = one of Apollonian cicle 

function findApollonian(i1,i2,i3,i4,iApollo)
{
  	var curv = getCurvature(i1,i2,i3,i4);

	circles[iApollo].curvature = curv;

	var realx = getCoord(1,i1,i2,i3,i4,iApollo);	

	circles[iApollo].x = realx;
	var imagy = getCoord(2,i1,i2,i3,i4,iApollo);

	circles[iApollo].y = imagy;
   
	// setup tangents 
 	//new circle
	circles[iApollo].tangents.push(i1);
	circles[iApollo].tangents.push(i2);
	circles[iApollo].tangents.push(i3);
	// updates existing tangents of existing circles
	circles[i1].tangents.push(iApollo);
	circles[i2].tangents.push(iApollo);
	circles[i3].tangents.push(iApollo);
	// stage
	circles[iApollo].stage = nStage;

   	circlesMap.push(iApollo);
	circlesMap.push(i1);
	circlesMap.push(i2);
	circlesMap.push(i3);
	circlesMap.push(i4);
}

function getCoord(flag,i1,i2,i3,i4,i4prime)
{
      b1 = circles[i1].curvature;
  	b2 = circles[i2].curvature;
	b3 = circles[i3].curvature;
	b4 = circles[i4].curvature;
	b4prime = circles[i4prime].curvature;
 
	if(flag==1) 
	{
      	z1 = circles[i1].x;
  		z2 = circles[i2].x;
		z3 = circles[i3].x;
		z4 = circles[i4].x;
	}
	else
	{
      	z1 = circles[i1].y;
  		z2 = circles[i2].y;
		z3 = circles[i3].y;
		z4 = circles[i4].y;
	}

  	z4prime = (2*b1*z1+2*b2*z2+2*b3*z3-b4*z4)/b4prime;
	return z4prime;
}

function getCurvature(i1,i2,i3,i4)
{
      b1 = circles[i1].curvature;
  	b2 = circles[i2].curvature;
	b3 = circles[i3].curvature;
	b4 = circles[i4].curvature;

  	b4prime = 2*b1+2*b2+2*b3-b4;
	return b4prime;
}

function heron(a,b,c)
{
	var s = 0.5 * (a + b + c);
	var delta = Math.sqrt(s*(s-a)*(s-b)*(s-c));
	return delta;
}

function drawCircle(i)
{
  	var obj = document.createElementNS(xmlns,"circle");
  	obj.setAttributeNS(null,"id","circle"+i);
  	obj.setAttributeNS(null,"cx",drawingScale*circles[i].x);
  	obj.setAttributeNS(null,"cy",drawingScale*circles[i].y);
  	obj.setAttributeNS(null,"r",drawingScale*Math.abs(1/circles[i].curvature));
  	obj.setAttributeNS(null,"fill","none");
  	obj.setAttributeNS(null,"stroke","black");
 
	if(nStage==1) obj.setAttributeNS(null,"stroke","red");
	if(nStage==2) obj.setAttributeNS(null,"stroke","green");
	if(nStage==3) obj.setAttributeNS(null,"stroke","blue");
	if(nStage==4) obj.setAttributeNS(null,"stroke","purple");
 
  	obj.setAttributeNS(null,"stroke-width","1");
  	document.getElementById("Apollo").appendChild(obj);
 /*
  	if(parseInt(circles[i].curvature) > 0) {
  		var label = document.createElementNS(xmlns,"text");
  		label.setAttributeNS(null,"id","label"+i);
  		label.setAttributeNS(null,"x",drawingScale*circles[i].x);
  		label.setAttributeNS(null,"y",drawingScale*circles[i].y);
  		label.setAttributeNS(null,"font-size","12");
  		label.setAttributeNS(null,"fill","black");
  		//var txtNode = document.createTextNode(circles[i].curvature);
  		var txtNode = document.createTextNode(i);
  		label.appendChild(txtNode);
  		if(nStage<3) document.getElementById("Apollo").appendChild(label);
 	}
*/	
}


function mouseOverRed()
{
  redStop.setAttributeNS(null,"stop-color", "white"); 
}

function mouseOutRed()
{
  redStop.setAttributeNS(null,"stop-color", "red"); 
}

]]>

</script> 

<g id="title">
  <text id="category" font-size="40"
   x="80" y="50">
  Apollonian Gasket (-3,5,8,8) 
  </text>
</g>

<g id="Apollo" transform="translate(200,270)">
</g>

<text id="status" y="480" font-size="20">
   <tspan x="100" dy="1em">Current Stage (usually up to 5-7): </tspan><tspan id="stage"> 0</tspan>
   <tspan x="100" dy="1em">Circles at This Stage: </tspan><tspan id="circles"> 5</tspan>
   <tspan x="100" dy="1em">Total Circles:</tspan><tspan id="totalCircles"> 5</tspan>
 </text>

<!-- button -->
<defs>
<radialGradient id="RedG">
   <stop id="RedStop" stop-color="red" offset="0"/>
   <stop stop-color="white" offset="80%"/>
   <stop stop-color="red" offset="100%"/>
 </radialGradient>
</defs>

<g id="upButton" transform="translate(0,445)"
			onclick="stageUp()" 
               onmouseover="mouseOverRed()" 
               onmouseout="mouseOutRed()">

  <circle id="ZoomInCircle" cx = "50" cy="50" r="20" fill="url(#RedG)" />
  <path d="M 50 40 L 50 60 M 40 50 L 60 50" fill="none" stroke="black" stroke-width="3"/>
</g>

<g id="subNote">
  <text font-size="14" y="560">
   <tspan x="100" dy="0em">
  Note: As the stage number going up, it's getting slower and slower. 
   </tspan>
   <tspan x="100" dy="1em">
  Since it's generating circles on the fly, your browser may suffer at higher stage.
   </tspan>
   <tspan x="100" dy="1em">
  I haven't got to stage 8 with my algorithm. It seems to take forever.
   </tspan>
  </text>
</g>
</svg>





SVG Math Animation Example: Apollonian Gasket (-1,2,2,3)- Soddy (three tangential Circles) and Descartes' theorem. It may be slow because it's calculating circles on the fly.

Apollonian Gasket(-1,2,2,3)

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/SVG/DTD/svg10.dtd" >

<svg
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   version="1.1"
   width="100%"
   height="100%"
   xml:space="preserve"
   onload = "startup(evt)">

<script>

<![CDATA[

var xmlns="http://www.w3.org/2000/svg";
var xlinkns = "http://www.w3.org/1999/xlink"; 

var stageText;
var circlesText;
var totalCirclesText;
var redStop;

var drawingScale = 200;
var circles = new Array();

var curvaturePool = [-1];
var circlesMap = [3,1,2,5,4];

var O = {};

var currentCircle = 1;
var lenTangentArray = 3;


var nStage = 0;


function startup(evt)
{
	init();

	// Setting up initial configuration
      // 1st circle at the origin (0,0). Vertex A
	// The center of circle 2 and 3 are B and C, respectively.

      var Ax = 0.0;
      var Ay = 0.0;

	// The three curvatures are:
      var curvA = 2;
	var curvB = 2;
    	var curvC = 3;

      // The three radii are:
      var a = 1/curvA;
	var b = 1/curvB;
	var c = 1/curvC;

 	var Bx = a+b;
	var By = 0.0;

	/* To calculate the center position of circle 3 (C),
	   we need the angle A */ 
	angleA = Math.acos(a/(a+c));

	var Cx = a;
	var Cy = (a+c)*Math.sin(angleA);

  	// curvature of the outer circumcircle
	curvD=soddy(a,b,c,4);
	
	// center of the outer circumcircle
	Dx = a;
	Dy = 0.0;

  	O = {x:0, y:0, curvature:0, tangents:[], stage:0};
  	circles[0]= O; //junk 

      // valid index starts from 1 not 0

  	O = {x:Ax, y:Ay, curvature:curvA, tangents:[2,3,4], stage:0};
  	circles[1]= O;

  	O = {x:Bx, y:By, curvature:curvB, tangents:[1,3,4], stage:0};
  	circles[2]= O; 
 
  	O = {x:Cx, y:Cy, curvature:curvC, tangents:[1,2,4], stage:0};
  	circles[3]= O; 

      // 4th circle: outer circle
  	O = {x:Dx, y:Dy, curvature:curvD, tangents:[1,2,3], stage:0};
  	circles[4]= O;

      // Apollonian 5th 
  	O = {x:0, y:0, curvature:0, tangents:[],  stage:0};
  	circles[5]= O;  

	circles[5].curvature=soddy(1/circles[1].curvature,1/circles[2].curvature,1/circles[3].curvature,5);
      
      // Now we have a configuration to start  

	// To get 5th circle, 
	currentCircle = 5;
	findApollonian(1,2,4,3,currentCircle);
	
	for(i=1;i<=currentCircle;i++) {
      	drawCircle(i);
		curvaturePool.push(circles[i].curvature);
	}

	displayStatus();
}

function soddy(r1,r2,r3,n)
{
	var r;
  	if(n==4) {
		r = r1*r2*r3/
		( (r1*r2+r2*r3+r1*r3) - 2*Math.sqrt(r1*r2*r3*(r1+r2+r3)) )
	}
  	if(n==5) {
		r = r1*r2*r3/
		((r1*r2+r2*r3+r1*r3) + 2*Math.sqrt(r1*r2*r3*(r1+r2+r3)))
	}
	curv = 1/r
	return curv;	
}

function stageUp()
{
	nStage++;
/*
	if(nStage>=4) alert("It will be getting slower and slower.\n If you see the red highlight at the center of the button, it is telling you it's done for the stage");
*/
	nextCircle(currentCircle);
	displayStatus();
}

function init()
{
	stageText = document.getElementById("stage"); 
	stageText.firstChild.nodeValue=0;
	circlesText = document.getElementById("circles"); 
	circlesText.firstChild.nodeValue=5;
	totalCirclesText = document.getElementById("totalCircles"); 
	totalCirclesText.firstChild.nodeValue=5;
	redStop = document.getElementById("RedStop");
}

function displayStatus()
{
	stageText.firstChild.nodeValue=nStage;
	if(nStage==0) {
		circlesText.firstChild.nodeValue=5;
		totalCirclesText.firstChild.nodeValue=5;
	}
	else {
		circlesText.firstChild.nodeValue=Math.pow(3,nStage)*2;
		totalCirclesText.firstChild.nodeValue=Math.pow(3,nStage+1)+2;
	}
}

function nextCircle()
{	
	var fourCircles = [];
 	var iStartingCircle = [];
  	var nSC = 0;
		
	ilen = 1;
      for(var i=1;i<=currentCircle;i++) {
		if(circles[i].tangents.length >= lenTangentArray) {
			lenTangentArray = circles[i].tangents.length;
		}
	}

 	for(var i=1;i<=currentCircle;i++) { 
		if(circles[i].tangents.length < lenTangentArray) {
			iStartingCircle[nSC] = i;
			nSC++;
		}
	}

	for(var ns=0;ns<nSC;ns++) 
 	{
        iStart = iStartingCircle[ns];
	  ilen = circles[iStart].tangents.length;
	  var isThere = 0;
	  var isTangent = 1;
	  var isNewFour = 1;

	  for(var i=0;i<ilen;i++) {
		i1 = iStart;
		//i4 as one Apollonian
		i4 = circles[iStart].tangents[i]; 
		for(var j=0;j<ilen;j++) {
 			if(j==i) {
				continue;
			}
			i2 = circles[iStart].tangents[j];
			for(var k=0;k<ilen;k++) {
				if(k==j || k==i) {
					continue;
				}
				i3 = circles[iStart].tangents[k];
				/* (1) Check if the first three circles (i1,i2,i3) are neighbors. i1 has i2,i3 but i2 and i3 may not touching each other (2) Check if i4 touches i1,i2,i3.*/
				isTangent = checkTangency(i1,i2,i3,i4);

				if(isTangent==0) {
					continue;
				}
				var curv = getCurvature(i1,i2,i3,i4);

				// Check if this circle has been made in the previous stages.
				isThere=checkCurvature(curv);
				if(isThere==1) {
					st1=circles[i1].stage;
					st2=circles[i2].stage;
					st3=circles[i3].stage;
					st4=circles[i4].stage;

					if( st1!=nStage-1 && st2!=nStage-1 && st3!=nStage-1 && st3!=nStage-1) continue;
				}

				//Check if the 4 circles are in current set
				
				if(fourCircles.length>0){
				 isNewFour = checkFourCircles(i1,i2,i3,i4,fourCircles);
				}
				if(isNewFour==0) {
				  continue;
				}

				fourCircles.push(i1);
				fourCircles.push(i2);
				fourCircles.push(i3);
				fourCircles.push(i4);
			}
		}
 	  }
	}

	nset = fourCircles.length/4;
	
	for(var i=0;i<nset;i++) {

		currentCircle++;

		O = {x:0, y:0, curvature:1, tangents:[]};

		circles[currentCircle] = O;

		i1 = fourCircles[4*i];
		i2 = fourCircles[4*i+1];
		i3 = fourCircles[4*i+2];
		i4 = fourCircles[4*i+3];
		
		findApollonian(i1,i2,i3,i4,currentCircle);
		drawCircle(currentCircle);
		curvaturePool.push(circles[currentCircle].curvature);
	}
	
}

/* Check if a set of 4 circles are already in the set */
function checkFourCircles(n0,n1,n2,n3,cset)
{
	// return 0: duplicate
	//        1: new - OK to put it into the list 
	nset = cset.length/4;
  	narr = [n0,n1,n2];
	narr.sort();
	for(var i=0;i<nset;i++) {
		// compare Apollonian first
		// if it's different, the two can't be the same
		if(n3!=cset[4*i+3]) continue;
		var carr = [cset[4*i],cset[4*i+1],cset[4*i+2]];
		carr.sort();
		if(narr[0]==carr[0]&&
			narr[1]==carr[1]&&
				narr[2]==carr[2]) {
			return 0;
		}
	}
  	return 1;
}

/* Check (1) circle n3 is in the tangents array of n2, vise versa.
	   (2) circles n1, n2 and n3 shares n4
   The conditions (1) and (2) should be met to get an Apollonian */ 
function checkTangency(n1,n2,n3,n4)
{
	var pass = 0;
      var passlimit = 12;

	// n1 in n2
	for(var i=0;i<circles[n2].tangents.length;i++) {
		if(n1==circles[n2].tangents[i]) {
			pass++;
			break;
		}	
	}
      // n1 in n3
	for(var i=0;i<circles[n3].tangents.length;i++) {
		if(n1==circles[n3].tangents[i]) {
			pass++;
			break;
		}	
	}
      // n1 in n4
	for(var i=0;i<circles[n4].tangents.length;i++) {
		if(n1==circles[n4].tangents[i]) {
			pass++;
			break;
		}	
	}
	// n2 in n1
	for(var i=0;i<circles[n1].tangents.length;i++) {
		if(n2==circles[n1].tangents[i]) {
			pass++;
			break;
		}	
	}
	// n2 in n3
	for(var i=0;i<circles[n3].tangents.length;i++) {
		if(n2==circles[n3].tangents[i]) {
			pass++;
			break;
		}	
	}
	// n2 in n4
	for(var i=0;i<circles[n4].tangents.length;i++) {
		if(n2==circles[n4].tangents[i]) {	
			pass++;
			break;
		}
	}
	// n3 in n1
	for(var i=0;i<circles[n1].tangents.length;i++) {
		if(n3==circles[n1].tangents[i]) {
			pass++;
			break;
		}	
	}
	// n3 in n2
	for(var i=0;i<circles[n2].tangents.length;i++) {
		if(n3==circles[n2].tangents[i]) {	
			pass++;
			break;
		}
	}
	// n3 in n4
	for(var i=0;i<circles[n4].tangents.length;i++) {
		if(n3==circles[n4].tangents[i]) {	
			pass++;
			break;
		}
	}
	// n4 in n1
	for(var i=0;i<circles[n1].tangents.length;i++) {
		if(n4==circles[n1].tangents[i]) {	
			pass++;
			break;
		}
	}
	// n4 in n2
	for(var i=0;i<circles[n2].tangents.length;i++) {
		if(n4==circles[n2].tangents[i]) {	
			pass++;
			break;
		}
	}
	// n4 in n3
	for(var i=0;i<circles[n3].tangents.length;i++) {
		if(n4==circles[n3].tangents[i]) {	
			pass++;
			break;
		}
	}
	if(pass>=passlimit) {
   	  return 1;
	}
	return 0;
}

// Check if a circle already been made in the previous stages. 
// It's done by comparing the curvatures.
function checkCurvature(cv)
{
	for(var i=0;i<curvaturePool.length;i++) {
		if( Math.round(cv) == Math.round(curvaturePool[i]) ) return 1;
	}
	return 0;
}

// input: 	i1,i2,i3 = tangent circles
//		i4 = one of Apollonian cicle 

function findApollonian(i1,i2,i3,i4,iApollo)
{
  	var curv = getCurvature(i1,i2,i3,i4);

	circles[iApollo].curvature = curv;

	var realx = getCoord(1,i1,i2,i3,i4,iApollo);	

	circles[iApollo].x = realx;
	var imagy = getCoord(2,i1,i2,i3,i4,iApollo);

	circles[iApollo].y = imagy;
   
	// setup tangents 
 	//new circle
	circles[iApollo].tangents.push(i1);
	circles[iApollo].tangents.push(i2);
	circles[iApollo].tangents.push(i3);
	// updates existing tangents of existing circles
	circles[i1].tangents.push(iApollo);
	circles[i2].tangents.push(iApollo);
	circles[i3].tangents.push(iApollo);
	// stage
	circles[iApollo].stage = nStage;

   	circlesMap.push(iApollo);
	circlesMap.push(i1);
	circlesMap.push(i2);
	circlesMap.push(i3);
	circlesMap.push(i4);
}

function getCoord(flag,i1,i2,i3,i4,i4prime)
{
      b1 = circles[i1].curvature;
  	b2 = circles[i2].curvature;
	b3 = circles[i3].curvature;
	b4 = circles[i4].curvature;
	b4prime = circles[i4prime].curvature;
 
	if(flag==1) 
	{
      	z1 = circles[i1].x;
  		z2 = circles[i2].x;
		z3 = circles[i3].x;
		z4 = circles[i4].x;
	}
	else
	{
      	z1 = circles[i1].y;
  		z2 = circles[i2].y;
		z3 = circles[i3].y;
		z4 = circles[i4].y;
	}

  	z4prime = (2*b1*z1+2*b2*z2+2*b3*z3-b4*z4)/b4prime;
	return z4prime;
 
}

function getCurvature(i1,i2,i3,i4)
{
      b1 = circles[i1].curvature;
  	b2 = circles[i2].curvature;
	b3 = circles[i3].curvature;
	b4 = circles[i4].curvature;

  	b4prime = 2*b1+2*b2+2*b3-b4;
	return b4prime;
}

function heron(a,b,c)
{
	var s = 0.5 * (a + b + c);
	var delta = Math.sqrt(s*(s-a)*(s-b)*(s-c));
	return delta;
}

function drawCircle(i)
{
  	var obj = document.createElementNS(xmlns,"circle");
  	obj.setAttributeNS(null,"id","circle"+i);
  	obj.setAttributeNS(null,"cx",drawingScale*circles[i].x);
  	obj.setAttributeNS(null,"cy",drawingScale*circles[i].y);
  	obj.setAttributeNS(null,"r",drawingScale*Math.abs(1/circles[i].curvature));
  	obj.setAttributeNS(null,"fill","none");
  	obj.setAttributeNS(null,"stroke","black");
	if(nStage==1) obj.setAttributeNS(null,"stroke","red");
	if(nStage==2) obj.setAttributeNS(null,"stroke","green");
	if(nStage==3) obj.setAttributeNS(null,"stroke","blue");
	if(nStage==4) obj.setAttributeNS(null,"stroke","purple");
  	obj.setAttributeNS(null,"stroke-width","1");
  	document.getElementById("Apollo").appendChild(obj);
 /*
  	if(parseInt(circles[i].curvature) > 0) {
  		var label = document.createElementNS(xmlns,"text");
  		label.setAttributeNS(null,"id","label"+i);
  		label.setAttributeNS(null,"x",drawingScale*circles[i].x);
  		label.setAttributeNS(null,"y",drawingScale*circles[i].y);
  		label.setAttributeNS(null,"font-size","12");
  		label.setAttributeNS(null,"fill","black");
  		//var txtNode = document.createTextNode(circles[i].curvature);
  		var txtNode = document.createTextNode(i);
  		label.appendChild(txtNode);
  		if(nStage<3) document.getElementById("Apollo").appendChild(label);
 	}
*/ 	
}

function mouseOverRed()
{
  redStop.setAttributeNS(null,"stop-color", "white"); 
}

function mouseOutRed()
{
  redStop.setAttributeNS(null,"stop-color", "red"); 
}

]]>

</script> 

<g id="title">
  <text id="category" font-size="40"
   x="80" y="50">
  Apollonian Gasket (-1,2,2,3) 
  </text>
</g>

<g id="Apollo" transform="translate(200,270)">
</g>

<text id="status" y="480" font-size="20">
   <tspan x="100" dy="1em">Current Stage (usually up to 5-7): </tspan><tspan id="stage"> 0</tspan>
   <tspan x="100" dy="1em">Circles at This Stage: </tspan><tspan id="circles"> 5</tspan>
   <tspan x="100" dy="1em">Total Circles:</tspan><tspan id="totalCircles"> 5</tspan>
 </text>

<!-- button -->
<defs>
<radialGradient id="RedG">
   <stop id="RedStop" stop-color="red" offset="0"/>
   <stop stop-color="white" offset="80%"/>
   <stop stop-color="red" offset="100%"/>
 </radialGradient>
</defs>

<g id="upButton" transform="translate(0,445)"
			onclick="stageUp()" 
               onmouseover="mouseOverRed()" 
               onmouseout="mouseOutRed()">

  <circle id="ZoomInCircle" cx = "50" cy="50" r="20" fill="url(#RedG)" />
  <path d="M 50 40 L 50 60 M 40 50 L 60 50" fill="none" stroke="black" stroke-width="3"/>
</g>
 
<g id="subNote">
  <text font-size="14" y="560">
   <tspan x="100" dy="0em">
  Note: As the stage number going up, it's getting slower and slower. 
   </tspan>
   <tspan x="100" dy="1em">
  Since it's generating circles on the fly, your browser may suffer at higher stage.
   </tspan>
   <tspan x="100" dy="1em">
  I haven't got to stage 8 with my algorithm. It seems to take forever.
   </tspan>
  </text>
</g>
</svg>





SVG Math Animation Example: Apollonian Gasket (-15,32,32,33)- Soddy (three tangential Circles) and Descartes' theorem. It may be slow because it's calculating circles on the fly.

Apollonian Gasket(-15,32,32,33)

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/SVG/DTD/svg10.dtd" >

<svg
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   version="1.1"
   width="100%"
   height="100%"
   xml:space="preserve"
   onload = "startup(evt)">

<script>

<![CDATA[

var xmlns="http://www.w3.org/2000/svg";
var xlinkns = "http://www.w3.org/1999/xlink"; 

var stageText;
var circlesText;
var totalCirclesText;
var redStop;

var drawingScale = 200*15;
var circles = new Array();

var curvaturePool = [-1];
var circlesMap = [3,1,2,5,4];

var O = {};

var currentCircle = 1;
var lenTangentArray = 3;


var nStage = 0;


function startup(evt)
{
	init();

	// Setting up initial configuration
      // 1st circle at the origin (0,0). Vertex A
	// The center of circle 2 and 3 are B and C, respectively.

      var Ax = 0.0;
      var Ay = 0.0;

	// The three curvatures are:
      var curvA = 32;
	var curvB = 32;
    	var curvC = 33;

      // The three radii are:
      var ra = 1/curvA;
	var rb = 1/curvB;
	var rc = 1/curvC;

 	var Bx = ra+rb;
	var By = 0.0;

	// sides of the triangles with 3 vertices
	var sideA = rb + rc;
	var sideB = ra + rc;
	var sideC = ra + rb;

	// angles
	var angleA = angle(1,sideA,sideB,sideC);
	var angleB = angle(2,sideA,sideB,sideC);
	var angleC = angle(3,sideA,sideB,sideC);

	/* To calculate the center position of circle 3 (C),
	   we need the angle A */ 

	var Cx = sideB*Math.cos(angleA);
	var Cy = sideB*Math.sin(angleA);

	// Area of the triangle
	delta = getTriangleArea(sideA,sideB,sideC);

      // three points on the Soddy lines, not needed for this example
	midSideAx = rb*Math.cos(angleB);
	midSideAy = rb*Math.sin(angleB);
	midSideBx = ra*Math.cos(angleA);
	midSideBy = ra*Math.sin(angleA);
	midSideCx = ra;
	midSideCy = 0;

   	// The distance from midC (midSideCx,midSideCy) 
	// is the y-coordinates of Inner Soddy center
 
	// center of the  Inner Soddy circle
	Dx = ra;
	Dy = trilinear(sideA,sideB,sideC);

  	// curvature of the inner Soddy circle
	var curvD=soddy(ra,rb,rc,5);

	// center of the outer circumcircle


  	O = {x:0, y:0, curvature:0, tangents:[], stage:0};
  	circles[0]= O; //junk 

      // valid index starts from 1 not 0

  	O = {x:Ax, y:Ay, curvature:curvA, tangents:[2,3,4], stage:0};
  	circles[1]= O;

  	O = {x:Bx, y:By, curvature:curvB, tangents:[1,3,4], stage:0};
  	circles[2]= O; 
 
  	O = {x:Cx, y:Cy, curvature:curvC, tangents:[1,2,4], stage:0};
  	circles[3]= O; 

      // 4th circle: inner circle
  	O = {x:Dx, y:Dy, curvature:curvD, tangents:[1,2,3], stage:0};
  	circles[4]= O;

      // Apollonian 5th 
  	O = {x:0, y:0, curvature:0, tangents:[],  stage:0};
  	circles[5]= O;  

	circles[5].curvature=soddy(1/circles[1].curvature,1/circles[2].curvature,1/circles[3].curvature,4);
      
      // Now we have a configuration to start  

	// To get coordinates of the 5th circle, 
	currentCircle = 5;
	findApollonian(1,2,3,4,currentCircle);
	
	for(i=1;i<=currentCircle;i++) {
      	drawCircle(i);
		curvaturePool.push(circles[i].curvature);
	}

	displayStatus();
}

function trilinear(a,b,c)
{
	// angles
	var A = angle(1,a,b,c);
	var B = angle(2,a,b,c);
	var C = angle(3,a,b,c);

	// trilinear coordinates
	alpha = 1/Math.cos(A/2)*Math.cos(B/2)*Math.cos(C/2)+1;
	beta = 1/Math.cos(B/2)*Math.cos(C/2)*Math.cos(A/2)+1;
	gamma = 1/Math.cos(C/2)*Math.cos(A/2)*Math.cos(B/2)+1;

	//area
	var delta = getTriangleArea(a,b,c);

	var k = 2*delta/(alpha*a+beta*b+gamma*c);

	// In this case, we need to return c' i.e. k*gamma
	return k*gamma;
}

function getTriangleArea(a,b,c)
{
	s = (a+b+c)/2;
	area = Math.sqrt( s*(s-a)*(s-b)*(s-c) );
	return area;
}

function angle(n,a,b,c)
{
	var cos;
	if(n==1) 
		cos = (-a*a+b*b+c*c)/(2*b*c);		
	else if(n==2)
		cos = (a*a-b*b+c*c)/(2*a*c);
	else if(n==3)
		cos = (a*a+b*b-c*c)/(2*a*b);
	
	return Math.acos(cos);
}

function soddy(r1,r2,r3,n)
{
	var r;
	
  	if(n==4) {
		r = r1*r2*r3/
		( (r1*r2+r2*r3+r1*r3) - 2*Math.sqrt(r1*r2*r3*(r1+r2+r3)) )
	}
  	if(n==5) {
		r = r1*r2*r3/
		((r1*r2+r2*r3+r1*r3) + 2*Math.sqrt(r1*r2*r3*(r1+r2+r3)))
	}

	curv = 1/r
	return curv;	
}

function stageUp()
{
	nStage++;
/*
	if(nStage>=4) alert("It will be getting slower and slower.\n If you see the red highlight at the center of the button, it is telling you it's done for the stage");
*/
	nextCircle(currentCircle);
	displayStatus();
}

function init()
{
	stageText = document.getElementById("stage"); 
	stageText.firstChild.nodeValue=0;
	circlesText = document.getElementById("circles"); 
	circlesText.firstChild.nodeValue=5;
	totalCirclesText = document.getElementById("totalCircles"); 
	totalCirclesText.firstChild.nodeValue=5;
	redStop = document.getElementById("RedStop");
}

function displayStatus()
{
	stageText.firstChild.nodeValue=nStage;
	if(nStage==0) {
		circlesText.firstChild.nodeValue=5;
		totalCirclesText.firstChild.nodeValue=5;
	}
	else {
		circlesText.firstChild.nodeValue=Math.pow(3,nStage)*2;
		totalCirclesText.firstChild.nodeValue=Math.pow(3,nStage+1)+2;
	}
}

function nextCircle()
{	
	var fourCircles = [];
 	var iStartingCircle = [];
  	var nSC = 0;
		
	ilen = 1;
      for(var i=1;i<=currentCircle;i++) {
		if(circles[i].tangents.length >= lenTangentArray) {
			lenTangentArray = circles[i].tangents.length;
		}
	}

 	for(var i=1;i<=currentCircle;i++) { 
		if(circles[i].tangents.length < lenTangentArray) {
			iStartingCircle[nSC] = i;
			nSC++;
		}
	}

	for(var ns=0;ns<nSC;ns++) 
 	{
        iStart = iStartingCircle[ns];
	  ilen = circles[iStart].tangents.length;
	  var isThere = 0;
	  var isTangent = 1;
	  var isNewFour = 1;

	  for(var i=0;i<ilen;i++) {
		i1 = iStart;
		//i4 as one Apollonian
		i4 = circles[iStart].tangents[i]; 
		for(var j=0;j<ilen;j++) {
 			if(j==i) {
				continue;
			}
			i2 = circles[iStart].tangents[j];
			for(var k=0;k<ilen;k++) {
				if(k==j || k==i) {
					continue;
				}
				i3 = circles[iStart].tangents[k];
				/* (1) Check if the first three circles (i1,i2,i3) are neighbors. i1 has i2,i3 but i2 and i3 may not touching each other (2) Check if i4 touches i1,i2,i3.*/
				isTangent = checkTangency(i1,i2,i3,i4);

				if(isTangent==0) {
					continue;
				}
				var curv = getCurvature(i1,i2,i3,i4);

				// Check if this circle has been made in the previous stages.
				isThere=checkCurvature(curv);
				if(isThere==1) {
					st1=circles[i1].stage;
					st2=circles[i2].stage;
					st3=circles[i3].stage;
					st4=circles[i4].stage;

					if( st1!=nStage-1 && st2!=nStage-1 && st3!=nStage-1 && st3!=nStage-1) continue;
				}

				//Check if the 4 circles are in current set
				
				if(fourCircles.length>0){
				 isNewFour = checkFourCircles(i1,i2,i3,i4,fourCircles);
				}
				if(isNewFour==0) {
				  continue;
				}

				fourCircles.push(i1);
				fourCircles.push(i2);
				fourCircles.push(i3);
				fourCircles.push(i4);
			}
		}
 	  }
	}

	nset = fourCircles.length/4;

	for(var i=0;i<nset;i++) {

		currentCircle++;

		O = {x:0, y:0, curvature:1, tangents:[]};

		circles[currentCircle] = O;

		i1 = fourCircles[4*i];
		i2 = fourCircles[4*i+1];
		i3 = fourCircles[4*i+2];
		i4 = fourCircles[4*i+3];
		
		findApollonian(i1,i2,i3,i4,currentCircle);
		drawCircle(currentCircle);
		curvaturePool.push(circles[currentCircle].curvature);
	}
	
}

/* Check if a set of 4 circles are already in the set */
function checkFourCircles(n0,n1,n2,n3,cset)
{
	// return 0: duplicate
	//        1: new - OK to put it into the list 
	nset = cset.length/4;
  	narr = [n0,n1,n2];
	narr.sort();
	for(var i=0;i<nset;i++) {
		// compare Apollonian first
		// if it's different, the two can't be the same
		if(n3!=cset[4*i+3]) continue;
		var carr = [cset[4*i],cset[4*i+1],cset[4*i+2]];
		carr.sort();
		if(narr[0]==carr[0]&&
			narr[1]==carr[1]&&
				narr[2]==carr[2]) {
			return 0;
		}
	}
  	return 1;
}

/* Check (1) circle n3 is in the tangents array of n2, vise versa.
	   (2) circles n1, n2 and n3 shares n4
   The conditions (1) and (2) should be met to get an Apollonian */ 
function checkTangency(n1,n2,n3,n4)
{
	var pass = 0;
      var passlimit = 12;

	// n1 in n2
	for(var i=0;i<circles[n2].tangents.length;i++) {
		if(n1==circles[n2].tangents[i]) {
			pass++;
			break;
		}	
	}
      // n1 in n3
	for(var i=0;i<circles[n3].tangents.length;i++) {
		if(n1==circles[n3].tangents[i]) {
			pass++;
			break;
		}	
	}
      // n1 in n4
	for(var i=0;i<circles[n4].tangents.length;i++) {
		if(n1==circles[n4].tangents[i]) {
			pass++;
			break;
		}	
	}
	// n2 in n1
	for(var i=0;i<circles[n1].tangents.length;i++) {
		if(n2==circles[n1].tangents[i]) {
			pass++;
			break;
		}	
	}
	// n2 in n3
	for(var i=0;i<circles[n3].tangents.length;i++) {
		if(n2==circles[n3].tangents[i]) {
			pass++;
			break;
		}	
	}
	// n2 in n4
	for(var i=0;i<circles[n4].tangents.length;i++) {
		if(n2==circles[n4].tangents[i]) {	
			pass++;
			break;
		}
	}
	// n3 in n1
	for(var i=0;i<circles[n1].tangents.length;i++) {
		if(n3==circles[n1].tangents[i]) {
			pass++;
			break;
		}	
	}
	// n3 in n2
	for(var i=0;i<circles[n2].tangents.length;i++) {
		if(n3==circles[n2].tangents[i]) {	
			pass++;
			break;
		}
	}
	// n3 in n4
	for(var i=0;i<circles[n4].tangents.length;i++) {
		if(n3==circles[n4].tangents[i]) {	
			pass++;
			break;
		}
	}
	// n4 in n1
	for(var i=0;i<circles[n1].tangents.length;i++) {
		if(n4==circles[n1].tangents[i]) {	
			pass++;
			break;
		}
	}
	// n4 in n2
	for(var i=0;i<circles[n2].tangents.length;i++) {
		if(n4==circles[n2].tangents[i]) {	
			pass++;
			break;
		}
	}
	// n4 in n3
	for(var i=0;i<circles[n3].tangents.length;i++) {
		if(n4==circles[n3].tangents[i]) {	
			pass++;
			break;
		}
	}
	if(pass>=passlimit) {
   	  return 1;
	}
	return 0;
}

// Check if a circle already been made in the previous stages. 
// It's done by comparing the curvatures.
function checkCurvature(cv)
{
	for(var i=0;i<curvaturePool.length;i++) {
		if( Math.round(cv) == Math.round(curvaturePool[i]) ) return 1;
	}
	return 0;
}

// input: 	i1,i2,i3 = tangent circles
//		i4 = one of Apollonian cicle 

function findApollonian(i1,i2,i3,i4,iApollo)
{
  	var curv = getCurvature(i1,i2,i3,i4);

	circles[iApollo].curvature = curv;

	var realx = getCoord(1,i1,i2,i3,i4,iApollo);	

	circles[iApollo].x = realx;
	var imagy = getCoord(2,i1,i2,i3,i4,iApollo);

	circles[iApollo].y = imagy;
   
	// setup tangents 
 	//new circle
	circles[iApollo].tangents.push(i1);
	circles[iApollo].tangents.push(i2);
	circles[iApollo].tangents.push(i3);
	// updates existing tangents of existing circles
	circles[i1].tangents.push(iApollo);
	circles[i2].tangents.push(iApollo);
	circles[i3].tangents.push(iApollo);
	// stage
	circles[iApollo].stage = nStage;

   	circlesMap.push(iApollo);
	circlesMap.push(i1);
	circlesMap.push(i2);
	circlesMap.push(i3);
	circlesMap.push(i4);
}

function getCoord(flag,i1,i2,i3,i4,i4prime)
{
      b1 = circles[i1].curvature;
  	b2 = circles[i2].curvature;
	b3 = circles[i3].curvature;
	b4 = circles[i4].curvature;
	b4prime = circles[i4prime].curvature;
 
	if(flag==1) 
	{
      	z1 = circles[i1].x;
  		z2 = circles[i2].x;
		z3 = circles[i3].x;
		z4 = circles[i4].x;
	}
	else
	{
      	z1 = circles[i1].y;
  		z2 = circles[i2].y;
		z3 = circles[i3].y;
		z4 = circles[i4].y;
	}

  	z4prime = (2*b1*z1+2*b2*z2+2*b3*z3-b4*z4)/b4prime;
	return z4prime;
}

function getCurvature(i1,i2,i3,i4)
{
      b1 = circles[i1].curvature;
  	b2 = circles[i2].curvature;
	b3 = circles[i3].curvature;
	b4 = circles[i4].curvature;

  	b4prime = 2*b1+2*b2+2*b3-b4;
	return b4prime;
}


function heron(a,b,c)
{
	var s = 0.5 * (a + b + c);
	var delta = Math.sqrt(s*(s-a)*(s-b)*(s-c));
	return delta;
}

function drawCircle(i)
{
  	var obj = document.createElementNS(xmlns,"circle");
  	obj.setAttributeNS(null,"id","circle"+i);
  	obj.setAttributeNS(null,"cx",drawingScale*circles[i].x);
  	obj.setAttributeNS(null,"cy",drawingScale*circles[i].y);
  	obj.setAttributeNS(null,"r",drawingScale*Math.abs(1/circles[i].curvature));
  	obj.setAttributeNS(null,"fill","none");
  	obj.setAttributeNS(null,"stroke","black");
	if(nStage==1) obj.setAttributeNS(null,"stroke","red");
	if(nStage==2) obj.setAttributeNS(null,"stroke","green");
	if(nStage==3) obj.setAttributeNS(null,"stroke","blue");
	if(nStage==4) obj.setAttributeNS(null,"stroke","purple");
  	obj.setAttributeNS(null,"stroke-width","1");
  	document.getElementById("Apollo").appendChild(obj);
 /*
  	if(parseInt(circles[i].curvature) > 0) {
  		var label = document.createElementNS(xmlns,"text");
  		label.setAttributeNS(null,"id","label"+i);
  		label.setAttributeNS(null,"x",drawingScale*circles[i].x);
  		label.setAttributeNS(null,"y",drawingScale*circles[i].y);
  		label.setAttributeNS(null,"font-size","12");
  		label.setAttributeNS(null,"fill","black");
  		//var txtNode = document.createTextNode(circles[i].curvature);
  		var txtNode = document.createTextNode(i);
  		label.appendChild(txtNode);
  		if(nStage<3) document.getElementById("Apollo").appendChild(label);
 	}
*/	
}

function mouseOverRed()
{
  redStop.setAttributeNS(null,"stop-color", "white"); 
}

function mouseOutRed()
{
  redStop.setAttributeNS(null,"stop-color", "red"); 
}

]]>

</script> 

<g id="title">
  <text id="category" font-size="40"
   x="40" y="50">
  Apollonian Gasket (-15,32,32,33) 
  </text>
</g>

<g id="Apollo" transform="translate(200,220)">
</g>

<text id="status" y="480" font-size="20">
   <tspan x="100" dy="1em">Current Stage (usually up to 5-7): </tspan><tspan id="stage"> 0</tspan>
   <tspan x="100" dy="1em">Circles at This Stage: </tspan><tspan id="circles"> 5</tspan>
   <tspan x="100" dy="1em">Total Circles:</tspan><tspan id="totalCircles"> 5</tspan>
 </text>

<!-- button -->
<defs>
<radialGradient id="RedG">
   <stop id="RedStop" stop-color="red" offset="0"/>
   <stop stop-color="white" offset="80%"/>
   <stop stop-color="red" offset="100%"/>
 </radialGradient>
</defs>

<g id="upButton" transform="translate(0,445)"
			onclick="stageUp()" 
               onmouseover="mouseOverRed()" 
               onmouseout="mouseOutRed()">

  <circle id="StageCircle" cx = "50" cy="50" r="20" fill="url(#RedG)" />
  <path d="M 50 40 L 50 60 M 40 50 L 60 50" fill="none" stroke="black" stroke-width="3"/>
</g>
 
<g id="subNote">
  <text font-size="14" y="560">
   <tspan x="100" dy="0em">
  Note: As the stage number going up, it's getting slower and slower. 
   </tspan>
   <tspan x="100" dy="1em">
  Since it's generating circles on the fly, your browser may suffer at higher stage.
   </tspan>
   <tspan x="100" dy="1em">
  I haven't got to stage 8 with my algorithm. It seems to take forever.
   </tspan>
  </text>
</g>
</svg>





SVG Math Animation Example: Apollonian Gasket (-15,32,32,33)-Core section: Soddy (three tangential Circles) and Descartes' theorem. It may be slow because it's calculating circles on the fly.

Apollonian Gasket(-15,32,32,33)

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/SVG/DTD/svg10.dtd" >

<svg
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   version="1.1"
   width="100%"
   height="100%"
   xml:space="preserve"
   onload = "startup(evt)">

<script>

<![CDATA[

var xmlns="http://www.w3.org/2000/svg";
var xlinkns = "http://www.w3.org/1999/xlink"; 

var stageText;
var circlesText;
var totalCirclesText;
var redStop;

var totalCircles=0;
var drawingScale = 200*80;
var circles = new Array();

var curvaturePool = [-1];
var circlesMap = [3,1,2,5,4];

var O = {};

var currentCircle = 1;
var lenTangentArray = 3;
var curvLimit;


var nStage = 0;


function startup(evt)
{
	init();

	// Setting up initial configuration
      // 1st circle at the origin (0,0). Vertex A
	// The center of circle 2 and 3 are B and C, respectively.

      var Ax = 0.0;
      var Ay = 0.0;

	// The three curvatures are:
      var curvA = 32;
	var curvB = 32;
    	var curvC = 33;

 	// In this case, we need the circles in the center region
	// So, we do not want to make outer circle.
	// Put a limit to the curvature < curvA.
	curvLimit = curvA;

      // The three radii are:
      var ra = 1/curvA;
	var rb = 1/curvB;
	var rc = 1/curvC;

 	var Bx = ra+rb;
	var By = 0.0;

	// sides of the triangles with 3 vertices
	var sideA = rb + rc;
	var sideB = ra + rc;
	var sideC = ra + rb;

	// angles
	var angleA = angle(1,sideA,sideB,sideC);
	var angleB = angle(2,sideA,sideB,sideC);
	var angleC = angle(3,sideA,sideB,sideC);

	/* To calculate the center position of circle 3 (C),
	   we need the angle A */ 

	var Cx = sideB*Math.cos(angleA);
	var Cy = sideB*Math.sin(angleA);

	// Area of the triangle
	delta = getTriangleArea(sideA,sideB,sideC);

      // three points on the Soddy lines
	//side BC
	var midax = (ra+rb)-rb*Math.cos(angleB);  	
	var miday = rb*Math.sin(angleB);
	//side AC
	var midbx = ra*Math.cos(angleA);  	
	var midby = ra*Math.sin(angleA);
	//side AB
	var midcx = ra;				
	var midcy = 0;

   	// The distance from midC (midcx,midcy) 
	// is the y-coordinates of Inner Soddy center
 
	// center of the  Inner Soddy circle
	var Dx = ra;
	var Dy = trilinear(sideA,sideB,sideC);

  	// curvature of the inner Soddy circle
	var curvD=soddy(ra,rb,rc,5);

	// center of the outer circumcircle


  	O = {x:0, y:0, curvature:0, tangents:[], stage:0};
  	circles[0]= O; //junk 

      // valid index starts from 1 not 0

  	O = {x:Ax, y:Ay, curvature:curvA, tangents:[2,3,4], stage:0};
  	circles[1]= O;

  	O = {x:Bx, y:By, curvature:curvB, tangents:[1,3,4], stage:0};
  	circles[2]= O; 
 
  	O = {x:Cx, y:Cy, curvature:curvC, tangents:[1,2,4], stage:0};
  	circles[3]= O; 

      // 4th circle: inner circle
  	O = {x:Dx, y:Dy, curvature:curvD, tangents:[1,2,3], stage:0};
  	circles[4]= O;

      // Apollonian 5th 
  	O = {x:0, y:0, curvature:0, tangents:[1,2,3,4],  stage:0};
  	circles[5]= O;  
      
      // Now we have a configuration to start  

	// To get coordinates of the 5th circle
	currentCircle = 5;
	findApollonian(1,2,4,3,currentCircle);
	
	drawArc(midbx,midby,midcx,midcy,ra,ra);
	drawArc(midcx,midcy,midax,miday,rb,rb);
	drawArc(midax,miday,midbx,midby,rc,rc);
      drawCircle(4);
      drawCircle(5);
	curvaturePool.push(circles[1].curvature);
	curvaturePool.push(circles[2].curvature);
	curvaturePool.push(circles[3].curvature);
	curvaturePool.push(circles[4].curvature);
	curvaturePool.push(circles[5].curvature);

	displayStatus();
}

function trilinear(a,b,c)
{
	// angles
	var A = angle(1,a,b,c);
	var B = angle(2,a,b,c);
	var C = angle(3,a,b,c);

	// trilinear coordinates
	alpha = 1/Math.cos(A/2)*Math.cos(B/2)*Math.cos(C/2)+1;
	beta = 1/Math.cos(B/2)*Math.cos(C/2)*Math.cos(A/2)+1;
	gamma = 1/Math.cos(C/2)*Math.cos(A/2)*Math.cos(B/2)+1;

	//area
	var delta = getTriangleArea(a,b,c);

	var k = 2*delta/(alpha*a+beta*b+gamma*c);

	// In this case, we need to return c' i.e. k*gamma
	return k*gamma;
}

function getTriangleArea(a,b,c)
{
	s = (a+b+c)/2;
	area = Math.sqrt( s*(s-a)*(s-b)*(s-c) );
	return area;
}

function angle(n,a,b,c)
{
	var cos;
	if(n==1) 
		cos = (-a*a+b*b+c*c)/(2*b*c);		
	else if(n==2)
		cos = (a*a-b*b+c*c)/(2*a*c);
	else if(n==3)
		cos = (a*a+b*b-c*c)/(2*a*b);
	
	return Math.acos(cos);
}

function soddy(r1,r2,r3,n)
{
	var r;
	
  	if(n==4) {
		r = r1*r2*r3/
		( (r1*r2+r2*r3+r1*r3) - 2*Math.sqrt(r1*r2*r3*(r1+r2+r3)) )
	}
  	if(n==5) {
		r = r1*r2*r3/
		((r1*r2+r2*r3+r1*r3) + 2*Math.sqrt(r1*r2*r3*(r1+r2+r3)))
	}

	curv = 1/r
	return curv;	
}

function stageUp()
{
	nStage++;
/*
	if(nStage>=4) alert("It will be getting slower and slower.\n If you see the red highlight at the center of the button, it is telling you it's done for the stage");
*/
	nextCircle(currentCircle);
	displayStatus();
}

function init()
{
	stageText = document.getElementById("stage"); 
	stageText.firstChild.nodeValue=0;
	circlesText = document.getElementById("circles"); 
	circlesText.firstChild.nodeValue=5;
	totalCirclesText = document.getElementById("totalCircles"); 
	totalCirclesText.firstChild.nodeValue=5;
	redStop = document.getElementById("RedStop");
}

function displayStatus()
{
	stageText.firstChild.nodeValue=nStage;
	if(nStage==0) {
		circlesText.firstChild.nodeValue=5;
		totalCirclesText.firstChild.nodeValue=5;
		totalCircles = parseInt(totalCirclesText.firstChild.nodeValue);
	}
	else {
		circlesText.firstChild.nodeValue=Math.pow(3,nStage-1)*5;
		totalCircles+=parseInt(circlesText.firstChild.nodeValue);
		totalCirclesText.firstChild.nodeValue=totalCircles;
	}
}

function nextCircle()
{	
	var fourCircles = [];
 	var iStartingCircle = [];
  	var nSC = 0;
		
	ilen = 1;
      for(var i=1;i<=currentCircle;i++) {
		if(circles[i].tangents.length >= lenTangentArray) {
			lenTangentArray = circles[i].tangents.length;
		}
	}

 	for(var i=1;i<=currentCircle;i++) { 
		if(circles[i].tangents.length < lenTangentArray) {
			iStartingCircle[nSC] = i;
			nSC++;
		}
	}

	for(var ns=0;ns<nSC;ns++) 
 	{
        iStart = iStartingCircle[ns];
	  ilen = circles[iStart].tangents.length;
	  var isThere = 0;
	  var isTangent = 1;
	  var isNewFour = 1;

	  for(var i=0;i<ilen;i++) {
		i1 = iStart;
		//i4 as one Apollonian
		i4 = circles[iStart].tangents[i]; 
		for(var j=0;j<ilen;j++) {
 			if(j==i) {
				continue;
			}
			i2 = circles[iStart].tangents[j];
			for(var k=0;k<ilen;k++) {
				if(k==j || k==i) {
					continue;
				}
				i3 = circles[iStart].tangents[k];
				/* (1) Check if the first three circles (i1,i2,i3) are neighbors. i1 has i2,i3 but i2 and i3 may not touching each other (2) Check if i4 touches i1,i2,i3.*/
				isTangent = checkTangency(i1,i2,i3,i4);

				if(isTangent==0) {
					continue;
				}
				var curv = getCurvature(i1,i2,i3,i4);

				// Special limit not to make outer circle 
				// which can generate children afterwards.

				if(curv < curvLimit) {
					continue;
				}

				// Check if this circle has been made in the previous stages.
				isThere=checkCurvature(curv);
				if(isThere==1) {
	/*
					st1=circles[i1].stage;
					st2=circles[i2].stage;
					st3=circles[i3].stage;
					st4=circles[i4].stage;

					if( st1!=nStage-1 && st2!=nStage-1 && st3!=nStage-1 && st3!=nStage-1) continue;
*/
					continue;
				}

				//Check if the 4 circles are in current set
				
				if(fourCircles.length>0){
				 isNewFour = checkFourCircles(i1,i2,i3,i4,fourCircles);
				}
				if(isNewFour==0) {
				  continue;
				}

				fourCircles.push(i1);
				fourCircles.push(i2);
				fourCircles.push(i3);
				fourCircles.push(i4);
			}
		}
 	  }
	}

	nset = fourCircles.length/4;
	
	for(var i=0;i<nset;i++) {

		currentCircle++;

		O = {x:0, y:0, curvature:1, tangents:[]};

		circles[currentCircle] = O;

		i1 = fourCircles[4*i];
		i2 = fourCircles[4*i+1];
		i3 = fourCircles[4*i+2];
		i4 = fourCircles[4*i+3];
		
		findApollonian(i1,i2,i3,i4,currentCircle);
		drawCircle(currentCircle);
		curvaturePool.push(circles[currentCircle].curvature);
	}	
}

/* Check if a set of 4 circles are already in the set */
function checkFourCircles(n0,n1,n2,n3,cset)
{
	// return 0: duplicate
	//        1: new - OK to put it into the list 
	nset = cset.length/4;
  	narr = [n0,n1,n2];
	narr.sort();
	for(var i=0;i<nset;i++) {
		// compare Apollonian first
		// if it's different, the two can't be the same
		if(n3!=cset[4*i+3]) continue;
		var carr = [cset[4*i],cset[4*i+1],cset[4*i+2]];
		carr.sort();
		if(narr[0]==carr[0]&&
			narr[1]==carr[1]&&
				narr[2]==carr[2]) {
			return 0;
		}
	}
  	return 1;
}

/* Check (1) circle n3 is in the tangents array of n2, vise versa.
	   (2) circles n1, n2 and n3 shares n4
   The conditions (1) and (2) should be met to get an Apollonian */ 
function checkTangency(n1,n2,n3,n4)
{
	var pass = 0;
      var passlimit = 12;

	// n1 in n2
	for(var i=0;i<circles[n2].tangents.length;i++) {
		if(n1==circles[n2].tangents[i]) {
			pass++;
			break;
		}	
	}
      // n1 in n3
	for(var i=0;i<circles[n3].tangents.length;i++) {
		if(n1==circles[n3].tangents[i]) {
			pass++;
			break;
		}	
	}
      // n1 in n4
	for(var i=0;i<circles[n4].tangents.length;i++) {
		if(n1==circles[n4].tangents[i]) {
			pass++;
			break;
		}	
	}
	// n2 in n1
	for(var i=0;i<circles[n1].tangents.length;i++) {
		if(n2==circles[n1].tangents[i]) {
			pass++;
			break;
		}	
	}
	// n2 in n3
	for(var i=0;i<circles[n3].tangents.length;i++) {
		if(n2==circles[n3].tangents[i]) {
			pass++;
			break;
		}	
	}
	// n2 in n4
	for(var i=0;i<circles[n4].tangents.length;i++) {
		if(n2==circles[n4].tangents[i]) {	
			pass++;
			break;
		}
	}
	// n3 in n1
	for(var i=0;i<circles[n1].tangents.length;i++) {
		if(n3==circles[n1].tangents[i]) {
			pass++;
			break;
		}	
	}
	// n3 in n2
	for(var i=0;i<circles[n2].tangents.length;i++) {
		if(n3==circles[n2].tangents[i]) {	
			pass++;
			break;
		}
	}
	// n3 in n4
	for(var i=0;i<circles[n4].tangents.length;i++) {
		if(n3==circles[n4].tangents[i]) {	
			pass++;
			break;
		}
	}
	// n4 in n1
	for(var i=0;i<circles[n1].tangents.length;i++) {
		if(n4==circles[n1].tangents[i]) {	
			pass++;
			break;
		}
	}
	// n4 in n2
	for(var i=0;i<circles[n2].tangents.length;i++) {
		if(n4==circles[n2].tangents[i]) {	
			pass++;
			break;
		}
	}
	// n4 in n3
	for(var i=0;i<circles[n3].tangents.length;i++) {
		if(n4==circles[n3].tangents[i]) {	
			pass++;
			break;
		}
	}
	if(pass>=passlimit) {
   	  return 1;
	}
	return 0;
}

// Check if a circle already been made in the previous stages. 
// It's done by comparing the curvatures.
function checkCurvature(cv)
{
	for(var i=0;i<curvaturePool.length;i++) {
		if( Math.round(cv) == Math.round(curvaturePool[i]) ) return 1;
	}
	return 0;
}

// input: 	i1,i2,i3 = tangent circles
//		i4 = one of Apollonian cicle 

function findApollonian(i1,i2,i3,i4,iApollo)
{
  	var curv = getCurvature(i1,i2,i3,i4);

	if(curv <curvLimit) return;

	circles[iApollo].curvature = curv;

	var realx = getCoord(1,i1,i2,i3,i4,iApollo);	

	circles[iApollo].x = realx;
	var imagy = getCoord(2,i1,i2,i3,i4,iApollo);

	circles[iApollo].y = imagy;
   
	// setup tangents 
 	//new circle
	circles[iApollo].tangents.push(i1);
	circles[iApollo].tangents.push(i2);
	circles[iApollo].tangents.push(i3);
	// updates existing tangents of existing circles
	circles[i1].tangents.push(iApollo);
	circles[i2].tangents.push(iApollo);
	circles[i3].tangents.push(iApollo);
	// stage
	circles[iApollo].stage = nStage;

   	circlesMap.push(iApollo);
	circlesMap.push(i1);
	circlesMap.push(i2);
	circlesMap.push(i3);
	circlesMap.push(i4);
}

function getCoord(flag,i1,i2,i3,i4,i4prime)
{
      b1 = circles[i1].curvature;
  	b2 = circles[i2].curvature;
	b3 = circles[i3].curvature;
	b4 = circles[i4].curvature;
	b4prime = circles[i4prime].curvature;
 
	if(flag==1) 
	{
      	z1 = circles[i1].x;
  		z2 = circles[i2].x;
		z3 = circles[i3].x;
		z4 = circles[i4].x;
	}
	else
	{
      	z1 = circles[i1].y;
  		z2 = circles[i2].y;
		z3 = circles[i3].y;
		z4 = circles[i4].y;
	}

  	z4prime = (2*b1*z1+2*b2*z2+2*b3*z3-b4*z4)/b4prime;
	return z4prime;
}

function getCurvature(i1,i2,i3,i4)
{
      b1 = circles[i1].curvature;
  	b2 = circles[i2].curvature;
	b3 = circles[i3].curvature;
	b4 = circles[i4].curvature;

  	b4prime = 2*b1+2*b2+2*b3-b4;
	return b4prime;
}

function heron(a,b,c)
{
	var s = 0.5 * (a + b + c);
	var delta = Math.sqrt(s*(s-a)*(s-b)*(s-c));
	return delta;
}

function drawArc(fromX,fromY,toX,toY,rX,rY)
{
  	var obj = document.createElementNS(xmlns,"path");
    	var fromX = fromX*drawingScale;
	var fromY = fromY*drawingScale;
    	var toX = toX*drawingScale;
	var toY = toY*drawingScale;
	var rX = rX*drawingScale;
	var rY = rY*drawingScale;

	var str ="M"+fromX+","+fromY+" A "+rX+","+rY+" 0 0 0,"+toX+","+toY;
  	obj.setAttributeNS(null,"d",str);
  	obj.setAttributeNS(null,"stroke","black");
  	obj.setAttributeNS(null,"stroke-width","1");
	 obj.setAttributeNS(null,"fill","none");
  	document.getElementById("Apollo").appendChild(obj);
}

function drawCircle(i)
{
  	var obj = document.createElementNS(xmlns,"circle");
  	obj.setAttributeNS(null,"id","circle"+i);
  	obj.setAttributeNS(null,"cx",drawingScale*circles[i].x);
  	obj.setAttributeNS(null,"cy",drawingScale*circles[i].y);
  	obj.setAttributeNS(null,"r",drawingScale*Math.abs(1/circles[i].curvature));
  	obj.setAttributeNS(null,"fill","none");
  	obj.setAttributeNS(null,"stroke","black");
	if(nStage==1) obj.setAttributeNS(null,"stroke","red");
	if(nStage==2) obj.setAttributeNS(null,"stroke","green");
	if(nStage==3) obj.setAttributeNS(null,"stroke","blue");
	if(nStage==4) obj.setAttributeNS(null,"stroke","purple");
  	obj.setAttributeNS(null,"stroke-width","1");
  	document.getElementById("Apollo").appendChild(obj);
 /*
  	if(parseInt(circles[i].curvature) > 0) {
  		var label = document.createElementNS(xmlns,"text");
  		label.setAttributeNS(null,"id","label"+i);
  		label.setAttributeNS(null,"x",drawingScale*circles[i].x);
  		label.setAttributeNS(null,"y",drawingScale*circles[i].y);
  		label.setAttributeNS(null,"font-size","12");
  		label.setAttributeNS(null,"fill","black");
  		//var txtNode = document.createTextNode(circles[i].curvature);
  		var txtNode = document.createTextNode(i);
  		label.appendChild(txtNode);
  		if(nStage<3) document.getElementById("Apollo").appendChild(label);
 	}
*/
}

function mouseOverRed()
{
  redStop.setAttributeNS(null,"stop-color", "white"); 
}

function mouseOutRed()
{
  redStop.setAttributeNS(null,"stop-color", "red"); 
}

]]>

</script> 

<g id="title">
  <text id="category" font-size="40"
   x="60" y="50">
  Apollonian Gasket (-15,32,32,33) 
  </text>
</g>

<g id="Apollo" transform="translate(-180,60)">

</g>

<text id="status" y="480" font-size="20">
   <tspan x="180" dy="1em">Current Stage (usually up to 5-7): </tspan><tspan id="stage"> 0</tspan>
   <tspan x="180" dy="1em">Circles at This Stage: </tspan><tspan id="circles"> 5</tspan>
   <tspan x="180" dy="1em">Total Circles:</tspan><tspan id="totalCircles"> 5</tspan>
 </text>

<!-- button -->
<defs>
<radialGradient id="RedG">
   <stop id="RedStop" stop-color="red" offset="0"/>
   <stop stop-color="white" offset="80%"/>
   <stop stop-color="red" offset="100%"/>
 </radialGradient>
</defs>

<g id="upButton" transform="translate(80,460)"
			onclick="stageUp()" 
               onmouseover="mouseOverRed()" 
               onmouseout="mouseOutRed()">

  <circle id="StageCircle" cx = "50" cy="50" r="20" fill="url(#RedG)" />
  <path d="M 50 40 L 50 60 M 40 50 L 60 50" fill="none" stroke="black" stroke-width="3"/>
</g>
 
<g id="subNote">
  <text font-size="14" y="560">
   <tspan x="100" dy="0em">
  Note: As the stage number going up, it's getting slower and slower. 
   </tspan>
   <tspan x="100" dy="1em">
  Since it's generating circles on the fly, your browser may suffer at higher stage.
   </tspan>
   <tspan x="100" dy="1em">
  I haven't got to stage 8 with my integral packing algorithm. It seems to take forever.
   </tspan>
   <tspan x="100" dy="1em">
  It appears Google Chrome is the fastest among browsers for these examples.
   </tspan>
  </text>
</g>
</svg>





SVG Math Animation Example: Apollonian Gasket (0,0,1,1)- Soddy (three tangential Circles) and Descartes' theorem. It may be slow because it's calculating circles on the fly and my circle packing algorithm is not efficient.

Apollonian Gasket(0,0,1,1)

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/SVG/DTD/svg10.dtd" >

<svg
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   version="1.1"
   width="100%"
   height="100%"
   xml:space="preserve"
   onload = "startup(evt)">

<script>

<![CDATA[

var xmlns="http://www.w3.org/2000/svg";
var xlinkns = "http://www.w3.org/1999/xlink"; 

var stageText;
var circlesText;
var totalCirclesText;
var redStop;

var drawingScale = 100;
var circles = new Array();

var curvaturePool = [0.0001];
var circlesMap = [3,1,2,5,4];

var O = {};

var currentCircle = 1;
var lenTangentArray = 3;

var nStage = 0;

function startup(evt)
{
	init();

	// Setting up initial configuration
      // 1st circle at the origin (-1,0). Vertex A
	// The center of circle 2 and 3 are B and C, respectively.

      var Ax = -1.0;
      var Ay = 0.0;

	// The three curvatures are:
      var curvA = 1;
	var curvB = 1;
    	var curvC = 0.0001;
      var curvD = 0.0001;

      // The three radii are:
      var a = 1/curvA;
	var b = 1/curvB;
	var c = 1/curvC;

	var By = 0.0;
 	var Bx = 1.0;;
 
	// top circle with 0 curvature (line)
	var Cy = -9999;
	var Cx = 0.0;

	// center of the outer circumcircle
	Dx = 0.0;
	Dy = 9999;

	// Now, put the data into circle object

  	O = {x:0, y:0, curvature:1, tangents:[], stage:0};
  	circles[0]= O; //junk 

      // valid index starts from 1 not 0

  	O = {x:Ax, y:Ay, curvature:curvA, tangents:[2,3,4], stage:0};
  	circles[1]= O;	

  	O = {x:Bx, y:By, curvature:curvB, tangents:[1,3,4], stage:0};
  	circles[2]= O; 
 
  	O = {x:Cx, y:Cy, curvature:curvC, tangents:[1,2,4], stage:0};
  	circles[3]= O; 

      // 4th circle: outer circle
  	O = {x:Dx, y:Dy, curvature:curvD, tangents:[1,2,3], stage:0};
  	circles[4]= O;

      // Apollonian 5th 
  	O = {x:0, y:0, curvature:0, tangents:[],  stage:0};
  	circles[5]= O;  

	circles[5].curvature=soddy(1/circles[1].curvature,1/circles[2].curvature,1/circles[3].curvature,5);
     
      // Now we have a configuration to start

	// To get 5th circle, 
	currentCircle = 5;

	findApollonian(1,2,3,4,currentCircle);
	
	for(i=1;i<=currentCircle;i++) {
      	drawCircle(i);
		curvaturePool.push(circles[i].curvature);
	}

	displayStatus();
}

function soddy(r1,r2,r3,n)
{
	var r;
  	if(n==4) {
		r = r1*r2*r3/
		( (r1*r2+r2*r3+r1*r3) - 2*Math.sqrt(r1*r2*r3*(r1+r2+r3)) )
	}
  	if(n==5) {
		r = r1*r2*r3/
		((r1*r2+r2*r3+r1*r3) + 2*Math.sqrt(r1*r2*r3*(r1+r2+r3)))
	}
	curv = 1/r
	return curv;	
}

function stageUp()
{
	nStage++;
/*
	if(nStage>=4) alert("It will be getting slower and slower.\n If you see the red highlight at the center of the button, it tells you it's done for the stage");
*/
	nextCircle(currentCircle);
	displayStatus();
}

function init()
{
	stageText = document.getElementById("stage"); 
	stageText.firstChild.nodeValue=0;
	circlesText = document.getElementById("circles"); 
	circlesText.firstChild.nodeValue=5;
	totalCirclesText = document.getElementById("totalCircles"); 
	totalCirclesText.firstChild.nodeValue=5;
	redStop = document.getElementById("RedStop");
}

function displayStatus()
{
	stageText.firstChild.nodeValue=nStage;
	if(nStage==0) {
		circlesText.firstChild.nodeValue=5;
		totalCirclesText.firstChild.nodeValue=5;
	}
	else {
		circlesText.firstChild.nodeValue=Math.pow(3,nStage)*2;
		totalCirclesText.firstChild.nodeValue=Math.pow(3,nStage+1)+2;
	}
}

function nextCircle()
{	
	var fourCircles = [];
 	var iStartingCircle = [];
  	var nSC = 0;
		
	ilen = 1;
      for(var i=1;i<=currentCircle;i++) {
		if(circles[i].tangents.length >= lenTangentArray) {
			lenTangentArray = circles[i].tangents.length;
		}
	}

 	for(var i=1;i<=currentCircle;i++) { 
		if(circles[i].tangents.length < lenTangentArray) {
			iStartingCircle[nSC] = i;
			nSC++;
		}
	}

	for(var ns=0;ns<nSC;ns++) 
 	{
        iStart = iStartingCircle[ns];
	  ilen = circles[iStart].tangents.length;
	  var isThere = 0;
	  var isTangent = 1;
	  var isNewFour = 1;

	  for(var i=0;i<ilen;i++) {
		i1 = iStart;
		//i4 as one Apollonian
		i4 = circles[iStart].tangents[i]; 
		for(var j=0;j<ilen;j++) {
 			if(j==i) {
				continue;
			}
			i2 = circles[iStart].tangents[j];
			for(var k=0;k<ilen;k++) {
				if(k==j || k==i) {
					continue;
				}
				i3 = circles[iStart].tangents[k];
				/* (1) Check if the first three circles (i1,i2,i3) are neighbors. i1 has i2,i3 but i2 and i3 may not touching each other (2) Check if i4 touches i1,i2,i3.*/
				isTangent = checkTangency(i1,i2,i3,i4);

				if(isTangent==0) {
					continue;
				}
				var curv = getCurvature(i1,i2,i3,i4);

				// Check if this circle has been made in the previous stages.
				isThere=checkCurvature(curv);

				if(isThere==1) {
					st1=circles[i1].stage;
					st2=circles[i2].stage;
					st3=circles[i3].stage;
					st4=circles[i4].stage;

					if( st1!=nStage-1 && st2!=nStage-1 && st3!=nStage-1 && st3!=nStage-1)continue;

				}

				//Check if the 4 circles are in current set
				
				if(fourCircles.length>0){
				 isNewFour = checkFourCircles(i1,i2,i3,i4,fourCircles);
				}
				if(isNewFour==0) {
				  continue;
				}

				fourCircles.push(i1);
				fourCircles.push(i2);
				fourCircles.push(i3);
				fourCircles.push(i4);
			}
		}
 	  }
	}

	nset = fourCircles.length/4;

	for(var i=0;i<nset;i++) {

		currentCircle++;

		O = {x:0, y:0, curvature:1, tangents:[], id:currentCircle};

		circles[currentCircle] = O;

		i1 = fourCircles[4*i];
		i2 = fourCircles[4*i+1];
		i3 = fourCircles[4*i+2];
		i4 = fourCircles[4*i+3];
		
		findApollonian(i1,i2,i3,i4,currentCircle);
		drawCircle(currentCircle);
		curvaturePool.push(circles[currentCircle].curvature);
	}
	
}

/* Check if a set of 4 circles are already in the set */
function checkFourCircles(n0,n1,n2,n3,cset)
{
	// return 0: duplicate
	//        1: new - OK to put it into the list 
	nset = cset.length/4;
  	narr = [n0,n1,n2];
	narr.sort();
	for(var i=0;i<nset;i++) {
		// compare Apollonian first
		// if it's different, the two can't be the same
		if(n3!=cset[4*i+3]) continue;
		var carr = [cset[4*i],cset[4*i+1],cset[4*i+2]];
		carr.sort();
		if(narr[0]==carr[0]&&
			narr[1]==carr[1]&&
				narr[2]==carr[2]) {
			return 0;
		}
	}
  	return 1;
}

/* Check (1) circle n3 is in the tangents array of n2, vise versa.
	   (2) circles n1, n2 and n3 shares n4
   The conditions (1) and (2) should be met to get an Apollonian */ 
function checkTangency(n1,n2,n3,n4)
{
	var pass = 0;
      var passlimit = 12;

	// n1 in n2
	for(var i=0;i<circles[n2].tangents.length;i++) {
		if(n1==circles[n2].tangents[i]) {
			pass++;
			break;
		}	
	}
      // n1 in n3
	for(var i=0;i<circles[n3].tangents.length;i++) {
		if(n1==circles[n3].tangents[i]) {
			pass++;
			break;
		}	
	}
      // n1 in n4
	for(var i=0;i<circles[n4].tangents.length;i++) {
		if(n1==circles[n4].tangents[i]) {
			pass++;
			break;
		}	
	}
	// n2 in n1
	for(var i=0;i<circles[n1].tangents.length;i++) {
		if(n2==circles[n1].tangents[i]) {
			pass++;
			break;
		}	
	}
	// n2 in n3
	for(var i=0;i<circles[n3].tangents.length;i++) {
		if(n2==circles[n3].tangents[i]) {
			pass++;
			break;
		}	
	}
	// n2 in n4
	for(var i=0;i<circles[n4].tangents.length;i++) {
		if(n2==circles[n4].tangents[i]) {	
			pass++;
			break;
		}
	}
	// n3 in n1
	for(var i=0;i<circles[n1].tangents.length;i++) {
		if(n3==circles[n1].tangents[i]) {
			pass++;
			break;
		}	
	}
	// n3 in n2
	for(var i=0;i<circles[n2].tangents.length;i++) {
		if(n3==circles[n2].tangents[i]) {	
			pass++;
			break;
		}
	}
	// n3 in n4
	for(var i=0;i<circles[n4].tangents.length;i++) {
		if(n3==circles[n4].tangents[i]) {	
			pass++;
			break;
		}
	}
	// n4 in n1
	for(var i=0;i<circles[n1].tangents.length;i++) {
		if(n4==circles[n1].tangents[i]) {	
			pass++;
			break;
		}
	}
	// n4 in n2
	for(var i=0;i<circles[n2].tangents.length;i++) {
		if(n4==circles[n2].tangents[i]) {	
			pass++;
			break;
		}
	}
	// n4 in n3
	for(var i=0;i<circles[n3].tangents.length;i++) {
		if(n4==circles[n3].tangents[i]) {	
			pass++;
			break;
		}
	}
	if(pass>=passlimit) {
   	  return 1;
	}
	return 0;
}

// Check if a circle already been made in the previous stages. 
// It's done by comparing the curvatures.
function checkCurvature(cv)
{
	for(var i=0;i<curvaturePool.length;i++) {
		if( Math.round(cv) == Math.round(curvaturePool[i]) ) return 1;
	}
	return 0;
}


// input: 	i1,i2,i3 = tangent circles
//		i4 = one of Apollonian cicle 

function findApollonian(i1,i2,i3,i4,iApollo)
{
  	var curv = getCurvature(i1,i2,i3,i4);

	circles[iApollo].curvature = curv;

	var realx = getCoord(1,i1,i2,i3,i4,iApollo);	

	circles[iApollo].x = realx;
	var imagy = getCoord(2,i1,i2,i3,i4,iApollo);

	circles[iApollo].y = imagy;
   
	// setup tangents 
 	//new circle
	circles[iApollo].tangents.push(i1);
	circles[iApollo].tangents.push(i2);
	circles[iApollo].tangents.push(i3);
	// updates existing tangents of existing circles
	circles[i1].tangents.push(iApollo);
	circles[i2].tangents.push(iApollo);
	circles[i3].tangents.push(iApollo);
	// stage
	circles[iApollo].stage = nStage;

   	circlesMap.push(iApollo);
	circlesMap.push(i1);
	circlesMap.push(i2);
	circlesMap.push(i3);
	circlesMap.push(i4);
}

function getCoord(flag,i1,i2,i3,i4,i4prime)
{
      b1 = circles[i1].curvature;
  	b2 = circles[i2].curvature;
	b3 = circles[i3].curvature;
	b4 = circles[i4].curvature;
	b4prime = circles[i4prime].curvature;
 
	if(flag==1) 
	{
      	z1 = circles[i1].x;
  		z2 = circles[i2].x;
		z3 = circles[i3].x;
		z4 = circles[i4].x;
	}
	else
	{
      	z1 = circles[i1].y;
  		z2 = circles[i2].y;
		z3 = circles[i3].y;
		z4 = circles[i4].y;
	}

  	z4prime = (2*b1*z1+2*b2*z2+2*b3*z3-b4*z4)/b4prime;
	return z4prime;
 
}

function getCurvature(i1,i2,i3,i4)
{
      b1 = circles[i1].curvature;
  	b2 = circles[i2].curvature;
	b3 = circles[i3].curvature;
	b4 = circles[i4].curvature;

  	b4prime = 2*b1+2*b2+2*b3-b4;
	return b4prime;
}


function heron(a,b,c)
{
	var s = 0.5 * (a + b + c);
	var delta = Math.sqrt(s*(s-a)*(s-b)*(s-c));
	return delta;
}

function drawCircle(i)
{
  	var obj = document.createElementNS(xmlns,"circle");
  	obj.setAttributeNS(null,"id","circle"+i);
  	obj.setAttributeNS(null,"cx",drawingScale*circles[i].x);
  	obj.setAttributeNS(null,"cy",drawingScale*circles[i].y);
  	obj.setAttributeNS(null,"r",drawingScale*Math.abs(1/circles[i].curvature));
  	obj.setAttributeNS(null,"fill","none");
  	obj.setAttributeNS(null,"stroke","black");
	if(nStage==1) obj.setAttributeNS(null,"stroke","red");
	if(nStage==2) obj.setAttributeNS(null,"stroke","green");
	if(nStage==3) obj.setAttributeNS(null,"stroke","blue");
	if(nStage==4) obj.setAttributeNS(null,"stroke","purple");
  	obj.setAttributeNS(null,"stroke-width","1");
  	document.getElementById("Apollo").appendChild(obj);
 /*
  	if(parseInt(circles[i].curvature) > 0) {
  		var label = document.createElementNS(xmlns,"text");
  		label.setAttributeNS(null,"id","label"+i);
  		label.setAttributeNS(null,"x",drawingScale*circles[i].x);
  		label.setAttributeNS(null,"y",drawingScale*circles[i].y);
  		label.setAttributeNS(null,"font-size","12");
  		label.setAttributeNS(null,"fill","black");
  		var txtNode = document.createTextNode(circles[i].curvature);
  		//var txtNode = document.createTextNode(i);
  		label.appendChild(txtNode);
  		if(nStage<3) document.getElementById("Apollo").appendChild(label);
 	}
*/
}

function mouseOverRed()
{
  redStop.setAttributeNS(null,"stop-color", "white"); 
}

function mouseOutRed()
{
  redStop.setAttributeNS(null,"stop-color", "red"); 
}

]]>

</script> 

<g id="title">
  <text id="category" font-size="40"
   x="80" y="50">
  Apollonian Gasket (0,0,1,1) 
  </text>
</g>

<g id="Apollo" transform="translate(220,200)">
</g>

<text id="status" y="370" font-size="20">
   <tspan x="100" dy="1em">Current Stage (usually up to 5-7): </tspan><tspan id="stage"> 0</tspan>
   <tspan x="100" dy="1em">Circles at This Stage: </tspan><tspan id="circles"> 5</tspan>
   <tspan x="100" dy="1em">Total Circles:</tspan><tspan id="totalCircles"> 5</tspan>
 </text>

<!-- button -->
<defs>
<radialGradient id="RedG">
   <stop id="RedStop" stop-color="red" offset="0"/>
   <stop stop-color="white" offset="80%"/>
   <stop stop-color="red" offset="100%"/>
 </radialGradient>
</defs>

<g id="upButton" transform="translate(0,335)"
			onclick="stageUp()" 
               onmouseover="mouseOverRed()" 
               onmouseout="mouseOutRed()">

  <circle id="ZoomInCircle" cx = "50" cy="50" r="20" fill="url(#RedG)" />
  <path d="M 50 40 L 50 60 M 40 50 L 60 50" fill="none" stroke="black" stroke-width="3"/>
</g>
 
<g id="subNote">
  <text font-size="14" y="450">
   <tspan x="100" dy="0em">
  Note: As the stage number going up, it's getting slower and slower. 
   </tspan>
   <tspan x="100" dy="1em">
  Since it's generating circles on the fly, your browser may suffer at higher stage.
   </tspan>
   <tspan x="100" dy="1em">
  I haven't got to stage 8 with my algorithm. It seems to take forever.
   </tspan>
  </text>
</g>
</svg>







SVG Math Animation Example: Nested Apollonian Gasket [n,n+1,n(n+1),n(n+1)+1] (n=2,10) - Soddy (three tangential Circles) and Descartes' theorem. It may be slow because it's calculating circles on the fly and my circle packing algorithm is not efficient.

Apollonian Nested Gasket(0,0,1,1)

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/SVG/DTD/svg10.dtd" >

<svg
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   version="1.1"
   width="100%"
   height="100%"
   xml:space="preserve"
   onload = "startup(evt)">

<script>

<![CDATA[

var xmlns="http://www.w3.org/2000/svg";
var xlinkns = "http://www.w3.org/1999/xlink"; 

var stageText;
var circlesText;
var totalCirclesText;
var redStop;

var drawingScale = 350;
var circles = new Array();
var curvaturePool = new Array();

var circlesMap = [3,1,2,5,4];

var O = {};

var currentCircle = new Array();

var nStage = 0;
var startN = 2;
var numberOfNest= 10;


function startup(evt)
{
	init();

	//
	//  A at the bottom, B on top of a with same x
	//  C right side of A and B
	//
	//			B
	//			  C
	//			A
	//

	for(inest=0;inest<numberOfNest;inest++) {
	// The three curvatures are:
	var curvA = startN + 1;
	var curvB = startN*(startN+1);
    	var curvC = startN*(startN+1)+1;

	var ra = 1/curvA;
	var rb = 1/curvB;
	var rc = 1/curvC;

	// Setting up initial configuration

	// 1st circle (0,ra) centered. This center is Vertex A
	// The center of circle 2 and 3 are B and C, respectively.
 	// The three radii are:

	var Ax = 0.0;
	var Ay = ra;
 	var Bx = 0.0;
	var By = 2*ra+rb;

	// sides of the triangles with 3 vertices
	var sideA = rb + rc;
	var sideB = ra + rc;
	var sideC = ra + rb;

	// angles
	var angleA = angle(1,sideA,sideB,sideC);
	var angleB = angle(2,sideA,sideB,sideC);
	var angleC = angle(3,sideA,sideB,sideC);

	/* To calculate the center position of circle 3 (C),
	   we need the angle A */ 

	var Cx = sideB*Math.sin(angleA);
	var Cy = Ay + sideB*Math.cos(angleA);

      // three points on the Soddy lines
	// on BC
	var midax = rb*Math.sin(angleB);
	var miday = By-rb*Math.cos(angleB);
	// on AC
	var midbx = ra*Math.sin(angleA);
	var midby = Ay + ra*Math.cos(angleA);
	// on AB
	var midcx = 0.0;
	var midcy = Ay + ra;
 
  	// curvature of the inner Soddy circle
	var curvD=soddy(ra,rb,rc,4);

	// take outer circle as 4th circle since it's aligned in y-axis
	Dy = ra + rb;
	Dx = 0.0;

	// Now we have all the information on the circles A,B,C and 4th outer circle D

	circles[inest] = new Array(numberOfNest);
	curvaturePool[inest] = new Array(numberOfNest);
	currentCircle[inest] = 1;

  	O = {x:0, y:0, curvature:0, tangents:[], stage:0};
  	circles[inest][0]= O; //junk 

      // valid index starts from 1 not 0

  	O = {x:Ax, y:Ay, curvature:curvA, tangents:[2,3,4], stage:0};
  	circles[inest][1]= O;


  	O = {x:Bx, y:By, curvature:curvB, tangents:[1,3,4], stage:0};
  	circles[inest][2]= O; 
 
  	O = {x:Cx, y:Cy, curvature:curvC, tangents:[1,2,4], stage:0};
  	circles[inest][3]= O; 

      // 4th circle: outer circle
  	O = {x:Dx, y:Dy, curvature:curvD, tangents:[1,2,3], stage:0};
  	circles[inest][4]= O;

      // Apollonian 5th 
  	O = {x:0, y:0, curvature:0, tangents:[],  stage:0};
  	circles[inest][5]= O;  
	

	// 5th circle is inner circle, we get the curvature using soddy()
	circles[inest][5].curvature=soddy(1/circles[inest][1].curvature,1/circles[inest][2].curvature,1/circles[inest][3].curvature,5);
      
      // Now we have a configuration to start  

	// To get coordinates of the 5th circle, 
	currentCircle[inest] = 5;
	findApollonian(1,2,3,4,currentCircle[inest],inest);

	for(i=1;i<=currentCircle[inest];i++) {
      	drawCircle(i,inest);
		curvaturePool[inest].push(circles[inest][i].curvature);
	}

	displayStatus();
	startN++;
	}
}

function trilinear(n,a,b,c)
{
	// angles
	var A = angle(1,a,b,c);
	var B = angle(2,a,b,c);
	var C = angle(3,a,b,c);

	// trilinear coordinates
	alpha = 1/Math.cos(A/2)*Math.cos(B/2)*Math.cos(C/2)+1;
	beta = 1/Math.cos(B/2)*Math.cos(C/2)*Math.cos(A/2)+1;
	gamma = 1/Math.cos(C/2)*Math.cos(A/2)*Math.cos(B/2)+1;

	//area
	var delta = getTriangleArea(a,b,c);

	var k = 2*delta/(alpha*a+beta*b+gamma*c);

	if(n==1) return k*alpha;
	else if(n==2) return k*beta;
	else if(n==3) return k*gamma;
}

function getTriangleArea(a,b,c)
{
	s = (a+b+c)/2;
	area = Math.sqrt( s*(s-a)*(s-b)*(s-c) );
	return area;
}

function angle(n,a,b,c)
{
	var cos;

	if(n==1) 
		cos = (-a*a+b*b+c*c)/(2*b*c);		
	else if(n==2)
		cos = (a*a-b*b+c*c)/(2*a*c);
	else if(n==3)
		cos = (a*a+b*b-c*c)/(2*a*b);

	return Math.acos(cos);
}

function soddy(r1,r2,r3,n)
{
	// n=4: outer, n=5: inner
	var r;
	
  	if(n==4) {
		r = r1*r2*r3/
		( (r1*r2+r2*r3+r1*r3) - 2*Math.sqrt(r1*r2*r3*(r1+r2+r3)) )
	}
  	if(n==5) {
		r = r1*r2*r3/
		((r1*r2+r2*r3+r1*r3) + 2*Math.sqrt(r1*r2*r3*(r1+r2+r3)))
	}

	curv = 1/r
	return curv;	
}

function stageUp()
{
	nStage++;
/*
	if(nStage>=4) alert("It will be getting slower and slower.\n If you see the red highlight at the center of the button, it is telling you it's done for the stage");
*/
	
	for(inest=0;inest<numberOfNest;inest++) {
		nextCircle(inest);
	}
	displayStatus();
}

function init()
{
	stageText = document.getElementById("stage"); 
	stageText.firstChild.nodeValue=0;
	/*
	circlesText = document.getElementById("circles"); 
	circlesText.firstChild.nodeValue=5;
	totalCirclesText = document.getElementById("totalCircles"); 
	totalCirclesText.firstChild.nodeValue=5;
	*/
	redStop = document.getElementById("RedStop");
}

function displayStatus()
{
	stageText.firstChild.nodeValue=nStage;
	/*
	if(nStage==0) {
		circlesText.firstChild.nodeValue=5;
		totalCirclesText.firstChild.nodeValue=5;
	}
	else {
		circlesText.firstChild.nodeValue=Math.pow(3,nStage)*2;
		totalCirclesText.firstChild.nodeValue=Math.pow(3,nStage+1)+2;
	}
	*/
}

function nextCircle(inest)
{	
	var fourCircles = [];
 	var iStartingCircle = [];
  	var nSC = 0;
	var lenTangentArray = 3;
	
	ilen = 1;
      for(var i=1;i<=currentCircle[inest];i++) {
		if(circles[inest][i].tangents.length >= lenTangentArray) {
			lenTangentArray = circles[inest][i].tangents.length;
		}
	}
 	for(var i=1;i<=currentCircle[inest];i++) { 
		if(circles[inest][i].tangents.length < lenTangentArray) {
			iStartingCircle[nSC] = i;
			nSC++;
		}
	}

	for(var ns=0;ns<nSC;ns++) 
 	{
        iStart = iStartingCircle[ns];
	  ilen = circles[inest][iStart].tangents.length;
	  var isThere = 0;
	  var isTangent = 1;
	  var isNewFour = 1;

	  for(var i=0;i<ilen;i++) {
		i1 = iStart;
		//i4 as one Apollonian
		i4 = circles[inest][iStart].tangents[i]; 
		for(var j=0;j<ilen;j++) {
 			if(j==i) {
				continue;
			}
			i2 = circles[inest][iStart].tangents[j];
			for(var k=0;k<ilen;k++) {
				if(k==j || k==i) {
					continue;
				}
				i3 = circles[inest][iStart].tangents[k];
				/* (1) Check if the first three circles (i1,i2,i3) are neighbors. i1 has i2,i3 but i2 and i3 may not touching each other (2) Check if i4 touches i1,i2,i3.*/
				isTangent = checkTangency(i1,i2,i3,i4,inest);

				if(isTangent==0) {
					continue;
				}
				var curv = getCurvature(i1,i2,i3,i4,inest);

				// Check if this circle has been made in the previous stages.
				isThere=checkCurvature(curv,inest);
				if(isThere==1) {
					st1=circles[inest][i1].stage;
					st2=circles[inest][i2].stage;
					st3=circles[inest][i3].stage;
					st4=circles[inest][i4].stage;

					if( st1!=nStage-1 && st2!=nStage-1 && st3!=nStage-1 && st3!=nStage-1) continue;
				}

				//Check if the 4 circles are in current set
				
				if(fourCircles.length>0){
				 isNewFour = checkFourCircles(i1,i2,i3,i4,fourCircles);
				}
				if(isNewFour==0) {
				  continue;
				}

				fourCircles.push(i1);
				fourCircles.push(i2);
				fourCircles.push(i3);
				fourCircles.push(i4);
			}
		}
 	  }
	}

	nset = fourCircles.length/4;

	for(var i=0;i<nset;i++) {

		currentCircle[inest]++;

		O = {x:0, y:0, curvature:1, tangents:[]};

		circles[inest][currentCircle[inest]] = O;

		i1 = fourCircles[4*i];
		i2 = fourCircles[4*i+1];
		i3 = fourCircles[4*i+2];
		i4 = fourCircles[4*i+3];
		
		findApollonian(i1,i2,i3,i4,currentCircle[inest],inest);
		drawCircle(currentCircle[inest],inest);
		curvaturePool[inest].push(circles[inest][currentCircle[inest]].curvature);
	}
	
}

/* Check if a set of 4 circles are already in the set */
function checkFourCircles(n0,n1,n2,n3,cset)
{
	// return 0: duplicate
	//        1: new - OK to put it into the list 
	nset = cset.length/4;
  	narr = [n0,n1,n2];
	narr.sort();
	for(var i=0;i<nset;i++) {
		// compare Apollonian first
		// if it's different, the two can't be the same
		if(n3!=cset[4*i+3]) continue;
		var carr = [cset[4*i],cset[4*i+1],cset[4*i+2]];
		carr.sort();
		if(narr[0]==carr[0]&&
			narr[1]==carr[1]&&
				narr[2]==carr[2]) {
			return 0;
		}
	}
  	return 1;
}

/* Check (1) circle n3 is in the tangents array of n2, vise versa.
	   (2) circles n1, n2 and n3 shares n4
   The conditions (1) and (2) should be met to get an Apollonian */ 
function checkTangency(n1,n2,n3,n4,inest)
{
	var pass = 0;
      var passlimit = 12;

	// n1 in n2
	for(var i=0;i<circles[inest][n2].tangents.length;i++) {
		if(n1==circles[inest][n2].tangents[i]) {
			pass++;
			break;
		}	
	}
      // n1 in n3
	for(var i=0;i<circles[inest][n3].tangents.length;i++) {
		if(n1==circles[inest][n3].tangents[i]) {
			pass++;
			break;
		}	
	}
      // n1 in n4
	for(var i=0;i<circles[inest][n4].tangents.length;i++) {
		if(n1==circles[inest][n4].tangents[i]) {
			pass++;
			break;
		}	
	}
	// n2 in n1
	for(var i=0;i<circles[inest][n1].tangents.length;i++) {
		if(n2==circles[inest][n1].tangents[i]) {
			pass++;
			break;
		}	
	}
	// n2 in n3
	for(var i=0;i<circles[inest][n3].tangents.length;i++) {
		if(n2==circles[inest][n3].tangents[i]) {
			pass++;
			break;
		}	
	}
	// n2 in n4
	for(var i=0;i<circles[inest][n4].tangents.length;i++) {
		if(n2==circles[inest][n4].tangents[i]) {	
			pass++;
			break;
		}
	}
	// n3 in n1
	for(var i=0;i<circles[inest][n1].tangents.length;i++) {
		if(n3==circles[inest][n1].tangents[i]) {
			pass++;
			break;
		}	
	}
	// n3 in n2
	for(var i=0;i<circles[inest][n2].tangents.length;i++) {
		if(n3==circles[inest][n2].tangents[i]) {	
			pass++;
			break;
		}
	}
	// n3 in n4
	for(var i=0;i<circles[inest][n4].tangents.length;i++) {
		if(n3==circles[inest][n4].tangents[i]) {	
			pass++;
			break;
		}
	}
	// n4 in n1
	for(var i=0;i<circles[inest][n1].tangents.length;i++) {
		if(n4==circles[inest][n1].tangents[i]) {	
			pass++;
			break;
		}
	}
	// n4 in n2
	for(var i=0;i<circles[inest][n2].tangents.length;i++) {
		if(n4==circles[inest][n2].tangents[i]) {	
			pass++;
			break;
		}
	}
	// n4 in n3
	for(var i=0;i<circles[inest][n3].tangents.length;i++) {
		if(n4==circles[inest][n3].tangents[i]) {	
			pass++;
			break;
		}
	}
	if(pass>=passlimit) {
   	  return 1;
	}
	return 0;
}

// Check if a circle already been made in the previous stages. 
// It's done by comparing the curvatures.
function checkCurvature(cv,inest)
{
	for(var i=0;i<curvaturePool[inest].length;i++) {
		if( Math.round(cv) == Math.round(curvaturePool[inest][i]) ) return 1;
	}
	return 0;
}


// input: 	i1,i2,i3 = tangent circles
//		i4 = one of Apollonian cicle 

function findApollonian(i1,i2,i3,i4,iApollo,inest)
{
  	var curv = getCurvature(i1,i2,i3,i4,inest);

	circles[inest][iApollo].curvature = curv;

	var realx = getCoord(1,i1,i2,i3,i4,iApollo,inest);	
	circles[inest][iApollo].x = realx;

	var imagy = getCoord(2,i1,i2,i3,i4,iApollo,inest);
	circles[inest][iApollo].y = imagy;
   
	// setup tangents 
 	//new circle
	circles[inest][iApollo].tangents.push(i1);
	circles[inest][iApollo].tangents.push(i2);
	circles[inest][iApollo].tangents.push(i3);
	// updates existing tangents of existing circles
	circles[inest][i1].tangents.push(iApollo);
	circles[inest][i2].tangents.push(iApollo);
	circles[inest][i3].tangents.push(iApollo);
	// stage
	circles[inest][iApollo].stage = nStage;


   	circlesMap.push(iApollo);
	circlesMap.push(i1);
	circlesMap.push(i2);
	circlesMap.push(i3);
	circlesMap.push(i4);
}

function getCoord(flag,i1,i2,i3,i4,i4prime,inest)
{
      b1 = circles[inest][i1].curvature;
  	b2 = circles[inest][i2].curvature;
	b3 = circles[inest][i3].curvature;
	b4 = circles[inest][i4].curvature;
	b4prime = circles[inest][i4prime].curvature;
 
	if(flag==1) 
	{
      	z1 = circles[inest][i1].x;
  		z2 = circles[inest][i2].x;
		z3 = circles[inest][i3].x;
		z4 = circles[inest][i4].x;
	}
	else
	{
      	z1 = circles[inest][i1].y;
  		z2 = circles[inest][i2].y;
		z3 = circles[inest][i3].y;
		z4 = circles[inest][i4].y;
	}

	z4prime = (2*b1*z1+2*b2*z2+2*b3*z3-b4*z4)/b4prime;

	return z4prime;
}

function getCurvature(i1,i2,i3,i4,inest)
{
      b1 = circles[inest][i1].curvature;
  	b2 = circles[inest][i2].curvature;
	b3 = circles[inest][i3].curvature;
	b4 = circles[inest][i4].curvature;

  	b4prime = 2*b1+2*b2+2*b3-b4;
	return b4prime;
}

function drawCircle(i,inest)
{
	
  	var obj = document.createElementNS(xmlns,"circle");
  	obj.setAttributeNS(null,"id","circle"+i);
  	obj.setAttributeNS(null,"cx",drawingScale*circles[inest][i].x);
  	obj.setAttributeNS(null,"cy",drawingScale*circles[inest][i].y);
  	obj.setAttributeNS(null,"r",drawingScale*Math.abs(1/circles[inest][i].curvature));
  	obj.setAttributeNS(null,"fill","none");
  	obj.setAttributeNS(null,"stroke","black");
	if(nStage==1) obj.setAttributeNS(null,"stroke","red");
	if(nStage==2) obj.setAttributeNS(null,"stroke","green");
	if(nStage==3) obj.setAttributeNS(null,"stroke","blue");
	if(nStage==4) obj.setAttributeNS(null,"stroke","purple");
  	obj.setAttributeNS(null,"stroke-width","1");
  	document.getElementById("Apollo").appendChild(obj);
 /*
  	if(parseInt(circles[inest][i].curvature) > 0) {
  		var label = document.createElementNS(xmlns,"text");
  		label.setAttributeNS(null,"id","label"+i);
  		label.setAttributeNS(null,"x",drawingScale*circles[inest][i].x);
  		label.setAttributeNS(null,"y",drawingScale*circles[inest][i].y);
  		label.setAttributeNS(null,"font-size","12");
  		label.setAttributeNS(null,"fill","black");
  		//var txtNode = document.createTextNode(circles[inest][i].curvature);
  		var txtNode = document.createTextNode(i);
  		label.appendChild(txtNode);
  		if(nStage<3) document.getElementById("Apollo").appendChild(label);
 	}
*/	
}

function mouseOverRed()
{
  redStop.setAttributeNS(null,"stop-color", "white"); 
}

function mouseOutRed()
{
  redStop.setAttributeNS(null,"stop-color", "red"); 
}

]]>

</script> 

<g id="title">
  <text id="category" font-size="32"
   y="50">
   <tspan x="130">Nested Apollonian Gasket </tspan>
   <tspan font-size="20" x="170" dy="1.5em">[-n,n+1,n(n+1),n(n+1)+1](n=2,10)</tspan> 
  </text>
</g>

<g id="Apollo" transform="translate(300,100)">
</g>

<text id="status" y="480" font-size="20">
   <tspan x="150" dy="1em">Current Stage (usually up to 5-7): </tspan><tspan id="stage"> 0</tspan>
<!--
   <tspan x="150" dy="1em">Circles at This Stage: </tspan><tspan id="circles"> 5</tspan>
   <tspan x="150" dy="1em">Total Circles:</tspan><tspan id="totalCircles"> 5</tspan>
-->
 </text>

<!-- button -->
<defs>
<radialGradient id="RedG">
   <stop id="RedStop" stop-color="red" offset="0"/>
   <stop stop-color="white" offset="80%"/>
   <stop stop-color="red" offset="100%"/>
 </radialGradient>
</defs>

<g id="upButton" transform="translate(50,440)"
			onclick="stageUp()" 
               onmouseover="mouseOverRed()" 
               onmouseout="mouseOutRed()">

  <circle id="StageCircle" cx = "50" cy="50" r="20" fill="url(#RedG)" />
  <path d="M 50 40 L 50 60 M 40 50 L 60 50" fill="none" stroke="black" stroke-width="3"/>
</g>
 
<g id="subNote">
  <text font-size="14" y="530">
   <tspan x="90" dy="0em">
  Note: As the stage number going up, it's getting slower and slower. 
   </tspan>
   <tspan x="90" dy="1em">
  Since it's generating circles on the fly, your browser may suffer at higher stage.
   </tspan>
   <tspan x="90" dy="1em">
  I haven't got to stage 8 with my algorithm. It seems to take forever.
   </tspan>
  </text>
</g>
</svg>






SVG Math Animation Example: Pythagorean (Pythagoras') Theorem - SMIL

Pythagorean (Pythagoras') Theorem

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/SVG/DTD/svg10.dtd" >

<svg
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   version="1.1"
   width="100%"
   height="100%"
   xml:space="preserve">

<script>

<![CDATA[

var xmlns="http://www.w3.org/2000/svg";
var xlinkns = "http://www.w3.org/1999/xlink"; 

]]>

</script> 

<g id="title">

</g>

<g id="Pythagoras" transform="translate(100,100)">

  <text id="title" font-family="serif" font-size="40" x="-30" y="-30">
  Pythagorean theorem
  </text>

<!-- background big square -->
 <rect id="BigSquare" x="0" y="0" width="350" height="350"
	stroke="lime" stroke-width="1" fill="green"/>

<g  id="abcSquare">

<!-- a^2 -->
  <text x = "90" y = "65" font-family="serif" font-size = "30" fill = "white" opacity="0">2
<animate attributeName="opacity" keyTimes="0;0.3;0.5;1" values="0;0;1;1" begin="2s" dur="20s" repeatCount="1" fill="freeze"/> 

  </text>
  <text x = "50" y = "85" font-family="serif" font-size = "60" fill = "white" opacity="0">
a
<animate attributeName="opacity" keyTimes="0;0.3;0.5;1" values="0;0;1;1" begin="2s" dur="20s" repeatCount="1" fill="freeze"/> 
  </text>

<!-- b^2 -->
  <text x = "260" y = "95" font-family="serif" font-size = "30" fill = "white" opacity="0">2
<animate attributeName="opacity" keyTimes="0;0.8;0.9;1" values="0;0;1;1" begin="2s" dur="20s" repeatCount="1" fill="freeze"/> 
  </text>
 <text x = "220" y = "115" font-family="serif" font-size = "60" fill = "white" opacity="0">
b
<animate attributeName="opacity" keyTimes="0;0.8;0.9;1" values="0;0;1;1" begin="2s" dur="20s" repeatCount="1" fill="freeze"/> 
  </text>

<!-- c^2 -->
 <text x = "185" y = "155" font-family="serif" font-size = "30" fill = "white" opacity="0">
2
<animate attributeName="opacity" keyTimes="0;0.25;0.4;1" values="1;1;0;0" begin="0s" dur="20s" repeatCount="1" fill="freeze" /> 
  </text>
 <text x = "145" y = "175" font-family="serif" font-size = "60" fill = "white" opacity="0">
c
<animate attributeName="opacity" keyTimes="0;0.25;0.4;1" values="1;1;0;0" begin="0s" dur="20s" repeatCount="1" fill="freeze"/> 
  </text>
</g>

<!-- partition between a^2 and b^2-->
 <path id="triangleA" d="M150 0 L150 150" fill="none"
	stroke="white" stroke-width="2" opacity="0">
<animate attributeName="opacity" keyTimes="0;0.3;0.5;1" values="0;0;1;1" begin="2s" dur="20s" repeatCount="1" fill="freeze"/> 
 </path>

<!--lower left-->
 <path id="triangleA" d="M0 150 L0 350 150 350 z" fill="lime"
	stroke="white" stroke-width="2"/>

<!--lower right-->
 <path id="triangleB" d="M150 350 L350 200 350 350 z" fill="lime"
	stroke="white" stroke-width="2">
 </path>

<!--upper left-->
 <path id="triangleC" d="M0 0 L0 150 200 0 z" fill="lime"
	stroke="white" stroke-width="2">
	<animateTransform attributeName="transform" type="rotate"
		cx="0" cy="150" begin="2s" dur="10s" values="0,0,150;90,0,150" fill="freeze" repeatCount="1"/>
</path>

<!--upper right-->
 <path id="triangleD" d="M200 0 L350 200 350 0 z" fill="lime"
	stroke="white" stroke-width="2">
	<animateTransform attributeName="transform" type="rotate"
		cx="0" cy="150" dur="10s" values="0,350,200;-90,350,200" fill="freeze" repeatCount="1"
begin="12"
/>
</path>

</g>

<g id="Note">
  <text font-family="serif" font-size="28" y="500" fill="black">
   <tspan x="65" dy="0em">
   Dark green area remains the same.
    </tspan>
   <tspan x="150" dy="1em">
   It's c-squared.
    </tspan>
  </text>
</g>
</svg>






SVG Math Animation Example: Pythagorean (Pythagoras') Theorem - SMIL Proof #2

Pythagorean (Pythagoras') Theorem 2

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/SVG/DTD/svg10.dtd" >

<svg
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   version="1.1"
   viewBox="0 0 2000 1600"
   width="100%"
   height="100%"
   xml:space="preserve"
   onload = "startUp(evt)">

<script>

<![CDATA[

var xmlns="http://www.w3.org/2000/svg";
var xlinkns = "http://www.w3.org/1999/xlink"; 

function startUp(evt)
{}

]]>

</script> 

<g id="title">

</g>


<text id="title" font-family="serif" font-size="100" x="100" y="200">
  Pythagorean theorem #2
</text>

<g id="Pythagoras" transform="translate(800,1000) rotate(90)">

<!-- 1st stage of animation -trianlge moving -->

<!-- side 5 square excluding moving triangle -->
 <path id="Square5A" d="M-300 0 L0 400 -400 700 -400 300 -700 300 z" fill="green" stroke="none">
<animate id="Square5AColor" attributeName="fill" begin="para4MovingA.begin" dur="10s" repeatCount="1" fill="freeze"
keyTimes="0;1" 
values="white;white" />
</path>

<!-- moving triangle -->
 <path id="Square5BTriangle" d="M-400 700 L-400 300 -700 300 z" fill="green" stroke="none">
<animate id="triangleMove" attributeName="d" begin="1s" dur="3s" repeatCount="1" fill="freeze"
values=
 "M-400 700 L-400 300 -700 300 z;
M0 400 L0 0 -300 0 z" /> 
<animate id="triangleColorChange" attributeName="fill" begin="1s" dur="3s" repeatCount="1" fill="freeze"
keyTimes="0;0.1;0.9;1" 
values="green;lime;lime;green" />
<animate id="Square5BTriangleColor" attributeName="fill" begin="para4MovingA.begin" dur="10s" repeatCount="1" fill="freeze"
keyTimes="0;1" 
values="white;white" />
</path>

<!-- 2nd stage of animation -2 parallelograms moving -->

<path id="parallel4" fill="green" stroke="none">
<animate id="para4MovingA" attributeName="d" 
begin="triangleMove.end+1" dur="10s" fill="freeze"
keyTimes="0;0.4;0.6;1" 
values=
"M0 0 L0 400 -400 700 -400 300 z;
M400 -300 L400 100 0 400 0 0 z;
M400 -300 L400 100 0 400 0 0 z;
M400 0 L400 400 0 400 0 0 z"/>
</path>
<path id="parallel3" fill="green" stroke="none">
<animate id="para4MovingB" attributeName="d" 
begin="triangleMove.end+1" 
dur="10s" fill="freeze"
keyTimes="0;0.4;0.6;1"
values=
"M0 0 L-300 0 -700 300 -400 300 z;
M400 -300 L100 -300 -300 0 0 0 z;
M400 -300 L100 -300 -300 0 0 0 z;
M0 -300 -300 -300 -300 0 0 0 z"/>
</path>

<!-- Square5,4,3 are the fixture. They are not moving parts -->
 <path id="Square5" d="M-300 0 L0 400 -400 700 -700 300 z" fill="none" stroke="black" stroke-width="2">
<animate id="Square5ColorChange" attributeName="fill" 
begin="para4MovingA.end" dur="2s" repeatCount="indefinite" fill="freeze"
keyTimes="0;0.25;0.75;1" 
values="lime;green;lime;green" />
</path>
 <path id="Square4" d="M0 0 L0 400 400 400 400 0 z" fill="none" stroke="black" stroke-width="2">
<animate id="Square5ColorChange" attributeName="fill" 
begin="para4MovingB.end" dur="2s" repeatCount="indefinite" fill="freeze"
keyTimes="0;0.5;0.75;1" 
values="lime;green;lime;green" />
</path>
 <path id="Square3" d="M-300 0 L0 0 0 -300 -300 -300 z" fill="none" stroke="black" stroke-width="2">
<animate id="Square5ColorChange" attributeName="fill" 
begin="para4MovingB.end" dur="2s" repeatCount="indefinite" fill="freeze"
keyTimes="0;0.5;0.75;1.0" 
values="lime;green;lime;green" />
</path>

</g>

</svg>






SVG Math Animation Example: Cycloid with Javascript

Cycloid with Javascript

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/SVG/DTD/svg10.dtd" >

<svg
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   version="1.1"
   width="100%"
   height="100%"
   xml:space="preserve"
   onresize="resize()"
   onload = "startup(evt)">

<script>

<![CDATA[

var xmlns="http://www.w3.org/2000/svg";
var xlinkns = "http://www.w3.org/1999/xlink"; 

var wWidth;
var wHeight;
var RPS = 0.2;
var X = 0;
var Y = 0;
var RWheel = 1.0;
var Routside = RWheel;
var Rmiddle = RWheel/2.0;
var dotSize = 0.1;
var Scale = 30;
var wheel;
var oDot;
var mDot;
var cDot;
var oCycloid;
var mCycloid;
var cCycloid;
var connector;

var T = 0.0;
var Counter = 0;
var Omega = RPS *2*Math.PI;
var Tinc = 25;

var oPathString="";
var mPathString="";
var cPathString="";
var connectorPathString="";

var phi = Math.PI;

function startup(evt)
{
     	wWidth  = window.innerWidth;
	wHeight  = window.innerHeight;

	wheel = document.getElementById("Wheel");
	oDot = document.getElementById("OutsideDot");
	mDot = document.getElementById("MiddleDot");
	cDot = document.getElementById("CenterDot");

	oCycloid= document.getElementById("OutsideCycloid");
	mCycloid= document.getElementById("MiddleCycloid");
	cCycloid= document.getElementById("CenterCycloid");

	connector= document.getElementById("Connector");

	calculateXY();

  	wheel.setAttributeNS(null,"cx",X*Scale);
	wheel.setAttributeNS(null,"cy",Y*Scale);
	wheel.setAttributeNS(null,"r",RWheel*Scale);

	var x = X+Routside*Math.cos(Omega*T+phi);
	var y = Y+Routside*Math.sin(Omega*T+phi);
  	oDot.setAttributeNS(null,"cx",x*Scale);
	oDot.setAttributeNS(null,"cy",y*Scale);
	oDot.setAttributeNS(null,"r",dotSize*Scale);
	oPathString ="M"+Math.round(x*Scale)+","+Math.round(y*Scale);
	oCycloid.setAttributeNS(null,"d",oPathString);

	connectorPathString ="M"+Math.round(X*Scale)+","+Math.round(Y*Scale)+
				" L"+ Math.round(x*Scale)+","+Math.round(y*Scale);
	connector.setAttributeNS(null,"d",connectorPathString);

	var x = X+Rmiddle*Math.cos(Omega*T+phi);
	var y = Y+Rmiddle*Math.sin(Omega*T+phi);
  	mDot.setAttributeNS(null,"cx",x*Scale);
	mDot.setAttributeNS(null,"cy",y*Scale);
	mDot.setAttributeNS(null,"r",dotSize*Scale);
	mPathString ="M"+Math.round(x*Scale)+","+Math.round(y*Scale);
	mCycloid.setAttributeNS(null,"d",mPathString);

	cPathString ="M"+Math.round(X*Scale)+","+Math.round(Y*Scale);
	cCycloid.setAttributeNS(null,"d",cPathString);


  	cDot.setAttributeNS(null,"cx",X*Scale);
	cDot.setAttributeNS(null,"cy",Y*Scale);
	cDot.setAttributeNS(null,"r",dotSize*Scale);

	setInterval("Animate()",Tinc);
}

function calculateXY()
{
	T = Counter*Tinc/1000;
	X = 2*Math.PI*RWheel*RPS*T;
	Y  = 0.0;
}

function Animate()
{
	Counter++;

	calculateXY();

	if( X*Scale > wWidth-2*RWheel*Scale-Scale) 
	{
		return;
	}

  	wheel.setAttributeNS(null,"cx",X*Scale);
	wheel.setAttributeNS(null,"cy",Y*Scale);

	var x = X+Routside*Math.cos(Omega*T+phi);
	var y = Y+Routside*Math.sin(Omega*T+phi);
  	oDot.setAttributeNS(null,"cx",x*Scale);
	oDot.setAttributeNS(null,"cy",y*Scale);
	oPathString +=" L"+Math.round(x*Scale)+","+Math.round(y*Scale);
	oCycloid.setAttributeNS(null,"d",oPathString);

	connectorPathString ="M"+Math.round(X*Scale)+","+Math.round(Y*Scale)+
				" L"+ Math.round(x*Scale)+","+Math.round(y*Scale);
	connector.setAttributeNS(null,"d",connectorPathString);

	var x = X+Rmiddle*Math.cos(Omega*T+phi);
	var y = Y+Rmiddle*Math.sin(Omega*T+phi);
  	mDot.setAttributeNS(null,"cx",x*Scale);
	mDot.setAttributeNS(null,"cy",y*Scale);
	mPathString +=" L"+Math.round(x*Scale)+","+Math.round(y*Scale);
	mCycloid.setAttributeNS(null,"d",mPathString);

	cPathString +=" L"+Math.round(X*Scale)+","+Math.round(Y*Scale);
	cCycloid.setAttributeNS(null,"d",cPathString);

  	cDot.setAttributeNS(null,"cx",X*Scale);
	cDot.setAttributeNS(null,"cy",Y*Scale);
}

function resize()
{
     	wWidth  = window.innerWidth;
	wHeight  = window.innerHeight;
}

]]>

</script> 

<g id="title">
  <text font-size="40" x="60" y="50">Simple Cycloid
  </text>
</g>

<g id="MyCycloid" transform="translate(50,120)">
  <circle id="Wheel" stroke-width="2" stroke="black" fill="none"/>
  <circle id="OutsideDot" stroke-width="2" stroke="none" fill="red"/>
  <circle id="MiddleDot" stroke-width="2" stroke="none" fill="blue"/>
  <circle id="CenterDot" stroke-width="2" stroke="none" fill="black"/>
  <path id="OutsideCycloid" stroke-width="2" stroke="red" fill="none"/>
  <path id="MiddleCycloid" stroke-width="1" stroke="blue" fill="none" opacity="0.5"/>
  <path id="CenterCycloid" stroke-width="1" stroke="gray" fill="none" opacity="0.1"/>
  <path id="Connector" stroke-width="1" stroke="green" fill="none"/>
</g>

</svg>






SVG Math Animation Example: N-Cusp Epicycloid with Javascript

N-Cusp Epicycloid with Javascript

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/SVG/DTD/svg10.dtd" >

<svg
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   version="1.1"
   width="100%"
   height="100%"
   xml:space="preserve"
   onresize="resize()"
   onload = "startup(evt)">

<script>

<![CDATA[

var xmlns="http://www.w3.org/2000/svg";
var xlinkns = "http://www.w3.org/1999/xlink"; 

var wWidth;
var wHeight;
var RPS = 1.0;
var baseTheta = 0.0;
var X = 0;
var Y = 0;
var RBase = 8.0;
var RWheel = 3.0;
var Routside = RWheel;
var Rmiddle = RWheel/2.0;
var dotSize = RWheel/10.0;
var Scale = 10;
var wheel;
var oDot;
var mDot;
var cDot;
var oCycloid;
var mCycloid;
var cCycloid;
var connector;

var T = 0.0;
var Counter = 0;
var Omega = RPS *2*Math.PI;
var baseOmega = Omega *RWheel/RBase;
var Tinc = 25;

var oPathString="";
var mPathString="";
var cPathString="";
var connectorPathString="";

var phi = 0;
var basePhi = 0;

// Do not make more path string after 1-cycle
var NPath = 1000/Tinc/RPS*Math.max(RBase,RWheel)+1;

function startup(evt)
{
     	wWidth  = window.innerWidth;
	wHeight  = window.innerHeight;

	base = document.getElementById("Base");
	wheel = document.getElementById("Wheel");
	oDot = document.getElementById("OutsideDot");
	mDot = document.getElementById("MiddleDot");
	cDot = document.getElementById("CenterDot");

	oCycloid= document.getElementById("OutsideCycloid");
	mCycloid= document.getElementById("MiddleCycloid");
	cCycloid= document.getElementById("CenterCycloid");

	connector= document.getElementById("Connector");

	base.setAttributeNS(null,"r",RBase*Scale);


	calculateXY();

  	wheel.setAttributeNS(null,"cx",X*Scale);
	wheel.setAttributeNS(null,"cy",Y*Scale);
	wheel.setAttributeNS(null,"r",RWheel*Scale);

	var x = X+Routside*Math.cos((baseOmega+Omega)*T+phi);
	var y = Y+Routside*Math.sin((baseOmega+Omega)*T+phi);
  	oDot.setAttributeNS(null,"cx",x*Scale);
	oDot.setAttributeNS(null,"cy",y*Scale);
	oDot.setAttributeNS(null,"r",dotSize*Scale);
	oPathString ="M"+Math.round(x*Scale)+","+Math.round(y*Scale);
	oCycloid.setAttributeNS(null,"d",oPathString);


	connectorPathString =
	"M"+Math.round(X*Scale)+","+Math.round(Y*Scale)+" L"+ Math.round(x*Scale)+","+Math.round(y*Scale);

	connector.setAttributeNS(null,"d",connectorPathString);

	var x = X+Rmiddle*Math.cos((baseOmega+Omega)*T+phi);
	var y = Y+Rmiddle*Math.sin((baseOmega+Omega)*T+phi);
  	mDot.setAttributeNS(null,"cx",x*Scale);
	mDot.setAttributeNS(null,"cy",y*Scale);
	mDot.setAttributeNS(null,"r",dotSize*Scale);
	mPathString ="M"+Math.round(x*Scale)+","+Math.round(y*Scale);
	mCycloid.setAttributeNS(null,"d",mPathString);

	cPathString ="M"+Math.round(X*Scale)+","+Math.round(Y*Scale);
	cCycloid.setAttributeNS(null,"d",cPathString);

  	cDot.setAttributeNS(null,"cx",X*Scale);
	cDot.setAttributeNS(null,"cy",Y*Scale);
	cDot.setAttributeNS(null,"r",dotSize*Scale);

	setInterval("Animate()",Tinc);
}

function calculateXY()
{
	// calculate the center coordinates of the Wheel.
	T = Counter*Tinc/1000;
	X = (RBase+RWheel)*Math.cos(baseOmega*T+basePhi);
	Y  =(RBase+RWheel)*Math.sin(baseOmega*T+basePhi);
}

function Animate()
{
	Counter++;

	calculateXY();

	if( X*Scale > wWidth-2*RWheel*Scale-Scale) 
	{
		return;
	}

  	wheel.setAttributeNS(null,"cx",X*Scale);
	wheel.setAttributeNS(null,"cy",Y*Scale);

	var x = X+Routside*Math.cos((baseOmega+Omega)*T+phi);
	var y = Y+Routside*Math.sin((baseOmega+Omega)*T+phi);
  	oDot.setAttributeNS(null,"cx",x*Scale);
	oDot.setAttributeNS(null,"cy",y*Scale);
	if(Counter<=NPath) {
		oPathString +=" L"+Math.round(x*Scale)+","+Math.round(y*Scale);
		oCycloid.setAttributeNS(null,"d",oPathString);
	}

	connectorPathString ="M"+Math.round(X*Scale)+","+Math.round(Y*Scale)+
				" L"+ Math.round(x*Scale)+","+Math.round(y*Scale);
	connector.setAttributeNS(null,"d",connectorPathString);

	var x = X+Rmiddle*Math.cos((baseOmega+Omega)*T+phi);
	var y = Y+Rmiddle*Math.sin((baseOmega+Omega)*T+phi);
  	mDot.setAttributeNS(null,"cx",x*Scale);
	mDot.setAttributeNS(null,"cy",y*Scale);
	if(Counter<=NPath) {
		mPathString +=" L"+Math.round(x*Scale)+","+Math.round(y*Scale);
		mCycloid.setAttributeNS(null,"d",mPathString);
		cPathString +=" L"+Math.round(X*Scale)+","+Math.round(Y*Scale);
		cCycloid.setAttributeNS(null,"d",cPathString);
	}

  	cDot.setAttributeNS(null,"cx",X*Scale);
	cDot.setAttributeNS(null,"cy",Y*Scale);
}

function resize()
{
     	wWidth  = window.innerWidth;
	wHeight  = window.innerHeight;
}

]]>

</script> 

<g id="title">
  <text font-size="40" x="120" y="50">N-cusp Epicycloid 
  </text>
</g>

<g id="MyCycloid" transform="translate(250,250)">

  <circle id="Base" cx="0" cy="0" stroke-width="1" stroke="green" fill="lime" opacity="0.2"/>
  <circle id="Wheel" stroke-width="1" stroke="black" fill="none"/>
  <circle id="OutsideDot" stroke-width="1" stroke="none" fill="red"/>
  <circle id="MiddleDot" stroke-width="1" stroke="none" fill="blue" opacity="0.0"/>
  <circle id="CenterDot" stroke-width="1" stroke="none" fill="black"/> 
  <path id="OutsideCycloid" stroke-width="1" stroke="red" fill="none"/>
  <path id="MiddleCycloid" stroke-width="1" stroke="blue" fill="none" opacity="0.0"/>
  <path id="CenterCycloid" stroke-width="2" stroke="gray" fill="none" opacity="0.0"/>
  <path id="Connector" stroke-width="1" stroke="green" fill="none"/>
</g>

</svg>






SVG Math Animation Example: Irrational Epicycloid with Javascript

Irrational Epicycloid with Javascript

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/SVG/DTD/svg10.dtd" >

<svg
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   version="1.1"
   width="100%"
   height="100%"
   xml:space="preserve"
   onresize="resize()"
   onload = "startup(evt)">

<script>

<![CDATA[

var xmlns="http://www.w3.org/2000/svg";
var xlinkns = "http://www.w3.org/1999/xlink"; 

var wWidth;
var wHeight;
var RPS = 1.0;
var baseTheta = 0.0;
var X = 0;
var Y = 0;
var RBase = 10.0;
var RWheel = Math.sqrt(5.0);
var Routside = RWheel;
var Rmiddle = RWheel/2.0;
var dotSize = RWheel/10.0;
var Scale = 10;
var wheel;
var oDot;
var mDot;
var cDot;
var oCycloid;
var mCycloid;
var cCycloid;
var connector;

var T = 0.0;
var Counter = 0;
var Omega = RPS *2*Math.PI;
var baseOmega = Omega *RWheel/RBase;
var Tinc = 25;

var oPathString="";
var mPathString="";
var cPathString="";
var connectorPathString="";

var phi = 0;
var basePhi = 0;

//  make more path string after 1-cycle
//  We can not impose limit to the NPath for irrational case
//var NPath = 1000/Tinc/RPS*Math.max(RBase,RWheel)+1;
// Just to keep it from slowing down to much
var NPath = 10000;

function startup(evt)
{
     	wWidth  = window.innerWidth;
	wHeight  = window.innerHeight;

	base = document.getElementById("Base");
	wheel = document.getElementById("Wheel");
	oDot = document.getElementById("OutsideDot");
	mDot = document.getElementById("MiddleDot");
	cDot = document.getElementById("CenterDot");

	oCycloid= document.getElementById("OutsideCycloid");
	mCycloid= document.getElementById("MiddleCycloid");
	cCycloid= document.getElementById("CenterCycloid");

	connector= document.getElementById("Connector");

	base.setAttributeNS(null,"r",RBase*Scale);


	calculateXY();

  	wheel.setAttributeNS(null,"cx",X*Scale);
	wheel.setAttributeNS(null,"cy",Y*Scale);
	wheel.setAttributeNS(null,"r",RWheel*Scale);

	var x = X+Routside*Math.cos((baseOmega+Omega)*T+phi);
	var y = Y+Routside*Math.sin((baseOmega+Omega)*T+phi);
  	oDot.setAttributeNS(null,"cx",x*Scale);
	oDot.setAttributeNS(null,"cy",y*Scale);
	oDot.setAttributeNS(null,"r",dotSize*Scale);
	oPathString ="M"+Math.round(x*Scale)+","+Math.round(y*Scale);
	oCycloid.setAttributeNS(null,"d",oPathString);


	connectorPathString =
	"M"+Math.round(X*Scale)+","+Math.round(Y*Scale)+" L"+ Math.round(x*Scale)+","+Math.round(y*Scale);

	connector.setAttributeNS(null,"d",connectorPathString);

	var x = X+Rmiddle*Math.cos((baseOmega+Omega)*T+phi);
	var y = Y+Rmiddle*Math.sin((baseOmega+Omega)*T+phi);
  	mDot.setAttributeNS(null,"cx",x*Scale);
	mDot.setAttributeNS(null,"cy",y*Scale);
	mDot.setAttributeNS(null,"r",dotSize*Scale);
	mPathString ="M"+Math.round(x*Scale)+","+Math.round(y*Scale);
	mCycloid.setAttributeNS(null,"d",mPathString);

	cPathString ="M"+Math.round(X*Scale)+","+Math.round(Y*Scale);
	cCycloid.setAttributeNS(null,"d",cPathString);

  	cDot.setAttributeNS(null,"cx",X*Scale);
	cDot.setAttributeNS(null,"cy",Y*Scale);
	cDot.setAttributeNS(null,"r",dotSize*Scale);

	setInterval("Animate()",Tinc);
}

function calculateXY()
{
	// calculate the center coordinates of the Wheel.
	T = Counter*Tinc/1000;
	X = (RBase+RWheel)*Math.cos(baseOmega*T+basePhi);
	Y  =(RBase+RWheel)*Math.sin(baseOmega*T+basePhi);
}

function Animate()
{
	Counter++;

	calculateXY();

	if( X*Scale > wWidth-2*RWheel*Scale-Scale) 
	{
		return;
	}

  	wheel.setAttributeNS(null,"cx",X*Scale);
	wheel.setAttributeNS(null,"cy",Y*Scale);

	var x = X+Routside*Math.cos((baseOmega+Omega)*T+phi);
	var y = Y+Routside*Math.sin((baseOmega+Omega)*T+phi);
  	oDot.setAttributeNS(null,"cx",x*Scale);
	oDot.setAttributeNS(null,"cy",y*Scale);
	if(Counter<=NPath) {
		oPathString +=" L"+Math.round(x*Scale)+","+Math.round(y*Scale);
		oCycloid.setAttributeNS(null,"d",oPathString);
	}

	connectorPathString ="M"+Math.round(X*Scale)+","+Math.round(Y*Scale)+
				" L"+ Math.round(x*Scale)+","+Math.round(y*Scale);
	connector.setAttributeNS(null,"d",connectorPathString);

	var x = X+Rmiddle*Math.cos((baseOmega+Omega)*T+phi);
	var y = Y+Rmiddle*Math.sin((baseOmega+Omega)*T+phi);
  	mDot.setAttributeNS(null,"cx",x*Scale);
	mDot.setAttributeNS(null,"cy",y*Scale);
	if(Counter<=NPath) {
		mPathString +=" L"+Math.round(x*Scale)+","+Math.round(y*Scale);
		mCycloid.setAttributeNS(null,"d",mPathString);
		cPathString +=" L"+Math.round(X*Scale)+","+Math.round(Y*Scale);
		cCycloid.setAttributeNS(null,"d",cPathString);
	}

  	cDot.setAttributeNS(null,"cx",X*Scale);
	cDot.setAttributeNS(null,"cy",Y*Scale);
}

function resize()
{
     	wWidth  = window.innerWidth;
	wHeight  = window.innerHeight;
}

]]>

</script> 

<g id="title">
  <text font-size="40" x="100" y="50">Irrational Epicycloid 
  </text>
</g>

<g id="MyCycloid" transform="translate(250,250)">

  <circle id="Base" cx="0" cy="0" stroke-width="1" stroke="green" fill="lime" opacity="0.5"/>
  <circle id="Wheel" stroke-width="1" stroke="black" fill="none"/>
  <circle id="OutsideDot" stroke-width="1" stroke="none" fill="red"/>
  <circle id="MiddleDot" stroke-width="1" stroke="none" fill="blue" opacity="0.0"/>
  <circle id="CenterDot" stroke-width="1" stroke="none" fill="black"/> 
  <path id="OutsideCycloid" stroke-width="1" stroke="red" fill="none"/>
  <path id="MiddleCycloid" stroke-width="1" stroke="blue" fill="none" opacity="0.0"/>
  <path id="CenterCycloid" stroke-width="2" stroke="gray" fill="none" opacity="0.0"/>
  <path id="Connector" stroke-width="1" stroke="green" fill="none"/>
</g>

</svg>






SVG Math Animation Example: N-Cusp Hypocycloid with Javascript

N-Cusp Hypocycloid with Javascript

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/SVG/DTD/svg10.dtd" >

<svg
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   version="1.1"
   width="100%"
   height="100%"
   xml:space="preserve"
   onresize="resize()"
   onload = "startup(evt)">

<script>

<![CDATA[

var xmlns="http://www.w3.org/2000/svg";
var xlinkns = "http://www.w3.org/1999/xlink"; 

var wWidth;
var wHeight;
var RPS = 1.0;
var baseTheta = 0.0;
var X = 0;
var Y = 0;
var RBase = 6;
var RWheel = 1;
var Routside = RWheel;
var Rmiddle = RWheel/2.0;
var dotSize = RWheel/10.0;
var Scale = 25;
var wheel;
var oDot;
var mDot;
var cDot;
var oCycloid;
var mCycloid;
var cCycloid;
var connector;

var T = 0.0;
var Counter = 0;
var Omega = RPS *2*Math.PI;
var baseOmega = Omega *RWheel/RBase;
var Tinc = 25;

var oPathString="";
var mPathString="";
var cPathString="";
var connectorPathString="";

var phi = 0;
var basePhi = 0;

var NPath=1000;

function startup(evt)
{
     	wWidth  = window.innerWidth;
	wHeight  = window.innerHeight;

	base = document.getElementById("Base");
	wheel = document.getElementById("Wheel");
	oDot = document.getElementById("OutsideDot");
	mDot = document.getElementById("MiddleDot");
	cDot = document.getElementById("CenterDot");

	oCycloid= document.getElementById("OutsideCycloid");
	mCycloid= document.getElementById("MiddleCycloid");
	cCycloid= document.getElementById("CenterCycloid");

	connector= document.getElementById("Connector");

	base.setAttributeNS(null,"r",RBase*Scale);


	calculateXY();

  	wheel.setAttributeNS(null,"cx",X*Scale);
	wheel.setAttributeNS(null,"cy",Y*Scale);
	wheel.setAttributeNS(null,"r",RWheel*Scale);

	var x = X+Routside*Math.cos((baseOmega-Omega)*T+phi);
	var y = Y+Routside*Math.sin((baseOmega-Omega)*T+phi);
  	oDot.setAttributeNS(null,"cx",x*Scale);
	oDot.setAttributeNS(null,"cy",y*Scale);
	oDot.setAttributeNS(null,"r",dotSize*Scale);
	oPathString ="M"+Math.round(x*Scale)+","+Math.round(y*Scale);
	oCycloid.setAttributeNS(null,"d",oPathString);


	connectorPathString =
	"M"+Math.round(X*Scale)+","+Math.round(Y*Scale)+" L"+ Math.round(x*Scale)+","+Math.round(y*Scale);

	connector.setAttributeNS(null,"d",connectorPathString);

	var x = X+Rmiddle*Math.cos((baseOmega-Omega)*T+phi);
	var y = Y+Rmiddle*Math.sin((baseOmega-Omega)*T+phi);
  	mDot.setAttributeNS(null,"cx",x*Scale);
	mDot.setAttributeNS(null,"cy",y*Scale);
	mDot.setAttributeNS(null,"r",dotSize*Scale);
	mPathString ="M"+Math.round(x*Scale)+","+Math.round(y*Scale);
	mCycloid.setAttributeNS(null,"d",mPathString);

	cPathString ="M"+Math.round(X*Scale)+","+Math.round(Y*Scale);
	cCycloid.setAttributeNS(null,"d",cPathString);

  	cDot.setAttributeNS(null,"cx",X*Scale);
	cDot.setAttributeNS(null,"cy",Y*Scale);
	cDot.setAttributeNS(null,"r",dotSize*Scale);

	setInterval("Animate()",Tinc);
}

function calculateXY()
{
	// calculate the center coordinates of the Wheel.
	T = Counter*Tinc/1000;
	X = (RBase-RWheel)*Math.cos(baseOmega*T+basePhi);
	Y  =(RBase-RWheel)*Math.sin(baseOmega*T+basePhi);
}

function Animate()
{
	Counter++;

	calculateXY();

	if( X*Scale > wWidth-2*RWheel*Scale-Scale) 
	{
		return;
	}

  	wheel.setAttributeNS(null,"cx",X*Scale);
	wheel.setAttributeNS(null,"cy",Y*Scale);

	var x = X+Routside*Math.cos((baseOmega-Omega)*T+phi);
	var y = Y+Routside*Math.sin((baseOmega-Omega)*T+phi);
  	oDot.setAttributeNS(null,"cx",x*Scale);
	oDot.setAttributeNS(null,"cy",y*Scale);
	if(Counter<=NPath) {
		oPathString +=" L"+Math.round(x*Scale)+","+Math.round(y*Scale);
		oCycloid.setAttributeNS(null,"d",oPathString);
	}

	connectorPathString ="M"+Math.round(X*Scale)+","+Math.round(Y*Scale)+
				" L"+ Math.round(x*Scale)+","+Math.round(y*Scale);
	connector.setAttributeNS(null,"d",connectorPathString);

	var x = X+Rmiddle*Math.cos((baseOmega-Omega)*T+phi);
	var y = Y+Rmiddle*Math.sin((baseOmega-Omega)*T+phi);
  	mDot.setAttributeNS(null,"cx",x*Scale);
	mDot.setAttributeNS(null,"cy",y*Scale);
	if(Counter<=NPath) {
		mPathString +=" L"+Math.round(x*Scale)+","+Math.round(y*Scale);
		mCycloid.setAttributeNS(null,"d",mPathString);
		cPathString +=" L"+Math.round(X*Scale)+","+Math.round(Y*Scale);
		cCycloid.setAttributeNS(null,"d",cPathString);
	}

  	cDot.setAttributeNS(null,"cx",X*Scale);
	cDot.setAttributeNS(null,"cy",Y*Scale);
}

function resize()
{
     	wWidth  = window.innerWidth;
	wHeight  = window.innerHeight;
}

]]>

</script> 

<g id="title">
  <text font-size="40" x="100" y="50">N-cusp Hypocycloid 
  </text>
</g>

<g id="MyCycloid" transform="translate(250,250)">

  <circle id="Base" cx="0" cy="0" stroke-width="1" stroke="blue" fill="none" opacity="1.0"/>
  <circle id="Wheel" stroke-width="2" stroke="black" fill="none"/>
  <circle id="OutsideDot" stroke-width="1" stroke="none" fill="red"/>
  <circle id="MiddleDot" stroke-width="1" stroke="none" fill="green" opacity="0.0"/>
  <circle id="CenterDot" stroke-width="1" stroke="none" fill="black"/> 
  <path id="OutsideCycloid" stroke-width="1" stroke="red" fill="none" />
  <path id="MiddleCycloid" stroke-width="1" stroke="green" fill="none" opacity="1.0"/>
  <path id="CenterCycloid" stroke-width="2" stroke="gray" fill="none" opacity="0.2"/>
  <path id="Connector" stroke-width="1" stroke="green" fill="none"/>
</g>

</svg>






SVG Math Animation Example: Trammel of Archimedes - Ellipse Tracing Mechanism

Trammel of Archimedes -  Ellipse Tracing Mechanism

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/SVG/DTD/svg10.dtd" >

<svg
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   version="1.1"
   width="100%"
   height="100%"
   xml:space="preserve"
   onload = "startup(evt)">

<script>

<![CDATA[

var xmlns="http://www.w3.org/2000/svg";
var xlinkns = "http://www.w3.org/1999/xlink"; 

var wWidth;
var wHeight;
//major, minor axis and focus
var a = 15;
var b = 5;
var c = Math.sqrt(Math.pow(a,2)-Math.pow(b,2));
var dotA = 1;
var dotB = 1;
var dotAsm = dotA/5.0;
var dotBsm = dotB/5.0;
var dotEllipse = 0.2;

var X ;
var Y ;
var Xa;
var Ya = 0;
var Xb = 0;
var Yb;

var Scale = 10;

var x_axis;
var y_axis;
var connector;
var ellipse;
var ellipseDot;
var baseA;
var baseB;
var baseAsm;
var baseBsm;

var T = 0.0;
var Counter = 0;

var Tinc = 25;

var ePathString="";
var connectorPathString="";


var RPS = 0.1;
var Omega = RPS *2*Math.PI;
var phi = 0;
var basePhi = 0;

// Do not make more path string after 1-cycle
var NPath = 1000/Tinc/RPS+1;

function startup(evt)
{
	calculateXY();

	x_axis = document.getElementById("x-axis");
	y_axis = document.getElementById("y-axis");
	connector = document.getElementById("Connector");
	ellipse = document.getElementById("Ellipse");
	ellipseDot = document.getElementById("EllipseDot");
	baseA = document.getElementById("BaseA");
	baseB = document.getElementById("BaseB");
	baseAsm = document.getElementById("BaseAsm");
	baseBsm = document.getElementById("BaseBsm");

	x_axis.setAttributeNS(null,"d","M"+(-a-b)*Scale+",0"+
					" L"+(a+b)*Scale+",0");
	y_axis.setAttributeNS(null,"d","M0,"+(-a)*Scale+
					" L0,"+a*Scale);

  	baseA.setAttributeNS(null,"cx",Xa*Scale);
	baseA.setAttributeNS(null,"cy",Ya*Scale);
	baseA.setAttributeNS(null,"r",dotA*Scale);
	
  	baseB.setAttributeNS(null,"cx",Xb*Scale);
	baseB.setAttributeNS(null,"cy",Yb*Scale);
	baseB.setAttributeNS(null,"r",dotB*Scale);

  	baseAsm.setAttributeNS(null,"cx",Xa*Scale);
	baseAsm.setAttributeNS(null,"cy",Ya*Scale);
	baseAsm.setAttributeNS(null,"r",dotAsm*Scale);
	
  	baseBsm.setAttributeNS(null,"cx",Xb*Scale);
	baseBsm.setAttributeNS(null,"cy",Yb*Scale);
	baseBsm.setAttributeNS(null,"r",dotBsm*Scale);

  	ellipseDot.setAttributeNS(null,"cx",X*Scale);
	ellipseDot.setAttributeNS(null,"cy",Y*Scale);
	ellipseDot.setAttributeNS(null,"r",dotEllipse*Scale);

	ePathString ="M"+Math.round(X*Scale)+","+Math.round(Y*Scale); 
	ellipse.setAttributeNS(null,"d",ePathString);    

	connectorPathString ="M"+Math.round(X*Scale)+","+Math.round(Y*Scale)+" L"+Math.round(Xb*Scale)+","+Math.round(Yb*Scale); 
	connector.setAttributeNS(null,"d",connectorPathString);

	setInterval("Animate()",Tinc);
}

function calculateXY()
{
	T = Counter*Tinc/1000;
	X = a*Math.cos(Omega*T+basePhi);
	Y = b*Math.sin(Omega*T+basePhi);
	
	if(X >= 0) Xa = X - Math.sqrt(b*b-Y*Y);
	else if(X < 0)Xa = X + Math.sqrt(b*b-Y*Y);
	if(Y >= 0) Yb = Y - Math.sqrt(a*a-X*X);
	else if(Y < 0) Yb = Y + Math.sqrt(a*a-X*X);
}

function Animate()
{
	Counter++;

	calculateXY();

  	baseA.setAttributeNS(null,"cx",Xa*Scale);
	baseA.setAttributeNS(null,"cy",Ya*Scale);
	baseA.setAttributeNS(null,"r",dotA*Scale);
	
  	baseB.setAttributeNS(null,"cx",Xb*Scale);
	baseB.setAttributeNS(null,"cy",Yb*Scale);
	baseB.setAttributeNS(null,"r",dotB*Scale);

  	baseAsm.setAttributeNS(null,"cx",Xa*Scale);
	baseAsm.setAttributeNS(null,"cy",Ya*Scale);
	baseAsm.setAttributeNS(null,"r",dotAsm*Scale);
	
  	baseBsm.setAttributeNS(null,"cx",Xb*Scale);
	baseBsm.setAttributeNS(null,"cy",Yb*Scale);
	baseBsm.setAttributeNS(null,"r",dotBsm*Scale);

  	ellipseDot.setAttributeNS(null,"cx",X*Scale);
	ellipseDot.setAttributeNS(null,"cy",Y*Scale);
	ellipseDot.setAttributeNS(null,"r",dotEllipse*Scale);

	if(Counter <= NPath) {
	ePathString +=" L"+Math.round(X*Scale)+","+Math.round(Y*Scale); 
	ellipse.setAttributeNS(null,"d",ePathString); 
	}

	connectorPathString ="M"+Math.round(X*Scale)+","+Math.round(Y*Scale)+" L"+Math.round(Xb*Scale)+","+Math.round(Yb*Scale); 
	connector.setAttributeNS(null,"d",connectorPathString);
}


]]>

</script> 

<g id="title">
  <text font-size="40" x="50" y="50">
	<tspan>Trammel of Archimedes</tspan>
	<tspan x="100" dy="1em" font-size="24">Ellipse Tracing Mechanism </tspan>
  </text>
</g>

<g id="MyTrammel" transform="translate(250,250)">
  <path id="x-axis" stroke-width="1" stroke="black" fill="none"/>
  <path id="y-axis" stroke-width="1" stroke="black" fill="none"/>

  <circle id="EllipseDot" cx="0" cy="0" stroke-width="1" stroke="purple" fill="red" opacity="1.0"/>
  <circle id="BaseA" cx="0" cy="0" stroke-width="1" stroke="green" fill="lime" opacity="1.0"/>
  <circle id="BaseB" cx="0" cy="0" stroke-width="1" stroke="blue" fill="aqua" opacity="1.0"/>
  <circle id="BaseAsm" cx="0" cy="0" stroke-width="1" stroke="green" fill="green" opacity="1.0"/>
  <circle id="BaseBsm" cx="0" cy="0" stroke-width="1" stroke="blue" fill="blue" opacity="1.0"/>
  <path id="Ellipse" stroke-width="1" stroke="red" fill="none" opacity="1.0"/>
  <path id="Connector" stroke-width="1" stroke="black" fill="white"/>
</g>
 
</svg>






SVG Animation Example: Opacity - Bubbles or Balloons in Purple

Bubbles or Balloons in Purple

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<svg width="100%" height="100%"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:xlink="http://www.w3.org/1999/xlink"
   version="1.1"
   onload="startUp()"
   onmousemove="mouseMove(evt)"
   onresize="resize()">

<script>

<![CDATA[

var xmlns="http://www.w3.org/2000/svg";
var xlinkns = "http://www.w3.org/1999/xlink"; 

object = new Array()
 
var nw = nh = xm = ym = 0 ;
var Nbubble = 20 ;
var mouseCount = 0;
var Limit = 100;

function startUp() 
{
  resize();

  for(i=0;i<Nbubble;i++) {
   	object[i] = new makeSphere(i);
  }
  setInterval("for (i in object)object[i].moveSphere()",20)
}

function makeSphere(N)
{
	this.bubble = document.createElementNS(xmlns,"circle");
 	document.getElementById("GroupOfBubbles").appendChild(this.bubble);
 
	this.r = (N * Limit / Nbubble);
	this.x = -500;
	this.y = 0;

  	this.moveSphere = function(){
    	    with(this){
		if (r >= Limit){
			mouseCount--;
			if (mouseCount<0){
				x = Math.random() * nw;
				y = Math.random() * nh;
			}
			else {
				x = xm;
				y = ym;
			}
			r = 0;
		}
		r += 3;
   
                bubble.setAttributeNS(null,"cx",x);
                bubble.setAttributeNS(null,"cy",y);
                bubble.setAttributeNS(null,"r",r);
                bubble.setAttributeNS(null,"fill","url(#rg)");
	        bubble.setAttributeNS(null,"opacity",(Limit - r) / Limit);
           }
       }
}

function resize()
{
     	nw  = window.innerWidth;
	nh  = window.innerHeight;
}

function mouseMove(e)
{
 	xm = e.clientX;
  	ym = e.clientY;
	mouseCount = 1;
}

]]>

</script>

<defs>
 <radialGradient id="rg" cx="20%" cy="20%" r="100%" fx="30%" fy="30%" >
   <stop stop-color="white" offset="0" stop-opacity="0.5"/>
   <stop stop-color="fuchsia" offset="20%" stop-opacity="0.5"/>
   <stop stop-color="purple" offset="80%" stop-opacity="0.5"/>
   <stop stop-color="purple" offset="100%" stop-opacity="0.5"/>
 </radialGradient>
</defs>

<rect height="100%" width="100%" fill="white"/>

<g id="GroupOfBubbles">
 <circle id="myBubble" cx="-150" cy="-150" r="50" fill="url(#rg)" />
</g>

</svg>






SVG Animation Example: Path - Polygon vs. Circle (Area)

Polygon vs. Circle (Area)

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<svg width="100%" height="100%"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:xlink="http://www.w3.org/1999/xlink"
   version="1.1"
   onload="startUp()">

<script>

<![CDATA[

var xmlns="http://www.w3.org/2000/svg";
var xlinkns = "http://www.w3.org/1999/xlink"; 

var X;
var Y;
var Tinc = 1000;
var Limit = 360;

var Scale = 200;
var Npoly = 3;

var poly;
var txtArea;
var txtNpoly;

function startUp() 
{
  	poly = document.getElementById("myPoly");
  	txtNpoly = document.getElementById("nPoly");
  	txtArea = document.getElementById("areaPoly");
    	document.getElementById("myCircle").setAttributeNS(null,"r",Scale);

  	setInterval("makeMeCircle()",Tinc)
}

function makeMeCircle()
{
	if(Npoly > Limit) return;
	var polyString = "";
	var x0 = X = 1;
	var y0 = Y = 0;
	polyString ="M"+Math.round(X*Scale)+","+Math.round(Y*Scale);
	for (var i=1;i<Npoly;i++) {
		X = Math.cos(2*Math.PI*i/Npoly);
		Y = Math.sin(2*Math.PI*i/Npoly);
		polyString += " L"+ Math.round(X*Scale)+","+Math.round(Y*Scale);
	}
	polyString +=" z";
	poly.setAttributeNS(null,"d",polyString);

	txtNpoly.firstChild.nodeValue = "N: "+Npoly;

	// calculate the outer edge length of sub-triangle
	X = Math.cos(2*Math.PI/Npoly);
	Y = Math.sin(2*Math.PI/Npoly);
	var dist = Math.sqrt( (x0-X)*(x0-X)+(y0-Y)*(y0-Y) );
	// area
	area = heron(dist,1.0,1.0)* Npoly ;
	txtArea.firstChild.nodeValue = "Filled: "+(area/Math.PI*100).toFixed(2)+"%";
	
	Npoly++;
}

function heron(a,b,c)
{
	var s = (a+b+c)/2.0;
	return Math.sqrt( s*(s-a)*(s-b)*(s-c) );
}

]]>

</script>

<defs>
 <radialGradient id="rg" cx="50%" cy="50%" r="100%" fx="50%" fy="50%" >
   <stop stop-color="lime" offset="0%" stop-opacity="0.5"/>
   <stop stop-color="lime" offset="20%" stop-opacity="0.5"/>
   <stop stop-color="green" offset="80%" stop-opacity="0.5"/>
   <stop stop-color="green" offset="100%" stop-opacity="0.5"/>
 </radialGradient>
</defs>

<g id="Polygon" transform="translate(250,300)">
 <text id="title" x="-180" y="-230" font-size="40"> N-Polygon vs Circle </text>
 <circle id="myCircle" cx="0" cy="0" r="200" stroke="black" stroke-width="2" fill="none"/>
 <path id="myPoly" stroke="green" stroke-width="1" fill="url(#rg)" />
 <text id="nPoly" x="-70" y="-20" font-size="30" fill="black">
	N: 0
 </text>
 <text id="areaPoly" x="-70" y="10" font-size="30" fill="black">
	Filled: 0
 </text>
</g>

</svg>






SVG Animation Example: Embracing Limit - Polygon Circumscribing Circle. Starting from incircle-> triangle->circumcircle->square->circumcircle->pentagon .... The ratio of final circumradius to initial inradius is 8.7000...

Polygon Circumscribing Circle

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<svg width="100%" height="100%"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:xlink="http://www.w3.org/1999/xlink"
   version="1.1"
   onload="startUp()">

<script>

<![CDATA[

var xmlns="http://www.w3.org/2000/svg";
var xlinkns = "http://www.w3.org/1999/xlink"; 

var ri = 1.0;
var r;

var Tinc = 1000;
var Limit = 7200;

var Scale = 20;
var Npoly = 3;

var poly;
var txtNpoly;
var txtRatio;

function startUp() 
{
  	txtNpoly = document.getElementById("nPoly");
	txtRatio = document.getElementById("ratio");
    	document.getElementById("circle0").setAttributeNS(null,"r",ri*Scale);

	r = ri;
  	setInterval("beingCircumscribed()",Tinc)
}

function beingCircumscribed()
{
	if(Npoly > Limit) return;

	var R = r/Math.cos(Math.PI/Npoly);

	var skip = 0;
	if((R-r)*Scale < 0.1) skip = 1;

	var polyString = "M"+R*Scale+","+"0";

	for (var i=1;i<Npoly;i++) {
		var X = R*Math.cos(2*Math.PI*i/Npoly);
		var Y = R*Math.sin(2*Math.PI*i/Npoly);
		polyString += " L"+ Math.round(X*Scale)+","+Math.round(Y*Scale);
	}
	polyString +=" z";
	  
	if(skip==0) {
	  var objp = document.createElementNS(xmlns,"path");
	  objp.setAttributeNS(null,"fill","none");
 	  setStrokeColor(objp);
	  objp.setAttributeNS(null,"stroke-width","1");
	  objp.setAttributeNS(null,"d",polyString);	
 	  document.getElementById("Circumscribe").appendChild(objp);
 
	  var objc = document.createElementNS(xmlns,"circle");
	  objc.setAttributeNS(null,"cx","0");
	  objc.setAttributeNS(null,"cy","0");
	  objc.setAttributeNS(null,"r",R*Scale);
	  objc.setAttributeNS(null,"fill","none");
	  setStrokeColor(objc);
	  objc.setAttributeNS(null,"stroke-width","1");
	  document.getElementById("Circumscribe").appendChild(objc);
 	}

	txtNpoly.firstChild.nodeValue = "N-polygon: "+Npoly;
	txtRatio.firstChild.nodeValue = "r/ri: "+r.toFixed(5);

	r = R;
	Npoly++;
}

function heron(a,b,c)
{
	var s = (a+b+c)/2.0;
	return Math.sqrt( s*(s-a)*(s-b)*(s-c) );
}

function setStrokeColor(obj)
{
  	obj.setAttributeNS(null,"stroke",color()); 
}

function color(){
  	var r=Math.random()*(16777215);
  	return "#"+Math.floor(r).toString(16);
}

]]>

</script>

<g id="Circumscribe" transform="translate(250,300)">
 <text id="title" x="-180" y="-250" font-size="40"> 
	<tspan x="-140" dy="0"> Embracing Limit</tspan>
	<tspan x="-140" font-size="30" dy="1.2em">(r/ri = 8.700036625...)</tspan>
</text>
 <circle id="circle0" cx="0" cy="0" r="10" stroke="black" stroke-width="1" fill="none"/>
 <text id="nPoly" x="-70" y="220" font-size="30" fill="black">
	N-polygon: 0
 </text>
 <text id="ratio" x="-70" y="250" font-size="30" fill="black">
	r/ri: 1.00000
 </text>
</g>

</svg>






SVG Animation Example: Standing Wave - superposed two waves moving in opposite directions. Animated with variable frequency and wave number.

Standing Wave - superposed two waves moving in opposite directions

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<svg width="100%" height="100%"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:xlink="http://www.w3.org/1999/xlink"
   version="1.1"
   onload="startUp()">

<script>

<![CDATA[

var xmlns="http://www.w3.org/2000/svg";
var xlinkns = "http://www.w3.org/1999/xlink"; 


var t = 0;

// wave parameters
var f = 1.0;
var lambda = 1.5;
var k;
var omega;

// string geometry
var ym = 0.7;
var xLength = 3.0;

// drawing variables
var Scale = 100.0;
var st;
var end;
var nPoints = 360; 
var nRatio = 6;
var nAmps = nPoints/nRatio;
var amps = new Array(nAmps);

// time interval
var Tinc=10;

function startUp() 
{	
	for(var i=0;i<nAmps;i++) {
		amps[i] = document.createElementNS(xmlns,"path");
		amps[i].setAttributeNS(null,"fill","none");
		amps[i].setAttributeNS(null,"stroke","red");
		amps[i].setAttributeNS(null,"stroke-width","1");
		document.getElementById("WaveGroup").appendChild(amps[i]);
	}
	
	st = document.getElementById("st");
	end = document.getElementById("end")	

	setParams();
	setInterval("motion()",Tinc)
}

function setParams()
{
	k = 2*Math.PI/lambda;
	omega = 2*Math.PI*f;
	//Tinc = 1/f*1000/10;
	t = 0.0;
	
}

function motion()
{
	var rwString = "";
	var lwString = "";
	var swString = "";
	var cString = "";
	var aString = "";
	iamps = 0;

	for (var i=0;i<nPoints;i++) {
		var X = i*xLength/(nPoints-1);
		var Y = 2*ym*Math.cos(omega*t)*Math.sin(k*X);
		var rY = ym*Math.sin(k*X-omega*t);
		var lY = ym*Math.sin(k*X+omega*t);

		var j = i % nRatio;

		if(j == 0) {
			//alert("nAmps="+nAmps+" i="+i);
			aString = "M"+X*Scale+",0"+ " L"+X*Scale+","+Y*Scale;
			amps[iamps++].setAttributeNS(null,"d",aString);	
		}
		
		if(i==0) {
			rwString ="M"+X*Scale+","+rY*Scale;
			lwString ="M"+X*Scale+","+lY*Scale;
			swString ="M"+X*Scale+","+Y*Scale;
			cString ="M"+X*Scale+","+Y*Scale;
			st.setAttributeNS(null,"cx",X*Scale);
			st.setAttributeNS(null,"cy",Y*Scale);
		}
		else if(i>0) {
			rwString += " L"+ Math.round(X*Scale)+","+Math.round(rY*Scale);
			lwString += " L"+ Math.round(X*Scale)+","+Math.round(lY*Scale);
			swString += " L"+ Math.round(X*Scale)+","+Math.round(Y*Scale);
			if(i==nPoints-1) {
			 	cString += " L"+ Math.round(X*Scale)+",0";
				end.setAttributeNS(null,"cx",X*Scale);
				end.setAttributeNS(null,"cy",Y*Scale);
			}
		}
	}
	 
	document.getElementById("rightWave").setAttributeNS(null,"d",rwString);	
	document.getElementById("leftWave").setAttributeNS(null,"d",lwString);	
	document.getElementById("standingWave").setAttributeNS(null,"d",swString);
	document.getElementById("centerLine").setAttributeNS(null,"d",cString);	

	//st.parentNode.removeChild(st); 
	document.getElementById("frequency").firstChild.nodeValue = "L=3m"+","+" frequency="+f.toFixed(1)+","+" lambda="+lambda.toFixed(1)+"m";
	document.getElementById("waveEquation").firstChild.nodeValue = "y(x,t)="+(2*ym).toFixed(1)+"*cos("+omega.toFixed(2)+"t)sin("+k.toFixed(1)+"x)";

	t += Tinc/1000;
}

function freqUp()
{
	if(f>=1.0) f++;
	else if(f<=0.9) f +=0.1;
	setParams();
}

function freqDown()
{
	if(f>1.0) f--;
	else if(f<=1.0) f -=0.1;
	if(f<0.1) f=0.1;
	setParams();
}

function lambdaUp()
{
	lambda += 0.5;
	setParams();
}

function lambdaDown()
{
	lambda -= 0.5;
	if(lambda<0.5) lambda = 0.5;
	setParams();
}

function mouseOverRed()
{
  document.getElementById("RedStop").setAttributeNS(null,"stop-color", "white"); 
}

function mouseOverGreen()
{
  document.getElementById("GreenStop").setAttributeNS(null,"stop-color", "white"); 
}

function mouseOutRed()
{
  document.getElementById("RedStop").setAttributeNS(null,"stop-color", "red"); 
}

function mouseOutGreen()
{
  document.getElementById("GreenStop").setAttributeNS(null,"stop-color", "green"); 
}

function mouseOverPurple()
{
  document.getElementById("PurpleStop").setAttributeNS(null,"stop-color", "white"); 
}

function mouseOverLime()
{
  document.getElementById("LimeStop").setAttributeNS(null,"stop-color", "white"); 
}

function mouseOutPurple()
{
  document.getElementById("PurpleStop").setAttributeNS(null,"stop-color", "purple"); 
}

function mouseOutLime()
{
  document.getElementById("LimeStop").setAttributeNS(null,"stop-color", "lime"); 
}

]]>

</script>


<text id="title" x="70" y="40" font-size="40"> 
	<tspan x="110" dy="0"> Standing Wave</tspan>
	<tspan x="80" font-size="24" dy="1.2em">Two opposite waves superposed</tspan>
 </text>

<g transform="translate(100,250)">
 <g id="WaveGroup">
  <path id="centerLine" stroke="black" stroke-width="1" fill="none"/>
  <g transform="translate(0,0)">
    <path id="rightWave" stroke="green" stroke-width="2" fill="none"/>
  </g>
  <g transform="translate(0,0)">
    <path id="leftWave" stroke="lime" stroke-width="2" fill="none"/>
  </g>
  <path id="standingWave" stroke="blue" stroke-width="2" fill="none"/>
  <circle id="st" r="1" stroke="red" stroke-width="2" fill="none"/>
  <circle id="end" r="1" stroke="red" stroke-width="2" fill="none"/>
 </g>
 <text id="frequency" x="-20" y="240" font-size="24" fill="blue">
 </text>
 <text id="waveEquation" x="-10" y="270" font-size="24" fill="black">
 </text>

<!-- buttons -->
<radialGradient id="RedG">
   <stop id="RedStop" stop-color="red" offset="0"/>
   <stop stop-color="white" offset="80%"/>
   <stop stop-color="red" offset="100%"/>
 </radialGradient>
<radialGradient id="GreenG">
   <stop id="GreenStop" stop-color="green" offset="0"/>
   <stop stop-color="white" offset="80%"/>
   <stop stop-color="green" offset="100%"/>
 </radialGradient>

<radialGradient id="PurpleG">
   <stop id="PurpleStop" stop-color="red" offset="0"/>
   <stop stop-color="white" offset="80%"/>
   <stop stop-color="purple" offset="100%"/>
 </radialGradient>
<radialGradient id="LimeG">
   <stop id="LimeStop" stop-color="green" offset="0"/>
   <stop stop-color="white" offset="80%"/>
   <stop stop-color="lime" offset="100%"/>
 </radialGradient>

<!--Freq-->
<g transform="translate(0,130)">
    <text id="freqLabel" x="-30" y="60" font-size="24" fill="black">
Freq:
    </text>
    <g id="freqUp" onclick="freqUp()" 
               onmouseover="mouseOverGreen()" 
               onmouseout="mouseOutGreen()" >

      <circle id="freqUpCircle" cx = "50" cy="50" r="20" fill="url(#GreenG)" />
      <path d="M 50 40 L 50 60 M 40 50 L 60 50" fill="none" stroke="black" stroke-width="3"/>
    </g>

    <g id="freqDown" onclick="freqDown()"
               onmouseover="mouseOverRed()" 
               onmouseout="mouseOutRed()">
      <circle id="freqDownCircle" cx = "100" cy="50" r="20" fill="url(#RedG)" />
      <path d="M 90 50 L 110 50" fill="none" stroke="black" stroke-width="3"/>
    </g>
 </g>

 <!-- lambda-->
 <g transform="translate(230,130)">
    <text id="lambdaLabel" x="-70" y="60" font-size="24" fill="black">
Lambda:
    </text>
    <g id="lambdaUp" onclick="lambdaUp()" 
               onmouseover="mouseOverLime()" 
               onmouseout="mouseOutLime()" >

      <circle id="lambdaUpCircle" cx = "50" cy="50" r="20" fill="url(#LimeG)" />
      <path d="M 50 40 L 50 60 M 40 50 L 60 50" fill="none" stroke="black" stroke-width="3"/>
    </g>

    <g id="lambdaDown" onclick="lambdaDown()"
               onmouseover="mouseOverPurple()" 
               onmouseout="mouseOutPurple()">
      <circle id="lambdaDownCircle" cx = "100" cy="50" r="20" fill="url(#PurpleG)" />
      <path d="M 90 50 L 110 50" fill="none" stroke="black" stroke-width="3"/>
    </g>
 </g>

</g>

</svg>









SVG Animation Example: Sonic Boom - Animated with variable Mach number.

Sonic Boom - Animated with variable Mach number

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<svg width="100%" height="100%"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:xlink="http://www.w3.org/1999/xlink"
   version="1.1"
   onload="startUp()"
   onresize="resize()">

<script>

<![CDATA[

var xmlns="http://www.w3.org/2000/svg";
var xlinkns = "http://www.w3.org/1999/xlink"; 

var object = new Array();
 
var nw = nh = 0 ;

var time = 0.0;
var timeInc = 100;
// steps needed to fly across the browser
var nStep = 1000;   
var Mach = 0.5;

var planeSpeed = 1.0;
var soundSpeed = 1.0;
var plane;

var xPos = 0.0;
var nWave = 0;
var eps = 0.000001;

function startUp() 
{
	init();
}

function init()
{
	resize();

	soundSpeed = nw*1.0/nStep*timeInc/1000.;

      setParams();
	setInterval("movePlane()",timeInc);
}

function setParams()
{
	time = 0.0;
	
	planeSpeed = soundSpeed * Mach;
 	document.getElementById("machLabel").firstChild.nodeValue = "Mach: "+ Mach.toFixed(1);
}

function movePlane()
{
	xPos = planeSpeed*time; 

  	plane = document.getElementById("plane");
	plane.setAttributeNS(null,"transform","translate("+xPos+",0)");
	
	object[nWave] = new makeWave()
	for (i=0;i<object.length;i++) {
		object[i].moveWave();
	}

	nWave++;
	time += timeInc;
}

function makeWave()
{
	this.wave = document.createElementNS(xmlns,"circle");
 	document.getElementById("GroupOfWaves").appendChild(this.wave);
 
	this.r = 0.0;
	this.x = xPos;
	this.y = 0;

  	this.moveWave = function(){
    		with(this){
			r += soundSpeed*timeInc;
      		wave.setAttributeNS(null,"r",r);
 		}
  	}
    	this.wave.setAttributeNS(null,"cx",this.x);
  	this.wave.setAttributeNS(null,"cy",this.y);
	this.wave.setAttributeNS(null,"fill","none");
	this.wave.setAttributeNS(null,"stroke","green");
	this.wave.setAttributeNS(null,"stroke-width","1");
}

function resize()
{
     	nw  = window.innerWidth;
	nh  = window.innerHeight;
}

function MachUp()
{
	if(Mach >= (1.0-eps)) {
		Mach += 0.5;
	}
	else if(Mach <= (0.9+eps)) {
		Mach +=0.1;
	}
    	remove();
	setParams();
}

function MachDown()
{
	if(Mach>1.0) Mach -= 0.5;
	else if(Mach<=1.0) Mach -=0.1;
	if(Mach<0.1) Mach=0.1;
	remove();
	setParams();
}

function remove(){
 	var GChildren=document.getElementById("GroupOfWaves").childNodes;
 	for (var i=GChildren.length-1;i>=0;i--){
 	var anyChild=GChildren.item(i)
 	document.getElementById("GroupOfWaves").removeChild(anyChild);
 }
}

function mouseOverRed()
{
  document.getElementById("RedStop").setAttributeNS(null,"stop-color", "white"); 
}

function mouseOverGreen()
{
  document.getElementById("GreenStop").setAttributeNS(null,"stop-color", "white"); 
}

function mouseOutRed()
{
  document.getElementById("RedStop").setAttributeNS(null,"stop-color", "red"); 
}

function mouseOutGreen()
{
  document.getElementById("GreenStop").setAttributeNS(null,"stop-color", "green"); 
}

]]>

</script>

<rect height="100%" width="100%" fill="white"/>

<g id="SpeedofSound" transform="translate(200,200)">
 <g id="GroupOfWaves">
 </g>

 <g id="plane" >
   <g id="planeInit"  transform="scale(0.5)">
    <path
       d="M -58.044107,0.26904364 0.09133928,0.09846479 c 0,0 -6.48936928,-6.31739969 -20.41572828,-7.54695579 -16.622795,-1.4676241 -9.962229,0.7509972 -27.346556,-3.379336 -6.336304,-1.50544 -11.338107,-13.991707 -11.338107,-13.991707 l -6.754618,-1.929891 7.719563,27.01846864 z"
       id="planePath"
       style="fill:red;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
   </g>
 </g>

  <g
     id="girl" transform="translate(200,300)">
    <path
       d="M -0.24123634,0.08928235 C -6.2721448,-8.1127531 -6.5133811,-8.1127531 -6.5133811,-8.1127531 l -6.9958539,8.44327178"
       id="path2824"
       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
    <path
       d="m -6.5133811,-8.1127531 0,-11.3381079 -7.7195629,5.548436"
       id="path2826"
       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
    <path
       d="M -6.0309084,-19.450861 0,-14.384898"
       id="path2828"
       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
    <path
       d="m -68.028646,4.5521545 a 1.6886543,0.12061817 0 0 1 -0.0046,0.00891"
       id="path3632"
       style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
    <rect
       width="15.680362"
       height="14.232944"
       x="-51.624577"
       y="-3.5292628"
       id="rect3657"
       style="opacity:0.01000001;color:#000000;fill:none;stroke:#b30000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
    <path
       d="m -44.387486,-19.933334 a 9.4082174,8.9257441 0 1 1 -18.816435,0 9.4082174,8.9257441 0 1 1 18.816435,0 z"
       transform="matrix(0.57416661,0,0,0.56466206,24.253697,-14.226172)"
       id="path3689"
       style="fill:#fffbc6;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
    <path
       d="m -58.620429,-14.023044 a 0.48247269,0.12061817 0 1 1 -0.964945,0 0.48247269,0.12061817 0 1 1 0.964945,0 z"
       transform="translate(50.418394,-12.061817)"
       id="path3697"
       style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
    <path
       d="m -58.620429,-14.023044 a 0.48247269,0.12061817 0 1 1 -0.964945,0 0.48247269,0.12061817 0 1 1 0.964945,0 z"
       transform="translate(54.278175,-11.941198)"
       id="path3697-1"
       style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
    <path
       d="m -6.5133811,-11.490062 c 0,-8.925744 0,-8.925744 0,-8.925744"
       id="path3729"
       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
    <path
       d="m -6.7309182,-30.330195 c -8.7569858,2.329371 -4.8649928,12.591687 -4.8649928,12.591687"
       id="path3731"
       style="fill:none;stroke:#000000;stroke-width:0.95260161px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
    <path
       d="m -6.568473,-30.306495 c 6.99585339,0.176002 5.3071987,12.785525 5.3071987,12.785525"
       id="path3731-7"
       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
    <path
       d="m -9.5106917,-23.413117 c 3.230624,2.270409 6.235857,0 6.235857,0"
       id="path3759"
       style="fill:none;stroke:#000000;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
  </g>
</g>

<linearGradient id="groundGradient">
<stop offset="0" stop-color="maroon"/>
<stop offset="1" stop-color="olive"/>
</linearGradient>

 <g id="Ground" transform="translate(0,500)">
   <rect x="0" y="0" height="100%" width="100%" fill="url(#groundGradient)" />
 </g>

 <g id="titleTextArea">
	<rect x ="50" y="20" width="250" height="50" fill="white"/>
	<text id="title" x="50" y="60" font-size="40"> 
	<tspan x="70" dy="0"> Sonic Boom </tspan>
 	</text>
 </g>


<!-- buttons -->
<radialGradient id="RedG">
   <stop id="RedStop" stop-color="red" offset="0"/>
   <stop stop-color="white" offset="80%"/>
   <stop stop-color="red" offset="100%"/>
 </radialGradient>
<radialGradient id="GreenG">
   <stop id="GreenStop" stop-color="green" offset="0"/>
   <stop stop-color="white" offset="80%"/>
   <stop stop-color="green" offset="100%"/>
 </radialGradient>

 <g id="buttonArea">
	<rect x ="10" y="420" width="260" height="60" stroke="blue" stroke-width="2" fill="white"/>

 <!--Mach-->
<g transform="translate(120,400)">
    <text id="machLabel" x="-90" y="60" font-size="24" fill="black">
Mach:
    </text>
    <g id="MachUp" onclick="MachUp()" 
               onmouseover="mouseOverGreen()" 
               onmouseout="mouseOutGreen()" >

      <circle id="MachUpCircle" cx = "50" cy="50" r="20" fill="url(#GreenG)" />
      <path d="M 50 40 L 50 60 M 40 50 L 60 50" fill="none" stroke="black" stroke-width="3"/>
    </g>

    <g id="MachDown" onclick="MachDown()"
               onmouseover="mouseOverRed()" 
               onmouseout="mouseOutRed()">
      <circle id="MachCircle" cx = "100" cy="50" r="20" fill="url(#RedG)" />
      <path d="M 90 50 L 110 50" fill="none" stroke="black" stroke-width="3"/>
    </g>
  </g>


 </g>
</svg>








Just want to see the examples of SVG animations, go to SVG animation Home page.



Any comments ?