Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--activity.py56
-rw-r--r--activity/activity.info2
-rw-r--r--game.py21
-rw-r--r--glucosa.py807
-rw-r--r--icons/help-icon.svg14
-rw-r--r--icons/new-game.svg103
-rw-r--r--icons/score.svg133
-rw-r--r--images/aceituna.pngbin0 -> 2977 bytes
-rw-r--r--images/ant.svg522
9 files changed, 1369 insertions, 289 deletions
diff --git a/activity.py b/activity.py
index 3ff1d71..aa86541 100644
--- a/activity.py
+++ b/activity.py
@@ -14,18 +14,18 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-from gi.repository import Gtk
+import gtk
-from sugar3.activity import activity
-from sugar3.activity.widgets import StopButton
-from sugar3.activity.widgets import ActivityToolbarButton
-from sugar3.graphics.toolbarbox import ToolbarBox
-from sugar3.graphics.toolbutton import ToolButton
+from sugar.activity import activity
+from sugar.activity.widgets import StopButton
+from sugar.activity.widgets import ActivityToolbarButton
+from sugar.graphics.toolbarbox import ToolbarBox
+from sugar.graphics.toolbutton import ToolButton
import game
-class Activity(activity.Activity):
+class AntFarm(activity.Activity):
def __init__(self, handle):
activity.Activity.__init__(self, handle, True)
@@ -35,36 +35,15 @@ class Activity(activity.Activity):
activity_button = ActivityToolbarButton(self)
toolbarbox.toolbar.insert(activity_button, 0)
- separator = Gtk.SeparatorToolItem()
- activity_button.page.insert(separator, -1)
-
- score_btn = ToolButton()
- score_btn.props.icon_name = 'score'
- activity_button.page.insert(score_btn, -1)
- score_btn.show()
-
- separator = Gtk.SeparatorToolItem()
- toolbarbox.toolbar.insert(separator, -1)
-
# ToolButtons
- new_game_btn = ToolButton()
- new_game_btn.connect('clicked', lambda w: self._new_game)
- new_game_btn.set_tooltip('New Game')
- new_game_btn.props.icon_name = 'new-game'
- toolbarbox.toolbar.insert(new_game_btn, -1)
- separator = Gtk.SeparatorToolItem()
- separator.set_expand(False)
- separator.set_draw(True)
- toolbarbox.toolbar.insert(separator, -1)
-
- help_btn = ToolButton()
- help_btn.set_tooltip('Help')
- help_btn.props.icon_name = 'help-icon'
- help_btn.connect('clicked', self.help_cb)
- toolbarbox.toolbar.insert(help_btn, -1)
+ #help_btn = ToolButton()
+ #help_btn.set_tooltip('Help')
+ #help_btn.props.icon_name = 'help-icon'
+ #help_btn.connect('clicked', self.help_cb)
+ #toolbarbox.toolbar.insert(help_btn, -1)
- separator = Gtk.SeparatorToolItem()
+ separator = gtk.SeparatorToolItem()
separator.set_expand(True)
separator.set_draw(False)
toolbarbox.toolbar.insert(separator, -1)
@@ -73,10 +52,13 @@ class Activity(activity.Activity):
toolbarbox.toolbar.insert(stopbtn, -1)
self.set_toolbar_box(toolbarbox)
+
+ # Canvas
+ self.game = game.AntFarm()
+ self.set_canvas(self.game)
+
self.show_all()
def help_cb(self, widget):
pass
-
- def _new_game(self, widget):
- pass
+
diff --git a/activity/activity.info b/activity/activity.info
index 80e6e8e..6822803 100644
--- a/activity/activity.info
+++ b/activity/activity.info
@@ -2,6 +2,6 @@
name = Ant Farm
activity_version = 1
bundle_id = org.sugarlabs.AntFarm
-exec = sugar-activity activity.Activity -s
+exec = sugar-activity activity.AntFarm -s
icon = icon
license = GPLv3+
diff --git a/game.py b/game.py
index 792d600..1855f65 100644
--- a/game.py
+++ b/game.py
@@ -1 +1,20 @@
-#
+#!/usr/bin/env python
+
+import glucosa
+
+
+class AntFarm(glucosa.GameArea):
+
+ def __init__(self):
+ glucosa.GameArea.__init__(self)
+
+ image = glucosa.Image('images/aceituna.png')
+ sprite = glucosa.Sprite(image, 100, 100, 18, 18, scale=2)
+ self.add_sprite(sprite)
+
+ self._events = glucosa.Events(self)
+ self._events.connect('mouse-moved', self._mouse_move, sprite)
+
+ def _mouse_move(self, widget, event, sprite):
+ sprite.x, sprite.y = event['x'], event['y']
+
diff --git a/glucosa.py b/glucosa.py
new file mode 100644
index 0000000..711c5ef
--- /dev/null
+++ b/glucosa.py
@@ -0,0 +1,807 @@
+# -*- encoding: utf-8 -*-
+import cairo
+import os
+import gst
+import math
+import gobject
+import gtk
+
+
+def fill(context, color, size):
+ """Pinta un contexto con un color y tamaño determinado."""
+ context.set_source_rgba(*color)
+ context.rectangle(0, 0, size[0], size[1])
+ context.fill()
+
+def blit_surface(context, surface, x, y, src_x=0, src_y=0, src_width=None, src_height=None, scale=1, rotation=0, anchor_x=0, anchor_y=0, flip=False):
+ """Dibuja una superficie sobre un contexto de canvas."""
+ context.save()
+
+ if not src_width:
+ src_width = surface.get_width()
+
+ if not src_height:
+ src_height = surface.get_height()
+
+ context.save() # desplazamiento
+
+ context.translate(x-anchor_x, y-anchor_y)
+
+
+ context.save()
+ # mueve el cursor al punto de control
+ context.translate(anchor_x, anchor_y)
+
+ if flip:
+ context.scale(-1, 1)
+
+ if scale != 1:
+ context.scale(scale, scale)
+
+ if rotation:
+ context.rotate(math.radians(rotation))
+
+ # restaura el punto de control
+ context.translate(-anchor_x, -anchor_y)
+
+ _blit(context, surface, src_x, src_y, src_width, src_height)
+
+ context.restore()
+ context.restore()
+
+def _blit(context, surface, src_x, src_y, src_width, src_height):
+ "Dibuja una porción de imagen en el contexto del canvas."
+ context.set_source_surface(surface, 0-src_x, 0-src_y)
+ context.rectangle(0, 0, src_width, src_height)
+ context.fill()
+
+def load_surface(path):
+ """Genera una superficie a partir de un archivo .png"""
+
+ if not os.path.exists(path):
+ raise Exception("File not found: %s" % (path))
+
+ # TODO: no asumir que siempre que cargan PNGs.
+ return cairo.ImageSurface.create_from_png(path)
+
+def render_text(context, x, y, text, color, size, face):
+ """Dibuja una cadena de texto sobre el contexto de canvas."""
+
+ context.save()
+ context.set_source_rgba(*color)
+
+ context.select_font_face(face, cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_NORMAL)
+ context.set_font_size(size)
+ context.move_to(x, y)
+
+ context.show_text(text)
+ return_value = context.text_extents(text)[2:4]
+ context.restore()
+
+ return return_value
+
+def get_absolute_uri(relative_path):
+ """Obtiene una ruta uri desde un path relativo.
+
+ Por ejemplo:
+
+ >>> get_absolute_uri("data/my_image.png")
+ file:///media/disk/glucosa/data/my_image.png
+
+ """
+ absolute_path = os.path.abspath(relative_path)
+ return "file://%s" %(absolute_path)
+
+def _range(a, b):
+ "Retorna la distancia entre dos numeros."
+ return abs(b - a)
+
+def _range_between_two_points((x1, y1), (x2, y2)):
+ "Retorna la distancia entre dos puntos en dos dimensiones."
+ return math.sqrt(_range(x1, x2) ** 2 + _range(y1, y2) ** 2)
+
+def dec2hex(dec):
+ """Devulve la representación de una cadena en hexadecimal de un entero"""
+ return "%X" % dec
+
+def hex2dec(hex):
+ """Devuelve el valor entero de una cadena en hexadecimal"""
+ return int(hex, 16)
+
+def get_pixel_color(x, y, surface):
+ """Devuelve el color del pixel solicitado de una surface de cairo."""
+ if isinstance(surface, cairo.Surface):
+ if surface.get_format() == cairo.FORMAT_ARGB32:
+ if surface.get_width() > x >= 0 and surface.get_height() > y >= 0:
+
+ data = surface.get_data()
+
+ bit = surface.get_width() * y * 8 + x * 8
+
+ B = hex2dec(str(data).encode('hex')[bit:bit + 8][0:2])
+ G = hex2dec(str(data).encode('hex')[bit:bit + 8][2:4])
+ R = hex2dec(str(data).encode('hex')[bit:bit + 8][4:6])
+ A = hex2dec(str(data).encode('hex')[bit:bit + 8][6:8])
+
+ return (R, G, B, A)
+ else:
+ raise Exception("Pixel out of range.")
+ else:
+ raise Exception("Only RGBA surfaces are accepted.")
+ else:
+ raise Exception("The surface must be a cairo.Surface.")
+
+def create_window():
+ """Genera una ventana con un elemento DrawingArea dentro.
+
+ Esta función se utiliza para simplificar pruebas rápidas y
+ la construcción de ejemplos sencillos. No es una función muy
+ sofisticada, solo es un helper.
+
+ El objeto retornado por esta función es una tupla con dos
+ elementos, la ventana creada y el DrawingArea.
+ """
+ window = gtk.Window()
+ window.connect('destroy', gtk.main_quit)
+ canvas = GameArea()
+
+ window.add(canvas)
+ window.show_all()
+
+ return (window, canvas)
+
+class Image:
+ """Una imagen simple, que puede ser dibujada por un sprite.
+
+ Por ejemplo:
+
+ >>> imagen = glucosa.Image('data/fantasma.png')
+ """
+
+ def __init__(self, path):
+ self.surface = load_surface(path)
+ self.width = self.surface.get_width()
+ self.height = self.surface.get_height()
+
+ def blit(self, context, x, y, scale=1, rotation=0, anchor_x=0, anchor_y=0, flip=False):
+ blit_surface(context, self.surface, x, y,
+ scale=scale, rotation=rotation,
+ anchor_x=anchor_x, anchor_y=anchor_y,
+ flip=flip)
+
+
+class Frame(Image):
+ """Representa un cuadro de animación, realizado dividiendo una imagen.
+
+ Por ejemplo:
+
+ >>> animation = glucosa.Frame("data/player_stand.png", cols=4)
+ >>> animation.frame_index
+ 1
+ >>> animation.advance()
+ >>> animation.frame_index
+ 2
+ >>> sprite.image = animation
+
+ """
+
+ def __init__(self, path, cols, rows = 1):
+ Image.__init__(self, path)
+ self.cols = cols
+ self.rows = rows
+ self.frame_index = 0
+ self.frame_limit = cols * rows
+ self.frame_width = self.surface.get_width() / self.cols
+ self.frame_height = self.surface.get_height() / self.rows
+
+ self.width = self.frame_width
+ self.height = self.frame_height
+
+ self.frame_coordinates = []
+ self.create_frame_coordinates()
+
+ def set_frame(self, index):
+ self.frame_index = index
+
+ def blit(self, context, x, y, scale=1, rotation=0, anchor_x=0, anchor_y=0, flip=False):
+ blit_surface(context, self.surface, x, y,
+ self.frame_coordinates[int(self.frame_index)][0],
+ self.frame_coordinates[int(self.frame_index)][1],
+ self.frame_width, self.frame_height,
+ scale=scale, rotation=rotation,
+ anchor_x=anchor_x, anchor_y=anchor_y, flip=flip)
+
+ def create_frame_coordinates(self):
+ """ Calcula las posiciones del cuadro de animación de la Imagen."""
+
+ cont = 0
+ while cont <= self.frame_limit:
+ frame_col = cont % self.cols
+ frame_row = cont / self.cols
+
+ dx = frame_col * self.frame_width
+ dy = frame_row * self.frame_height
+
+ self.frame_coordinates.append([dx, dy])
+
+ cont += 1
+
+ def advance(self, speed=1):
+ """Avanza un cuadro de animación.
+
+ Este método permite hacer animaciones cíclicas fácilmente. Si
+ al momento de avanzar tiene que reiniciar al cuadro 0 lo hace, y
+ retorna True avisando del reinicio."""
+
+ self.frame_index += speed
+
+ if self.frame_index >= self.frame_limit:
+ self.frame_index = 0
+ return True
+
+ return False
+
+
+class Sprite(gobject.GObject):
+ """Representa a un personaje con apariencia de imagen o animación.
+
+ >>> imagen = glucosa.Image('data/aceituna.png')
+ >>> sprite = glucosa.Sprite(imagen, 0, 0)
+ >>> sprite.draw(contexto)
+
+ .. image:: ../../data/aceituna.png
+
+ Cada Sprite tiene atributos para representar el estado de dibujado, alguno
+ de estos atributos son:
+
+ - x -- posición horizontal.
+ - y -- posición vertical.
+ - anchor_x -- punto de control horizontal.
+ - anchor_y -- punto de control vertical.
+ - scale -- tamaño del sprite (por ejemplo: 1 es normal, 2 el doble de tamaño...)
+ - rotation -- la rotación en grados.
+ - flip -- espejado horizontal.
+ """
+
+ __gsignals__ = {
+ 'update': (gobject.SIGNAL_RUN_FIRST, None, [])}
+
+ def __init__(self, image, x, y, anchor_x=0, anchor_y=0, scale=1, rotation=0, flip=False):
+ gobject.GObject.__init__(self)
+ self.image = image
+ self.x = x
+ self.y = y
+ self.anchor_x = anchor_x
+ self.anchor_y = anchor_y
+ self.scale = scale
+ self.rotation = rotation
+ self.flip = flip
+ self.radius = (max(self.image.width, self.image.height) / 2)
+
+ def set_pos(self, x=None, y=None):
+ """Define la posicion del personaje"""
+ if x:
+ self.x = x
+
+ if y:
+ self.y = y
+
+ def move(self, mx=0, my=0):
+ """Mueve el personaje basandose en la posicion actual
+ Ejemplo:
+ >>> sprite.move(-10, 0) # Disminuira 10 pixels en x
+ >>> sprite.move(0, +10) # Aumentara 10 pixels en y"""
+ self.x += mx
+ self.y += mx
+
+ def set_anchor(self, x = -1, y = -1):
+ """Define el punto de control del personaje"""
+ if x >= 0:
+ self.anchor_x = x
+
+ if y >= 0:
+ self.anchor_y = y
+ self.emit('update')
+
+ def set_rotation(self, rotation):
+ """Rota el personaje, en grados"""
+ self.rotation = rotation
+ self.emit('update')
+
+ def set_flip(self, flip):
+ """Espejado horizontal"""
+ self._flip = flip
+ self.emit('update')
+
+ def get_flip(self):
+ return self._flip
+
+ flip = property(get_flip, set_flip, doc="Espejado horizontal")
+
+ def set_image(self, image):
+ """Define la imagen del sprite"""
+ self.image = image
+ self.emit('update')
+
+ def set_scale(self, scale):
+ """Escalar el sprite"""
+ self.scale = scale
+ self.emit('update')
+
+ def draw(self, context):
+ """ Dibuja un el sprite en el contexto """
+ self.image.blit(context, self._x, self._y, scale=self.scale, rotation=self.rotation, anchor_x=self.anchor_x, anchor_y=self.anchor_y, flip=self._flip)
+
+ def update(self):
+ """ Actualiza el estado de la animación del Sprite si el Sprite contiene un Frame,
+ en vez de una Imagen.
+ """
+ if (self.image.__class__.__name__ == "Frame"):
+ self.image.advance()
+
+ def get_center(self):
+ """ Obtiene la posicion central del Sprite """
+ return self.x + (self.image.width / 2), self.y + (self.image.height / 2)
+
+ def collision_with(self, sprite):
+ "Retorna True si el sprite colisiona con otro sprite."
+ return _range_between_two_points(self.get_center(), sprite.get_center()) < self.radius + sprite.radius
+
+ def set_x(self, x):
+ self._x = x
+ self.emit('update')
+
+ def set_y(self, y):
+ self._y = y
+ self.emit('update')
+
+ def get_x(self):
+ return self._x
+
+ def get_y(self):
+ return self._y
+
+ x = property(get_x, set_x, doc="Define la posicion horizonal")
+ y = property(get_y, set_y, doc="Define la posicion vertical")
+
+ def get_left(self):
+ return self.x - (self.image.width * self.scale / 2)
+
+ def set_left(self, x):
+ self.x = x + (self.image.width * self.scale / 2)
+
+ def get_right(self):
+ return self.left + (self.image.width * self.scale)
+
+ def set_right(self, x):
+ self.set_left(x - self.image.width * self.scale)
+
+ left = property(get_left, set_left, doc="Define la posición izquierda del Sprite")
+ right = property(get_right, set_right, doc="Define la posición derecha del Sprite")
+
+ def get_top(self):
+ return self.y - (self.image.height * self.scale / 2)
+
+ def set_top(self, y):
+ self.y = y + (self.image.height * self.scale / 2)
+
+ def get_bottom(self):
+ return self.top + (self.image.height * self.scale)
+
+ def set_bottom(self, y):
+ self.set_top(y - self.image.height * self.scale)
+
+ top = property(get_top, set_top, doc="Define la posición superior del Sprite")
+ bottom = property(get_bottom, set_bottom, doc="Define la posición inferior del Sprite")
+
+
+class Text:
+ """Muestra un texto en la pantalla.
+
+ >>> texto = glucosa.Text('Hola Mundo\\nBienvenido a Glucosa!', 10, 100, face='Arial', size=18)
+ >>> texto.draw(contexto)
+
+ .. image:: images/texto.png
+
+ """
+
+ def __init__(self, text, x, y, size = 12, color = (0, 0, 0), face = "Monospace"):
+ self.text = text
+ self.x = x
+ self.y = y
+ self.size = size
+ self.color = color
+ self.face = face
+
+ def draw(self, context):
+
+ lines = self.text.split('\n')
+
+ dy = 0
+
+ for line in lines:
+ text_width, text_height = render_text(context,
+ self.x,
+ self.y + dy,
+ line,
+ self.color,
+ self.size,
+ self.face)
+ dy += text_height
+
+class Singleton(type):
+ """Clase para garantizar que una clase sólo tenga una instancia y
+ proporcionar un punto de acceso global a ella.
+
+ Para que una clase sea Singleton simplemente se tiene que
+ cambiar la metaclase por Singleton. Por ejemplo::
+
+ class MiClase:
+ __metaclass__ = Singleton
+ [...]
+
+ Entonces, la clase tendrá una sola instancia activa:
+
+ >>> a = MiClase()
+ >>> b = MiClase()
+ >>> id(a) == id(b)
+ True
+ """
+ def __init__(cls, name, bases, dic):
+ super(Singleton, cls).__init__(name, bases, dic)
+ cls.instance = None
+
+ def __call__(self, *args, **kw):
+ if self.instance is None:
+ self.instance = super(Singleton, self).__call__(*args, **kw)
+ return self.instance
+
+
+class Events(gobject.GObject):
+ """ Gestor de los posibles eventos que se producen en glucosa.
+
+ >>> def boton_mouse_presionado(self, evento):
+ >>> print evento
+ >>>
+ >>> eventos = glucosa.AreaEvents(self.window)
+ >>> eventos.connect('mouse-button-pressed', self.boton_mouse_presionado)
+
+
+ Los posibles eventos a los que se puede conectar un metodo son:
+
+ - mouse-moved ( al mover el raton por la pantalla ).
+ - mouse-button-pressed ( al soltar un botón del ratón ).
+ - mouse-button-released ( al presionar un btoón del ratón ).
+ - mouse-scroll-up ( al mover la rueda central del raton hacia arriba ).
+ - mouse-scroll-down ( al mover la rueda central del raton hacia abajo ).
+ - key-pressed ( al pulsar una tecla ).
+ - key-released ( al soltar una tecla ).
+
+ """
+
+ # No funciona con gobject:
+ # Solo puede existir una instancia de este objeto en el programa.
+ #__metaclass__ = Singleton
+
+ __gsignals__ = {'mouse-moved': (gobject.SIGNAL_RUN_FIRST, None, [object]),
+ 'mouse-button-pressed': (gobject.SIGNAL_RUN_FIRST, None, [object]),
+ 'mouse-button-released': (gobject.SIGNAL_RUN_FIRST, None, [object]),
+ 'mouse-scroll-up': (gobject.SIGNAL_RUN_FIRST, None, [object]),
+ 'mouse-scroll-down': (gobject.SIGNAL_RUN_FIRST, None, [object]),
+ 'key-pressed': (gobject.SIGNAL_RUN_FIRST, None, []),
+ 'key-released': (gobject.SIGNAL_RUN_FIRST, None, [])}
+
+ def __init__(self, widget):
+ gobject.GObject.__init__(self)
+
+ self._widget = widget
+
+ # Conectamos los eventos de GTK.
+ self._widget.connect('motion-notify-event',
+ self._mouse_move)
+ self._widget.connect('button-press-event',
+ self._mouse_button_press)
+ self._widget.connect('button-release-event',
+ self._mouse_button_released)
+ self._widget.connect('key-press-event',
+ self._key_pressed)
+ self._widget.connect('key-release-event',
+ self._key_released)
+ self._widget.connect('scroll-event',
+ self._mouse_scroll)
+
+ self._keys_pressed = []
+
+ def _mouse_move(self, widget, event):
+ mouse_event = {'x' : event.x,
+ 'y' : event.y}
+ self.emit('mouse-moved', mouse_event)
+ return True
+
+ def _mouse_button_press(self, widget, event):
+ mouse_event = {'button' : event.button,
+ 'x' : event.x,
+ 'y' : event.y}
+ self.emit('mouse-button-pressed', mouse_event)
+ return True
+
+ def _mouse_button_released(self, widget, event):
+ mouse_event = {'button' : event.button,
+ 'x' : event.x,
+ 'y' : event.y}
+ self.emit('mouse-button-released', mouse_event)
+ return True
+
+ def _mouse_scroll(self, widget, event):
+ mouse_event = {'x' : event.x,
+ 'y' : event.y}
+
+ if (event.direction == self.scroll_up):
+ self.emit('mouse-scroll-up', mouse_event)
+
+ if (event.direction == self.scroll_down):
+ self.emit('mouse-scroll-down', mouse_event)
+
+ return True
+
+ def is_pressed(self, key):
+ """ Comprueba si una tecla está pulsada
+
+ >>> if (self.events.is_pressed(glucosa.Events.K_b)):
+ >>> print "Ha spulsado la tecla b."
+ """
+ return (key in self._keys_pressed)
+
+ def _key_repeater(self):
+ self.emit('key-pressed')
+ return len(self._keys_pressed) > 0
+
+ def _key_pressed(self, widget, event):
+ keyvalue = gtk.gdk.keyval_name(event.keyval)
+
+ # Crea una tarea solo si la lista de teclas esta vacia.
+ # Cuando se deja de pulsar las teclas la lista se vacia y se
+ # puede generar de nuevo una tarea.
+ if (len(self._keys_pressed) == 0):
+ gobject.timeout_add(10, self._key_repeater)
+
+ self._register_key(keyvalue)
+ self.emit('key-pressed')
+
+ return True
+
+ def _key_released(self, widget, event):
+ keyvalue = gtk.gdk.keyval_name(event.keyval)
+ self._unregister_key(keyvalue)
+ self.emit('key-released')
+ return True
+
+ def _register_key(self, key):
+ if not(key in self._keys_pressed):
+ self._keys_pressed.append(key)
+
+ def _unregister_key(self, key):
+ if (key in self._keys_pressed):
+ self._keys_pressed.remove(key)
+
+ scroll_up = gtk.gdk.SCROLL_UP
+ scroll_down = gtk.gdk.SCROLL_DOWN
+ K_a = 'a'
+ K_b = 'b'
+ K_c = 'c'
+ K_d = 'd'
+ K_e = 'e'
+ K_f = 'f'
+ K_g = 'g'
+ K_h = 'h'
+ K_i = 'i'
+ K_j = 'j'
+ K_k = 'k'
+ K_l = 'l'
+ K_m = 'm'
+ K_n = 'n'
+ #K_ñ = 'ntilde'
+ K_o = 'o'
+ K_p = 'p'
+ K_q = 'q'
+ K_r = 'r'
+ K_s = 's'
+ K_t = 't'
+ K_u = 'u'
+ K_v = 'v'
+ K_w = 'w'
+ K_x = 'x'
+ K_y = 'y'
+ K_z = 'z'
+ K_UP = 'Up'
+ K_DOWN = 'Down'
+ K_LEFT = 'Left'
+ K_RIGHT = 'Right'
+ K_SPACE = 'space'
+ K_RETURN = 'Return'
+ K_CONTROL_L = 'Control_L'
+ K_CONTROL_R = 'Control_R'
+ K_SHIFT_L = 'Shift_L'
+ K_SHIFT_R = 'Shift_R'
+ K_TAB = 'Tab'
+
+
+class Sound:
+ """Un sonido que se puede reproducir una a mas veces.
+
+ >>> s = Sound("data/sound.wav")
+ >>> s.play()
+ """
+
+ def __init__(self, path):
+ "Genera una nueva instancia de Sound, el parametro ``path`` deber ser ruta al archivo wav."
+ self.path = path
+ self.player = gst.element_factory_make("playbin2", "player")
+ self.player.set_property("uri", get_absolute_uri(path))
+
+ self.bus = self.player.get_bus()
+ self.bus.add_signal_watch()
+ self.bus.connect("message", self.on_message)
+
+ def play(self):
+ "Reproduce el sonido."
+ self.player.set_state(gst.STATE_PLAYING)
+
+ def on_message(self, bus, message):
+ t = message.type
+ if t == gst.MESSAGE_EOS:
+ self.player.set_state(gst.STATE_NULL)
+ self.playmode = False
+ elif t == gst.MESSAGE_ERROR:
+ self.player.set_state(gst.STATE_NULL)
+ err, debug = message.parse_error()
+ print "Error: %s" % err, debug
+ self.playmode = False
+
+class Pencil:
+ """Representa un contexto de dibujo donde se pueden dibujar figuras geometricas.
+
+ >>> self.lapiz = glucosa.Pencil()
+ >>> self.lapiz.draw_line(context, 10, 10, 100, 100, 1)
+ """
+
+
+ def __init__(self, color=(0, 0, 0)):
+ self.color = color
+
+ def draw_line(self, context, src_x, src_y, dest_x, dest_y, line_width=1):
+ """ Dibuja una linea recta en pantalla.
+
+ >>> self.lapiz = glucosa.Pencil()
+ >>> self.lapiz.draw_line(context, 10, 10, 100, 100, 1)
+
+ """
+
+ context.set_source_rgba(*self.color)
+
+ context.move_to(src_x, src_y)
+ context.line_to(dest_x, dest_y)
+
+ context.set_line_width(line_width)
+
+ context.stroke()
+
+ def draw_circle(self, context, center_x, center_y, radius, line_width=1):
+ """ Dibuja un circulo en pantalla
+
+ >>> self.lapiz = glucosa.Pencil()
+ >>> self.lapiz.draw_circle(context, 100, 100, 60)
+
+ """
+ self.draw_arc(context, center_x, center_y, radius, 0, 360, line_width)
+
+ def draw_arc(self, context, center_x, center_y, radius, angle_1, angle_2,
+ line_width=1):
+ """ Dibuja un arco en pantalla. Los angulos crecen en el sentido de
+ las agujas del reloj.
+
+ >>> self.lapiz = glucosa.Pencil()
+ >>> self.lapiz.draw_arc(context, 100, 120, 60, 0, 180)
+
+ """
+
+ context.set_source_rgba(*self.color)
+
+ context.set_line_width(line_width)
+
+ context.arc(center_x, center_y, radius, angle_1 * (math.pi / 180),
+ angle_2 * (math.pi / 180))
+
+ context.stroke()
+
+ def draw_box (self, context, x, y, width, height, line_width=1,
+ fill_color=None):
+ """ Dibuja una caja en pantalla. """
+
+ context.set_source_rgba(*self.color)
+
+ context.set_line_width(line_width)
+
+ context.move_to(x, y)
+ context.line_to(x + width, y)
+ context.line_to(x + width, y + height)
+ context.line_to(x, y + height)
+
+ context.close_path()
+
+ if (fill_color != None):
+ context.set_source_rgba(*fill_color)
+ context.fill_preserve()
+ context.set_source_rgba(*self.color)
+
+ context.stroke()
+
+class GameArea(gtk.DrawingArea):
+ """Es el area donde el juego se dibujará
+
+ Permite ser embebida en cualquier contenedor de gtk, ya que es un
+ widget.
+
+ Emite un señal en cada actualizacion y en cada redibujado
+ que pueden ser usadas de la siguiente forma:
+ >>> area.connect('update', funcion_a_llamar)
+ >>> area.connect('draw', funcion_a_llamar)
+ """
+
+ __gsignals__ = {
+ 'update': (gobject.SIGNAL_RUN_FIRST, None, []),
+ 'draw': (gobject.SIGNAL_RUN_FIRST, None, [object]),
+ }
+
+ def __init__(self):
+ gtk.DrawingArea.__init__(self)
+
+ self.sprites = []
+ self._timeout = None
+
+ self.connect("expose-event", self._on_draw)
+
+ self.set_events( gtk.gdk.BUTTON_PRESS_MASK
+ | gtk.gdk.BUTTON_RELEASE_MASK
+ | gtk.gdk.KEY_RELEASE_MASK
+ | gtk.gdk.KEY_PRESS_MASK
+ | gtk.gdk.POINTER_MOTION_MASK)
+
+ self.set_flags (gtk.CAN_FOCUS)
+
+ def add_sprite(self, sprite):
+ """Agrega un sprite a el area de juego"""
+ self.sprites.append(sprite)
+ sprite.connect('update', self._update)
+
+ def set_update_loop(self, fps=60):
+ """Define un bucle de actualizacion si fps = -1 el bucle se detendra
+ y dibujara solo cuando un sprite cambie"""
+ if self._timeout:
+ gobject.source_remove(self._timeout)
+ if fps != -1:
+ self._timeout = gobject.timeout_add(1000/60, self._update)
+
+ def _update(self, *args):
+ # Emite la señal, llamando a todas las funciones que esten conectadas
+ # en este caso no pasa argumentos.
+ self.emit('update')
+
+ # Se actualizan los sprites
+ for sprite in self.sprites:
+ sprite.update()
+
+ gobject.idle_add(self.queue_draw)
+ return True
+
+ def _on_draw(self, widget, event):
+ context = self.window.cairo_create()
+ window_size = self.get_window().get_size()
+ fill(context, (50,50,50), window_size)
+
+ # Se encarga de dibujar los sprites
+ for sprite in self.sprites:
+ sprite.draw(context)
+
+ # Emite la señal enviando el context como un argumento
+ self.emit('draw', context)
diff --git a/icons/help-icon.svg b/icons/help-icon.svg
deleted file mode 100644
index f6c92bf..0000000
--- a/icons/help-icon.svg
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="55px" height="55px">
- <path
- style="fill:none;stroke:#ffffff;stroke-width:3;stroke-linejoin:round"
- d="M 48,28 A 20,20 0 1 1 8,28 A 20,20 0 1 1 48,28 z"/>
- <path
- style="fill:none;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round"
- d="M 22,20 C 22,20 25,17 29,17 C 33,17 36,19 36,23 C 36,27 31,29 28,29 L 28,32" />
- <path
- style="fill:#ffffff"
- d="M 25,40
- a 3,3 0 1 1 6,0
- a 3,3 0 1 1 -6,0 z" />
-</svg>
diff --git a/icons/new-game.svg b/icons/new-game.svg
deleted file mode 100644
index cbc1d85..0000000
--- a/icons/new-game.svg
+++ /dev/null
@@ -1,103 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.1"
- width="56"
- height="56"
- id="svg2"
- inkscape:version="0.48.2 r9819"
- sodipodi:docname="new-game.svg">
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1198"
- inkscape:window-height="801"
- id="namedview21"
- showgrid="false"
- inkscape:zoom="4.2909091"
- inkscape:cx="11.268662"
- inkscape:cy="35.928207"
- inkscape:window-x="0"
- inkscape:window-y="30"
- inkscape:window-maximized="0"
- inkscape:current-layer="svg2" />
- <metadata
- id="metadata9">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs10" />
- <g
- id="g3006"
- style="stroke:#ffffff;fill:#ffffff">
- <path
- d="m 28.898305,12.069916 a 3.4957626,4.5444913 0 1 1 -6.991525,0 3.4957626,4.5444913 0 1 1 6.991525,0 z"
- sodipodi:ry="4.5444913"
- sodipodi:rx="3.4957626"
- sodipodi:cy="12.069916"
- sodipodi:cx="25.402542"
- id="path2994"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
- sodipodi:type="arc" />
- <path
- d="m 28.665255,23.605932 a 3.7288136,7.9237289 0 1 1 -7.457627,0 3.7288136,7.9237289 0 1 1 7.457627,0 z"
- sodipodi:ry="7.9237289"
- sodipodi:rx="3.7288136"
- sodipodi:cy="23.605932"
- sodipodi:cx="24.936441"
- id="path2996"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
- sodipodi:type="arc" />
- <path
- d="m 31.461864,41.317795 a 6.1758475,11.419492 0 1 1 -12.351695,0 6.1758475,11.419492 0 1 1 12.351695,0 z"
- sodipodi:ry="11.419492"
- sodipodi:rx="6.1758475"
- sodipodi:cy="41.317795"
- sodipodi:cx="25.286016"
- id="path2998"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
- sodipodi:type="arc" />
- <path
- inkscape:connector-curvature="0"
- id="path3000"
- d="M 38.45339,27.567797 34.957627,22.207627 14.915255,22.440678 11.186441,28.5"
- style="fill:#ffffff;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- id="path3002"
- d="m 13.283898,31.529661 3.029661,-6.292373 15.614407,-0.233051 3.029661,6.292373"
- style="fill:#ffffff;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- id="path3004"
- d="m 12.118644,14.75 3.495763,4.661017 18.177966,-0.932204 3.728814,-5.59322"
- style="fill:#ffffff;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- </g>
- <path
- d="m 40.602453,28.747722 c -1.237077,0 -2.252361,1.033402 -2.252361,2.292537 l 0,5.257541 -3.663838,-3.729187 c -0.875669,-0.889397 -2.279493,-0.891288 -3.153298,0 -0.87381,0.891291 -0.875637,2.35072 0,3.240113 l 3.693863,3.729188 -5.225475,0 c -1.237073,0 -2.252361,1.033401 -2.252361,2.292537 0,1.259135 1.015288,2.261965 2.252361,2.261965 l 5.195448,0 -3.663836,3.729188 c -0.87381,0.891293 -0.875637,2.35072 0,3.240115 0.875666,0.889391 2.309528,0.860724 3.183334,-0.03061 l 3.633802,-3.729185 0,5.318675 c 0,1.259138 1.015284,2.261968 2.252361,2.261968 1.237073,0 2.222332,-1.00283 2.222332,-2.261968 l 0,-5.349241 3.723901,3.759751 c 0.875667,0.889394 2.279492,0.891293 3.153298,0 0.873809,-0.89129 0.875682,-2.320152 0,-3.209542 l -3.693863,-3.729191 5.195433,0 c 1.237074,0 2.222344,-1.002832 2.222344,-2.261964 0,-1.259138 -0.98527,-2.292538 -2.222344,-2.292538 l -5.225472,0 3.693879,-3.790322 c 0.873807,-0.891292 0.875668,-2.289586 0,-3.17898 -0.875681,-0.889392 -2.279506,-0.921863 -3.153312,-0.0306 l -3.693864,3.790319 0,-5.288104 c 0,-1.259138 -0.985259,-2.292538 -2.222332,-2.292538 z"
- id="rect3894"
- style="fill:#ffffff;fill-opacity:1;stroke:#282828;stroke-width:1.93908417;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- inkscape:connector-curvature="0" />
-</svg>
diff --git a/icons/score.svg b/icons/score.svg
deleted file mode 100644
index bfd8e1f..0000000
--- a/icons/score.svg
+++ /dev/null
@@ -1,133 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.0"
- width="84.862267"
- height="78.095123"
- id="svg4502"
- style="display:inline"
- inkscape:version="0.48.3.1 r9886"
- sodipodi:docname="score.svg">
- <metadata
- id="metadata20">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1280"
- inkscape:window-height="744"
- id="namedview18"
- showgrid="false"
- inkscape:zoom="2.3150307"
- inkscape:cx="103.52923"
- inkscape:cy="41.700533"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:current-layer="g4395"
- fit-margin-top="2"
- fit-margin-left="2"
- fit-margin-right="2"
- fit-margin-bottom="2" />
- <defs
- id="defs4504">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 100 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="200 : 100 : 1"
- inkscape:persp3d-origin="100 : 66.666667 : 1"
- id="perspective22" />
- </defs>
- <g
- transform="translate(-10.082352,65.657527)"
- id="terron"
- style="display:inline">
- <g
- id="g4395">
- <rect
- style="fill:none;stroke:#ffffff;stroke-width:5.34319830000000007;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
- id="rect3049"
- width="75.519066"
- height="36.633076"
- x="14.753951"
- y="-30.1754" />
- <rect
- style="fill:none;stroke:#ffffff;stroke-width:5.35777044000000036;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
- id="rect3819"
- width="38.422394"
- height="30.206703"
- x="33.302288"
- y="-60.54668" />
- <text
- xml:space="preserve"
- style="font-size:19.42981148000000147px;font-style:normal;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:#ffffff;font-family:Sans;-inkscape-font-specification:Sans Bold;stroke-opacity:1"
- x="49.897705"
- y="-35.294449"
- id="text3821"
- sodipodi:linespacing="125%"
- transform="scale(0.92818218,1.0773747)"><tspan
- sodipodi:role="line"
- id="tspan3823"
- x="49.897705"
- y="-35.294449">1</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:19.42981148000000147px;font-style:normal;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-opacity:1;display:inline;font-family:Sans;-inkscape-font-specification:Sans Bold"
- x="28.97287"
- y="-4.3726034"
- id="text3821-4"
- sodipodi:linespacing="125%"
- transform="scale(0.92818218,1.0773747)"><tspan
- sodipodi:role="line"
- id="tspan3823-1"
- x="28.97287"
- y="-4.3726034"
- style="stroke-width:1;stroke:#ffffff;stroke-opacity:1">2</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:19.42981148000000147px;font-style:normal;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:#ffffff;display:inline;font-family:Sans;-inkscape-font-specification:Sans Bold;stroke-opacity:1"
- x="73.573051"
- y="-5.0112777"
- id="text3821-4-1"
- sodipodi:linespacing="125%"
- transform="scale(0.92818218,1.0773747)"><tspan
- sodipodi:role="line"
- id="tspan3823-1-2"
- x="73.573051"
- y="-5.0112777">3</tspan><tspan
- sodipodi:role="line"
- x="73.573051"
- y="19.275986"
- id="tspan3879" /></text>
- <path
- style="fill:none;stroke:#ffffff;stroke-width:4.88154649999999979;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- d="m 53.67775,-28.217139 0,32.7603728 z"
- id="path3881"
- inkscape:connector-curvature="0" />
- </g>
- </g>
-</svg>
diff --git a/images/aceituna.png b/images/aceituna.png
new file mode 100644
index 0000000..dae99e4
--- /dev/null
+++ b/images/aceituna.png
Binary files differ
diff --git a/images/ant.svg b/images/ant.svg
new file mode 100644
index 0000000..f42a737
--- /dev/null
+++ b/images/ant.svg
@@ -0,0 +1,522 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="744.09448819"
+ height="1052.3622047"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.2 r9819"
+ sodipodi:docname="ant.svg">
+ <defs
+ id="defs4" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.33"
+ inkscape:cx="289.15098"
+ inkscape:cy="630.95399"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1200"
+ inkscape:window-height="804"
+ inkscape:window-x="0"
+ inkscape:window-y="30"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <image
+ y="115.65166"
+ x="536.31586"
+ id="image3063"
+ xlink:href="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a
+HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy
+MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAHRAfQDASIA
+AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA
+AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3
+ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm
+p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA
+AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx
+BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK
+U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3
+uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iii
+gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
+CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
+KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
+ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
+gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
+CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
+KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
+ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
+gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooASiloo
+ASiiigBaKO1FABRRRQAUUUUAFJS0lABS0lLQAUUUUAFFJRQAtJRRQAUUUUAFFFGaAEooooAKWiig
+AooooAKKKKACiiigAooooASiiigAooooAWiiigApKKKACiiigAooooAKKKKACiiloASilpKADJoy
+aKKADJooooAKKKKACiiigAooooAdRRRQAlFLRigAFFFFABRRRQAUlLSUAFHeikoAKWkpe9ABRRRQ
+AUUUUAFFFFABRRRQAd6SlpKACgUUUALRRRQAUUUUALSUUUAFFFFABRSUUAFFFLQAlLRRmgApKKKA
+CiiigAooooAKKKKACiiigBaKSloAKKKKAEooooAKKKKACiiigAooooAKKKKAHUUZooAKKM0lAC0U
+lLQAUUUUAJRRRQAUlLRQAlFLSUAFLSUUALRRRQAUUUUAFFFFABRRRQAUlLSUALRSUtABRRRQAUUU
+UAFFFHegBKKKKACl70lFABRRRQAUZpKX8KACiiigAooooAKKKKACiiigAooooAWijvSUABooooAK
+KKKACiiigAooooAKKKKACloooAKKKKACiiigAooo70AJRRRQAtFJRQAtFFFACUUppKAFooooASlp
+KKAFooooAKKKKACkpaSgApaMUUAFFLijFACYopaSgApKWkoAKKKKACiiigAooooASloxRQAUUUUA
+FFFBoAKSiigBRRQKKACiiigAooooAKKKKACiiigAoozSUALRSUUAFFFFADqKKKACilpMUAFGKWig
+BKCKWkoASilxRigBKKXFFABRRRQAUUUUAFFFFACUUtFABRRS4oASloxRQAYpKWkoAKXtSUUALRRR
+QAUUlFAC4ooooAQ0lLRQAlLRUM1zBbJvnlSJR/E7AD9aAJaKzLbX9JvLs2tvqVrJOP8Almso3H6e
+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
+KAExRS0UAOooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
+ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACjFFFABRRRQAUUUUAFFFFABRRRQAUUUUAGKK
+KKACiiigAooooAKKKKAEopaKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
+igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
+ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
+KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
+oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
+igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
+ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
+KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
+oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
+igAooooAKKKKACiiigAooooAKKKKAP/Z
+"
+ height="465"
+ width="500"
+ style="fill:none" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#803300;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path3066"
+ sodipodi:cx="471.42856"
+ sodipodi:cy="463.26443"
+ sodipodi:rx="34.586468"
+ sodipodi:ry="30.451128"
+ d="m 506.01503,463.26443 a 34.586468,30.451128 0 1 1 -69.17294,0 34.586468,30.451128 0 1 1 69.17294,0 z"
+ transform="matrix(1.2768296,1.126433,-0.68084801,0.68989416,190.5464,-394.68917)" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#782121;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path3068"
+ sodipodi:cx="253.7594"
+ sodipodi:cy="448.60278"
+ sodipodi:rx="35.714287"
+ sodipodi:ry="20.300753"
+ d="m 289.47369,448.60278 a 35.714287,20.300753 0 1 1 -71.42858,0 35.714287,20.300753 0 1 1 71.42858,0 z"
+ transform="matrix(0.86409852,-0.7819386,0.8537616,0.94346812,-353.02483,212.88236)" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#803300;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path3070"
+ sodipodi:cx="323.6842"
+ sodipodi:cy="435.06894"
+ sodipodi:rx="28.947369"
+ sodipodi:ry="21.052631"
+ d="m 352.63157,435.06894 a 28.947369,21.052631 0 1 1 -57.89473,0 28.947369,21.052631 0 1 1 57.89473,0 z" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#803300;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path3072"
+ sodipodi:cx="365.78946"
+ sodipodi:cy="438.82834"
+ sodipodi:rx="22.932331"
+ sodipodi:ry="25.56391"
+ d="m 388.72179,438.82834 a 22.932331,25.56391 0 1 1 -45.86466,0 22.932331,25.56391 0 1 1 45.86466,0 z"
+ transform="matrix(1,0,0,0.7293677,-1.5037594,121.16826)" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 276.69173,443.33963 26.31579,-5.26316"
+ id="path3076"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 316.54135,453.86594 c -49.75806,-7.04817 -51.52348,32.67249 -69.17293,63.1579 l -6.01504,18.04511 -19.54887,12.03007 c 4.652,8.39144 19.05712,-6.07745 26.31579,-10.52631 l 6.76692,-24.81203 c 15.83895,-19.51052 22.24176,-36.13398 25.56391,-53.38346 22.22203,6.05122 55.67453,35.92901 66.16541,3.7594 l 6.76692,21.80451 -21.05264,-8.27068 -6.01502,29.32331 -9.02257,72.18045 -11.27819,11.2782 c 11.15619,1.07856 7.02262,-0.23515 15.78947,-11.2782 l 13.53384,-92.4812 c 13.96302,4.13582 18.77423,13.23186 23.30827,-1.50376 l 7.51879,-9.02256 -3.00752,-16.54135 0,0 0,0"
+ id="path3080"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccccccccccc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 366.16541,462.13662 c 1.29514,19.58738 12.74418,19.41826 24.81203,18.04511 16.48887,0.16162 22.17148,-13.34985 34.58647,-33.83458 12.4817,28.85175 17.88689,30.70839 42.10526,48.87217 l 49.62406,63.1579 27.81955,12.03008 C 508.99379,557.89472 486.1266,510.61886 464.66165,477.92609"
+ id="path3082"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 391.72932,437.32459 -3.00752,-63.90978 29.32331,18.797 -1.50376,21.80451 9.02256,-23.30827 -41.35338,-24.06015 -0.75188,66.16541"
+ id="path3084"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 322.55639,414.01632 14.28572,-20.30075 11.27819,34.58646"
+ id="path3086"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 236.09023,468.90353 -18.797,19.54888 c -6.02001,5.28057 -4.22688,-12.64953 -2.25564,-35.33835"
+ id="path3088"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:none;stroke:#aa4400;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 218.04512,446.34714 -16.54136,3.00752 -18.79699,25.56391 -57.89474,32.33083"
+ id="path3090"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="fill:none;stroke:#aa4400;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 221.05263,434.31707 -10.52631,-8.27068 -24.06015,10.52632 -32.33083,12.03007 -6.01504,11.2782"
+ id="path3092"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 332.33083,414.7682 c -15.68872,-8.32212 -20.92233,-6.13774 -36.84211,1.50376 l -12.78195,0"
+ id="path3096"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 388.7218,442.58775 3.7594,-6.76692 c 1.12597,-20.61996 5.5393,-12.50022 18.797,-2.25564"
+ id="path3098"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 386.46617,469.65542 3.75939,-6.01504 -1.50376,-6.01504 c 7.88757,-10.30435 18.01034,-11.66791 27.81955,-14.28571"
+ id="path3100"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 409.77444,430.55767 c 3.14507,-15.70284 12.02199,-10.38888 21.05263,-4.51128"
+ id="path3102"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 388.7218,468.15166 28.57143,-25.56391"
+ id="path3106"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 415.03759,444.84339 15.0376,-7.5188"
+ id="path3108"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 387.96992,455.3697 -11.27819,-4.51128"
+ id="path3110"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#782121;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.75187969;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ d="m 279.20815,441.1072 c 0.24176,-0.57881 1.36046,-3.25164 2.48599,-5.93961 1.64421,-3.92665 2.0624,-6.14334 2.12767,-11.27819 l 0.0812,-6.39098 6.76692,-0.43152 c 5.75904,-0.36724 7.71879,-0.87052 13.15789,-3.37902 5.72269,-2.63929 6.98065,-2.94024 12.03008,-2.87808 3.95706,0.0487 6.64831,0.52806 9.02255,1.60702 l 3.38346,1.53758 -3.38346,-0.001 c -4.31186,-10e-4 -8.55214,0.53401 -9.66184,1.21985 -0.47546,0.29385 -1.17944,0.33961 -1.5644,0.10169 -0.38496,-0.23792 -0.91586,-0.0832 -1.17977,0.34383 -0.26392,0.42703 -0.77144,0.5962 -1.12782,0.37594 -0.35639,-0.22026 -0.86391,-0.0511 -1.12782,0.37594 -0.26392,0.42703 -0.79481,0.58175 -1.17977,0.34383 -0.38496,-0.23792 -0.69993,-0.0543 -0.69993,0.40805 0,0.46235 -0.33835,0.63152 -0.75188,0.37594 -0.41353,-0.25558 -0.75188,-0.0864 -0.75188,0.37594 0,0.46235 -0.30833,0.65007 -0.68518,0.41717 -0.37684,-0.23291 -1.64454,0.59299 -2.8171,1.83532 -1.17257,1.24233 -2.55597,2.25879 -3.07423,2.25879 -0.51826,0 -0.94229,0.50752 -0.94229,1.12782 0,0.6203 -0.32965,1.12782 -0.73257,1.12782 -0.944,0 -3.11632,4.17116 -2.49559,4.79189 0.2592,0.2592 0.16112,0.47127 -0.21795,0.47127 -0.37907,0 -0.75971,0.84586 -0.84587,1.8797 -0.0862,1.03383 -0.22392,2.30263 -0.30615,2.81954 -0.0822,0.51692 0.0805,1.65332 0.36156,2.52533 0.47495,1.47346 0.0451,1.67651 -6.08483,2.87414 -3.62774,0.70877 -7.4128,1.48392 -8.41125,1.72255 -1.36525,0.32631 -1.70637,0.17295 -1.37578,-0.6185 z"
+ id="path3112"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#782121;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.75187969;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ d="m 313.08034,582.68316 5.07681,-5.11602 4.4944,-36.0494 c 3.99019,-32.00519 8.90859,-61.86739 10.49248,-63.70531 0.27882,-0.32354 4.97419,1.15879 10.43415,3.29406 5.45997,2.13528 10.12435,3.68518 10.3653,3.44423 0.54339,-0.54339 -6.58604,-23.81922 -7.29587,-23.81922 -0.2827,0 -1.18376,1.60715 -2.00235,3.57143 -3.41998,8.20651 -7.62827,11.03497 -16.38131,11.01012 -6.8596,-0.0195 -11.65725,-1.67337 -29.69925,-10.23825 -5.5827,-2.65022 -10.96547,-5.15507 -11.96169,-5.56634 -1.799,-0.74267 -1.79247,-0.7567 0.9593,-2.0625 4.7099,-2.235 13.11903,-3.63751 19.27307,-3.21447 5.33826,0.36697 8.93671,0.81929 9.77444,1.22864 1.05533,0.51568 14.03055,0.36439 14.77048,-0.17222 0.47339,-0.34332 1.15008,-0.57227 1.50376,-0.50879 0.35368,0.0635 0.89681,0.0331 1.20696,-0.0676 0.31015,-0.10066 0.90225,-0.26761 1.31579,-0.37099 0.41353,-0.10339 0.92105,-0.27256 1.12782,-0.37594 0.20677,-0.10339 0.6297,-0.2469 0.93985,-0.31892 2.23064,-0.51797 3.94737,-1.4016 3.94737,-2.03176 0,-0.41008 0.33834,-0.53648 0.75188,-0.2809 0.41353,0.25558 0.75188,0.0633 0.75188,-0.42733 0,-0.49061 1.5477,0.53461 3.43934,2.27827 3.87286,3.56987 8.88,6.05148 12.70362,6.29609 1.41319,0.0904 2.84224,0.43437 3.17564,0.76435 0.33342,0.32999 1.13487,3.53511 1.781,7.12249 l 1.1748,6.52252 -3.43043,4.05545 c -1.88674,2.2305 -4.27631,5.78313 -5.31014,7.89474 -2.47677,5.05881 -3.98855,5.20755 -12.76466,1.25588 -7.8273,-3.52445 -8.87515,-3.67679 -9.38179,-1.36397 -0.20383,0.93045 -3.28833,21.80884 -6.85445,46.39642 l -6.48385,44.7047 -3.47261,4.91936 c -4.09761,5.80475 -4.35749,6.02071 -7.26308,6.03568 -2.19812,0.0113 -2.15064,-0.074 2.84134,-5.1045 l 0,0 z"
+ id="path3114"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#782121;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.75187969;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ d="m 223.7815,547.99619 c -0.23973,-0.38788 3.78623,-3.30508 8.94656,-6.48266 l 9.38243,-5.7774 2.74334,-8.36698 c 1.50883,-4.60183 4.03321,-10.91668 5.60973,-14.03299 1.57651,-3.11631 4.91665,-10.30021 7.42254,-15.96422 8.20663,-18.54931 13.17328,-27.1986 18.41675,-32.07225 2.47687,-2.30219 2.45542,-1.70518 -0.23452,6.52635 -4.03778,12.35609 -9.17302,22.17279 -17.41074,33.283 -4.81136,6.48909 -4.82017,6.5124 -10.42479,27.59839 -0.75517,2.84111 -1.62969,3.73919 -8.22942,8.45113 -9.4788,6.76746 -14.86271,9.03682 -16.22188,6.83763 l 0,0 z"
+ id="path3116"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#782121;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.75187969;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ d="m 481.36906,511.10197 c -12.78527,-16.30394 -13.09498,-16.62814 -23.25703,-24.34558 -16.10306,-12.22926 -21.04483,-18.11087 -28.34432,-33.73497 -2.06767,-4.42572 -3.93907,-8.0541 -4.15868,-8.06307 -0.2196,-0.009 -2.22881,3.11338 -4.4649,6.93857 -9.81429,16.78889 -16.39432,24.25936 -23.07655,26.19937 -2.23171,0.64792 -7.14815,1.05627 -12.71737,1.05627 -8.70352,0 -9.18928,-0.0839 -11.74106,-2.02887 -3.07745,-2.34558 -5.44629,-6.9618 -6.19321,-12.06888 -0.50677,-3.46511 -1.41213,-4.55407 -2.18787,-2.63158 -0.20858,0.51692 -0.40595,0.17857 -0.43859,-0.75188 -0.0327,-0.93045 0.36357,-1.72605 0.88049,-1.76801 6.89887,-0.55993 10.04443,-1.54878 14.08985,-4.42937 2.04316,-1.45486 2.32017,-1.47454 5.09983,-0.36235 2.63252,1.05333 3.0128,1.54534 3.64337,4.71377 0.62031,3.11687 0.49278,3.88337 -1.07208,6.44364 -1.24295,2.03359 -1.53862,3.14347 -0.98494,3.69716 0.55369,0.55369 0.93512,0.41619 1.27058,-0.45802 0.26366,-0.68708 0.71921,-1.10101 1.01234,-0.91984 0.29313,0.18116 6.43249,-4.93519 13.64302,-11.36967 11.09535,-9.90118 14.20809,-12.25012 20.25515,-15.28495 l 7.1451,-3.5859 2.22937,5.74072 c 1.22616,3.15739 4.26339,8.78583 6.74941,12.50764 5.03403,7.53641 17.69102,20.71739 25.21934,26.26341 4.50342,3.31761 5.66776,4.85062 15.11486,19.9007 5.62957,8.9684 11.51165,18.08238 13.07129,20.25329 1.55964,2.17091 2.68603,4.09679 2.50307,4.27975 -0.18295,0.18294 -6.16366,-7.10315 -13.29047,-16.19135 l 0,0 z"
+ id="path3118"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#782121;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.75187969;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ d="m 386.30199,453.79569 -2.86422,-1.38877 1.70092,-2.75213 c 2.39437,-3.87417 2.65309,-11.41196 0.5424,-15.80271 -1.50363,-3.12793 -1.52269,-3.8506 -0.90513,-34.32102 l 0.63085,-31.12581 19.16452,11.1755 c 10.54049,6.14652 19.25075,11.44061 19.35613,11.76463 0.10537,0.32402 -1.16041,3.97259 -2.81286,8.10793 l -3.00445,7.51879 0.18968,-7.79044 0.18969,-7.79044 -15.0376,-9.65304 -15.03759,-9.65305 -0.2018,3.15777 c -0.11099,1.73678 0.43807,16.3223 1.22013,32.41227 1.42052,29.22545 1.42043,29.25703 -0.0887,31.81478 -1.06219,1.80027 -1.27449,2.79641 -0.7152,3.3557 1.11976,1.11976 4.33294,-5.5067 4.98946,-10.28964 0.74283,-5.41169 1.90016,-8.64661 3.09344,-8.64661 0.57083,0 3.97698,2.35814 7.56923,5.24032 3.59224,2.88218 6.8428,5.04784 7.22347,4.81258 0.38066,-0.23527 0.14052,-1.03727 -0.53366,-1.78223 -0.67887,-0.75013 -0.91179,-1.54852 -0.52204,-1.7894 0.38706,-0.23922 0.90069,-1.41962 1.14139,-2.62312 0.2407,-1.2035 1.25612,-3.13973 2.25649,-4.30273 2.37656,-2.76292 5.83567,-2.70601 10.97501,0.18054 3.78945,2.12838 3.81687,2.17066 3.82782,5.90314 0.006,2.06767 0.20947,4.49935 0.45201,5.40375 0.38391,1.43154 -0.26859,2.00169 -5.0416,4.40533 -3.01541,1.51854 -6.179,2.84202 -7.03019,2.94106 -2.97256,0.34587 -15.10013,4.34179 -18.67451,6.15306 -1.98208,1.0044 -4.86044,2.93466 -6.39634,4.28947 l -2.79255,2.46328 -2.86422,-1.38876 z"
+ id="path3120"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#782121;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.75187969;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ d="m 214.83706,487.4308 c -0.64614,-1.68382 -0.4798,-17.75105 0.23749,-22.9399 0.31441,-2.27443 0.6193,-3.72418 0.67752,-3.22165 0.17443,1.50547 4.6732,6.2193 7.17237,7.51524 1.28259,0.66509 3.94841,1.57826 5.92403,2.02926 l 3.59204,0.82001 -8.56028,8.52771 c -6.71291,6.68737 -8.66449,8.25614 -9.04317,7.26933 z"
+ id="path3122"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#782121;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.75187969;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ d="m 342.92561,419.42249 c 0,-0.43794 -0.50752,-0.79625 -1.12782,-0.79625 -0.6203,0 -1.12782,-0.33835 -1.12782,-0.75188 0,-0.41353 -0.25376,-0.68 -0.56391,-0.59214 -0.31015,0.0879 -1.32519,-0.26239 -2.25564,-0.77833 -0.93045,-0.51594 -1.69173,-0.68933 -1.69173,-0.38531 0,0.30403 -0.37958,0.1732 -0.8435,-0.29073 -0.46393,-0.46392 -1.3653,-0.64327 -2.00304,-0.39854 -0.7432,0.28519 -0.97074,0.13946 -0.63371,-0.40587 0.32201,-0.52101 -0.72312,-1.48072 -2.6962,-2.47583 -1.77213,-0.89375 -3.33954,-1.72911 -3.48315,-1.85634 -0.1436,-0.12724 2.03645,-3.5267 4.84456,-7.55436 3.07299,-4.40758 5.24561,-6.8979 5.4572,-6.25519 0.19334,0.5873 1.96336,5.88505 3.93336,11.77276 1.97285,5.8962 3.26953,10.89794 2.88661,11.1346 -0.38237,0.23632 -0.69521,0.0713 -0.69521,-0.36659 z"
+ id="path3124"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>