Merge branch 'float-alpha-value'

* float-alpha-value:
  [script] Parse easing modes by name
  [docs] Update the easing modes documentation
  [animation] Implement new easing functions
  [animation] Move the alpha value to floating point
This commit is contained in:
Emmanuele Bassi 2009-01-23 12:10:50 +00:00
commit 792ffa1538
27 changed files with 1829 additions and 1220 deletions

File diff suppressed because it is too large Load Diff

View File

@ -8,7 +8,8 @@
* Emmanuele Bassi <ebassi@openedhand.com> * Emmanuele Bassi <ebassi@openedhand.com>
* Tomas Frydrych <tf@openedhand.com> * Tomas Frydrych <tf@openedhand.com>
* *
* Copyright (C) 2006, 2007 OpenedHand * Copyright (C) 2006, 2007, 2008 OpenedHand
* Copyright (C) 2009 Intel Corp.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -52,15 +53,14 @@ typedef struct _ClutterAlphaPrivate ClutterAlphaPrivate;
* @alpha: a #ClutterAlpha * @alpha: a #ClutterAlpha
* @user_data: user data passed to the function * @user_data: user data passed to the function
* *
* A function of time, which returns a value between 0 and * A function returning a value depending on the position of
* %CLUTTER_ALPHA_MAX_ALPHA. * the #ClutterTimeline bound to @alpha.
* *
* Return value: an unsigned integer value, between 0 and * Return value: a floating point value
* %CLUTTER_ALPHA_MAX_ALPHA.
* *
* Since: 0.2 * Since: 0.2
*/ */
typedef guint32 (*ClutterAlphaFunc) (ClutterAlpha *alpha, typedef gdouble (*ClutterAlphaFunc) (ClutterAlpha *alpha,
gpointer user_data); gpointer user_data);
/** /**
@ -76,6 +76,7 @@ struct _ClutterAlpha
{ {
/*< private >*/ /*< private >*/
GInitiallyUnowned parent; GInitiallyUnowned parent;
ClutterAlphaPrivate *priv; ClutterAlphaPrivate *priv;
}; };
@ -98,15 +99,6 @@ struct _ClutterAlphaClass
void (*_clutter_alpha_5) (void); void (*_clutter_alpha_5) (void);
}; };
/**
* CLUTTER_ALPHA_MAX_ALPHA:
*
* Maximum value returned by #ClutterAlphaFunc
*
* Since: 0.2
*/
#define CLUTTER_ALPHA_MAX_ALPHA (65535.0f)
GType clutter_alpha_get_type (void) G_GNUC_CONST; GType clutter_alpha_get_type (void) G_GNUC_CONST;
ClutterAlpha * clutter_alpha_new (void); ClutterAlpha * clutter_alpha_new (void);
@ -117,7 +109,7 @@ ClutterAlpha * clutter_alpha_new_with_func (ClutterTimeline *timeline,
gpointer data, gpointer data,
GDestroyNotify destroy); GDestroyNotify destroy);
guint32 clutter_alpha_get_alpha (ClutterAlpha *alpha); gdouble clutter_alpha_get_alpha (ClutterAlpha *alpha);
void clutter_alpha_set_func (ClutterAlpha *alpha, void clutter_alpha_set_func (ClutterAlpha *alpha,
ClutterAlphaFunc func, ClutterAlphaFunc func,
gpointer data, gpointer data,
@ -135,56 +127,6 @@ gulong clutter_alpha_register_func (ClutterAlphaFunc func,
gpointer data); gpointer data);
gulong clutter_alpha_register_closure (GClosure *closure); gulong clutter_alpha_register_closure (GClosure *closure);
/* convenience functions */
guint32 clutter_ramp_inc_func (ClutterAlpha *alpha,
gpointer dummy);
guint32 clutter_ramp_dec_func (ClutterAlpha *alpha,
gpointer dummy);
guint32 clutter_ramp_func (ClutterAlpha *alpha,
gpointer dummy);
guint32 clutter_sine_func (ClutterAlpha *alpha,
gpointer dummy);
guint32 clutter_sine_inc_func (ClutterAlpha *alpha,
gpointer dummy);
guint32 clutter_sine_dec_func (ClutterAlpha *alpha,
gpointer dummy);
guint32 clutter_sine_half_func (ClutterAlpha *alpha,
gpointer dummy);
guint32 clutter_sine_in_func (ClutterAlpha *alpha,
gpointer dummy);
guint32 clutter_sine_out_func (ClutterAlpha *alpha,
gpointer dummy);
guint32 clutter_sine_in_out_func (ClutterAlpha *alpha,
gpointer dummy);
guint32 clutter_square_func (ClutterAlpha *alpha,
gpointer dummy);
guint32 clutter_smoothstep_inc_func (ClutterAlpha *alpha,
gpointer dummy);
guint32 clutter_smoothstep_dec_func (ClutterAlpha *alpha,
gpointer dummy);
guint32 clutter_exp_inc_func (ClutterAlpha *alpha,
gpointer dummy);
guint32 clutter_exp_dec_func (ClutterAlpha *alpha,
gpointer dummy);
guint32 clutter_ease_in_func (ClutterAlpha *alpha,
gpointer dummy);
guint32 clutter_ease_out_func (ClutterAlpha *alpha,
gpointer dummy);
guint32 clutter_ease_in_out_func (ClutterAlpha *alpha,
gpointer dummy);
guint32 clutter_exp_in_func (ClutterAlpha *alpha,
gpointer dummy);
guint32 clutter_exp_out_func (ClutterAlpha *alpha,
gpointer dummy);
guint32 clutter_exp_in_out_func (ClutterAlpha *alpha,
gpointer dummy);
G_END_DECLS G_END_DECLS
#endif /* __CLUTTER_ALPHA_H__ */ #endif /* __CLUTTER_ALPHA_H__ */

View File

@ -664,7 +664,7 @@ on_alpha_notify (GObject *gobject,
{ {
ClutterAnimationPrivate *priv = animation->priv; ClutterAnimationPrivate *priv = animation->priv;
GList *properties, *p; GList *properties, *p;
guint32 alpha_value; gdouble alpha_value;
gboolean is_animatable = FALSE; gboolean is_animatable = FALSE;
ClutterAnimatable *animatable = NULL; ClutterAnimatable *animatable = NULL;
@ -683,7 +683,6 @@ on_alpha_notify (GObject *gobject,
{ {
const gchar *p_name = p->data; const gchar *p_name = p->data;
ClutterInterval *interval; ClutterInterval *interval;
gdouble factor;
GValue value = { 0, }; GValue value = { 0, };
interval = g_hash_table_lookup (priv->properties, p_name); interval = g_hash_table_lookup (priv->properties, p_name);
@ -691,8 +690,6 @@ on_alpha_notify (GObject *gobject,
g_value_init (&value, clutter_interval_get_value_type (interval)); g_value_init (&value, clutter_interval_get_value_type (interval));
factor = (gdouble) alpha_value / CLUTTER_ALPHA_MAX_ALPHA;
if (is_animatable) if (is_animatable)
{ {
const GValue *initial, *final; const GValue *initial, *final;
@ -704,7 +701,7 @@ on_alpha_notify (GObject *gobject,
clutter_animatable_animate_property (animatable, animation, clutter_animatable_animate_property (animatable, animation,
p_name, p_name,
initial, final, initial, final,
factor, alpha_value,
&value); &value);
g_object_set_property (priv->object, p_name, &value); g_object_set_property (priv->object, p_name, &value);
@ -713,7 +710,7 @@ on_alpha_notify (GObject *gobject,
{ {
CLUTTER_NOTE (ANIMATION, "Standard property `%s'", p_name); CLUTTER_NOTE (ANIMATION, "Standard property `%s'", p_name);
if (clutter_interval_compute_value (interval, factor, &value)) if (clutter_interval_compute_value (interval, alpha_value, &value))
g_object_set_property (priv->object, p_name, &value); g_object_set_property (priv->object, p_name, &value);
} }

View File

@ -74,7 +74,7 @@ alpha_notify_foreach (ClutterBehaviour *behaviour,
static void static void
clutter_behaviour_depth_alpha_notify (ClutterBehaviour *behaviour, clutter_behaviour_depth_alpha_notify (ClutterBehaviour *behaviour,
guint32 alpha_value) gdouble alpha_value)
{ {
ClutterFixed factor; ClutterFixed factor;
ClutterBehaviourDepthPrivate *priv; ClutterBehaviourDepthPrivate *priv;
@ -83,11 +83,10 @@ clutter_behaviour_depth_alpha_notify (ClutterBehaviour *behaviour,
priv = CLUTTER_BEHAVIOUR_DEPTH (behaviour)->priv; priv = CLUTTER_BEHAVIOUR_DEPTH (behaviour)->priv;
/* Need to create factor as to avoid borking signedness */ /* Need to create factor as to avoid borking signedness */
factor = (float)(alpha_value) / CLUTTER_ALPHA_MAX_ALPHA; depth = (alpha_value * (priv->depth_end - priv->depth_start))
depth = priv->depth_start + priv->depth_start;
+ (factor * (priv->depth_end - priv->depth_start));
CLUTTER_NOTE (BEHAVIOUR, "alpha: %d, depth: %d", alpha_value, depth); CLUTTER_NOTE (BEHAVIOUR, "alpha: %.4f, depth: %d", alpha_value, depth);
clutter_behaviour_actors_foreach (behaviour, clutter_behaviour_actors_foreach (behaviour,
alpha_notify_foreach, alpha_notify_foreach,

View File

@ -201,7 +201,7 @@ clamp_angle (float a)
static void static void
clutter_behaviour_ellipse_alpha_notify (ClutterBehaviour *behave, clutter_behaviour_ellipse_alpha_notify (ClutterBehaviour *behave,
guint32 alpha) gdouble alpha)
{ {
ClutterBehaviourEllipse *self = CLUTTER_BEHAVIOUR_ELLIPSE (behave); ClutterBehaviourEllipse *self = CLUTTER_BEHAVIOUR_ELLIPSE (behave);
ClutterBehaviourEllipsePrivate *priv = self->priv; ClutterBehaviourEllipsePrivate *priv = self->priv;
@ -221,7 +221,7 @@ clutter_behaviour_ellipse_alpha_notify (ClutterBehaviour *behave,
end -= 360; end -= 360;
} }
angle = (end - start) * alpha / CLUTTER_ALPHA_MAX_ALPHA + start; angle = (end - start) * alpha + start;
clutter_behaviour_ellipse_advance (self, angle, &knot); clutter_behaviour_ellipse_advance (self, angle, &knot);

View File

@ -87,7 +87,7 @@ alpha_notify_foreach (ClutterBehaviour *behaviour,
static void static void
clutter_behaviour_alpha_notify (ClutterBehaviour *behave, clutter_behaviour_alpha_notify (ClutterBehaviour *behave,
guint32 alpha_value) gdouble alpha_value)
{ {
ClutterBehaviourOpacityPrivate *priv; ClutterBehaviourOpacityPrivate *priv;
guint8 opacity; guint8 opacity;
@ -96,10 +96,9 @@ clutter_behaviour_alpha_notify (ClutterBehaviour *behave,
opacity = alpha_value opacity = alpha_value
* (priv->opacity_end - priv->opacity_start) * (priv->opacity_end - priv->opacity_start)
/ CLUTTER_ALPHA_MAX_ALPHA
+ priv->opacity_start; + priv->opacity_start;
CLUTTER_NOTE (BEHAVIOUR, "alpha: %u, opacity: %u", CLUTTER_NOTE (BEHAVIOUR, "alpha: %.4f, opacity: %u",
alpha_value, alpha_value,
opacity); opacity);

View File

@ -123,7 +123,7 @@ actor_apply_knot_foreach (ClutterBehaviour *behaviour,
static void static void
clutter_behaviour_path_alpha_notify (ClutterBehaviour *behave, clutter_behaviour_path_alpha_notify (ClutterBehaviour *behave,
guint32 alpha_value) gdouble alpha_value)
{ {
ClutterBehaviourPath *pathb = CLUTTER_BEHAVIOUR_PATH (behave); ClutterBehaviourPath *pathb = CLUTTER_BEHAVIOUR_PATH (behave);
ClutterBehaviourPathPrivate *priv = pathb->priv; ClutterBehaviourPathPrivate *priv = pathb->priv;
@ -131,10 +131,7 @@ clutter_behaviour_path_alpha_notify (ClutterBehaviour *behave,
guint knot_num; guint knot_num;
if (priv->path) if (priv->path)
knot_num = clutter_path_get_position (priv->path, knot_num = clutter_path_get_position (priv->path, alpha_value, &position);
alpha_value
/ (gdouble) CLUTTER_ALPHA_MAX_ALPHA,
&position);
else else
{ {
memset (&position, 0, sizeof (position)); memset (&position, 0, sizeof (position));

View File

@ -117,7 +117,7 @@ ClutterFixed clamp_angle (ClutterFixed a)
static void static void
clutter_behaviour_rotate_alpha_notify (ClutterBehaviour *behaviour, clutter_behaviour_rotate_alpha_notify (ClutterBehaviour *behaviour,
guint32 alpha_value) gdouble alpha_value)
{ {
ClutterFixed factor, angle, start, end; ClutterFixed factor, angle, start, end;
ClutterBehaviourRotate *rotate_behaviour; ClutterBehaviourRotate *rotate_behaviour;
@ -126,11 +126,10 @@ clutter_behaviour_rotate_alpha_notify (ClutterBehaviour *behaviour,
rotate_behaviour = CLUTTER_BEHAVIOUR_ROTATE (behaviour); rotate_behaviour = CLUTTER_BEHAVIOUR_ROTATE (behaviour);
priv = rotate_behaviour->priv; priv = rotate_behaviour->priv;
factor = (float)(alpha_value) / CLUTTER_ALPHA_MAX_ALPHA; factor = CLUTTER_FLOAT_TO_FIXED (alpha_value);
angle = 0; angle = 0;
start = priv->angle_start;
start = priv->angle_start; end = priv->angle_end;
end = priv->angle_end;
if (priv->direction == CLUTTER_ROTATE_CW && start >= end) if (priv->direction == CLUTTER_ROTATE_CW && start >= end)
{ {
@ -141,7 +140,8 @@ clutter_behaviour_rotate_alpha_notify (ClutterBehaviour *behaviour,
end -= 360.0; end -= 360.0;
} }
angle = CLUTTER_FIXED_MUL ((end - start), factor) + start; angle = CLUTTER_FIXED_MUL ((end - start), alpha_value)
+ start;
clutter_behaviour_actors_foreach (behaviour, clutter_behaviour_actors_foreach (behaviour,
alpha_notify_foreach, alpha_notify_foreach,

View File

@ -90,7 +90,7 @@ scale_frame_foreach (ClutterBehaviour *behaviour,
static void static void
clutter_behaviour_scale_alpha_notify (ClutterBehaviour *behave, clutter_behaviour_scale_alpha_notify (ClutterBehaviour *behave,
guint32 alpha_value) gdouble alpha_value)
{ {
ClutterBehaviourScalePrivate *priv; ClutterBehaviourScalePrivate *priv;
ClutterFixed scale_x, scale_y; ClutterFixed scale_x, scale_y;
@ -101,7 +101,7 @@ clutter_behaviour_scale_alpha_notify (ClutterBehaviour *behave,
/* Fix the start/end values, avoids potential rounding errors on large /* Fix the start/end values, avoids potential rounding errors on large
* values. * values.
*/ */
if (alpha_value == CLUTTER_ALPHA_MAX_ALPHA) if (alpha_value == 1.0)
{ {
scale_x = priv->x_scale_end; scale_x = priv->x_scale_end;
scale_y = priv->y_scale_end; scale_y = priv->y_scale_end;
@ -115,7 +115,7 @@ clutter_behaviour_scale_alpha_notify (ClutterBehaviour *behave,
{ {
ClutterFixed factor; ClutterFixed factor;
factor = (float)(alpha_value) / CLUTTER_ALPHA_MAX_ALPHA; factor = CLUTTER_FLOAT_TO_FIXED (alpha_value);
scale_x = scale_x =
CLUTTER_FIXED_MUL (factor, (priv->x_scale_end - priv->x_scale_start)); CLUTTER_FIXED_MUL (factor, (priv->x_scale_end - priv->x_scale_start));

View File

@ -240,7 +240,7 @@ clutter_behaviour_get_property (GObject *object,
static void static void
clutter_behaviour_alpha_notify_unimplemented (ClutterBehaviour *behaviour, clutter_behaviour_alpha_notify_unimplemented (ClutterBehaviour *behaviour,
guint32 alpha_value) gdouble alpha_value)
{ {
g_warning ("ClutterBehaviourClass::alpha_notify not implemented for `%s'", g_warning ("ClutterBehaviourClass::alpha_notify not implemented for `%s'",
g_type_name (G_TYPE_FROM_INSTANCE (behaviour))); g_type_name (G_TYPE_FROM_INSTANCE (behaviour)));
@ -533,11 +533,9 @@ notify_cb (GObject *object,
if (klass->alpha_notify) if (klass->alpha_notify)
{ {
guint32 alpha_value; gdouble alpha_value = clutter_alpha_get_alpha (behave->priv->alpha);
alpha_value = clutter_alpha_get_alpha (behave->priv->alpha); CLUTTER_NOTE (BEHAVIOUR, "calling %s::alpha_notify (%p, %.4f)",
CLUTTER_NOTE (BEHAVIOUR, "calling %s::alpha_notify (%p, %d)",
g_type_name (G_TYPE_FROM_CLASS (klass)), g_type_name (G_TYPE_FROM_CLASS (klass)),
behave, alpha_value); behave, alpha_value);

View File

@ -113,7 +113,7 @@ struct _ClutterBehaviourClass
/*< public >*/ /*< public >*/
/* vfunc, not signal */ /* vfunc, not signal */
void (*alpha_notify) (ClutterBehaviour *behave, void (*alpha_notify) (ClutterBehaviour *behave,
guint32 alpha_value); gdouble alpha_value);
/* signals */ /* signals */
void (*applied) (ClutterBehaviour *behave, void (*applied) (ClutterBehaviour *behave,

View File

@ -891,8 +891,6 @@ clutter_interval_compute_value (ClutterInterval *interval,
g_return_val_if_fail (CLUTTER_IS_INTERVAL (interval), FALSE); g_return_val_if_fail (CLUTTER_IS_INTERVAL (interval), FALSE);
g_return_val_if_fail (value != NULL, FALSE); g_return_val_if_fail (value != NULL, FALSE);
factor = CLAMP (factor, 0.0, 1.0);
return CLUTTER_INTERVAL_GET_CLASS (interval)->compute_value (interval, return CLUTTER_INTERVAL_GET_CLASS (interval)->compute_value (interval,
factor, factor,
value); value);

View File

@ -1,5 +1,6 @@
BOOLEAN:BOXED BOOLEAN:BOXED
BOOLEAN:STRING,UINT,ENUM BOOLEAN:STRING,UINT,ENUM
DOUBLE:VOID
UINT:VOID UINT:VOID
VOID:BOXED VOID:BOXED
VOID:INT VOID:INT

View File

@ -184,6 +184,7 @@
#include "clutter-script-private.h" #include "clutter-script-private.h"
#include "clutter-scriptable.h" #include "clutter-scriptable.h"
#include "clutter-enum-types.h"
#include "clutter-private.h" #include "clutter-private.h"
#include "clutter-debug.h" #include "clutter-debug.h"
@ -517,63 +518,77 @@ construct_timeline (ClutterScript *script,
return retval; return retval;
} }
/* ugh. if g_module_open() fails (*cough* python *cough*) we need a fallback /* define the names of the animation modes to match the ones
* for finding at least our own functions. keep the nick in sync with the * that developers might be more accustomed to
* ClutterAnimationMode enumeration
*/ */
static const struct static const struct
{ {
const gchar *name; const gchar *name;
const gchar *short_name; ClutterAnimationMode mode;
ClutterAlphaFunc symbol; } animation_modes[] = {
} clutter_alphas[] = { { "linear", CLUTTER_LINEAR },
#define ALPHA_FUNC(func,nick) { #func, nick, func } { "easeInQuad", CLUTTER_EASE_IN_QUAD },
ALPHA_FUNC (clutter_ramp_inc_func, "ramp-inc"), { "easeOutQuad", CLUTTER_EASE_OUT_QUAD },
ALPHA_FUNC (clutter_ramp_dec_func, "ramp-dec"), { "easeInOutQuad", CLUTTER_EASE_IN_OUT_QUAD },
ALPHA_FUNC (clutter_ramp_func, "ramp"), { "easeInCubic", CLUTTER_EASE_IN_CUBIC },
ALPHA_FUNC (clutter_sine_inc_func, "sine-inc"), { "easeOutCubic", CLUTTER_EASE_OUT_CUBIC },
ALPHA_FUNC (clutter_sine_dec_func, "sine-dec"), { "easeInOutCubic", CLUTTER_EASE_IN_OUT_CUBIC },
ALPHA_FUNC (clutter_sine_half_func, "sine-half"), { "easeInQuart", CLUTTER_EASE_IN_QUART },
ALPHA_FUNC (clutter_sine_in_func, "sine-in"), { "easeOutQuart", CLUTTER_EASE_OUT_QUART },
ALPHA_FUNC (clutter_sine_out_func, "sine-out"), { "easeInOutQuart", CLUTTER_EASE_IN_OUT_QUART },
ALPHA_FUNC (clutter_sine_in_out_func, "sine-in-out"), { "easeInQuint", CLUTTER_EASE_IN_QUINT },
ALPHA_FUNC (clutter_sine_func, "sine"), { "easeOutQuint", CLUTTER_EASE_OUT_QUINT },
ALPHA_FUNC (clutter_square_func, "square"), { "easeInOutQuint", CLUTTER_EASE_IN_OUT_QUINT },
ALPHA_FUNC (clutter_smoothstep_inc_func, "smoothstep-inc"), { "easeInSine", CLUTTER_EASE_IN_SINE },
ALPHA_FUNC (clutter_smoothstep_dec_func, "smoothstep-dec"), { "easeOutSine", CLUTTER_EASE_OUT_SINE },
ALPHA_FUNC (clutter_exp_inc_func, "exp-inc"), { "easeInOutSine", CLUTTER_EASE_IN_OUT_SINE },
ALPHA_FUNC (clutter_exp_dec_func, "exp-dec"), { "easeInExpo", CLUTTER_EASE_IN_EXPO },
ALPHA_FUNC (clutter_ramp_inc_func, "linear"), { "easeOutExpo", CLUTTER_EASE_OUT_EXPO },
ALPHA_FUNC (clutter_ease_in_func, "ease-in"), { "easeInOutExpo", CLUTTER_EASE_IN_OUT_EXPO },
ALPHA_FUNC (clutter_ease_out_func, "ease-out"), { "easeInCirc", CLUTTER_EASE_IN_CIRC },
ALPHA_FUNC (clutter_ease_in_out_func, "ease-in-out"), { "easeOutCirc", CLUTTER_EASE_OUT_CIRC },
ALPHA_FUNC (clutter_exp_in_func, "exp-in"), { "easeInOutCirc", CLUTTER_EASE_IN_OUT_CIRC },
ALPHA_FUNC (clutter_exp_out_func, "exp-out"), { "easeInElastic", CLUTTER_EASE_IN_ELASTIC },
ALPHA_FUNC (clutter_exp_in_out_func, "exp-in-out"), { "easeOutElastic", CLUTTER_EASE_OUT_ELASTIC },
ALPHA_FUNC (clutter_smoothstep_inc_func, "smooth-in-out") { "easeInOutElastic", CLUTTER_EASE_IN_OUT_ELASTIC },
#undef ALPHA_FUNC { "easeInBack", CLUTTER_EASE_IN_BACK },
{ "easeOutBack", CLUTTER_EASE_OUT_BACK },
{ "easeInOutBack", CLUTTER_EASE_IN_OUT_BACK },
{ "easeInBounce", CLUTTER_EASE_IN_BOUNCE },
{ "easeOutBounce", CLUTTER_EASE_OUT_BOUNCE },
{ "easeInOutBounce", CLUTTER_EASE_IN_OUT_BOUNCE },
}; };
static const gint n_clutter_alphas = G_N_ELEMENTS (clutter_alphas); static const gint n_animation_modes = G_N_ELEMENTS (animation_modes);
static ClutterAnimationMode
resolve_animation_mode (const gchar *name)
{
gint i, res = 0;
for (i = 0; i < n_animation_modes; i++)
{
if (strcmp (animation_modes[i].name, name) == 0)
return animation_modes[i].mode;
}
if (clutter_script_enum_from_string (CLUTTER_TYPE_ANIMATION_MODE,
name, &res))
return res;
g_warning ("Unable to find the animation mode '%s'", name);
return CLUTTER_CUSTOM_MODE;
}
static ClutterAlphaFunc static ClutterAlphaFunc
resolve_alpha_func (const gchar *name) resolve_alpha_func (const gchar *name)
{ {
static GModule *module = NULL; static GModule *module = NULL;
ClutterAlphaFunc func; ClutterAlphaFunc func;
gint i;
CLUTTER_NOTE (SCRIPT, "Looking up `%s' alpha function", name); CLUTTER_NOTE (SCRIPT, "Looking up `%s' alpha function", name);
for (i = 0; i < n_clutter_alphas; i++)
if (strcmp (name, clutter_alphas[i].name) == 0 ||
strcmp (name, clutter_alphas[i].short_name) == 0)
{
CLUTTER_NOTE (SCRIPT, "Found `%s' alpha function in the whitelist",
name);
return clutter_alphas[i].symbol;
}
if (G_UNLIKELY (!module)) if (G_UNLIKELY (!module))
module = g_module_open (NULL, G_MODULE_BIND_LAZY); module = g_module_open (NULL, G_MODULE_BIND_LAZY);
@ -595,6 +610,7 @@ clutter_script_parse_alpha (ClutterScript *script,
JsonObject *object; JsonObject *object;
ClutterTimeline *timeline = NULL; ClutterTimeline *timeline = NULL;
ClutterAlphaFunc alpha_func = NULL; ClutterAlphaFunc alpha_func = NULL;
ClutterAnimationMode mode = CLUTTER_CUSTOM_MODE;
JsonNode *val; JsonNode *val;
gboolean unref_timeline = FALSE; gboolean unref_timeline = FALSE;
@ -621,25 +637,39 @@ clutter_script_parse_alpha (ClutterScript *script,
} }
} }
val = json_object_get_member (object, "function"); val = json_object_get_member (object, "mode");
if (val && json_node_get_string (val) != NULL) if (val && json_node_get_string (val) != NULL)
mode = resolve_animation_mode (json_node_get_string (val));
if (mode == CLUTTER_CUSTOM_MODE)
{ {
alpha_func = resolve_alpha_func (json_node_get_string (val)); val = json_object_get_member (object, "function");
if (!alpha_func) if (val && json_node_get_string (val) != NULL)
{ {
g_warning ("Unable to find the function `%s' in the " alpha_func = resolve_alpha_func (json_node_get_string (val));
"Clutter alpha functions or the symbols table", if (!alpha_func)
json_node_get_string (val)); {
g_warning ("Unable to find the function `%s' in the "
"Clutter alpha functions or the symbols table",
json_node_get_string (val));
}
} }
} }
CLUTTER_NOTE (SCRIPT, "Parsed alpha: %s timeline (%p) and func:%p", CLUTTER_NOTE (SCRIPT, "Parsed alpha: %s timeline (%p) (mode:%d, func:%p)",
unref_timeline ? "implicit" : "explicit", unref_timeline ? "implicit" : "explicit",
timeline ? timeline : 0x0, timeline ? timeline : 0x0,
mode != CLUTTER_CUSTOM_MODE ? mode : 0,
alpha_func ? alpha_func : 0x0); alpha_func ? alpha_func : 0x0);
retval = g_object_new (CLUTTER_TYPE_ALPHA, NULL); retval = g_object_new (CLUTTER_TYPE_ALPHA, NULL);
clutter_alpha_set_func (CLUTTER_ALPHA (retval), alpha_func, NULL, NULL);
if (mode != CLUTTER_CUSTOM_MODE)
clutter_alpha_set_mode (CLUTTER_ALPHA (retval), mode);
if (alpha_func != NULL)
clutter_alpha_set_func (CLUTTER_ALPHA (retval), alpha_func, NULL, NULL);
clutter_alpha_set_timeline (CLUTTER_ALPHA (retval), timeline); clutter_alpha_set_timeline (CLUTTER_ALPHA (retval), timeline);
if (unref_timeline) if (unref_timeline)
g_object_unref (timeline); g_object_unref (timeline);

View File

@ -189,39 +189,127 @@ typedef enum {
/** /**
* ClutterAnimationMode: * ClutterAnimationMode:
* @CLUTTER_CUSTOM_MODE: custom progress function * @CLUTTER_CUSTOM_MODE: custom progress function
* @CLUTTER_LINEAR: linear progress * @CLUTTER_LINEAR: linear tweening
* @CLUTTER_SINE_IN: sine-in progress * @CLUTTER_EASE_IN_QUAD: quadratic tweening
* @CLUTTER_SINE_OUT: sine-out progress * @CLUTTER_EASE_OUT_QUAD: quadratic tweening, inverse of
* @CLUTTER_SINE_IN_OUT: sine-in-out progress * %CLUTTER_EASE_IN_QUAD
* @CLUTTER_EASE_IN: ease-in progress * @CLUTTER_EASE_IN_OUT_QUAD: quadratic tweening, combininig
* @CLUTTER_EASE_OUT: ease-out progress * %CLUTTER_EASE_IN_QUAD and %CLUTTER_EASE_OUT_QUAD
* @CLUTTER_EASE_IN_OUT: ease-in-out progress * @CLUTTER_EASE_IN_CUBIC: cubic tweening
* @CLUTTER_EXPO_IN: exponential in progress * @CLUTTER_EASE_OUT_CUBIC: cubic tweening, invers of
* @CLUTTER_EXPO_OUT: exponential out progress * %CLUTTER_EASE_IN_CUBIC
* @CLUTTER_EXPO_IN_OUT: exponential in-out progress * @CLUTTER_EASE_IN_OUT_CUBIC: cubic tweening, combining
* @CLUTTER_SMOOTH_IN_OUT: smoothstep in-out progress * %CLUTTER_EASE_IN_CUBIC and %CLUTTER_EASE_OUT_CUBIC
* @CLUTTER_ANIMATION_LAST: last animation mode * @CLUTTER_EASE_IN_QUART: quartic tweening
* @CLUTTER_EASE_OUT_QUART: quartic tweening, inverse of
* %CLUTTER_EASE_IN_QUART
* @CLUTTER_EASE_IN_OUT_QUART: quartic tweening, combining
* %CLUTTER_EASE_IN_QUART and %CLUTTER_EASE_OUT_QUART
* @CLUTTER_EASE_IN_QUINT: quintic tweening
* @CLUTTER_EASE_OUT_QUINT: quintic tweening, inverse of
* %CLUTTER_EASE_IN_QUINT
* @CLUTTER_EASE_IN_OUT_QUINT: fifth power tweening, combining
* %CLUTTER_EASE_IN_QUINT and %CLUTTER_EASE_OUT_QUINT
* @CLUTTER_EASE_IN_SINE: sinusoidal tweening
* @CLUTTER_EASE_OUT_SINE: sinusoidal tweening, inverse of
* %CLUTTER_EASE_IN_SINE
* @CLUTTER_EASE_IN_OUT_SINE: sine wave tweening, combining
* %CLUTTER_EASE_IN_SINE and %CLUTTER_EASE_OUT_SINE
* @CLUTTER_EASE_IN_EXPO: exponential tweening
* @CLUTTER_EASE_OUT_EXPO: exponential tweening, inverse of
* %CLUTTER_EASE_IN_EXPO
* @CLUTTER_EASE_IN_OUT_EXPO: exponential tweening, combining
* %CLUTTER_EASE_IN_EXPO and %CLUTTER_EASE_OUT_EXPO
* @CLUTTER_EASE_IN_CIRC: circular tweening
* @CLUTTER_EASE_OUT_CIRC: circular tweening, inverse of
* %CLUTTER_EASE_IN_CIRC
* @CLUTTER_EASE_IN_OUT_CIRC: circular tweening, combining
* %CLUTTER_EASE_IN_CIRC and %CLUTTER_EASE_OUT_CIRC
* @CLUTTER_EASE_IN_ELASTIC: elastic tweening, with offshoot on start
* @CLUTTER_EASE_OUT_ELASTIC: elastic tweening, with offshoot on end
* @CLUTTER_EASE_IN_OUT_ELASTIC: elastic tweening with offshoot on both ends
* @CLUTTER_EASE_IN_BACK: overshooting cubic tweening, with
* backtracking on start
* @CLUTTER_EASE_OUT_BACK: overshooting cubic tweening, with
* backtracking on end
* @CLUTTER_EASE_IN_OUT_BACK: overshooting cubic tweening, with
* backtracking on both ends
* @CLUTTER_EASE_IN_BOUNCE: exponentially decaying parabolic (bounce)
* tweening, with bounce on start
* @CLUTTER_EASE_OUT_BOUNCE: exponentially decaying parabolic (bounce)
* tweening, with bounce on end
* @CLUTTER_EASE_IN_OUT_BOUNCE: exponentially decaying parabolic (bounce)
* tweening, with bounce on both ends
* @CLUTTER_ANIMATION_LAST: last animation mode, used as a guard for
* registered global alpha functions
* *
* The animation modes used by #ClutterAlpha and #ClutterAnimation. This * The animation modes used by #ClutterAlpha and #ClutterAnimation. This
* enumeration can be expanded in later versions of Clutter. * enumeration can be expanded in later versions of Clutter. See the
* #ClutterAlpha documentation for a graph of all the animation modes.
*
* Every global alpha function registered using clutter_alpha_register_func()
* or clutter_alpha_register_closure() will have a logical id greater than
* %CLUTTER_ANIMATION_LAST.
* *
* Since: 1.0 * Since: 1.0
*/ */
typedef enum { typedef enum {
CLUTTER_CUSTOM_MODE = 0, CLUTTER_CUSTOM_MODE = 0,
/* linear */
CLUTTER_LINEAR, CLUTTER_LINEAR,
CLUTTER_SINE_IN,
CLUTTER_SINE_OUT,
CLUTTER_SINE_IN_OUT,
CLUTTER_EASE_IN,
CLUTTER_EASE_OUT,
CLUTTER_EASE_IN_OUT,
CLUTTER_EXPO_IN,
CLUTTER_EXPO_OUT,
CLUTTER_EXPO_IN_OUT,
CLUTTER_SMOOTH_IN_OUT,
/* quadratic */
CLUTTER_EASE_IN_QUAD,
CLUTTER_EASE_OUT_QUAD,
CLUTTER_EASE_IN_OUT_QUAD,
/* cubic */
CLUTTER_EASE_IN_CUBIC,
CLUTTER_EASE_OUT_CUBIC,
CLUTTER_EASE_IN_OUT_CUBIC,
/* quartic */
CLUTTER_EASE_IN_QUART,
CLUTTER_EASE_OUT_QUART,
CLUTTER_EASE_IN_OUT_QUART,
/* quintic */
CLUTTER_EASE_IN_QUINT,
CLUTTER_EASE_OUT_QUINT,
CLUTTER_EASE_IN_OUT_QUINT,
/* sinusoidal */
CLUTTER_EASE_IN_SINE,
CLUTTER_EASE_OUT_SINE,
CLUTTER_EASE_IN_OUT_SINE,
/* exponential */
CLUTTER_EASE_IN_EXPO,
CLUTTER_EASE_OUT_EXPO,
CLUTTER_EASE_IN_OUT_EXPO,
/* circular */
CLUTTER_EASE_IN_CIRC,
CLUTTER_EASE_OUT_CIRC,
CLUTTER_EASE_IN_OUT_CIRC,
/* elastic */
CLUTTER_EASE_IN_ELASTIC,
CLUTTER_EASE_OUT_ELASTIC,
CLUTTER_EASE_IN_OUT_ELASTIC,
/* overshooting cubic */
CLUTTER_EASE_IN_BACK,
CLUTTER_EASE_OUT_BACK,
CLUTTER_EASE_IN_OUT_BACK,
/* exponentially decaying parabolic */
CLUTTER_EASE_IN_BOUNCE,
CLUTTER_EASE_OUT_BOUNCE,
CLUTTER_EASE_IN_OUT_BOUNCE,
/* guard, before registered alpha functions */
CLUTTER_ANIMATION_LAST CLUTTER_ANIMATION_LAST
} ClutterAnimationMode; } ClutterAnimationMode;

View File

@ -91,7 +91,7 @@ EXTRA_HFILES=\
# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png # e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
HTML_IMAGES=\ HTML_IMAGES=\
actor-box.png \ actor-box.png \
alpha-func.png \ easing-modes.png \
event-flow.png \ event-flow.png \
path-alpha-func.png path-alpha-func.png
@ -132,6 +132,7 @@ include $(top_srcdir)/gtk-doc.make
EXTRA_DIST += \ EXTRA_DIST += \
version.xml.in \ version.xml.in \
actor-box.png \ actor-box.png \
alpha-func.png \ easing-modes.png \
easing-modes.svg \
event-flow.png \ event-flow.png \
path-alpha-func.png path-alpha-func.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

View File

@ -98,46 +98,24 @@ clutter_behaviour_get_type
<TITLE>ClutterAlpha</TITLE> <TITLE>ClutterAlpha</TITLE>
ClutterAlpha ClutterAlpha
ClutterAlphaClass ClutterAlphaClass
ClutterAlphaFunc
clutter_alpha_new clutter_alpha_new
clutter_alpha_new_full clutter_alpha_new_full
clutter_alpha_new_with_func clutter_alpha_new_with_func
clutter_alpha_get_alpha
CLUTTER_ALPHA_MAX_ALPHA
ClutterAlphaFunc
clutter_alpha_set_func
clutter_alpha_set_closure
clutter_alpha_set_timeline clutter_alpha_set_timeline
clutter_alpha_get_timeline clutter_alpha_get_timeline
clutter_alpha_set_mode clutter_alpha_set_mode
clutter_alpha_get_mode clutter_alpha_get_mode
clutter_alpha_get_alpha
<SUBSECTION>
clutter_alpha_set_func
clutter_alpha_set_closure
<SUBSECTION> <SUBSECTION>
clutter_alpha_register_closure clutter_alpha_register_closure
clutter_alpha_register_func clutter_alpha_register_func
<SUBSECTION>
clutter_ramp_inc_func
clutter_ramp_dec_func
clutter_ramp_func
clutter_sine_func
clutter_sine_inc_func
clutter_sine_dec_func
clutter_sine_half_func
clutter_sine_in_func
clutter_sine_out_func
clutter_sine_in_out_func
clutter_square_func
clutter_smoothstep_inc_func
clutter_smoothstep_dec_func
clutter_exp_inc_func
clutter_exp_dec_func
clutter_exp_in_func
clutter_exp_out_func
clutter_exp_in_out_func
clutter_ease_in_func
clutter_ease_out_func
clutter_ease_in_out_func
<SUBSECTION Standard> <SUBSECTION Standard>
CLUTTER_ALPHA CLUTTER_ALPHA
CLUTTER_IS_ALPHA CLUTTER_IS_ALPHA

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

View File

@ -0,0 +1,920 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="648pt" height="690pt" viewBox="0 0 648 690" version="1.1">
<defs>
<g>
<symbol overflow="visible" id="glyph0-0">
<path style="stroke: none;" d="M 0.296875 1.0625 L 0.296875 -4.234375 L 3.296875 -4.234375 L 3.296875 1.0625 L 0.296875 1.0625 Z M 0.640625 0.734375 L 2.96875 0.734375 L 2.96875 -3.890625 L 0.640625 -3.890625 L 0.640625 0.734375 Z M 0.640625 0.734375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-1">
<path style="stroke: none;" d="M 3.859375 -4.03125 L 3.859375 -3.40625 C 3.660156 -3.589844 3.445312 -3.734375 3.21875 -3.828125 C 3 -3.917969 2.761719 -3.96875 2.515625 -3.96875 C 2.015625 -3.96875 1.628906 -3.808594 1.359375 -3.5 C 1.097656 -3.195312 0.96875 -2.757812 0.96875 -2.1875 C 0.96875 -1.601562 1.097656 -1.160156 1.359375 -0.859375 C 1.628906 -0.554688 2.015625 -0.40625 2.515625 -0.40625 C 2.761719 -0.40625 3 -0.445312 3.21875 -0.53125 C 3.445312 -0.621094 3.660156 -0.765625 3.859375 -0.953125 L 3.859375 -0.34375 C 3.648438 -0.195312 3.429688 -0.0859375 3.203125 -0.015625 C 2.972656 0.0429688 2.726562 0.078125 2.46875 0.078125 C 1.8125 0.078125 1.289062 -0.117188 0.90625 -0.515625 C 0.53125 -0.917969 0.34375 -1.476562 0.34375 -2.1875 C 0.34375 -2.882812 0.53125 -3.4375 0.90625 -3.84375 C 1.289062 -4.246094 1.8125 -4.453125 2.46875 -4.453125 C 2.726562 -4.453125 2.972656 -4.414062 3.203125 -4.34375 C 3.441406 -4.28125 3.660156 -4.175781 3.859375 -4.03125 Z M 3.859375 -4.03125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-2">
<path style="stroke: none;" d="M 0.59375 -4.375 L 1.1875 -4.375 L 1.1875 -0.5 L 3.3125 -0.5 L 3.3125 0 L 0.59375 0 L 0.59375 -4.375 Z M 0.59375 -4.375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-3">
<path style="stroke: none;" d="M 0.515625 -4.375 L 1.109375 -4.375 L 1.109375 -1.71875 C 1.109375 -1.25 1.191406 -0.910156 1.359375 -0.703125 C 1.535156 -0.492188 1.816406 -0.390625 2.203125 -0.390625 C 2.574219 -0.390625 2.847656 -0.492188 3.015625 -0.703125 C 3.191406 -0.910156 3.28125 -1.25 3.28125 -1.71875 L 3.28125 -4.375 L 3.875 -4.375 L 3.875 -1.640625 C 3.875 -1.066406 3.730469 -0.632812 3.453125 -0.34375 C 3.171875 -0.0625 2.753906 0.078125 2.203125 0.078125 C 1.648438 0.078125 1.226562 -0.0625 0.9375 -0.34375 C 0.65625 -0.632812 0.515625 -1.066406 0.515625 -1.640625 L 0.515625 -4.375 Z M 0.515625 -4.375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-4">
<path style="stroke: none;" d="M -0.015625 -4.375 L 3.6875 -4.375 L 3.6875 -3.875 L 2.125 -3.875 L 2.125 0 L 1.53125 0 L 1.53125 -3.875 L -0.015625 -3.875 L -0.015625 -4.375 Z M -0.015625 -4.375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-5">
<path style="stroke: none;" d="M 0.59375 -4.375 L 3.359375 -4.375 L 3.359375 -3.875 L 1.1875 -3.875 L 1.1875 -2.578125 L 3.265625 -2.578125 L 3.265625 -2.078125 L 1.1875 -2.078125 L 1.1875 -0.5 L 3.40625 -0.5 L 3.40625 0 L 0.59375 0 L 0.59375 -4.375 Z M 0.59375 -4.375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-6">
<path style="stroke: none;" d="M 2.65625 -2.046875 C 2.789062 -2.003906 2.914062 -1.910156 3.03125 -1.765625 C 3.152344 -1.628906 3.273438 -1.441406 3.390625 -1.203125 L 4 0 L 3.359375 0 L 2.796875 -1.125 C 2.648438 -1.414062 2.507812 -1.609375 2.375 -1.703125 C 2.238281 -1.792969 2.054688 -1.84375 1.828125 -1.84375 L 1.1875 -1.84375 L 1.1875 0 L 0.59375 0 L 0.59375 -4.375 L 1.921875 -4.375 C 2.417969 -4.375 2.789062 -4.269531 3.03125 -4.0625 C 3.277344 -3.851562 3.40625 -3.535156 3.40625 -3.109375 C 3.40625 -2.835938 3.339844 -2.605469 3.21875 -2.421875 C 3.09375 -2.242188 2.902344 -2.117188 2.65625 -2.046875 Z M 1.1875 -3.890625 L 1.1875 -2.328125 L 1.921875 -2.328125 C 2.210938 -2.328125 2.429688 -2.394531 2.578125 -2.53125 C 2.722656 -2.664062 2.796875 -2.859375 2.796875 -3.109375 C 2.796875 -3.367188 2.722656 -3.5625 2.578125 -3.6875 C 2.429688 -3.820312 2.210938 -3.890625 1.921875 -3.890625 L 1.1875 -3.890625 Z M 1.1875 -3.890625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-7">
<path style="stroke: none;" d="M 3.0625 1 L 3.0625 1.421875 L -0.0625 1.421875 L -0.0625 1 L 3.0625 1 Z M 3.0625 1 "/>
</symbol>
<symbol overflow="visible" id="glyph0-8">
<path style="stroke: none;" d="M 2.046875 -3.796875 L 1.25 -1.609375 L 2.859375 -1.609375 L 2.046875 -3.796875 Z M 1.71875 -4.375 L 2.390625 -4.375 L 4.0625 0 L 3.4375 0 L 3.046875 -1.125 L 1.0625 -1.125 L 0.671875 0 L 0.046875 0 L 1.71875 -4.375 Z M 1.71875 -4.375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-9">
<path style="stroke: none;" d="M 3.21875 -4.234375 L 3.21875 -3.65625 C 2.988281 -3.757812 2.773438 -3.835938 2.578125 -3.890625 C 2.378906 -3.941406 2.183594 -3.96875 2 -3.96875 C 1.675781 -3.96875 1.425781 -3.902344 1.25 -3.78125 C 1.070312 -3.65625 0.984375 -3.476562 0.984375 -3.25 C 0.984375 -3.0625 1.039062 -2.914062 1.15625 -2.8125 C 1.277344 -2.71875 1.503906 -2.636719 1.828125 -2.578125 L 2.1875 -2.5 C 2.621094 -2.414062 2.945312 -2.261719 3.15625 -2.046875 C 3.363281 -1.835938 3.46875 -1.554688 3.46875 -1.203125 C 3.46875 -0.785156 3.324219 -0.464844 3.046875 -0.25 C 2.765625 -0.03125 2.347656 0.078125 1.796875 0.078125 C 1.585938 0.078125 1.363281 0.0507812 1.125 0 C 0.894531 -0.0390625 0.652344 -0.101562 0.40625 -0.1875 L 0.40625 -0.796875 C 0.652344 -0.660156 0.894531 -0.554688 1.125 -0.484375 C 1.351562 -0.421875 1.578125 -0.390625 1.796875 -0.390625 C 2.136719 -0.390625 2.398438 -0.457031 2.578125 -0.59375 C 2.761719 -0.726562 2.859375 -0.914062 2.859375 -1.15625 C 2.859375 -1.371094 2.789062 -1.539062 2.65625 -1.65625 C 2.53125 -1.777344 2.316406 -1.875 2.015625 -1.9375 L 1.65625 -2.015625 C 1.207031 -2.097656 0.882812 -2.234375 0.6875 -2.421875 C 0.488281 -2.605469 0.390625 -2.867188 0.390625 -3.203125 C 0.390625 -3.585938 0.523438 -3.890625 0.796875 -4.109375 C 1.074219 -4.335938 1.457031 -4.453125 1.9375 -4.453125 C 2.132812 -4.453125 2.335938 -4.429688 2.546875 -4.390625 C 2.761719 -4.359375 2.988281 -4.304688 3.21875 -4.234375 Z M 3.21875 -4.234375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-10">
<path style="stroke: none;" d="M 0.59375 -4.375 L 1.1875 -4.375 L 1.1875 0 L 0.59375 0 L 0.59375 -4.375 Z M 0.59375 -4.375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-11">
<path style="stroke: none;" d="M 0.59375 -4.375 L 1.390625 -4.375 L 3.328125 -0.71875 L 3.328125 -4.375 L 3.90625 -4.375 L 3.90625 0 L 3.109375 0 L 1.15625 -3.65625 L 1.15625 0 L 0.59375 0 L 0.59375 -4.375 Z M 0.59375 -4.375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-12">
<path style="stroke: none;" d="M 2.359375 -3.96875 C 1.929688 -3.96875 1.589844 -3.804688 1.34375 -3.484375 C 1.09375 -3.171875 0.96875 -2.738281 0.96875 -2.1875 C 0.96875 -1.632812 1.09375 -1.195312 1.34375 -0.875 C 1.589844 -0.550781 1.929688 -0.390625 2.359375 -0.390625 C 2.792969 -0.390625 3.140625 -0.550781 3.390625 -0.875 C 3.636719 -1.195312 3.765625 -1.632812 3.765625 -2.1875 C 3.765625 -2.738281 3.636719 -3.171875 3.390625 -3.484375 C 3.140625 -3.804688 2.792969 -3.96875 2.359375 -3.96875 Z M 3.1875 -0.078125 L 3.96875 0.78125 L 3.265625 0.78125 L 2.609375 0.078125 C 2.546875 0.078125 2.492188 0.078125 2.453125 0.078125 C 2.421875 0.078125 2.386719 0.078125 2.359375 0.078125 C 1.742188 0.078125 1.253906 -0.125 0.890625 -0.53125 C 0.523438 -0.945312 0.34375 -1.5 0.34375 -2.1875 C 0.34375 -2.871094 0.523438 -3.421875 0.890625 -3.828125 C 1.253906 -4.242188 1.742188 -4.453125 2.359375 -4.453125 C 2.972656 -4.453125 3.460938 -4.242188 3.828125 -3.828125 C 4.199219 -3.421875 4.390625 -2.871094 4.390625 -2.1875 C 4.390625 -1.675781 4.285156 -1.238281 4.078125 -0.875 C 3.878906 -0.519531 3.582031 -0.253906 3.1875 -0.078125 Z M 3.1875 -0.078125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-13">
<path style="stroke: none;" d="M 1.1875 -3.890625 L 1.1875 -0.484375 L 1.890625 -0.484375 C 2.492188 -0.484375 2.9375 -0.617188 3.21875 -0.890625 C 3.496094 -1.167969 3.640625 -1.601562 3.640625 -2.1875 C 3.640625 -2.777344 3.496094 -3.210938 3.21875 -3.484375 C 2.9375 -3.753906 2.492188 -3.890625 1.890625 -3.890625 L 1.1875 -3.890625 Z M 0.59375 -4.375 L 1.8125 -4.375 C 2.652344 -4.375 3.273438 -4.195312 3.671875 -3.84375 C 4.066406 -3.488281 4.265625 -2.933594 4.265625 -2.1875 C 4.265625 -1.4375 4.066406 -0.882812 3.671875 -0.53125 C 3.273438 -0.175781 2.652344 0 1.8125 0 L 0.59375 0 L 0.59375 -4.375 Z M 0.59375 -4.375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-14">
<path style="stroke: none;" d="M 2.359375 -3.96875 C 1.929688 -3.96875 1.589844 -3.804688 1.34375 -3.484375 C 1.09375 -3.171875 0.96875 -2.738281 0.96875 -2.1875 C 0.96875 -1.632812 1.09375 -1.195312 1.34375 -0.875 C 1.589844 -0.550781 1.929688 -0.390625 2.359375 -0.390625 C 2.792969 -0.390625 3.140625 -0.550781 3.390625 -0.875 C 3.636719 -1.195312 3.765625 -1.632812 3.765625 -2.1875 C 3.765625 -2.738281 3.636719 -3.171875 3.390625 -3.484375 C 3.140625 -3.804688 2.792969 -3.96875 2.359375 -3.96875 Z M 2.359375 -4.453125 C 2.972656 -4.453125 3.460938 -4.242188 3.828125 -3.828125 C 4.199219 -3.421875 4.390625 -2.871094 4.390625 -2.1875 C 4.390625 -1.5 4.199219 -0.945312 3.828125 -0.53125 C 3.460938 -0.125 2.972656 0.078125 2.359375 0.078125 C 1.742188 0.078125 1.253906 -0.125 0.890625 -0.53125 C 0.523438 -0.933594 0.34375 -1.488281 0.34375 -2.1875 C 0.34375 -2.871094 0.523438 -3.421875 0.890625 -3.828125 C 1.253906 -4.242188 1.742188 -4.453125 2.359375 -4.453125 Z M 2.359375 -4.453125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-15">
<path style="stroke: none;" d="M 1.1875 -2.09375 L 1.1875 -0.484375 L 2.125 -0.484375 C 2.445312 -0.484375 2.679688 -0.546875 2.828125 -0.671875 C 2.980469 -0.804688 3.0625 -1.015625 3.0625 -1.296875 C 3.0625 -1.566406 2.980469 -1.765625 2.828125 -1.890625 C 2.679688 -2.023438 2.445312 -2.09375 2.125 -2.09375 L 1.1875 -2.09375 Z M 1.1875 -3.890625 L 1.1875 -2.5625 L 2.0625 -2.5625 C 2.339844 -2.5625 2.554688 -2.613281 2.703125 -2.71875 C 2.847656 -2.832031 2.921875 -3.003906 2.921875 -3.234375 C 2.921875 -3.449219 2.847656 -3.613281 2.703125 -3.71875 C 2.554688 -3.832031 2.339844 -3.890625 2.0625 -3.890625 L 1.1875 -3.890625 Z M 0.59375 -4.375 L 2.09375 -4.375 C 2.550781 -4.375 2.898438 -4.277344 3.140625 -4.09375 C 3.386719 -3.90625 3.515625 -3.636719 3.515625 -3.296875 C 3.515625 -3.023438 3.449219 -2.808594 3.328125 -2.65625 C 3.203125 -2.5 3.011719 -2.398438 2.765625 -2.359375 C 3.054688 -2.296875 3.28125 -2.164062 3.4375 -1.96875 C 3.601562 -1.769531 3.6875 -1.519531 3.6875 -1.21875 C 3.6875 -0.832031 3.550781 -0.527344 3.28125 -0.3125 C 3.019531 -0.101562 2.644531 0 2.15625 0 L 0.59375 0 L 0.59375 -4.375 Z M 0.59375 -4.375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-16">
<path style="stroke: none;" d="M 0.375 -4.375 L 1.015625 -4.375 L 2.09375 -2.75 L 3.1875 -4.375 L 3.828125 -4.375 L 2.421875 -2.28125 L 3.921875 0 L 3.28125 0 L 2.0625 -1.859375 L 0.8125 0 L 0.171875 0 L 1.734375 -2.328125 L 0.375 -4.375 Z M 0.375 -4.375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-17">
<path style="stroke: none;" d="M 1.1875 -3.890625 L 1.1875 -2.25 L 1.921875 -2.25 C 2.199219 -2.25 2.414062 -2.316406 2.5625 -2.453125 C 2.714844 -2.597656 2.796875 -2.800781 2.796875 -3.0625 C 2.796875 -3.320312 2.714844 -3.523438 2.5625 -3.671875 C 2.414062 -3.816406 2.199219 -3.890625 1.921875 -3.890625 L 1.1875 -3.890625 Z M 0.59375 -4.375 L 1.921875 -4.375 C 2.410156 -4.375 2.78125 -4.257812 3.03125 -4.03125 C 3.277344 -3.8125 3.40625 -3.488281 3.40625 -3.0625 C 3.40625 -2.632812 3.277344 -2.308594 3.03125 -2.09375 C 2.78125 -1.875 2.410156 -1.765625 1.921875 -1.765625 L 1.1875 -1.765625 L 1.1875 0 L 0.59375 0 L 0.59375 -4.375 Z M 0.59375 -4.375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-18">
<path style="stroke: none;" d="M 0.59375 -4.375 L 1.1875 -4.375 L 1.1875 -2.53125 L 3.140625 -4.375 L 3.90625 -4.375 L 1.734375 -2.328125 L 4.0625 0 L 3.28125 0 L 1.1875 -2.109375 L 1.1875 0 L 0.59375 0 L 0.59375 -4.375 Z M 0.59375 -4.375 "/>
</symbol>
</g>
</defs>
<g id="surface0">
<g style="fill: rgb(0%,0%,0%); fill-opacity: 1;">
<use xlink:href="#glyph0-1" x="16.445312" y="133.453125"/>
<use xlink:href="#glyph0-2" x="20.634766" y="133.453125"/>
<use xlink:href="#glyph0-3" x="23.977539" y="133.453125"/>
<use xlink:href="#glyph0-4" x="28.369141" y="133.453125"/>
<use xlink:href="#glyph0-4" x="32.03418" y="133.453125"/>
<use xlink:href="#glyph0-5" x="35.699219" y="133.453125"/>
<use xlink:href="#glyph0-6" x="39.490234" y="133.453125"/>
<use xlink:href="#glyph0-7" x="43.65918" y="133.453125"/>
<use xlink:href="#glyph0-5" x="46.65918" y="133.453125"/>
<use xlink:href="#glyph0-8" x="50.450195" y="133.453125"/>
<use xlink:href="#glyph0-9" x="54.554688" y="133.453125"/>
<use xlink:href="#glyph0-5" x="58.363281" y="133.453125"/>
<use xlink:href="#glyph0-7" x="62.154297" y="133.453125"/>
<use xlink:href="#glyph0-10" x="65.154297" y="133.453125"/>
<use xlink:href="#glyph0-11" x="66.923828" y="133.453125"/>
<use xlink:href="#glyph0-7" x="71.412109" y="133.453125"/>
<use xlink:href="#glyph0-12" x="74.412109" y="133.453125"/>
<use xlink:href="#glyph0-3" x="79.134766" y="133.453125"/>
<use xlink:href="#glyph0-8" x="83.526367" y="133.453125"/>
<use xlink:href="#glyph0-13" x="87.630859" y="133.453125"/>
</g>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(33%,33%,33%); fill-opacity: 1;" d="M 4 4 L 104 4 L 104 124 L 4 124 Z M 4 4 "/>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(47%,47%,47%); fill-opacity: 1;" d="M 4 34 L 104 34 L 104 94 L 4 94 Z M 4 34 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(10%,10%,10%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 4 4 L 104 4 L 104 124 L 4 124 Z M 4 4 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(100%,0%,0%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 4 94 L 5 93 L 6 93 L 7 93 L 8 93 L 9 93 L 10 93 L 11 93 L 12 93 L 13 93 L 14 93 L 15 93 L 16 93 L 17 92 L 18 92 L 19 92 L 20 92 L 21 92 L 22 92 L 23 91 L 24 91 L 25 91 L 26 91 L 27 90 L 28 90 L 29 90 L 30 89 L 31 89 L 32 89 L 33 88 L 34 88 L 35 88 L 36 87 L 37 87 L 38 87 L 39 86 L 40 86 L 41 85 L 42 85 L 43 84 L 44 84 L 45 83 L 46 83 L 47 82 L 48 82 L 49 81 L 50 81 L 51 80 L 52 80 L 53 79 L 54 79 L 55 78 L 56 77 L 57 77 L 58 76 L 59 75 L 60 75 L 61 74 L 62 73 L 63 73 L 64 72 L 65 71 L 66 70 L 67 70 L 68 69 L 69 68 L 70 67 L 71 67 L 72 66 L 73 65 L 74 64 L 75 63 L 76 62 L 77 62 L 78 61 L 79 60 L 80 59 L 81 58 L 82 57 L 83 56 L 84 55 L 85 54 L 86 53 L 87 52 L 88 51 L 89 50 L 90 49 L 91 48 L 92 47 L 93 46 L 94 45 L 95 44 L 96 43 L 97 42 L 98 40 L 99 39 L 100 38 L 101 37 L 102 36 L 103 35 "/>
<g style="fill: rgb(0%,0%,0%); fill-opacity: 1;">
<use xlink:href="#glyph0-1" x="121.1875" y="133.453125"/>
<use xlink:href="#glyph0-2" x="125.376953" y="133.453125"/>
<use xlink:href="#glyph0-3" x="128.719727" y="133.453125"/>
<use xlink:href="#glyph0-4" x="133.111328" y="133.453125"/>
<use xlink:href="#glyph0-4" x="136.776367" y="133.453125"/>
<use xlink:href="#glyph0-5" x="140.441406" y="133.453125"/>
<use xlink:href="#glyph0-6" x="144.232422" y="133.453125"/>
<use xlink:href="#glyph0-7" x="148.401367" y="133.453125"/>
<use xlink:href="#glyph0-5" x="151.401367" y="133.453125"/>
<use xlink:href="#glyph0-8" x="155.192383" y="133.453125"/>
<use xlink:href="#glyph0-9" x="159.296875" y="133.453125"/>
<use xlink:href="#glyph0-5" x="163.105469" y="133.453125"/>
<use xlink:href="#glyph0-7" x="166.896484" y="133.453125"/>
<use xlink:href="#glyph0-14" x="169.896484" y="133.453125"/>
<use xlink:href="#glyph0-3" x="174.619141" y="133.453125"/>
<use xlink:href="#glyph0-4" x="179.010742" y="133.453125"/>
<use xlink:href="#glyph0-7" x="182.675781" y="133.453125"/>
<use xlink:href="#glyph0-12" x="185.675781" y="133.453125"/>
<use xlink:href="#glyph0-3" x="190.398438" y="133.453125"/>
<use xlink:href="#glyph0-8" x="194.790039" y="133.453125"/>
<use xlink:href="#glyph0-13" x="198.894531" y="133.453125"/>
</g>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(33%,33%,33%); fill-opacity: 1;" d="M 112 4 L 212 4 L 212 124 L 112 124 Z M 112 4 "/>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(47%,47%,47%); fill-opacity: 1;" d="M 112 34 L 212 34 L 212 94 L 112 94 Z M 112 34 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(10%,10%,10%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 112 4 L 212 4 L 212 124 L 112 124 Z M 112 4 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(100%,0%,0%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 112 94 L 113 92 L 114 91 L 115 90 L 116 89 L 117 88 L 118 87 L 119 85 L 120 84 L 121 83 L 122 82 L 123 81 L 124 80 L 125 79 L 126 78 L 127 77 L 128 76 L 129 75 L 130 74 L 131 73 L 132 72 L 133 71 L 134 70 L 135 69 L 136 68 L 137 67 L 138 66 L 139 65 L 140 65 L 141 64 L 142 63 L 143 62 L 144 61 L 145 60 L 146 60 L 147 59 L 148 58 L 149 57 L 150 57 L 151 56 L 152 55 L 153 54 L 154 54 L 155 53 L 156 52 L 157 52 L 158 51 L 159 50 L 160 50 L 161 49 L 162 49 L 163 48 L 164 47 L 165 47 L 166 46 L 167 46 L 168 45 L 169 45 L 170 44 L 171 44 L 172 43 L 173 43 L 174 42 L 175 42 L 176 41 L 177 41 L 178 40 L 179 40 L 180 40 L 181 39 L 182 39 L 183 39 L 184 38 L 185 38 L 186 38 L 187 37 L 188 37 L 189 37 L 190 36 L 191 36 L 192 36 L 193 36 L 194 35 L 195 35 L 196 35 L 197 35 L 198 35 L 199 35 L 200 34 L 201 34 L 202 34 L 203 34 L 204 34 L 205 34 L 206 34 L 207 34 L 208 34 L 209 34 L 210 34 L 211 34 "/>
<g style="fill: rgb(0%,0%,0%); fill-opacity: 1;">
<use xlink:href="#glyph0-1" x="224.554688" y="133.453125"/>
<use xlink:href="#glyph0-2" x="228.744141" y="133.453125"/>
<use xlink:href="#glyph0-3" x="232.086914" y="133.453125"/>
<use xlink:href="#glyph0-4" x="236.478516" y="133.453125"/>
<use xlink:href="#glyph0-4" x="240.143555" y="133.453125"/>
<use xlink:href="#glyph0-5" x="243.808594" y="133.453125"/>
<use xlink:href="#glyph0-6" x="247.599609" y="133.453125"/>
<use xlink:href="#glyph0-7" x="251.768555" y="133.453125"/>
<use xlink:href="#glyph0-5" x="254.768555" y="133.453125"/>
<use xlink:href="#glyph0-8" x="258.55957" y="133.453125"/>
<use xlink:href="#glyph0-9" x="262.664062" y="133.453125"/>
<use xlink:href="#glyph0-5" x="266.472656" y="133.453125"/>
<use xlink:href="#glyph0-7" x="270.263672" y="133.453125"/>
<use xlink:href="#glyph0-10" x="273.263672" y="133.453125"/>
<use xlink:href="#glyph0-11" x="275.033203" y="133.453125"/>
<use xlink:href="#glyph0-7" x="279.521484" y="133.453125"/>
<use xlink:href="#glyph0-14" x="282.521484" y="133.453125"/>
<use xlink:href="#glyph0-3" x="287.244141" y="133.453125"/>
<use xlink:href="#glyph0-4" x="291.635742" y="133.453125"/>
<use xlink:href="#glyph0-7" x="295.300781" y="133.453125"/>
<use xlink:href="#glyph0-12" x="298.300781" y="133.453125"/>
<use xlink:href="#glyph0-3" x="303.023438" y="133.453125"/>
<use xlink:href="#glyph0-8" x="307.415039" y="133.453125"/>
<use xlink:href="#glyph0-13" x="311.519531" y="133.453125"/>
</g>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(33%,33%,33%); fill-opacity: 1;" d="M 220 4 L 320 4 L 320 124 L 220 124 Z M 220 4 "/>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(47%,47%,47%); fill-opacity: 1;" d="M 220 34 L 320 34 L 320 94 L 220 94 Z M 220 34 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(10%,10%,10%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 220 4 L 320 4 L 320 124 L 220 124 Z M 220 4 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(100%,0%,0%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 220 94 L 221 93 L 222 93 L 223 93 L 224 93 L 225 93 L 226 93 L 227 93 L 228 93 L 229 93 L 230 92 L 231 92 L 232 92 L 233 91 L 234 91 L 235 91 L 236 90 L 237 90 L 238 90 L 239 89 L 240 89 L 241 88 L 242 88 L 243 87 L 244 87 L 245 86 L 246 85 L 247 85 L 248 84 L 249 83 L 250 83 L 251 82 L 252 81 L 253 80 L 254 80 L 255 79 L 256 78 L 257 77 L 258 76 L 259 75 L 260 74 L 261 73 L 262 72 L 263 71 L 264 70 L 265 69 L 266 68 L 267 67 L 268 66 L 269 65 L 270 64 L 271 62 L 272 61 L 273 60 L 274 59 L 275 58 L 276 57 L 277 56 L 278 55 L 279 54 L 280 53 L 281 52 L 282 51 L 283 50 L 284 49 L 285 48 L 286 47 L 287 47 L 288 46 L 289 45 L 290 44 L 291 44 L 292 43 L 293 42 L 294 42 L 295 41 L 296 40 L 297 40 L 298 39 L 299 39 L 300 38 L 301 38 L 302 37 L 303 37 L 304 37 L 305 36 L 306 36 L 307 36 L 308 35 L 309 35 L 310 35 L 311 34 L 312 34 L 313 34 L 314 34 L 315 34 L 316 34 L 317 34 L 318 34 L 319 34 "/>
<g style="fill: rgb(0%,0%,0%); fill-opacity: 1;">
<use xlink:href="#glyph0-1" x="340.023438" y="133.453125"/>
<use xlink:href="#glyph0-2" x="344.212891" y="133.453125"/>
<use xlink:href="#glyph0-3" x="347.555664" y="133.453125"/>
<use xlink:href="#glyph0-4" x="351.947266" y="133.453125"/>
<use xlink:href="#glyph0-4" x="355.612305" y="133.453125"/>
<use xlink:href="#glyph0-5" x="359.277344" y="133.453125"/>
<use xlink:href="#glyph0-6" x="363.068359" y="133.453125"/>
<use xlink:href="#glyph0-7" x="367.237305" y="133.453125"/>
<use xlink:href="#glyph0-5" x="370.237305" y="133.453125"/>
<use xlink:href="#glyph0-8" x="374.02832" y="133.453125"/>
<use xlink:href="#glyph0-9" x="378.132812" y="133.453125"/>
<use xlink:href="#glyph0-5" x="381.941406" y="133.453125"/>
<use xlink:href="#glyph0-7" x="385.732422" y="133.453125"/>
<use xlink:href="#glyph0-10" x="388.732422" y="133.453125"/>
<use xlink:href="#glyph0-11" x="390.501953" y="133.453125"/>
<use xlink:href="#glyph0-7" x="394.990234" y="133.453125"/>
<use xlink:href="#glyph0-1" x="397.990234" y="133.453125"/>
<use xlink:href="#glyph0-3" x="402.179688" y="133.453125"/>
<use xlink:href="#glyph0-15" x="406.571289" y="133.453125"/>
<use xlink:href="#glyph0-10" x="410.6875" y="133.453125"/>
<use xlink:href="#glyph0-1" x="412.457031" y="133.453125"/>
</g>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(33%,33%,33%); fill-opacity: 1;" d="M 328 4 L 428 4 L 428 124 L 328 124 Z M 328 4 "/>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(47%,47%,47%); fill-opacity: 1;" d="M 328 34 L 428 34 L 428 94 L 328 94 Z M 328 34 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(10%,10%,10%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 328 4 L 428 4 L 428 124 L 328 124 Z M 328 4 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(100%,0%,0%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 328 94 L 329 93 L 330 93 L 331 93 L 332 93 L 333 93 L 334 93 L 335 93 L 336 93 L 337 93 L 338 93 L 339 93 L 340 93 L 341 93 L 342 93 L 343 93 L 344 93 L 345 93 L 346 93 L 347 93 L 348 93 L 349 93 L 350 93 L 351 93 L 352 93 L 353 93 L 354 92 L 355 92 L 356 92 L 357 92 L 358 92 L 359 92 L 360 92 L 361 91 L 362 91 L 363 91 L 364 91 L 365 90 L 366 90 L 367 90 L 368 90 L 369 89 L 370 89 L 371 89 L 372 88 L 373 88 L 374 88 L 375 87 L 376 87 L 377 86 L 378 86 L 379 86 L 380 85 L 381 85 L 382 84 L 383 84 L 384 83 L 385 82 L 386 82 L 387 81 L 388 81 L 389 80 L 390 79 L 391 78 L 392 78 L 393 77 L 394 76 L 395 75 L 396 75 L 397 74 L 398 73 L 399 72 L 400 71 L 401 70 L 402 69 L 403 68 L 404 67 L 405 66 L 406 65 L 407 64 L 408 63 L 409 62 L 410 60 L 411 59 L 412 58 L 413 57 L 414 55 L 415 54 L 416 53 L 417 51 L 418 50 L 419 48 L 420 47 L 421 45 L 422 44 L 423 42 L 424 40 L 425 39 L 426 37 L 427 35 "/>
<g style="fill: rgb(0%,0%,0%); fill-opacity: 1;">
<use xlink:href="#glyph0-1" x="444.765625" y="133.453125"/>
<use xlink:href="#glyph0-2" x="448.955078" y="133.453125"/>
<use xlink:href="#glyph0-3" x="452.297852" y="133.453125"/>
<use xlink:href="#glyph0-4" x="456.689453" y="133.453125"/>
<use xlink:href="#glyph0-4" x="460.354492" y="133.453125"/>
<use xlink:href="#glyph0-5" x="464.019531" y="133.453125"/>
<use xlink:href="#glyph0-6" x="467.810547" y="133.453125"/>
<use xlink:href="#glyph0-7" x="471.979492" y="133.453125"/>
<use xlink:href="#glyph0-5" x="474.979492" y="133.453125"/>
<use xlink:href="#glyph0-8" x="478.770508" y="133.453125"/>
<use xlink:href="#glyph0-9" x="482.875" y="133.453125"/>
<use xlink:href="#glyph0-5" x="486.683594" y="133.453125"/>
<use xlink:href="#glyph0-7" x="490.474609" y="133.453125"/>
<use xlink:href="#glyph0-14" x="493.474609" y="133.453125"/>
<use xlink:href="#glyph0-3" x="498.197266" y="133.453125"/>
<use xlink:href="#glyph0-4" x="502.588867" y="133.453125"/>
<use xlink:href="#glyph0-7" x="506.253906" y="133.453125"/>
<use xlink:href="#glyph0-1" x="509.253906" y="133.453125"/>
<use xlink:href="#glyph0-3" x="513.443359" y="133.453125"/>
<use xlink:href="#glyph0-15" x="517.834961" y="133.453125"/>
<use xlink:href="#glyph0-10" x="521.951172" y="133.453125"/>
<use xlink:href="#glyph0-1" x="523.720703" y="133.453125"/>
</g>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(33%,33%,33%); fill-opacity: 1;" d="M 436 4 L 536 4 L 536 124 L 436 124 Z M 436 4 "/>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(47%,47%,47%); fill-opacity: 1;" d="M 436 34 L 536 34 L 536 94 L 436 94 Z M 436 34 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(10%,10%,10%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 436 4 L 536 4 L 536 124 L 436 124 Z M 436 4 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(100%,0%,0%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 436 94 L 437 92 L 438 90 L 439 88 L 440 87 L 441 85 L 442 83 L 443 82 L 444 80 L 445 79 L 446 77 L 447 76 L 448 74 L 449 73 L 450 72 L 451 70 L 452 69 L 453 68 L 454 67 L 455 65 L 456 64 L 457 63 L 458 62 L 459 61 L 460 60 L 461 59 L 462 58 L 463 57 L 464 56 L 465 55 L 466 54 L 467 53 L 468 52 L 469 52 L 470 51 L 471 50 L 472 49 L 473 49 L 474 48 L 475 47 L 476 46 L 477 46 L 478 45 L 479 45 L 480 44 L 481 43 L 482 43 L 483 42 L 484 42 L 485 41 L 486 41 L 487 41 L 488 40 L 489 40 L 490 39 L 491 39 L 492 39 L 493 38 L 494 38 L 495 38 L 496 37 L 497 37 L 498 37 L 499 37 L 500 36 L 501 36 L 502 36 L 503 36 L 504 35 L 505 35 L 506 35 L 507 35 L 508 35 L 509 35 L 510 35 L 511 34 L 512 34 L 513 34 L 514 34 L 515 34 L 516 34 L 517 34 L 518 34 L 519 34 L 520 34 L 521 34 L 522 34 L 523 34 L 524 34 L 525 34 L 526 34 L 527 34 L 528 34 L 529 34 L 530 34 L 531 34 L 532 34 L 533 34 L 534 34 L 535 34 "/>
<g style="fill: rgb(0%,0%,0%); fill-opacity: 1;">
<use xlink:href="#glyph0-1" x="548.136719" y="133.453125"/>
<use xlink:href="#glyph0-2" x="552.326172" y="133.453125"/>
<use xlink:href="#glyph0-3" x="555.668945" y="133.453125"/>
<use xlink:href="#glyph0-4" x="560.060547" y="133.453125"/>
<use xlink:href="#glyph0-4" x="563.725586" y="133.453125"/>
<use xlink:href="#glyph0-5" x="567.390625" y="133.453125"/>
<use xlink:href="#glyph0-6" x="571.181641" y="133.453125"/>
<use xlink:href="#glyph0-7" x="575.350586" y="133.453125"/>
<use xlink:href="#glyph0-5" x="578.350586" y="133.453125"/>
<use xlink:href="#glyph0-8" x="582.141602" y="133.453125"/>
<use xlink:href="#glyph0-9" x="586.246094" y="133.453125"/>
<use xlink:href="#glyph0-5" x="590.054688" y="133.453125"/>
<use xlink:href="#glyph0-7" x="593.845703" y="133.453125"/>
<use xlink:href="#glyph0-10" x="596.845703" y="133.453125"/>
<use xlink:href="#glyph0-11" x="598.615234" y="133.453125"/>
<use xlink:href="#glyph0-7" x="603.103516" y="133.453125"/>
<use xlink:href="#glyph0-14" x="606.103516" y="133.453125"/>
<use xlink:href="#glyph0-3" x="610.826172" y="133.453125"/>
<use xlink:href="#glyph0-4" x="615.217773" y="133.453125"/>
<use xlink:href="#glyph0-7" x="618.882812" y="133.453125"/>
<use xlink:href="#glyph0-1" x="621.882812" y="133.453125"/>
<use xlink:href="#glyph0-3" x="626.072266" y="133.453125"/>
<use xlink:href="#glyph0-15" x="630.463867" y="133.453125"/>
<use xlink:href="#glyph0-10" x="634.580078" y="133.453125"/>
<use xlink:href="#glyph0-1" x="636.349609" y="133.453125"/>
</g>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(33%,33%,33%); fill-opacity: 1;" d="M 544 4 L 644 4 L 644 124 L 544 124 Z M 544 4 "/>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(47%,47%,47%); fill-opacity: 1;" d="M 544 34 L 644 34 L 644 94 L 544 94 Z M 544 34 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(10%,10%,10%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 544 4 L 644 4 L 644 124 L 544 124 Z M 544 4 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(100%,0%,0%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 544 94 L 545 93 L 546 93 L 547 93 L 548 93 L 549 93 L 550 93 L 551 93 L 552 93 L 553 93 L 554 93 L 555 93 L 556 93 L 557 93 L 558 93 L 559 93 L 560 93 L 561 92 L 562 92 L 563 92 L 564 92 L 565 91 L 566 91 L 567 91 L 568 90 L 569 90 L 570 89 L 571 89 L 572 88 L 573 88 L 574 87 L 575 86 L 576 86 L 577 85 L 578 84 L 579 83 L 580 82 L 581 81 L 582 80 L 583 79 L 584 78 L 585 77 L 586 76 L 587 74 L 588 73 L 589 72 L 590 70 L 591 69 L 592 67 L 593 65 L 594 64 L 595 62 L 596 60 L 597 58 L 598 57 L 599 55 L 600 54 L 601 53 L 602 51 L 603 50 L 604 49 L 605 48 L 606 47 L 607 46 L 608 45 L 609 44 L 610 43 L 611 42 L 612 41 L 613 41 L 614 40 L 615 39 L 616 39 L 617 38 L 618 38 L 619 37 L 620 37 L 621 36 L 622 36 L 623 36 L 624 35 L 625 35 L 626 35 L 627 35 L 628 34 L 629 34 L 630 34 L 631 34 L 632 34 L 633 34 L 634 34 L 635 34 L 636 34 L 637 34 L 638 34 L 639 34 L 640 34 L 641 34 L 642 34 L 643 34 "/>
<g style="fill: rgb(0%,0%,0%); fill-opacity: 1;">
<use xlink:href="#glyph0-1" x="14.652344" y="271.453125"/>
<use xlink:href="#glyph0-2" x="18.841797" y="271.453125"/>
<use xlink:href="#glyph0-3" x="22.18457" y="271.453125"/>
<use xlink:href="#glyph0-4" x="26.576172" y="271.453125"/>
<use xlink:href="#glyph0-4" x="30.241211" y="271.453125"/>
<use xlink:href="#glyph0-5" x="33.90625" y="271.453125"/>
<use xlink:href="#glyph0-6" x="37.697266" y="271.453125"/>
<use xlink:href="#glyph0-7" x="41.866211" y="271.453125"/>
<use xlink:href="#glyph0-5" x="44.866211" y="271.453125"/>
<use xlink:href="#glyph0-8" x="48.657227" y="271.453125"/>
<use xlink:href="#glyph0-9" x="52.761719" y="271.453125"/>
<use xlink:href="#glyph0-5" x="56.570312" y="271.453125"/>
<use xlink:href="#glyph0-7" x="60.361328" y="271.453125"/>
<use xlink:href="#glyph0-10" x="63.361328" y="271.453125"/>
<use xlink:href="#glyph0-11" x="65.130859" y="271.453125"/>
<use xlink:href="#glyph0-7" x="69.619141" y="271.453125"/>
<use xlink:href="#glyph0-12" x="72.619141" y="271.453125"/>
<use xlink:href="#glyph0-3" x="77.341797" y="271.453125"/>
<use xlink:href="#glyph0-8" x="81.733398" y="271.453125"/>
<use xlink:href="#glyph0-6" x="85.837891" y="271.453125"/>
<use xlink:href="#glyph0-4" x="90.006836" y="271.453125"/>
</g>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(33%,33%,33%); fill-opacity: 1;" d="M 4 142 L 104 142 L 104 262 L 4 262 Z M 4 142 "/>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(47%,47%,47%); fill-opacity: 1;" d="M 4 172 L 104 172 L 104 232 L 4 232 Z M 4 172 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(10%,10%,10%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 4 142 L 104 142 L 104 262 L 4 262 Z M 4 142 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(100%,0%,0%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 4 232 L 5 231 L 6 231 L 7 231 L 8 231 L 9 231 L 10 231 L 11 231 L 12 231 L 13 231 L 14 231 L 15 231 L 16 231 L 17 231 L 18 231 L 19 231 L 20 231 L 21 231 L 22 231 L 23 231 L 24 231 L 25 231 L 26 231 L 27 231 L 28 231 L 29 231 L 30 231 L 31 231 L 32 231 L 33 231 L 34 231 L 35 231 L 36 231 L 37 231 L 38 231 L 39 231 L 40 230 L 41 230 L 42 230 L 43 230 L 44 230 L 45 230 L 46 230 L 47 229 L 48 229 L 49 229 L 50 229 L 51 229 L 52 228 L 53 228 L 54 228 L 55 227 L 56 227 L 57 227 L 58 226 L 59 226 L 60 226 L 61 225 L 62 225 L 63 224 L 64 224 L 65 223 L 66 223 L 67 222 L 68 221 L 69 221 L 70 220 L 71 219 L 72 219 L 73 218 L 74 217 L 75 216 L 76 215 L 77 214 L 78 214 L 79 213 L 80 211 L 81 210 L 82 209 L 83 208 L 84 207 L 85 206 L 86 204 L 87 203 L 88 202 L 89 200 L 90 199 L 91 197 L 92 196 L 93 194 L 94 192 L 95 190 L 96 189 L 97 187 L 98 185 L 99 183 L 100 181 L 101 178 L 102 176 L 103 174 "/>
<g style="fill: rgb(0%,0%,0%); fill-opacity: 1;">
<use xlink:href="#glyph0-1" x="119.390625" y="271.453125"/>
<use xlink:href="#glyph0-2" x="123.580078" y="271.453125"/>
<use xlink:href="#glyph0-3" x="126.922852" y="271.453125"/>
<use xlink:href="#glyph0-4" x="131.314453" y="271.453125"/>
<use xlink:href="#glyph0-4" x="134.979492" y="271.453125"/>
<use xlink:href="#glyph0-5" x="138.644531" y="271.453125"/>
<use xlink:href="#glyph0-6" x="142.435547" y="271.453125"/>
<use xlink:href="#glyph0-7" x="146.604492" y="271.453125"/>
<use xlink:href="#glyph0-5" x="149.604492" y="271.453125"/>
<use xlink:href="#glyph0-8" x="153.395508" y="271.453125"/>
<use xlink:href="#glyph0-9" x="157.5" y="271.453125"/>
<use xlink:href="#glyph0-5" x="161.308594" y="271.453125"/>
<use xlink:href="#glyph0-7" x="165.099609" y="271.453125"/>
<use xlink:href="#glyph0-14" x="168.099609" y="271.453125"/>
<use xlink:href="#glyph0-3" x="172.822266" y="271.453125"/>
<use xlink:href="#glyph0-4" x="177.213867" y="271.453125"/>
<use xlink:href="#glyph0-7" x="180.878906" y="271.453125"/>
<use xlink:href="#glyph0-12" x="183.878906" y="271.453125"/>
<use xlink:href="#glyph0-3" x="188.601562" y="271.453125"/>
<use xlink:href="#glyph0-8" x="192.993164" y="271.453125"/>
<use xlink:href="#glyph0-6" x="197.097656" y="271.453125"/>
<use xlink:href="#glyph0-4" x="201.266602" y="271.453125"/>
</g>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(33%,33%,33%); fill-opacity: 1;" d="M 112 142 L 212 142 L 212 262 L 112 262 Z M 112 142 "/>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(47%,47%,47%); fill-opacity: 1;" d="M 112 172 L 212 172 L 212 232 L 112 232 Z M 112 172 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(10%,10%,10%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 112 142 L 212 142 L 212 262 L 112 262 Z M 112 142 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(100%,0%,0%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 112 232 L 113 230 L 114 229 L 115 228 L 116 227 L 117 226 L 118 225 L 119 224 L 120 223 L 121 222 L 122 221 L 123 220 L 124 219 L 125 219 L 126 218 L 127 217 L 128 216 L 129 216 L 130 215 L 131 214 L 132 214 L 133 213 L 134 213 L 135 212 L 136 212 L 137 211 L 138 210 L 139 210 L 140 210 L 141 209 L 142 209 L 143 208 L 144 208 L 145 208 L 146 207 L 147 207 L 148 207 L 149 206 L 150 206 L 151 206 L 152 205 L 153 205 L 154 205 L 155 205 L 156 204 L 157 204 L 158 204 L 159 204 L 160 204 L 161 204 L 162 203 L 163 203 L 164 203 L 165 203 L 166 203 L 167 203 L 168 203 L 169 203 L 170 202 L 171 202 L 172 202 L 173 202 L 174 202 L 175 202 L 176 202 L 177 202 L 178 202 L 179 202 L 180 202 L 181 202 L 182 202 L 183 202 L 184 202 L 185 202 L 186 202 L 187 202 L 188 202 L 189 202 L 190 202 L 191 202 L 192 202 L 193 202 L 194 202 L 195 202 L 196 202 L 197 202 L 198 202 L 199 202 L 200 202 L 201 202 L 202 202 L 203 202 L 204 202 L 205 202 L 206 202 L 207 202 L 208 202 L 209 202 L 210 202 L 211 202 "/>
<g style="fill: rgb(0%,0%,0%); fill-opacity: 1;">
<use xlink:href="#glyph0-1" x="222.761719" y="271.453125"/>
<use xlink:href="#glyph0-2" x="226.951172" y="271.453125"/>
<use xlink:href="#glyph0-3" x="230.293945" y="271.453125"/>
<use xlink:href="#glyph0-4" x="234.685547" y="271.453125"/>
<use xlink:href="#glyph0-4" x="238.350586" y="271.453125"/>
<use xlink:href="#glyph0-5" x="242.015625" y="271.453125"/>
<use xlink:href="#glyph0-6" x="245.806641" y="271.453125"/>
<use xlink:href="#glyph0-7" x="249.975586" y="271.453125"/>
<use xlink:href="#glyph0-5" x="252.975586" y="271.453125"/>
<use xlink:href="#glyph0-8" x="256.766602" y="271.453125"/>
<use xlink:href="#glyph0-9" x="260.871094" y="271.453125"/>
<use xlink:href="#glyph0-5" x="264.679688" y="271.453125"/>
<use xlink:href="#glyph0-7" x="268.470703" y="271.453125"/>
<use xlink:href="#glyph0-10" x="271.470703" y="271.453125"/>
<use xlink:href="#glyph0-11" x="273.240234" y="271.453125"/>
<use xlink:href="#glyph0-7" x="277.728516" y="271.453125"/>
<use xlink:href="#glyph0-14" x="280.728516" y="271.453125"/>
<use xlink:href="#glyph0-3" x="285.451172" y="271.453125"/>
<use xlink:href="#glyph0-4" x="289.842773" y="271.453125"/>
<use xlink:href="#glyph0-7" x="293.507812" y="271.453125"/>
<use xlink:href="#glyph0-12" x="296.507812" y="271.453125"/>
<use xlink:href="#glyph0-3" x="301.230469" y="271.453125"/>
<use xlink:href="#glyph0-8" x="305.62207" y="271.453125"/>
<use xlink:href="#glyph0-6" x="309.726562" y="271.453125"/>
<use xlink:href="#glyph0-4" x="313.895508" y="271.453125"/>
</g>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(33%,33%,33%); fill-opacity: 1;" d="M 220 142 L 320 142 L 320 262 L 220 262 Z M 220 142 "/>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(47%,47%,47%); fill-opacity: 1;" d="M 220 172 L 320 172 L 320 232 L 220 232 Z M 220 172 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(10%,10%,10%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 220 142 L 320 142 L 320 262 L 220 262 Z M 220 142 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(100%,0%,0%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 220 232 L 221 231 L 222 231 L 223 231 L 224 231 L 225 231 L 226 231 L 227 231 L 228 231 L 229 231 L 230 231 L 231 231 L 232 231 L 233 231 L 234 231 L 235 231 L 236 231 L 237 231 L 238 231 L 239 231 L 240 231 L 241 231 L 242 230 L 243 230 L 244 230 L 245 230 L 246 229 L 247 229 L 248 229 L 249 228 L 250 228 L 251 227 L 252 226 L 253 226 L 254 225 L 255 224 L 256 223 L 257 223 L 258 221 L 259 220 L 260 219 L 261 218 L 262 217 L 263 215 L 264 214 L 265 212 L 266 210 L 267 208 L 268 206 L 269 204 L 270 202 L 271 199 L 272 197 L 273 195 L 274 193 L 275 191 L 276 189 L 277 188 L 278 186 L 279 185 L 280 184 L 281 183 L 282 182 L 283 180 L 284 180 L 285 179 L 286 178 L 287 177 L 288 177 L 289 176 L 290 175 L 291 175 L 292 174 L 293 174 L 294 174 L 295 173 L 296 173 L 297 173 L 298 173 L 299 172 L 300 172 L 301 172 L 302 172 L 303 172 L 304 172 L 305 172 L 306 172 L 307 172 L 308 172 L 309 172 L 310 172 L 311 172 L 312 172 L 313 172 L 314 172 L 315 172 L 316 172 L 317 172 L 318 172 L 319 172 "/>
<g style="fill: rgb(0%,0%,0%); fill-opacity: 1;">
<use xlink:href="#glyph0-1" x="339.660156" y="271.453125"/>
<use xlink:href="#glyph0-2" x="343.849609" y="271.453125"/>
<use xlink:href="#glyph0-3" x="347.192383" y="271.453125"/>
<use xlink:href="#glyph0-4" x="351.583984" y="271.453125"/>
<use xlink:href="#glyph0-4" x="355.249023" y="271.453125"/>
<use xlink:href="#glyph0-5" x="358.914062" y="271.453125"/>
<use xlink:href="#glyph0-6" x="362.705078" y="271.453125"/>
<use xlink:href="#glyph0-7" x="366.874023" y="271.453125"/>
<use xlink:href="#glyph0-5" x="369.874023" y="271.453125"/>
<use xlink:href="#glyph0-8" x="373.665039" y="271.453125"/>
<use xlink:href="#glyph0-9" x="377.769531" y="271.453125"/>
<use xlink:href="#glyph0-5" x="381.578125" y="271.453125"/>
<use xlink:href="#glyph0-7" x="385.369141" y="271.453125"/>
<use xlink:href="#glyph0-10" x="388.369141" y="271.453125"/>
<use xlink:href="#glyph0-11" x="390.138672" y="271.453125"/>
<use xlink:href="#glyph0-7" x="394.626953" y="271.453125"/>
<use xlink:href="#glyph0-12" x="397.626953" y="271.453125"/>
<use xlink:href="#glyph0-3" x="402.349609" y="271.453125"/>
<use xlink:href="#glyph0-10" x="406.741211" y="271.453125"/>
<use xlink:href="#glyph0-11" x="408.510742" y="271.453125"/>
<use xlink:href="#glyph0-4" x="412.999023" y="271.453125"/>
</g>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(33%,33%,33%); fill-opacity: 1;" d="M 328 142 L 428 142 L 428 262 L 328 262 Z M 328 142 "/>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(47%,47%,47%); fill-opacity: 1;" d="M 328 172 L 428 172 L 428 232 L 328 232 Z M 328 172 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(10%,10%,10%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 328 142 L 428 142 L 428 262 L 328 262 Z M 328 142 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(100%,0%,0%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 328 232 L 329 231 L 330 231 L 331 231 L 332 231 L 333 231 L 334 231 L 335 231 L 336 231 L 337 231 L 338 231 L 339 231 L 340 231 L 341 231 L 342 231 L 343 231 L 344 231 L 345 231 L 346 231 L 347 231 L 348 231 L 349 231 L 350 231 L 351 231 L 352 231 L 353 231 L 354 231 L 355 231 L 356 231 L 357 231 L 358 231 L 359 231 L 360 231 L 361 231 L 362 231 L 363 231 L 364 231 L 365 231 L 366 231 L 367 231 L 368 231 L 369 231 L 370 231 L 371 231 L 372 231 L 373 230 L 374 230 L 375 230 L 376 230 L 377 230 L 378 230 L 379 229 L 380 229 L 381 229 L 382 229 L 383 228 L 384 228 L 385 228 L 386 228 L 387 227 L 388 227 L 389 226 L 390 226 L 391 226 L 392 225 L 393 225 L 394 224 L 395 223 L 396 223 L 397 222 L 398 221 L 399 221 L 400 220 L 401 219 L 402 218 L 403 217 L 404 216 L 405 215 L 406 214 L 407 213 L 408 212 L 409 211 L 410 209 L 411 208 L 412 206 L 413 205 L 414 203 L 415 202 L 416 200 L 417 198 L 418 196 L 419 194 L 420 192 L 421 190 L 422 187 L 423 185 L 424 183 L 425 180 L 426 177 L 427 174 "/>
<g style="fill: rgb(0%,0%,0%); fill-opacity: 1;">
<use xlink:href="#glyph0-1" x="444.398438" y="271.453125"/>
<use xlink:href="#glyph0-2" x="448.587891" y="271.453125"/>
<use xlink:href="#glyph0-3" x="451.930664" y="271.453125"/>
<use xlink:href="#glyph0-4" x="456.322266" y="271.453125"/>
<use xlink:href="#glyph0-4" x="459.987305" y="271.453125"/>
<use xlink:href="#glyph0-5" x="463.652344" y="271.453125"/>
<use xlink:href="#glyph0-6" x="467.443359" y="271.453125"/>
<use xlink:href="#glyph0-7" x="471.612305" y="271.453125"/>
<use xlink:href="#glyph0-5" x="474.612305" y="271.453125"/>
<use xlink:href="#glyph0-8" x="478.40332" y="271.453125"/>
<use xlink:href="#glyph0-9" x="482.507812" y="271.453125"/>
<use xlink:href="#glyph0-5" x="486.316406" y="271.453125"/>
<use xlink:href="#glyph0-7" x="490.107422" y="271.453125"/>
<use xlink:href="#glyph0-14" x="493.107422" y="271.453125"/>
<use xlink:href="#glyph0-3" x="497.830078" y="271.453125"/>
<use xlink:href="#glyph0-4" x="502.22168" y="271.453125"/>
<use xlink:href="#glyph0-7" x="505.886719" y="271.453125"/>
<use xlink:href="#glyph0-12" x="508.886719" y="271.453125"/>
<use xlink:href="#glyph0-3" x="513.609375" y="271.453125"/>
<use xlink:href="#glyph0-10" x="518.000977" y="271.453125"/>
<use xlink:href="#glyph0-11" x="519.770508" y="271.453125"/>
<use xlink:href="#glyph0-4" x="524.258789" y="271.453125"/>
</g>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(33%,33%,33%); fill-opacity: 1;" d="M 436 142 L 536 142 L 536 262 L 436 262 Z M 436 142 "/>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(47%,47%,47%); fill-opacity: 1;" d="M 436 172 L 536 172 L 536 232 L 436 232 Z M 436 172 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(10%,10%,10%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 436 142 L 536 142 L 536 262 L 436 262 Z M 436 142 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(100%,0%,0%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 436 232 L 437 229 L 438 226 L 439 223 L 440 220 L 441 218 L 442 216 L 443 213 L 444 211 L 445 209 L 446 207 L 447 205 L 448 203 L 449 201 L 450 200 L 451 198 L 452 197 L 453 195 L 454 194 L 455 192 L 456 191 L 457 190 L 458 189 L 459 188 L 460 187 L 461 186 L 462 185 L 463 184 L 464 183 L 465 182 L 466 182 L 467 181 L 468 180 L 469 180 L 470 179 L 471 178 L 472 178 L 473 177 L 474 177 L 475 177 L 476 176 L 477 176 L 478 175 L 479 175 L 480 175 L 481 175 L 482 174 L 483 174 L 484 174 L 485 174 L 486 173 L 487 173 L 488 173 L 489 173 L 490 173 L 491 173 L 492 172 L 493 172 L 494 172 L 495 172 L 496 172 L 497 172 L 498 172 L 499 172 L 500 172 L 501 172 L 502 172 L 503 172 L 504 172 L 505 172 L 506 172 L 507 172 L 508 172 L 509 172 L 510 172 L 511 172 L 512 172 L 513 172 L 514 172 L 515 172 L 516 172 L 517 172 L 518 172 L 519 172 L 520 172 L 521 172 L 522 172 L 523 172 L 524 172 L 525 172 L 526 172 L 527 172 L 528 172 L 529 172 L 530 172 L 531 172 L 532 172 L 533 172 L 534 172 L 535 172 "/>
<g style="fill: rgb(0%,0%,0%); fill-opacity: 1;">
<use xlink:href="#glyph0-1" x="547.769531" y="271.453125"/>
<use xlink:href="#glyph0-2" x="551.958984" y="271.453125"/>
<use xlink:href="#glyph0-3" x="555.301758" y="271.453125"/>
<use xlink:href="#glyph0-4" x="559.693359" y="271.453125"/>
<use xlink:href="#glyph0-4" x="563.358398" y="271.453125"/>
<use xlink:href="#glyph0-5" x="567.023438" y="271.453125"/>
<use xlink:href="#glyph0-6" x="570.814453" y="271.453125"/>
<use xlink:href="#glyph0-7" x="574.983398" y="271.453125"/>
<use xlink:href="#glyph0-5" x="577.983398" y="271.453125"/>
<use xlink:href="#glyph0-8" x="581.774414" y="271.453125"/>
<use xlink:href="#glyph0-9" x="585.878906" y="271.453125"/>
<use xlink:href="#glyph0-5" x="589.6875" y="271.453125"/>
<use xlink:href="#glyph0-7" x="593.478516" y="271.453125"/>
<use xlink:href="#glyph0-10" x="596.478516" y="271.453125"/>
<use xlink:href="#glyph0-11" x="598.248047" y="271.453125"/>
<use xlink:href="#glyph0-7" x="602.736328" y="271.453125"/>
<use xlink:href="#glyph0-14" x="605.736328" y="271.453125"/>
<use xlink:href="#glyph0-3" x="610.458984" y="271.453125"/>
<use xlink:href="#glyph0-4" x="614.850586" y="271.453125"/>
<use xlink:href="#glyph0-7" x="618.515625" y="271.453125"/>
<use xlink:href="#glyph0-12" x="621.515625" y="271.453125"/>
<use xlink:href="#glyph0-3" x="626.238281" y="271.453125"/>
<use xlink:href="#glyph0-10" x="630.629883" y="271.453125"/>
<use xlink:href="#glyph0-11" x="632.399414" y="271.453125"/>
<use xlink:href="#glyph0-4" x="636.887695" y="271.453125"/>
</g>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(33%,33%,33%); fill-opacity: 1;" d="M 544 142 L 644 142 L 644 262 L 544 262 Z M 544 142 "/>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(47%,47%,47%); fill-opacity: 1;" d="M 544 172 L 644 172 L 644 232 L 544 232 Z M 544 172 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(10%,10%,10%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 544 142 L 644 142 L 644 262 L 544 262 Z M 544 142 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(100%,0%,0%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 544 232 L 545 231 L 546 231 L 547 231 L 548 231 L 549 231 L 550 231 L 551 231 L 552 231 L 553 231 L 554 231 L 555 231 L 556 231 L 557 231 L 558 231 L 559 231 L 560 231 L 561 231 L 562 231 L 563 231 L 564 231 L 565 231 L 566 231 L 567 231 L 568 231 L 569 231 L 570 230 L 571 230 L 572 230 L 573 230 L 574 229 L 575 229 L 576 228 L 577 228 L 578 227 L 579 226 L 580 226 L 581 225 L 582 224 L 583 223 L 584 222 L 585 220 L 586 219 L 587 217 L 588 216 L 589 214 L 590 212 L 591 209 L 592 207 L 593 204 L 594 202 L 595 199 L 596 196 L 597 194 L 598 191 L 599 189 L 600 187 L 601 186 L 602 184 L 603 183 L 604 181 L 605 180 L 606 179 L 607 178 L 608 177 L 609 177 L 610 176 L 611 175 L 612 175 L 613 174 L 614 174 L 615 173 L 616 173 L 617 173 L 618 173 L 619 172 L 620 172 L 621 172 L 622 172 L 623 172 L 624 172 L 625 172 L 626 172 L 627 172 L 628 172 L 629 172 L 630 172 L 631 172 L 632 172 L 633 172 L 634 172 L 635 172 L 636 172 L 637 172 L 638 172 L 639 172 L 640 172 L 641 172 L 642 172 L 643 172 "/>
<g style="fill: rgb(0%,0%,0%); fill-opacity: 1;">
<use xlink:href="#glyph0-1" x="18.453125" y="409.453125"/>
<use xlink:href="#glyph0-2" x="22.642578" y="409.453125"/>
<use xlink:href="#glyph0-3" x="25.985352" y="409.453125"/>
<use xlink:href="#glyph0-4" x="30.376953" y="409.453125"/>
<use xlink:href="#glyph0-4" x="34.041992" y="409.453125"/>
<use xlink:href="#glyph0-5" x="37.707031" y="409.453125"/>
<use xlink:href="#glyph0-6" x="41.498047" y="409.453125"/>
<use xlink:href="#glyph0-7" x="45.666992" y="409.453125"/>
<use xlink:href="#glyph0-5" x="48.666992" y="409.453125"/>
<use xlink:href="#glyph0-8" x="52.458008" y="409.453125"/>
<use xlink:href="#glyph0-9" x="56.5625" y="409.453125"/>
<use xlink:href="#glyph0-5" x="60.371094" y="409.453125"/>
<use xlink:href="#glyph0-7" x="64.162109" y="409.453125"/>
<use xlink:href="#glyph0-10" x="67.162109" y="409.453125"/>
<use xlink:href="#glyph0-11" x="68.931641" y="409.453125"/>
<use xlink:href="#glyph0-7" x="73.419922" y="409.453125"/>
<use xlink:href="#glyph0-9" x="76.419922" y="409.453125"/>
<use xlink:href="#glyph0-10" x="80.228516" y="409.453125"/>
<use xlink:href="#glyph0-11" x="81.998047" y="409.453125"/>
<use xlink:href="#glyph0-5" x="86.486328" y="409.453125"/>
</g>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(33%,33%,33%); fill-opacity: 1;" d="M 4 280 L 104 280 L 104 400 L 4 400 Z M 4 280 "/>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(47%,47%,47%); fill-opacity: 1;" d="M 4 310 L 104 310 L 104 370 L 4 370 Z M 4 310 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(10%,10%,10%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 4 280 L 104 280 L 104 400 L 4 400 Z M 4 280 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(100%,0%,0%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 4 370 L 5 369 L 6 369 L 7 369 L 8 369 L 9 369 L 10 369 L 11 369 L 12 369 L 13 369 L 14 369 L 15 369 L 16 368 L 17 368 L 18 368 L 19 368 L 20 368 L 21 367 L 22 367 L 23 367 L 24 367 L 25 366 L 26 366 L 27 366 L 28 365 L 29 365 L 30 365 L 31 364 L 32 364 L 33 363 L 34 363 L 35 363 L 36 362 L 37 362 L 38 361 L 39 361 L 40 360 L 41 360 L 42 359 L 43 359 L 44 358 L 45 357 L 46 357 L 47 356 L 48 356 L 49 355 L 50 355 L 51 354 L 52 353 L 53 353 L 54 352 L 55 351 L 56 351 L 57 350 L 58 349 L 59 348 L 60 348 L 61 347 L 62 346 L 63 346 L 64 345 L 65 344 L 66 343 L 67 342 L 68 342 L 69 341 L 70 340 L 71 339 L 72 338 L 73 338 L 74 337 L 75 336 L 76 335 L 77 334 L 78 333 L 79 332 L 80 332 L 81 331 L 82 330 L 83 329 L 84 328 L 85 327 L 86 326 L 87 325 L 88 324 L 89 324 L 90 323 L 91 322 L 92 321 L 93 320 L 94 319 L 95 318 L 96 317 L 97 316 L 98 315 L 99 314 L 100 313 L 101 312 L 102 311 L 103 310 "/>
<g style="fill: rgb(0%,0%,0%); fill-opacity: 1;">
<use xlink:href="#glyph0-1" x="123.191406" y="409.453125"/>
<use xlink:href="#glyph0-2" x="127.380859" y="409.453125"/>
<use xlink:href="#glyph0-3" x="130.723633" y="409.453125"/>
<use xlink:href="#glyph0-4" x="135.115234" y="409.453125"/>
<use xlink:href="#glyph0-4" x="138.780273" y="409.453125"/>
<use xlink:href="#glyph0-5" x="142.445312" y="409.453125"/>
<use xlink:href="#glyph0-6" x="146.236328" y="409.453125"/>
<use xlink:href="#glyph0-7" x="150.405273" y="409.453125"/>
<use xlink:href="#glyph0-5" x="153.405273" y="409.453125"/>
<use xlink:href="#glyph0-8" x="157.196289" y="409.453125"/>
<use xlink:href="#glyph0-9" x="161.300781" y="409.453125"/>
<use xlink:href="#glyph0-5" x="165.109375" y="409.453125"/>
<use xlink:href="#glyph0-7" x="168.900391" y="409.453125"/>
<use xlink:href="#glyph0-14" x="171.900391" y="409.453125"/>
<use xlink:href="#glyph0-3" x="176.623047" y="409.453125"/>
<use xlink:href="#glyph0-4" x="181.014648" y="409.453125"/>
<use xlink:href="#glyph0-7" x="184.679688" y="409.453125"/>
<use xlink:href="#glyph0-9" x="187.679688" y="409.453125"/>
<use xlink:href="#glyph0-10" x="191.488281" y="409.453125"/>
<use xlink:href="#glyph0-11" x="193.257812" y="409.453125"/>
<use xlink:href="#glyph0-5" x="197.746094" y="409.453125"/>
</g>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(33%,33%,33%); fill-opacity: 1;" d="M 112 280 L 212 280 L 212 400 L 112 400 Z M 112 280 "/>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(47%,47%,47%); fill-opacity: 1;" d="M 112 310 L 212 310 L 212 370 L 112 370 Z M 112 310 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(10%,10%,10%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 112 280 L 212 280 L 212 400 L 112 400 Z M 112 280 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(100%,0%,0%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 112 370 L 113 369 L 114 368 L 115 367 L 116 366 L 117 365 L 118 364 L 119 363 L 120 362 L 121 361 L 122 360 L 123 359 L 124 358 L 125 357 L 126 356 L 127 355 L 128 355 L 129 354 L 130 353 L 131 352 L 132 351 L 133 350 L 134 349 L 135 348 L 136 347 L 137 347 L 138 346 L 139 345 L 140 344 L 141 343 L 142 342 L 143 341 L 144 341 L 145 340 L 146 339 L 147 338 L 148 337 L 149 337 L 150 336 L 151 335 L 152 334 L 153 333 L 154 333 L 155 332 L 156 331 L 157 331 L 158 330 L 159 329 L 160 328 L 161 328 L 162 327 L 163 326 L 164 326 L 165 325 L 166 324 L 167 324 L 168 323 L 169 323 L 170 322 L 171 322 L 172 321 L 173 320 L 174 320 L 175 319 L 176 319 L 177 318 L 178 318 L 179 317 L 180 317 L 181 316 L 182 316 L 183 316 L 184 315 L 185 315 L 186 314 L 187 314 L 188 314 L 189 313 L 190 313 L 191 313 L 192 312 L 193 312 L 194 312 L 195 312 L 196 311 L 197 311 L 198 311 L 199 311 L 200 311 L 201 310 L 202 310 L 203 310 L 204 310 L 205 310 L 206 310 L 207 310 L 208 310 L 209 310 L 210 310 L 211 310 "/>
<g style="fill: rgb(0%,0%,0%); fill-opacity: 1;">
<use xlink:href="#glyph0-1" x="226.5625" y="409.453125"/>
<use xlink:href="#glyph0-2" x="230.751953" y="409.453125"/>
<use xlink:href="#glyph0-3" x="234.094727" y="409.453125"/>
<use xlink:href="#glyph0-4" x="238.486328" y="409.453125"/>
<use xlink:href="#glyph0-4" x="242.151367" y="409.453125"/>
<use xlink:href="#glyph0-5" x="245.816406" y="409.453125"/>
<use xlink:href="#glyph0-6" x="249.607422" y="409.453125"/>
<use xlink:href="#glyph0-7" x="253.776367" y="409.453125"/>
<use xlink:href="#glyph0-5" x="256.776367" y="409.453125"/>
<use xlink:href="#glyph0-8" x="260.567383" y="409.453125"/>
<use xlink:href="#glyph0-9" x="264.671875" y="409.453125"/>
<use xlink:href="#glyph0-5" x="268.480469" y="409.453125"/>
<use xlink:href="#glyph0-7" x="272.271484" y="409.453125"/>
<use xlink:href="#glyph0-10" x="275.271484" y="409.453125"/>
<use xlink:href="#glyph0-11" x="277.041016" y="409.453125"/>
<use xlink:href="#glyph0-7" x="281.529297" y="409.453125"/>
<use xlink:href="#glyph0-14" x="284.529297" y="409.453125"/>
<use xlink:href="#glyph0-3" x="289.251953" y="409.453125"/>
<use xlink:href="#glyph0-4" x="293.643555" y="409.453125"/>
<use xlink:href="#glyph0-7" x="297.308594" y="409.453125"/>
<use xlink:href="#glyph0-9" x="300.308594" y="409.453125"/>
<use xlink:href="#glyph0-10" x="304.117188" y="409.453125"/>
<use xlink:href="#glyph0-11" x="305.886719" y="409.453125"/>
<use xlink:href="#glyph0-5" x="310.375" y="409.453125"/>
</g>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(33%,33%,33%); fill-opacity: 1;" d="M 220 280 L 320 280 L 320 400 L 220 400 Z M 220 280 "/>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(47%,47%,47%); fill-opacity: 1;" d="M 220 310 L 320 310 L 320 370 L 220 370 Z M 220 310 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(10%,10%,10%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 220 280 L 320 280 L 320 400 L 220 400 Z M 220 280 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(100%,0%,0%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 220 370 L 221 369 L 222 369 L 223 369 L 224 369 L 225 369 L 226 369 L 227 369 L 228 369 L 229 368 L 230 368 L 231 368 L 232 367 L 233 367 L 234 367 L 235 366 L 236 366 L 237 365 L 238 365 L 239 364 L 240 364 L 241 363 L 242 363 L 243 362 L 244 361 L 245 361 L 246 360 L 247 359 L 248 359 L 249 358 L 250 357 L 251 356 L 252 356 L 253 355 L 254 354 L 255 353 L 256 352 L 257 351 L 258 351 L 259 350 L 260 349 L 261 348 L 262 347 L 263 346 L 264 345 L 265 344 L 266 343 L 267 342 L 268 341 L 269 340 L 270 340 L 271 339 L 272 338 L 273 337 L 274 336 L 275 335 L 276 334 L 277 333 L 278 332 L 279 331 L 280 330 L 281 329 L 282 328 L 283 328 L 284 327 L 285 326 L 286 325 L 287 324 L 288 323 L 289 323 L 290 322 L 291 321 L 292 320 L 293 320 L 294 319 L 295 318 L 296 318 L 297 317 L 298 316 L 299 316 L 300 315 L 301 315 L 302 314 L 303 314 L 304 313 L 305 313 L 306 312 L 307 312 L 308 312 L 309 311 L 310 311 L 311 311 L 312 310 L 313 310 L 314 310 L 315 310 L 316 310 L 317 310 L 318 310 L 319 310 "/>
<g style="fill: rgb(0%,0%,0%); fill-opacity: 1;">
<use xlink:href="#glyph0-1" x="341.234375" y="409.453125"/>
<use xlink:href="#glyph0-2" x="345.423828" y="409.453125"/>
<use xlink:href="#glyph0-3" x="348.766602" y="409.453125"/>
<use xlink:href="#glyph0-4" x="353.158203" y="409.453125"/>
<use xlink:href="#glyph0-4" x="356.823242" y="409.453125"/>
<use xlink:href="#glyph0-5" x="360.488281" y="409.453125"/>
<use xlink:href="#glyph0-6" x="364.279297" y="409.453125"/>
<use xlink:href="#glyph0-7" x="368.448242" y="409.453125"/>
<use xlink:href="#glyph0-5" x="371.448242" y="409.453125"/>
<use xlink:href="#glyph0-8" x="375.239258" y="409.453125"/>
<use xlink:href="#glyph0-9" x="379.34375" y="409.453125"/>
<use xlink:href="#glyph0-5" x="383.152344" y="409.453125"/>
<use xlink:href="#glyph0-7" x="386.943359" y="409.453125"/>
<use xlink:href="#glyph0-10" x="389.943359" y="409.453125"/>
<use xlink:href="#glyph0-11" x="391.712891" y="409.453125"/>
<use xlink:href="#glyph0-7" x="396.201172" y="409.453125"/>
<use xlink:href="#glyph0-5" x="399.201172" y="409.453125"/>
<use xlink:href="#glyph0-16" x="402.992188" y="409.453125"/>
<use xlink:href="#glyph0-17" x="407.102539" y="409.453125"/>
<use xlink:href="#glyph0-14" x="410.720703" y="409.453125"/>
</g>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(33%,33%,33%); fill-opacity: 1;" d="M 328 280 L 428 280 L 428 400 L 328 400 Z M 328 280 "/>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(47%,47%,47%); fill-opacity: 1;" d="M 328 310 L 428 310 L 428 370 L 328 370 Z M 328 310 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(10%,10%,10%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 328 280 L 428 280 L 428 400 L 328 400 Z M 328 280 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(100%,0%,0%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 328 370 L 329 369 L 330 369 L 331 369 L 332 369 L 333 369 L 334 369 L 335 369 L 336 369 L 337 369 L 338 369 L 339 369 L 340 369 L 341 369 L 342 369 L 343 369 L 344 369 L 345 369 L 346 369 L 347 369 L 348 369 L 349 369 L 350 369 L 351 369 L 352 369 L 353 369 L 354 369 L 355 369 L 356 369 L 357 369 L 358 369 L 359 369 L 360 369 L 361 369 L 362 369 L 363 369 L 364 369 L 365 369 L 366 369 L 367 369 L 368 369 L 369 368 L 370 368 L 371 368 L 372 368 L 373 368 L 374 368 L 375 368 L 376 368 L 377 368 L 378 368 L 379 367 L 380 367 L 381 367 L 382 367 L 383 367 L 384 367 L 385 366 L 386 366 L 387 366 L 388 366 L 389 365 L 390 365 L 391 365 L 392 365 L 393 364 L 394 364 L 395 363 L 396 363 L 397 363 L 398 362 L 399 361 L 400 361 L 401 360 L 402 360 L 403 359 L 404 358 L 405 357 L 406 356 L 407 356 L 408 355 L 409 353 L 410 352 L 411 351 L 412 350 L 413 348 L 414 347 L 415 345 L 416 343 L 417 342 L 418 340 L 419 337 L 420 335 L 421 333 L 422 330 L 423 327 L 424 324 L 425 321 L 426 317 L 427 314 "/>
<g style="fill: rgb(0%,0%,0%); fill-opacity: 1;">
<use xlink:href="#glyph0-1" x="445.972656" y="409.453125"/>
<use xlink:href="#glyph0-2" x="450.162109" y="409.453125"/>
<use xlink:href="#glyph0-3" x="453.504883" y="409.453125"/>
<use xlink:href="#glyph0-4" x="457.896484" y="409.453125"/>
<use xlink:href="#glyph0-4" x="461.561523" y="409.453125"/>
<use xlink:href="#glyph0-5" x="465.226562" y="409.453125"/>
<use xlink:href="#glyph0-6" x="469.017578" y="409.453125"/>
<use xlink:href="#glyph0-7" x="473.186523" y="409.453125"/>
<use xlink:href="#glyph0-5" x="476.186523" y="409.453125"/>
<use xlink:href="#glyph0-8" x="479.977539" y="409.453125"/>
<use xlink:href="#glyph0-9" x="484.082031" y="409.453125"/>
<use xlink:href="#glyph0-5" x="487.890625" y="409.453125"/>
<use xlink:href="#glyph0-7" x="491.681641" y="409.453125"/>
<use xlink:href="#glyph0-14" x="494.681641" y="409.453125"/>
<use xlink:href="#glyph0-3" x="499.404297" y="409.453125"/>
<use xlink:href="#glyph0-4" x="503.795898" y="409.453125"/>
<use xlink:href="#glyph0-7" x="507.460938" y="409.453125"/>
<use xlink:href="#glyph0-5" x="510.460938" y="409.453125"/>
<use xlink:href="#glyph0-16" x="514.251953" y="409.453125"/>
<use xlink:href="#glyph0-17" x="518.362305" y="409.453125"/>
<use xlink:href="#glyph0-14" x="521.980469" y="409.453125"/>
</g>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(33%,33%,33%); fill-opacity: 1;" d="M 436 280 L 536 280 L 536 400 L 436 400 Z M 436 280 "/>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(47%,47%,47%); fill-opacity: 1;" d="M 436 310 L 536 310 L 536 370 L 436 370 Z M 436 310 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(10%,10%,10%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 436 280 L 536 280 L 536 400 L 436 400 Z M 436 280 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(100%,0%,0%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 436 370 L 437 365 L 438 362 L 439 358 L 440 355 L 441 352 L 442 349 L 443 346 L 444 344 L 445 342 L 446 340 L 447 337 L 448 336 L 449 334 L 450 332 L 451 331 L 452 329 L 453 328 L 454 327 L 455 326 L 456 325 L 457 323 L 458 323 L 459 322 L 460 321 L 461 320 L 462 319 L 463 319 L 464 318 L 465 318 L 466 317 L 467 316 L 468 316 L 469 316 L 470 315 L 471 315 L 472 314 L 473 314 L 474 314 L 475 314 L 476 313 L 477 313 L 478 313 L 479 313 L 480 312 L 481 312 L 482 312 L 483 312 L 484 312 L 485 312 L 486 311 L 487 311 L 488 311 L 489 311 L 490 311 L 491 311 L 492 311 L 493 311 L 494 311 L 495 311 L 496 310 L 497 310 L 498 310 L 499 310 L 500 310 L 501 310 L 502 310 L 503 310 L 504 310 L 505 310 L 506 310 L 507 310 L 508 310 L 509 310 L 510 310 L 511 310 L 512 310 L 513 310 L 514 310 L 515 310 L 516 310 L 517 310 L 518 310 L 519 310 L 520 310 L 521 310 L 522 310 L 523 310 L 524 310 L 525 310 L 526 310 L 527 310 L 528 310 L 529 310 L 530 310 L 531 310 L 532 310 L 533 310 L 534 310 L 535 310 "/>
<g style="fill: rgb(0%,0%,0%); fill-opacity: 1;">
<use xlink:href="#glyph0-1" x="549.34375" y="409.453125"/>
<use xlink:href="#glyph0-2" x="553.533203" y="409.453125"/>
<use xlink:href="#glyph0-3" x="556.875977" y="409.453125"/>
<use xlink:href="#glyph0-4" x="561.267578" y="409.453125"/>
<use xlink:href="#glyph0-4" x="564.932617" y="409.453125"/>
<use xlink:href="#glyph0-5" x="568.597656" y="409.453125"/>
<use xlink:href="#glyph0-6" x="572.388672" y="409.453125"/>
<use xlink:href="#glyph0-7" x="576.557617" y="409.453125"/>
<use xlink:href="#glyph0-5" x="579.557617" y="409.453125"/>
<use xlink:href="#glyph0-8" x="583.348633" y="409.453125"/>
<use xlink:href="#glyph0-9" x="587.453125" y="409.453125"/>
<use xlink:href="#glyph0-5" x="591.261719" y="409.453125"/>
<use xlink:href="#glyph0-7" x="595.052734" y="409.453125"/>
<use xlink:href="#glyph0-10" x="598.052734" y="409.453125"/>
<use xlink:href="#glyph0-11" x="599.822266" y="409.453125"/>
<use xlink:href="#glyph0-7" x="604.310547" y="409.453125"/>
<use xlink:href="#glyph0-14" x="607.310547" y="409.453125"/>
<use xlink:href="#glyph0-3" x="612.033203" y="409.453125"/>
<use xlink:href="#glyph0-4" x="616.424805" y="409.453125"/>
<use xlink:href="#glyph0-7" x="620.089844" y="409.453125"/>
<use xlink:href="#glyph0-5" x="623.089844" y="409.453125"/>
<use xlink:href="#glyph0-16" x="626.880859" y="409.453125"/>
<use xlink:href="#glyph0-17" x="630.991211" y="409.453125"/>
<use xlink:href="#glyph0-14" x="634.609375" y="409.453125"/>
</g>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(33%,33%,33%); fill-opacity: 1;" d="M 544 280 L 644 280 L 644 400 L 544 400 Z M 544 280 "/>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(47%,47%,47%); fill-opacity: 1;" d="M 544 310 L 644 310 L 644 370 L 544 370 Z M 544 310 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(10%,10%,10%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 544 280 L 644 280 L 644 400 L 544 400 Z M 544 280 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(100%,0%,0%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 544 370 L 545 369 L 546 369 L 547 369 L 548 369 L 549 369 L 550 369 L 551 369 L 552 369 L 553 369 L 554 369 L 555 369 L 556 369 L 557 369 L 558 369 L 559 369 L 560 369 L 561 369 L 562 369 L 563 369 L 564 369 L 565 369 L 566 369 L 567 369 L 568 369 L 569 369 L 570 368 L 571 368 L 572 368 L 573 368 L 574 368 L 575 367 L 576 367 L 577 367 L 578 366 L 579 366 L 580 365 L 581 365 L 582 364 L 583 363 L 584 362 L 585 361 L 586 360 L 587 358 L 588 356 L 589 355 L 590 352 L 591 350 L 592 347 L 593 343 L 594 340 L 595 336 L 596 332 L 597 329 L 598 327 L 599 325 L 600 323 L 601 321 L 602 319 L 603 318 L 604 317 L 605 316 L 606 315 L 607 314 L 608 314 L 609 313 L 610 313 L 611 312 L 612 312 L 613 312 L 614 311 L 615 311 L 616 311 L 617 311 L 618 311 L 619 310 L 620 310 L 621 310 L 622 310 L 623 310 L 624 310 L 625 310 L 626 310 L 627 310 L 628 310 L 629 310 L 630 310 L 631 310 L 632 310 L 633 310 L 634 310 L 635 310 L 636 310 L 637 310 L 638 310 L 639 310 L 640 310 L 641 310 L 642 310 L 643 310 "/>
<g style="fill: rgb(0%,0%,0%); fill-opacity: 1;">
<use xlink:href="#glyph0-1" x="18.195312" y="547.453125"/>
<use xlink:href="#glyph0-2" x="22.384766" y="547.453125"/>
<use xlink:href="#glyph0-3" x="25.727539" y="547.453125"/>
<use xlink:href="#glyph0-4" x="30.119141" y="547.453125"/>
<use xlink:href="#glyph0-4" x="33.78418" y="547.453125"/>
<use xlink:href="#glyph0-5" x="37.449219" y="547.453125"/>
<use xlink:href="#glyph0-6" x="41.240234" y="547.453125"/>
<use xlink:href="#glyph0-7" x="45.40918" y="547.453125"/>
<use xlink:href="#glyph0-5" x="48.40918" y="547.453125"/>
<use xlink:href="#glyph0-8" x="52.200195" y="547.453125"/>
<use xlink:href="#glyph0-9" x="56.304688" y="547.453125"/>
<use xlink:href="#glyph0-5" x="60.113281" y="547.453125"/>
<use xlink:href="#glyph0-7" x="63.904297" y="547.453125"/>
<use xlink:href="#glyph0-10" x="66.904297" y="547.453125"/>
<use xlink:href="#glyph0-11" x="68.673828" y="547.453125"/>
<use xlink:href="#glyph0-7" x="73.162109" y="547.453125"/>
<use xlink:href="#glyph0-1" x="76.162109" y="547.453125"/>
<use xlink:href="#glyph0-10" x="80.351562" y="547.453125"/>
<use xlink:href="#glyph0-6" x="82.121094" y="547.453125"/>
<use xlink:href="#glyph0-1" x="86.290039" y="547.453125"/>
</g>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(33%,33%,33%); fill-opacity: 1;" d="M 4 418 L 104 418 L 104 538 L 4 538 Z M 4 418 "/>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(47%,47%,47%); fill-opacity: 1;" d="M 4 448 L 104 448 L 104 508 L 4 508 Z M 4 448 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(10%,10%,10%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 4 418 L 104 418 L 104 538 L 4 538 Z M 4 418 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(100%,0%,0%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 4 508 L 5 507 L 6 507 L 7 507 L 8 507 L 9 507 L 10 507 L 11 507 L 12 507 L 13 507 L 14 507 L 15 507 L 16 507 L 17 507 L 18 507 L 19 507 L 20 507 L 21 507 L 22 507 L 23 506 L 24 506 L 25 506 L 26 506 L 27 506 L 28 506 L 29 506 L 30 505 L 31 505 L 32 505 L 33 505 L 34 505 L 35 505 L 36 504 L 37 504 L 38 504 L 39 504 L 40 503 L 41 503 L 42 503 L 43 503 L 44 502 L 45 502 L 46 502 L 47 502 L 48 501 L 49 501 L 50 501 L 51 500 L 52 500 L 53 500 L 54 499 L 55 499 L 56 499 L 57 498 L 58 498 L 59 498 L 60 497 L 61 497 L 62 496 L 63 496 L 64 495 L 65 495 L 66 495 L 67 494 L 68 494 L 69 493 L 70 493 L 71 492 L 72 491 L 73 491 L 74 490 L 75 490 L 76 489 L 77 489 L 78 488 L 79 487 L 80 486 L 81 486 L 82 485 L 83 484 L 84 483 L 85 483 L 86 482 L 87 481 L 88 480 L 89 479 L 90 478 L 91 477 L 92 476 L 93 475 L 94 474 L 95 472 L 96 471 L 97 470 L 98 468 L 99 466 L 100 464 L 101 462 L 102 459 L 103 456 "/>
<g style="fill: rgb(0%,0%,0%); fill-opacity: 1;">
<use xlink:href="#glyph0-1" x="122.933594" y="547.453125"/>
<use xlink:href="#glyph0-2" x="127.123047" y="547.453125"/>
<use xlink:href="#glyph0-3" x="130.46582" y="547.453125"/>
<use xlink:href="#glyph0-4" x="134.857422" y="547.453125"/>
<use xlink:href="#glyph0-4" x="138.522461" y="547.453125"/>
<use xlink:href="#glyph0-5" x="142.1875" y="547.453125"/>
<use xlink:href="#glyph0-6" x="145.978516" y="547.453125"/>
<use xlink:href="#glyph0-7" x="150.147461" y="547.453125"/>
<use xlink:href="#glyph0-5" x="153.147461" y="547.453125"/>
<use xlink:href="#glyph0-8" x="156.938477" y="547.453125"/>
<use xlink:href="#glyph0-9" x="161.042969" y="547.453125"/>
<use xlink:href="#glyph0-5" x="164.851562" y="547.453125"/>
<use xlink:href="#glyph0-7" x="168.642578" y="547.453125"/>
<use xlink:href="#glyph0-14" x="171.642578" y="547.453125"/>
<use xlink:href="#glyph0-3" x="176.365234" y="547.453125"/>
<use xlink:href="#glyph0-4" x="180.756836" y="547.453125"/>
<use xlink:href="#glyph0-7" x="184.421875" y="547.453125"/>
<use xlink:href="#glyph0-1" x="187.421875" y="547.453125"/>
<use xlink:href="#glyph0-10" x="191.611328" y="547.453125"/>
<use xlink:href="#glyph0-6" x="193.380859" y="547.453125"/>
<use xlink:href="#glyph0-1" x="197.549805" y="547.453125"/>
</g>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(33%,33%,33%); fill-opacity: 1;" d="M 112 418 L 212 418 L 212 538 L 112 538 Z M 112 418 "/>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(47%,47%,47%); fill-opacity: 1;" d="M 112 448 L 212 448 L 212 508 L 112 508 Z M 112 448 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(10%,10%,10%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 112 418 L 212 418 L 212 538 L 112 538 Z M 112 418 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(100%,0%,0%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 112 508 L 113 499 L 114 496 L 115 493 L 116 491 L 117 489 L 118 487 L 119 485 L 120 484 L 121 483 L 122 481 L 123 480 L 124 479 L 125 478 L 126 477 L 127 476 L 128 475 L 129 474 L 130 473 L 131 472 L 132 472 L 133 471 L 134 470 L 135 469 L 136 469 L 137 468 L 138 467 L 139 466 L 140 466 L 141 465 L 142 465 L 143 464 L 144 464 L 145 463 L 146 462 L 147 462 L 148 461 L 149 461 L 150 460 L 151 460 L 152 459 L 153 459 L 154 459 L 155 458 L 156 458 L 157 457 L 158 457 L 159 457 L 160 456 L 161 456 L 162 456 L 163 455 L 164 455 L 165 455 L 166 454 L 167 454 L 168 454 L 169 453 L 170 453 L 171 453 L 172 453 L 173 452 L 174 452 L 175 452 L 176 452 L 177 451 L 178 451 L 179 451 L 180 451 L 181 450 L 182 450 L 183 450 L 184 450 L 185 450 L 186 450 L 187 449 L 188 449 L 189 449 L 190 449 L 191 449 L 192 449 L 193 449 L 194 448 L 195 448 L 196 448 L 197 448 L 198 448 L 199 448 L 200 448 L 201 448 L 202 448 L 203 448 L 204 448 L 205 448 L 206 448 L 207 448 L 208 448 L 209 448 L 210 448 L 211 448 "/>
<g style="fill: rgb(0%,0%,0%); fill-opacity: 1;">
<use xlink:href="#glyph0-1" x="226.304688" y="547.453125"/>
<use xlink:href="#glyph0-2" x="230.494141" y="547.453125"/>
<use xlink:href="#glyph0-3" x="233.836914" y="547.453125"/>
<use xlink:href="#glyph0-4" x="238.228516" y="547.453125"/>
<use xlink:href="#glyph0-4" x="241.893555" y="547.453125"/>
<use xlink:href="#glyph0-5" x="245.558594" y="547.453125"/>
<use xlink:href="#glyph0-6" x="249.349609" y="547.453125"/>
<use xlink:href="#glyph0-7" x="253.518555" y="547.453125"/>
<use xlink:href="#glyph0-5" x="256.518555" y="547.453125"/>
<use xlink:href="#glyph0-8" x="260.30957" y="547.453125"/>
<use xlink:href="#glyph0-9" x="264.414062" y="547.453125"/>
<use xlink:href="#glyph0-5" x="268.222656" y="547.453125"/>
<use xlink:href="#glyph0-7" x="272.013672" y="547.453125"/>
<use xlink:href="#glyph0-10" x="275.013672" y="547.453125"/>
<use xlink:href="#glyph0-11" x="276.783203" y="547.453125"/>
<use xlink:href="#glyph0-7" x="281.271484" y="547.453125"/>
<use xlink:href="#glyph0-14" x="284.271484" y="547.453125"/>
<use xlink:href="#glyph0-3" x="288.994141" y="547.453125"/>
<use xlink:href="#glyph0-4" x="293.385742" y="547.453125"/>
<use xlink:href="#glyph0-7" x="297.050781" y="547.453125"/>
<use xlink:href="#glyph0-1" x="300.050781" y="547.453125"/>
<use xlink:href="#glyph0-10" x="304.240234" y="547.453125"/>
<use xlink:href="#glyph0-6" x="306.009766" y="547.453125"/>
<use xlink:href="#glyph0-1" x="310.178711" y="547.453125"/>
</g>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(33%,33%,33%); fill-opacity: 1;" d="M 220 418 L 320 418 L 320 538 L 220 538 Z M 220 418 "/>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(47%,47%,47%); fill-opacity: 1;" d="M 220 448 L 320 448 L 320 508 L 220 508 Z M 220 448 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(10%,10%,10%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 220 418 L 320 418 L 320 538 L 220 538 Z M 220 418 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(100%,0%,0%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 220 508 L 221 507 L 222 507 L 223 507 L 224 507 L 225 507 L 226 507 L 227 507 L 228 507 L 229 507 L 230 507 L 231 507 L 232 507 L 233 506 L 234 506 L 235 506 L 236 506 L 237 506 L 238 505 L 239 505 L 240 505 L 241 505 L 242 504 L 243 504 L 244 504 L 245 503 L 246 503 L 247 503 L 248 502 L 249 502 L 250 501 L 251 501 L 252 501 L 253 500 L 254 499 L 255 499 L 256 498 L 257 498 L 258 497 L 259 496 L 260 495 L 261 495 L 262 494 L 263 493 L 264 492 L 265 491 L 266 489 L 267 488 L 268 486 L 269 483 L 270 478 L 271 472 L 272 469 L 273 467 L 274 466 L 275 464 L 276 463 L 277 462 L 278 461 L 279 460 L 280 459 L 281 459 L 282 458 L 283 457 L 284 457 L 285 456 L 286 456 L 287 455 L 288 454 L 289 454 L 290 453 L 291 453 L 292 453 L 293 452 L 294 452 L 295 452 L 296 451 L 297 451 L 298 451 L 299 450 L 300 450 L 301 450 L 302 450 L 303 449 L 304 449 L 305 449 L 306 449 L 307 449 L 308 448 L 309 448 L 310 448 L 311 448 L 312 448 L 313 448 L 314 448 L 315 448 L 316 448 L 317 448 L 318 448 L 319 448 "/>
<g style="fill: rgb(0%,0%,0%); fill-opacity: 1;">
<use xlink:href="#glyph0-1" x="337.019531" y="547.453125"/>
<use xlink:href="#glyph0-2" x="341.208984" y="547.453125"/>
<use xlink:href="#glyph0-3" x="344.551758" y="547.453125"/>
<use xlink:href="#glyph0-4" x="348.943359" y="547.453125"/>
<use xlink:href="#glyph0-4" x="352.608398" y="547.453125"/>
<use xlink:href="#glyph0-5" x="356.273438" y="547.453125"/>
<use xlink:href="#glyph0-6" x="360.064453" y="547.453125"/>
<use xlink:href="#glyph0-7" x="364.233398" y="547.453125"/>
<use xlink:href="#glyph0-5" x="367.233398" y="547.453125"/>
<use xlink:href="#glyph0-8" x="371.024414" y="547.453125"/>
<use xlink:href="#glyph0-9" x="375.128906" y="547.453125"/>
<use xlink:href="#glyph0-5" x="378.9375" y="547.453125"/>
<use xlink:href="#glyph0-7" x="382.728516" y="547.453125"/>
<use xlink:href="#glyph0-10" x="385.728516" y="547.453125"/>
<use xlink:href="#glyph0-11" x="387.498047" y="547.453125"/>
<use xlink:href="#glyph0-7" x="391.986328" y="547.453125"/>
<use xlink:href="#glyph0-5" x="394.986328" y="547.453125"/>
<use xlink:href="#glyph0-2" x="398.777344" y="547.453125"/>
<use xlink:href="#glyph0-8" x="402.120117" y="547.453125"/>
<use xlink:href="#glyph0-9" x="406.224609" y="547.453125"/>
<use xlink:href="#glyph0-4" x="410.033203" y="547.453125"/>
<use xlink:href="#glyph0-10" x="413.698242" y="547.453125"/>
<use xlink:href="#glyph0-1" x="415.467773" y="547.453125"/>
</g>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(33%,33%,33%); fill-opacity: 1;" d="M 328 418 L 428 418 L 428 538 L 328 538 Z M 328 418 "/>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(47%,47%,47%); fill-opacity: 1;" d="M 328 448 L 428 448 L 428 508 L 328 508 Z M 328 448 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(10%,10%,10%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 328 418 L 428 418 L 428 538 L 328 538 Z M 328 418 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(100%,0%,0%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 328 508 L 329 508 L 330 508 L 331 507 L 332 507 L 333 507 L 334 507 L 335 507 L 336 507 L 337 507 L 338 507 L 339 507 L 340 507 L 341 507 L 342 507 L 343 507 L 344 507 L 345 507 L 346 508 L 347 508 L 348 508 L 349 508 L 350 508 L 351 508 L 352 508 L 353 508 L 354 508 L 355 508 L 356 508 L 357 508 L 358 508 L 359 508 L 360 508 L 361 507 L 362 507 L 363 507 L 364 507 L 365 507 L 366 507 L 367 507 L 368 507 L 369 507 L 370 507 L 371 507 L 372 507 L 373 507 L 374 507 L 375 507 L 376 508 L 377 508 L 378 508 L 379 509 L 380 509 L 381 510 L 382 510 L 383 510 L 384 510 L 385 510 L 386 510 L 387 510 L 388 509 L 389 509 L 390 508 L 391 507 L 392 506 L 393 505 L 394 504 L 395 503 L 396 502 L 397 501 L 398 500 L 399 500 L 400 500 L 401 500 L 402 501 L 403 502 L 404 504 L 405 506 L 406 509 L 407 512 L 408 515 L 409 518 L 410 521 L 411 524 L 412 527 L 413 529 L 414 530 L 415 530 L 416 529 L 417 526 L 418 523 L 419 517 L 420 511 L 421 504 L 422 495 L 423 486 L 424 477 L 425 468 L 426 460 L 427 453 "/>
<g style="fill: rgb(0%,0%,0%); fill-opacity: 1;">
<use xlink:href="#glyph0-1" x="441.757812" y="547.453125"/>
<use xlink:href="#glyph0-2" x="445.947266" y="547.453125"/>
<use xlink:href="#glyph0-3" x="449.290039" y="547.453125"/>
<use xlink:href="#glyph0-4" x="453.681641" y="547.453125"/>
<use xlink:href="#glyph0-4" x="457.34668" y="547.453125"/>
<use xlink:href="#glyph0-5" x="461.011719" y="547.453125"/>
<use xlink:href="#glyph0-6" x="464.802734" y="547.453125"/>
<use xlink:href="#glyph0-7" x="468.97168" y="547.453125"/>
<use xlink:href="#glyph0-5" x="471.97168" y="547.453125"/>
<use xlink:href="#glyph0-8" x="475.762695" y="547.453125"/>
<use xlink:href="#glyph0-9" x="479.867188" y="547.453125"/>
<use xlink:href="#glyph0-5" x="483.675781" y="547.453125"/>
<use xlink:href="#glyph0-7" x="487.466797" y="547.453125"/>
<use xlink:href="#glyph0-14" x="490.466797" y="547.453125"/>
<use xlink:href="#glyph0-3" x="495.189453" y="547.453125"/>
<use xlink:href="#glyph0-4" x="499.581055" y="547.453125"/>
<use xlink:href="#glyph0-7" x="503.246094" y="547.453125"/>
<use xlink:href="#glyph0-5" x="506.246094" y="547.453125"/>
<use xlink:href="#glyph0-2" x="510.037109" y="547.453125"/>
<use xlink:href="#glyph0-8" x="513.379883" y="547.453125"/>
<use xlink:href="#glyph0-9" x="517.484375" y="547.453125"/>
<use xlink:href="#glyph0-4" x="521.292969" y="547.453125"/>
<use xlink:href="#glyph0-10" x="524.958008" y="547.453125"/>
<use xlink:href="#glyph0-1" x="526.727539" y="547.453125"/>
</g>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(33%,33%,33%); fill-opacity: 1;" d="M 436 418 L 536 418 L 536 538 L 436 538 Z M 436 418 "/>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(47%,47%,47%); fill-opacity: 1;" d="M 436 448 L 536 448 L 536 508 L 436 508 Z M 436 448 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(10%,10%,10%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 436 418 L 536 418 L 536 538 L 436 538 Z M 436 418 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(100%,0%,0%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 436 508 L 437 502 L 438 495 L 439 487 L 440 478 L 441 469 L 442 460 L 443 451 L 444 444 L 445 438 L 446 433 L 447 429 L 448 426 L 449 425 L 450 425 L 451 426 L 452 428 L 453 431 L 454 434 L 455 437 L 456 440 L 457 443 L 458 446 L 459 449 L 460 451 L 461 453 L 462 454 L 463 455 L 464 455 L 465 455 L 466 455 L 467 454 L 468 453 L 469 452 L 470 451 L 471 450 L 472 449 L 473 448 L 474 447 L 475 446 L 476 446 L 477 445 L 478 445 L 479 445 L 480 445 L 481 445 L 482 445 L 483 445 L 484 446 L 485 446 L 486 447 L 487 447 L 488 447 L 489 448 L 490 448 L 491 448 L 492 448 L 493 448 L 494 448 L 495 448 L 496 448 L 497 448 L 498 448 L 499 448 L 500 448 L 501 448 L 502 448 L 503 448 L 504 447 L 505 447 L 506 447 L 507 447 L 508 447 L 509 447 L 510 447 L 511 447 L 512 447 L 513 447 L 514 447 L 515 447 L 516 447 L 517 447 L 518 447 L 519 448 L 520 448 L 521 448 L 522 448 L 523 448 L 524 448 L 525 448 L 526 448 L 527 448 L 528 448 L 529 448 L 530 448 L 531 448 L 532 448 L 533 448 L 534 447 L 535 447 "/>
<g style="fill: rgb(0%,0%,0%); fill-opacity: 1;">
<use xlink:href="#glyph0-1" x="545.128906" y="547.453125"/>
<use xlink:href="#glyph0-2" x="549.318359" y="547.453125"/>
<use xlink:href="#glyph0-3" x="552.661133" y="547.453125"/>
<use xlink:href="#glyph0-4" x="557.052734" y="547.453125"/>
<use xlink:href="#glyph0-4" x="560.717773" y="547.453125"/>
<use xlink:href="#glyph0-5" x="564.382812" y="547.453125"/>
<use xlink:href="#glyph0-6" x="568.173828" y="547.453125"/>
<use xlink:href="#glyph0-7" x="572.342773" y="547.453125"/>
<use xlink:href="#glyph0-5" x="575.342773" y="547.453125"/>
<use xlink:href="#glyph0-8" x="579.133789" y="547.453125"/>
<use xlink:href="#glyph0-9" x="583.238281" y="547.453125"/>
<use xlink:href="#glyph0-5" x="587.046875" y="547.453125"/>
<use xlink:href="#glyph0-7" x="590.837891" y="547.453125"/>
<use xlink:href="#glyph0-10" x="593.837891" y="547.453125"/>
<use xlink:href="#glyph0-11" x="595.607422" y="547.453125"/>
<use xlink:href="#glyph0-7" x="600.095703" y="547.453125"/>
<use xlink:href="#glyph0-14" x="603.095703" y="547.453125"/>
<use xlink:href="#glyph0-3" x="607.818359" y="547.453125"/>
<use xlink:href="#glyph0-4" x="612.209961" y="547.453125"/>
<use xlink:href="#glyph0-7" x="615.875" y="547.453125"/>
<use xlink:href="#glyph0-5" x="618.875" y="547.453125"/>
<use xlink:href="#glyph0-2" x="622.666016" y="547.453125"/>
<use xlink:href="#glyph0-8" x="626.008789" y="547.453125"/>
<use xlink:href="#glyph0-9" x="630.113281" y="547.453125"/>
<use xlink:href="#glyph0-4" x="633.921875" y="547.453125"/>
<use xlink:href="#glyph0-10" x="637.586914" y="547.453125"/>
<use xlink:href="#glyph0-1" x="639.356445" y="547.453125"/>
</g>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(33%,33%,33%); fill-opacity: 1;" d="M 544 418 L 644 418 L 644 538 L 544 538 Z M 544 418 "/>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(47%,47%,47%); fill-opacity: 1;" d="M 544 448 L 644 448 L 644 508 L 544 508 Z M 544 448 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(10%,10%,10%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 544 418 L 644 418 L 644 538 L 544 538 Z M 544 418 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(100%,0%,0%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 544 507 L 545 507 L 546 507 L 547 507 L 548 507 L 549 507 L 550 507 L 551 507 L 552 507 L 553 507 L 554 507 L 555 508 L 556 508 L 557 508 L 558 508 L 559 508 L 560 508 L 561 508 L 562 508 L 563 508 L 564 508 L 565 508 L 566 507 L 567 507 L 568 507 L 569 507 L 570 507 L 571 506 L 572 506 L 573 506 L 574 506 L 575 506 L 576 507 L 577 507 L 578 508 L 579 509 L 580 511 L 581 512 L 582 513 L 583 514 L 584 515 L 585 514 L 586 514 L 587 512 L 588 509 L 589 505 L 590 500 L 591 494 L 592 488 L 593 482 L 594 478 L 595 473 L 596 467 L 597 461 L 598 455 L 599 450 L 600 446 L 601 443 L 602 441 L 603 441 L 604 440 L 605 441 L 606 442 L 607 443 L 608 444 L 609 446 L 610 447 L 611 448 L 612 448 L 613 449 L 614 449 L 615 449 L 616 449 L 617 449 L 618 448 L 619 448 L 620 448 L 621 448 L 622 448 L 623 447 L 624 447 L 625 447 L 626 447 L 627 447 L 628 447 L 629 447 L 630 447 L 631 447 L 632 447 L 633 447 L 634 448 L 635 448 L 636 448 L 637 448 L 638 448 L 639 448 L 640 448 L 641 448 L 642 448 L 643 448 "/>
<g style="fill: rgb(0%,0%,0%); fill-opacity: 1;">
<use xlink:href="#glyph0-1" x="16.953125" y="685.453125"/>
<use xlink:href="#glyph0-2" x="21.142578" y="685.453125"/>
<use xlink:href="#glyph0-3" x="24.485352" y="685.453125"/>
<use xlink:href="#glyph0-4" x="28.876953" y="685.453125"/>
<use xlink:href="#glyph0-4" x="32.541992" y="685.453125"/>
<use xlink:href="#glyph0-5" x="36.207031" y="685.453125"/>
<use xlink:href="#glyph0-6" x="39.998047" y="685.453125"/>
<use xlink:href="#glyph0-7" x="44.166992" y="685.453125"/>
<use xlink:href="#glyph0-5" x="47.166992" y="685.453125"/>
<use xlink:href="#glyph0-8" x="50.958008" y="685.453125"/>
<use xlink:href="#glyph0-9" x="55.0625" y="685.453125"/>
<use xlink:href="#glyph0-5" x="58.871094" y="685.453125"/>
<use xlink:href="#glyph0-7" x="62.662109" y="685.453125"/>
<use xlink:href="#glyph0-10" x="65.662109" y="685.453125"/>
<use xlink:href="#glyph0-11" x="67.431641" y="685.453125"/>
<use xlink:href="#glyph0-7" x="71.919922" y="685.453125"/>
<use xlink:href="#glyph0-15" x="74.919922" y="685.453125"/>
<use xlink:href="#glyph0-8" x="79.036133" y="685.453125"/>
<use xlink:href="#glyph0-1" x="83.140625" y="685.453125"/>
<use xlink:href="#glyph0-18" x="87.330078" y="685.453125"/>
</g>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(33%,33%,33%); fill-opacity: 1;" d="M 4 556 L 104 556 L 104 676 L 4 676 Z M 4 556 "/>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(47%,47%,47%); fill-opacity: 1;" d="M 4 586 L 104 586 L 104 646 L 4 646 Z M 4 586 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(10%,10%,10%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 4 556 L 104 556 L 104 676 L 4 676 Z M 4 556 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(100%,0%,0%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 4 646 L 5 646 L 6 646 L 7 646 L 8 646 L 9 646 L 10 646 L 11 646 L 12 646 L 13 646 L 14 646 L 15 647 L 16 647 L 17 647 L 18 647 L 19 647 L 20 647 L 21 648 L 22 648 L 23 648 L 24 648 L 25 649 L 26 649 L 27 649 L 28 649 L 29 649 L 30 650 L 31 650 L 32 650 L 33 650 L 34 650 L 35 650 L 36 651 L 37 651 L 38 651 L 39 651 L 40 651 L 41 651 L 42 651 L 43 651 L 44 651 L 45 651 L 46 652 L 47 651 L 48 651 L 49 651 L 50 651 L 51 651 L 52 651 L 53 651 L 54 651 L 55 651 L 56 650 L 57 650 L 58 650 L 59 649 L 60 649 L 61 649 L 62 648 L 63 648 L 64 647 L 65 647 L 66 646 L 67 645 L 68 645 L 69 644 L 70 643 L 71 643 L 72 642 L 73 641 L 74 640 L 75 639 L 76 638 L 77 637 L 78 636 L 79 635 L 80 633 L 81 632 L 82 631 L 83 629 L 84 628 L 85 626 L 86 625 L 87 623 L 88 621 L 89 620 L 90 618 L 91 616 L 92 614 L 93 612 L 94 610 L 95 608 L 96 606 L 97 603 L 98 601 L 99 599 L 100 596 L 101 594 L 102 591 L 103 588 "/>
<g style="fill: rgb(0%,0%,0%); fill-opacity: 1;">
<use xlink:href="#glyph0-1" x="121.691406" y="685.453125"/>
<use xlink:href="#glyph0-2" x="125.880859" y="685.453125"/>
<use xlink:href="#glyph0-3" x="129.223633" y="685.453125"/>
<use xlink:href="#glyph0-4" x="133.615234" y="685.453125"/>
<use xlink:href="#glyph0-4" x="137.280273" y="685.453125"/>
<use xlink:href="#glyph0-5" x="140.945312" y="685.453125"/>
<use xlink:href="#glyph0-6" x="144.736328" y="685.453125"/>
<use xlink:href="#glyph0-7" x="148.905273" y="685.453125"/>
<use xlink:href="#glyph0-5" x="151.905273" y="685.453125"/>
<use xlink:href="#glyph0-8" x="155.696289" y="685.453125"/>
<use xlink:href="#glyph0-9" x="159.800781" y="685.453125"/>
<use xlink:href="#glyph0-5" x="163.609375" y="685.453125"/>
<use xlink:href="#glyph0-7" x="167.400391" y="685.453125"/>
<use xlink:href="#glyph0-14" x="170.400391" y="685.453125"/>
<use xlink:href="#glyph0-3" x="175.123047" y="685.453125"/>
<use xlink:href="#glyph0-4" x="179.514648" y="685.453125"/>
<use xlink:href="#glyph0-7" x="183.179688" y="685.453125"/>
<use xlink:href="#glyph0-15" x="186.179688" y="685.453125"/>
<use xlink:href="#glyph0-8" x="190.295898" y="685.453125"/>
<use xlink:href="#glyph0-1" x="194.400391" y="685.453125"/>
<use xlink:href="#glyph0-18" x="198.589844" y="685.453125"/>
</g>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(33%,33%,33%); fill-opacity: 1;" d="M 112 556 L 212 556 L 212 676 L 112 676 Z M 112 556 "/>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(47%,47%,47%); fill-opacity: 1;" d="M 112 586 L 212 586 L 212 646 L 112 646 Z M 112 586 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(10%,10%,10%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 112 556 L 212 556 L 212 676 L 112 676 Z M 112 556 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(100%,0%,0%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 112 645 L 113 643 L 114 640 L 115 637 L 116 635 L 117 632 L 118 630 L 119 628 L 120 625 L 121 623 L 122 621 L 123 619 L 124 617 L 125 615 L 126 613 L 127 611 L 128 610 L 129 608 L 130 606 L 131 605 L 132 603 L 133 602 L 134 600 L 135 599 L 136 598 L 137 596 L 138 595 L 139 594 L 140 593 L 141 592 L 142 591 L 143 590 L 144 589 L 145 588 L 146 588 L 147 587 L 148 586 L 149 586 L 150 585 L 151 584 L 152 584 L 153 583 L 154 583 L 155 582 L 156 582 L 157 582 L 158 581 L 159 581 L 160 581 L 161 580 L 162 580 L 163 580 L 164 580 L 165 580 L 166 580 L 167 580 L 168 580 L 169 580 L 170 579 L 171 580 L 172 580 L 173 580 L 174 580 L 175 580 L 176 580 L 177 580 L 178 580 L 179 580 L 180 580 L 181 581 L 182 581 L 183 581 L 184 581 L 185 581 L 186 581 L 187 582 L 188 582 L 189 582 L 190 582 L 191 582 L 192 583 L 193 583 L 194 583 L 195 583 L 196 584 L 197 584 L 198 584 L 199 584 L 200 584 L 201 584 L 202 585 L 203 585 L 204 585 L 205 585 L 206 585 L 207 585 L 208 585 L 209 585 L 210 585 L 211 585 "/>
<g style="fill: rgb(0%,0%,0%); fill-opacity: 1;">
<use xlink:href="#glyph0-1" x="225.0625" y="685.453125"/>
<use xlink:href="#glyph0-2" x="229.251953" y="685.453125"/>
<use xlink:href="#glyph0-3" x="232.594727" y="685.453125"/>
<use xlink:href="#glyph0-4" x="236.986328" y="685.453125"/>
<use xlink:href="#glyph0-4" x="240.651367" y="685.453125"/>
<use xlink:href="#glyph0-5" x="244.316406" y="685.453125"/>
<use xlink:href="#glyph0-6" x="248.107422" y="685.453125"/>
<use xlink:href="#glyph0-7" x="252.276367" y="685.453125"/>
<use xlink:href="#glyph0-5" x="255.276367" y="685.453125"/>
<use xlink:href="#glyph0-8" x="259.067383" y="685.453125"/>
<use xlink:href="#glyph0-9" x="263.171875" y="685.453125"/>
<use xlink:href="#glyph0-5" x="266.980469" y="685.453125"/>
<use xlink:href="#glyph0-7" x="270.771484" y="685.453125"/>
<use xlink:href="#glyph0-10" x="273.771484" y="685.453125"/>
<use xlink:href="#glyph0-11" x="275.541016" y="685.453125"/>
<use xlink:href="#glyph0-7" x="280.029297" y="685.453125"/>
<use xlink:href="#glyph0-14" x="283.029297" y="685.453125"/>
<use xlink:href="#glyph0-3" x="287.751953" y="685.453125"/>
<use xlink:href="#glyph0-4" x="292.143555" y="685.453125"/>
<use xlink:href="#glyph0-7" x="295.808594" y="685.453125"/>
<use xlink:href="#glyph0-15" x="298.808594" y="685.453125"/>
<use xlink:href="#glyph0-8" x="302.924805" y="685.453125"/>
<use xlink:href="#glyph0-1" x="307.029297" y="685.453125"/>
<use xlink:href="#glyph0-18" x="311.21875" y="685.453125"/>
</g>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(33%,33%,33%); fill-opacity: 1;" d="M 220 556 L 320 556 L 320 676 L 220 676 Z M 220 556 "/>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(47%,47%,47%); fill-opacity: 1;" d="M 220 586 L 320 586 L 320 646 L 220 646 Z M 220 586 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(10%,10%,10%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 220 556 L 320 556 L 320 676 L 220 676 Z M 220 556 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(100%,0%,0%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 220 646 L 221 646 L 222 646 L 223 646 L 224 646 L 225 646 L 226 646 L 227 647 L 228 647 L 229 647 L 230 648 L 231 648 L 232 648 L 233 649 L 234 649 L 235 650 L 236 650 L 237 650 L 238 651 L 239 651 L 240 651 L 241 651 L 242 651 L 243 651 L 244 652 L 245 651 L 246 651 L 247 651 L 248 651 L 249 651 L 250 650 L 251 650 L 252 649 L 253 648 L 254 648 L 255 647 L 256 646 L 257 644 L 258 643 L 259 642 L 260 640 L 261 638 L 262 637 L 263 634 L 264 632 L 265 630 L 266 627 L 267 625 L 268 622 L 269 619 L 270 616 L 271 612 L 272 609 L 273 606 L 274 604 L 275 601 L 276 599 L 277 597 L 278 594 L 279 593 L 280 591 L 281 589 L 282 588 L 283 587 L 284 585 L 285 584 L 286 583 L 287 583 L 288 582 L 289 581 L 290 581 L 291 580 L 292 580 L 293 580 L 294 580 L 295 580 L 296 579 L 297 580 L 298 580 L 299 580 L 300 580 L 301 580 L 302 580 L 303 581 L 304 581 L 305 581 L 306 582 L 307 582 L 308 583 L 309 583 L 310 583 L 311 584 L 312 584 L 313 584 L 314 585 L 315 585 L 316 585 L 317 585 L 318 585 L 319 585 "/>
<g style="fill: rgb(0%,0%,0%); fill-opacity: 1;">
<use xlink:href="#glyph0-1" x="336.53125" y="685.453125"/>
<use xlink:href="#glyph0-2" x="340.720703" y="685.453125"/>
<use xlink:href="#glyph0-3" x="344.063477" y="685.453125"/>
<use xlink:href="#glyph0-4" x="348.455078" y="685.453125"/>
<use xlink:href="#glyph0-4" x="352.120117" y="685.453125"/>
<use xlink:href="#glyph0-5" x="355.785156" y="685.453125"/>
<use xlink:href="#glyph0-6" x="359.576172" y="685.453125"/>
<use xlink:href="#glyph0-7" x="363.745117" y="685.453125"/>
<use xlink:href="#glyph0-5" x="366.745117" y="685.453125"/>
<use xlink:href="#glyph0-8" x="370.536133" y="685.453125"/>
<use xlink:href="#glyph0-9" x="374.640625" y="685.453125"/>
<use xlink:href="#glyph0-5" x="378.449219" y="685.453125"/>
<use xlink:href="#glyph0-7" x="382.240234" y="685.453125"/>
<use xlink:href="#glyph0-10" x="385.240234" y="685.453125"/>
<use xlink:href="#glyph0-11" x="387.009766" y="685.453125"/>
<use xlink:href="#glyph0-7" x="391.498047" y="685.453125"/>
<use xlink:href="#glyph0-15" x="394.498047" y="685.453125"/>
<use xlink:href="#glyph0-14" x="398.614258" y="685.453125"/>
<use xlink:href="#glyph0-3" x="403.336914" y="685.453125"/>
<use xlink:href="#glyph0-11" x="407.728516" y="685.453125"/>
<use xlink:href="#glyph0-1" x="412.216797" y="685.453125"/>
<use xlink:href="#glyph0-5" x="416.40625" y="685.453125"/>
</g>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(33%,33%,33%); fill-opacity: 1;" d="M 328 556 L 428 556 L 428 676 L 328 676 Z M 328 556 "/>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(47%,47%,47%); fill-opacity: 1;" d="M 328 586 L 428 586 L 428 646 L 328 646 Z M 328 586 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(10%,10%,10%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 328 556 L 428 556 L 428 676 L 328 676 Z M 328 556 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(100%,0%,0%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 328 645 L 329 645 L 330 645 L 331 645 L 332 645 L 333 645 L 334 645 L 335 645 L 336 645 L 337 645 L 338 645 L 339 644 L 340 643 L 341 643 L 342 643 L 343 642 L 344 642 L 345 642 L 346 642 L 347 642 L 348 642 L 349 642 L 350 642 L 351 643 L 352 643 L 353 644 L 354 645 L 355 645 L 356 644 L 357 643 L 358 641 L 359 640 L 360 639 L 361 638 L 362 636 L 363 635 L 364 635 L 365 634 L 366 633 L 367 632 L 368 632 L 369 631 L 370 631 L 371 631 L 372 631 L 373 631 L 374 631 L 375 631 L 376 631 L 377 631 L 378 631 L 379 632 L 380 632 L 381 633 L 382 634 L 383 635 L 384 636 L 385 637 L 386 638 L 387 639 L 388 640 L 389 641 L 390 643 L 391 644 L 392 644 L 393 641 L 394 638 L 395 635 L 396 632 L 397 629 L 398 626 L 399 624 L 400 621 L 401 619 L 402 616 L 403 614 L 404 612 L 405 610 L 406 607 L 407 606 L 408 604 L 409 602 L 410 600 L 411 599 L 412 597 L 413 596 L 414 594 L 415 593 L 416 592 L 417 591 L 418 590 L 419 589 L 420 588 L 421 588 L 422 587 L 423 587 L 424 586 L 425 586 L 426 586 L 427 586 "/>
<g style="fill: rgb(0%,0%,0%); fill-opacity: 1;">
<use xlink:href="#glyph0-1" x="441.269531" y="685.453125"/>
<use xlink:href="#glyph0-2" x="445.458984" y="685.453125"/>
<use xlink:href="#glyph0-3" x="448.801758" y="685.453125"/>
<use xlink:href="#glyph0-4" x="453.193359" y="685.453125"/>
<use xlink:href="#glyph0-4" x="456.858398" y="685.453125"/>
<use xlink:href="#glyph0-5" x="460.523438" y="685.453125"/>
<use xlink:href="#glyph0-6" x="464.314453" y="685.453125"/>
<use xlink:href="#glyph0-7" x="468.483398" y="685.453125"/>
<use xlink:href="#glyph0-5" x="471.483398" y="685.453125"/>
<use xlink:href="#glyph0-8" x="475.274414" y="685.453125"/>
<use xlink:href="#glyph0-9" x="479.378906" y="685.453125"/>
<use xlink:href="#glyph0-5" x="483.1875" y="685.453125"/>
<use xlink:href="#glyph0-7" x="486.978516" y="685.453125"/>
<use xlink:href="#glyph0-14" x="489.978516" y="685.453125"/>
<use xlink:href="#glyph0-3" x="494.701172" y="685.453125"/>
<use xlink:href="#glyph0-4" x="499.092773" y="685.453125"/>
<use xlink:href="#glyph0-7" x="502.757812" y="685.453125"/>
<use xlink:href="#glyph0-15" x="505.757812" y="685.453125"/>
<use xlink:href="#glyph0-14" x="509.874023" y="685.453125"/>
<use xlink:href="#glyph0-3" x="514.59668" y="685.453125"/>
<use xlink:href="#glyph0-11" x="518.988281" y="685.453125"/>
<use xlink:href="#glyph0-1" x="523.476562" y="685.453125"/>
<use xlink:href="#glyph0-5" x="527.666016" y="685.453125"/>
</g>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(33%,33%,33%); fill-opacity: 1;" d="M 436 556 L 536 556 L 536 676 L 436 676 Z M 436 556 "/>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(47%,47%,47%); fill-opacity: 1;" d="M 436 586 L 536 586 L 536 646 L 436 646 Z M 436 586 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(10%,10%,10%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 436 556 L 536 556 L 536 676 L 436 676 Z M 436 556 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(100%,0%,0%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 436 646 L 437 645 L 438 645 L 439 645 L 440 645 L 441 644 L 442 644 L 443 643 L 444 643 L 445 642 L 446 641 L 447 640 L 448 639 L 449 638 L 450 637 L 451 635 L 452 634 L 453 632 L 454 631 L 455 629 L 456 627 L 457 625 L 458 624 L 459 621 L 460 619 L 461 617 L 462 615 L 463 612 L 464 610 L 465 607 L 466 605 L 467 602 L 468 599 L 469 596 L 470 593 L 471 590 L 472 587 L 473 587 L 474 588 L 475 590 L 476 591 L 477 592 L 478 593 L 479 594 L 480 595 L 481 596 L 482 597 L 483 598 L 484 599 L 485 599 L 486 600 L 487 600 L 488 600 L 489 600 L 490 600 L 491 600 L 492 600 L 493 600 L 494 600 L 495 600 L 496 599 L 497 599 L 498 598 L 499 597 L 500 596 L 501 596 L 502 595 L 503 593 L 504 592 L 505 591 L 506 590 L 507 588 L 508 587 L 509 586 L 510 586 L 511 587 L 512 588 L 513 588 L 514 589 L 515 589 L 516 589 L 517 589 L 518 589 L 519 589 L 520 589 L 521 589 L 522 588 L 523 588 L 524 588 L 525 587 L 526 586 L 527 586 L 528 586 L 529 586 L 530 586 L 531 586 L 532 586 L 533 586 L 534 586 L 535 586 "/>
<g style="fill: rgb(0%,0%,0%); fill-opacity: 1;">
<use xlink:href="#glyph0-1" x="544.640625" y="685.453125"/>
<use xlink:href="#glyph0-2" x="548.830078" y="685.453125"/>
<use xlink:href="#glyph0-3" x="552.172852" y="685.453125"/>
<use xlink:href="#glyph0-4" x="556.564453" y="685.453125"/>
<use xlink:href="#glyph0-4" x="560.229492" y="685.453125"/>
<use xlink:href="#glyph0-5" x="563.894531" y="685.453125"/>
<use xlink:href="#glyph0-6" x="567.685547" y="685.453125"/>
<use xlink:href="#glyph0-7" x="571.854492" y="685.453125"/>
<use xlink:href="#glyph0-5" x="574.854492" y="685.453125"/>
<use xlink:href="#glyph0-8" x="578.645508" y="685.453125"/>
<use xlink:href="#glyph0-9" x="582.75" y="685.453125"/>
<use xlink:href="#glyph0-5" x="586.558594" y="685.453125"/>
<use xlink:href="#glyph0-7" x="590.349609" y="685.453125"/>
<use xlink:href="#glyph0-10" x="593.349609" y="685.453125"/>
<use xlink:href="#glyph0-11" x="595.119141" y="685.453125"/>
<use xlink:href="#glyph0-7" x="599.607422" y="685.453125"/>
<use xlink:href="#glyph0-14" x="602.607422" y="685.453125"/>
<use xlink:href="#glyph0-3" x="607.330078" y="685.453125"/>
<use xlink:href="#glyph0-4" x="611.72168" y="685.453125"/>
<use xlink:href="#glyph0-7" x="615.386719" y="685.453125"/>
<use xlink:href="#glyph0-15" x="618.386719" y="685.453125"/>
<use xlink:href="#glyph0-14" x="622.50293" y="685.453125"/>
<use xlink:href="#glyph0-3" x="627.225586" y="685.453125"/>
<use xlink:href="#glyph0-11" x="631.617188" y="685.453125"/>
<use xlink:href="#glyph0-1" x="636.105469" y="685.453125"/>
<use xlink:href="#glyph0-5" x="640.294922" y="685.453125"/>
</g>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(33%,33%,33%); fill-opacity: 1;" d="M 544 556 L 644 556 L 644 676 L 544 676 Z M 544 556 "/>
<path style=" stroke:none;fill-rule: nonzero; fill: rgb(47%,47%,47%); fill-opacity: 1;" d="M 544 586 L 644 586 L 644 646 L 544 646 Z M 544 586 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(10%,10%,10%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 544 556 L 644 556 L 644 676 L 544 676 Z M 544 556 "/>
<path style="fill: none; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(100%,0%,0%); stroke-opacity: 1;stroke-miterlimit: 10; " d="M 544 645 L 545 645 L 546 645 L 547 645 L 548 645 L 549 645 L 550 644 L 551 644 L 552 644 L 553 644 L 554 644 L 555 644 L 556 644 L 557 645 L 558 645 L 559 643 L 560 642 L 561 641 L 562 640 L 563 639 L 564 639 L 565 638 L 566 638 L 567 638 L 568 638 L 569 638 L 570 639 L 571 640 L 572 641 L 573 642 L 574 643 L 575 644 L 576 645 L 577 642 L 578 639 L 579 636 L 580 633 L 581 631 L 582 629 L 583 626 L 584 625 L 585 623 L 586 621 L 587 620 L 588 619 L 589 618 L 590 617 L 591 616 L 592 616 L 593 616 L 594 616 L 595 615 L 596 615 L 597 615 L 598 614 L 599 613 L 600 612 L 601 611 L 602 610 L 603 608 L 604 606 L 605 605 L 606 602 L 607 600 L 608 598 L 609 595 L 610 592 L 611 589 L 612 586 L 613 587 L 614 588 L 615 589 L 616 590 L 617 591 L 618 592 L 619 593 L 620 593 L 621 593 L 622 593 L 623 593 L 624 592 L 625 592 L 626 591 L 627 590 L 628 589 L 629 588 L 630 586 L 631 586 L 632 587 L 633 587 L 634 587 L 635 587 L 636 587 L 637 587 L 638 587 L 639 586 L 640 586 L 641 586 L 642 586 L 643 586 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 102 KiB

View File

@ -123,6 +123,16 @@ frame_cb (ClutterTimeline *timeline,
} }
} }
static gdouble
my_sine_wave (ClutterAlpha *alpha,
gpointer dummy G_GNUC_UNUSED)
{
ClutterTimeline *timeline = clutter_alpha_get_timeline (alpha);
gdouble progress = clutter_timeline_get_progress (timeline);
return sin (progress * G_PI);
}
G_MODULE_EXPORT int G_MODULE_EXPORT int
test_actors_main (int argc, char *argv[]) test_actors_main (int argc, char *argv[])
{ {
@ -168,8 +178,7 @@ test_actors_main (int argc, char *argv[])
g_signal_connect (timeline, "new-frame", G_CALLBACK (frame_cb), oh); g_signal_connect (timeline, "new-frame", G_CALLBACK (frame_cb), oh);
/* Set up some behaviours to handle scaling */ /* Set up some behaviours to handle scaling */
alpha = clutter_alpha_new_with_func (timeline, clutter_sine_func, alpha = clutter_alpha_new_with_func (timeline, my_sine_wave, NULL, NULL);
NULL, NULL);
scaler_1 = clutter_behaviour_scale_new (alpha, scaler_1 = clutter_behaviour_scale_new (alpha,
0.5, 0.5, 0.5, 0.5,

View File

@ -64,7 +64,7 @@ on_button_press (ClutterActor *actor,
vertex.y = CLUTTER_UNITS_FROM_FLOAT ((float) new_height / 2); vertex.y = CLUTTER_UNITS_FROM_FLOAT ((float) new_height / 2);
animation = animation =
clutter_actor_animate (actor, CLUTTER_EASE_IN, 2000, clutter_actor_animate (actor, CLUTTER_EASE_IN_EXPO, 2000,
"x", new_x, "x", new_x,
"y", new_y, "y", new_y,
"width", new_width, "width", new_width,

View File

@ -7,16 +7,36 @@ const struct {
ClutterAnimationMode mode; ClutterAnimationMode mode;
} easing_modes[] = { } easing_modes[] = {
{ "linear", CLUTTER_LINEAR }, { "linear", CLUTTER_LINEAR },
{ "sine-in", CLUTTER_SINE_IN }, { "easeInQuad", CLUTTER_EASE_IN_QUAD },
{ "sine-out", CLUTTER_SINE_OUT }, { "easeOutQuad", CLUTTER_EASE_OUT_QUAD },
{ "sine-in-out", CLUTTER_SINE_IN_OUT }, { "easeInOutQuad", CLUTTER_EASE_IN_OUT_QUAD },
{ "ease-in", CLUTTER_EASE_IN }, { "easeInCubic", CLUTTER_EASE_IN_CUBIC },
{ "ease-out", CLUTTER_EASE_OUT }, { "easeOutCubic", CLUTTER_EASE_OUT_CUBIC },
{ "ease-in-out", CLUTTER_EASE_IN_OUT }, { "easeInOutCubic", CLUTTER_EASE_IN_OUT_CUBIC },
{ "expo-in", CLUTTER_EXPO_IN }, { "easeInQuart", CLUTTER_EASE_IN_QUART },
{ "expo-out", CLUTTER_EXPO_OUT }, { "easeOutQuart", CLUTTER_EASE_OUT_QUART },
{ "expo-in-out", CLUTTER_EXPO_IN_OUT }, { "easeInOutQuart", CLUTTER_EASE_IN_OUT_QUART },
{ "smooth-in-out", CLUTTER_SMOOTH_IN_OUT } { "easeInQuint", CLUTTER_EASE_IN_QUINT },
{ "easeOutQuint", CLUTTER_EASE_OUT_QUINT },
{ "easeInOutQuint", CLUTTER_EASE_IN_OUT_QUINT },
{ "easeInSine", CLUTTER_EASE_IN_SINE },
{ "easeOutSine", CLUTTER_EASE_OUT_SINE },
{ "easeInOutSine", CLUTTER_EASE_IN_OUT_SINE },
{ "easeInExpo", CLUTTER_EASE_IN_EXPO },
{ "easeOutExpo", CLUTTER_EASE_OUT_EXPO },
{ "easeInOutExpo", CLUTTER_EASE_IN_OUT_EXPO },
{ "easeInCirc", CLUTTER_EASE_IN_CIRC },
{ "easeOutCirc", CLUTTER_EASE_OUT_CIRC },
{ "easeInOutCirc", CLUTTER_EASE_IN_OUT_CIRC },
{ "easeInElastic", CLUTTER_EASE_IN_ELASTIC },
{ "easeOutElastic", CLUTTER_EASE_OUT_ELASTIC },
{ "easeInOutElastic", CLUTTER_EASE_IN_OUT_ELASTIC },
{ "easeInBack", CLUTTER_EASE_IN_BACK },
{ "easeOutBack", CLUTTER_EASE_OUT_BACK },
{ "easeInOutBack", CLUTTER_EASE_IN_OUT_BACK },
{ "easeInBounce", CLUTTER_EASE_IN_BOUNCE },
{ "easeOutBounce", CLUTTER_EASE_OUT_BOUNCE },
{ "easeInOutBounce", CLUTTER_EASE_IN_OUT_BOUNCE },
}; };
static const gint n_easing_modes = G_N_ELEMENTS (easing_modes); static const gint n_easing_modes = G_N_ELEMENTS (easing_modes);
@ -30,36 +50,48 @@ on_button_press (ClutterActor *actor,
ClutterButtonEvent *event, ClutterButtonEvent *event,
ClutterActor *rectangle) ClutterActor *rectangle)
{ {
ClutterAnimation *animation; if (event->button == 3)
ClutterAnimationMode cur_mode; {
gchar *text; gchar *text;
guint stage_width, stage_height; guint stage_width, stage_height;
guint label_width, label_height; guint label_width, label_height;
text = g_strdup_printf ("Easing mode: %s (%d of %d)\n", current_mode = (current_mode + 1 < n_easing_modes) ? current_mode + 1
easing_modes[current_mode].name, : 0;
current_mode + 1,
n_easing_modes);
clutter_text_set_text (CLUTTER_TEXT (easing_mode_label), text); text = g_strdup_printf ("Easing mode: %s (%d of %d)\n"
g_free (text); "Right click to change the easing mode",
easing_modes[current_mode].name,
current_mode + 1,
n_easing_modes);
clutter_actor_get_size (main_stage, &stage_width, &stage_height); clutter_text_set_text (CLUTTER_TEXT (easing_mode_label), text);
clutter_actor_get_size (easing_mode_label, &label_width, &label_height); g_free (text);
clutter_actor_set_position (easing_mode_label, clutter_actor_get_size (main_stage,
stage_width - label_width - 10, &stage_width,
stage_height - label_height - 10); &stage_height);
clutter_actor_get_size (easing_mode_label,
&label_width,
&label_height);
cur_mode = easing_modes[current_mode].mode; clutter_actor_set_position (easing_mode_label,
stage_width - label_width - 10,
stage_height - label_height - 10);
}
else if (event->button == 1)
{
ClutterAnimation *animation;
ClutterAnimationMode cur_mode;
animation = cur_mode = easing_modes[current_mode].mode;
clutter_actor_animate (rectangle, cur_mode, 2000,
"x", event->x,
"y", event->y,
NULL);
current_mode = (current_mode + 1 < n_easing_modes) ? current_mode + 1 : 0; animation =
clutter_actor_animate (rectangle, cur_mode, 2000,
"x", event->x,
"y", event->y,
NULL);
}
return TRUE; return TRUE;
} }
@ -92,7 +124,8 @@ test_easing_main (int argc, char *argv[])
"button-press-event", G_CALLBACK (on_button_press), "button-press-event", G_CALLBACK (on_button_press),
rect); rect);
text = g_strdup_printf ("Easing mode: %s (%d of %d)\n", text = g_strdup_printf ("Easing mode: %s (%d of %d)\n"
"Right click to change the easing mode",
easing_modes[current_mode].name, easing_modes[current_mode].name,
current_mode + 1, current_mode + 1,
n_easing_modes); n_easing_modes);

View File

@ -765,7 +765,7 @@ test_layout_main (int argc, char *argv[])
G_CALLBACK (relayout_on_frame), G_CALLBACK (relayout_on_frame),
NULL); NULL);
alpha = clutter_alpha_new_full (main_timeline, CLUTTER_SINE_IN_OUT); alpha = clutter_alpha_new_full (main_timeline, CLUTTER_LINEAR);
behaviour = clutter_behaviour_scale_new (alpha, 1.0, 1.0, 2.0, 2.0); behaviour = clutter_behaviour_scale_new (alpha, 1.0, 1.0, 2.0, 2.0);
box = my_thing_new (10, 10); box = my_thing_new (10, 10);

View File

@ -160,6 +160,16 @@ hand_post_paint (ClutterActor *actor,
oh->paint_guards[actor_num] = FALSE; oh->paint_guards[actor_num] = FALSE;
} }
static gdouble
my_sine_wave (ClutterAlpha *alpha,
gpointer dummy G_GNUC_UNUSED)
{
ClutterTimeline *timeline = clutter_alpha_get_timeline (alpha);
gdouble progress = clutter_timeline_get_progress (timeline);
return sin (progress * G_PI);
}
G_MODULE_EXPORT int G_MODULE_EXPORT int
test_paint_wrapper_main (int argc, char *argv[]) test_paint_wrapper_main (int argc, char *argv[])
{ {
@ -205,7 +215,7 @@ test_paint_wrapper_main (int argc, char *argv[])
g_signal_connect (timeline, "new-frame", G_CALLBACK (frame_cb), oh); g_signal_connect (timeline, "new-frame", G_CALLBACK (frame_cb), oh);
/* Set up some behaviours to handle scaling */ /* Set up some behaviours to handle scaling */
alpha = clutter_alpha_new_full (timeline, CLUTTER_SINE_IN_OUT); alpha = clutter_alpha_new_with_func (timeline, my_sine_wave, NULL, NULL);
scaler_1 = clutter_behaviour_scale_new (alpha, scaler_1 = clutter_behaviour_scale_new (alpha,
0.5, 0.5, 0.5, 0.5,

View File

@ -36,6 +36,15 @@ set_next_gravity (ClutterActor *actor)
gindex = 0; gindex = 0;
} }
static gdouble
my_ramp_func (ClutterAlpha *alpha,
gpointer unused)
{
ClutterTimeline *timeline = clutter_alpha_get_timeline (alpha);
return clutter_timeline_get_progress (timeline);
}
G_MODULE_EXPORT int G_MODULE_EXPORT int
test_scale_main (int argc, char *argv[]) test_scale_main (int argc, char *argv[])
{ {
@ -79,7 +88,7 @@ test_scale_main (int argc, char *argv[])
timeline = clutter_timeline_new_for_duration (750); timeline = clutter_timeline_new_for_duration (750);
alpha = clutter_alpha_new_with_func (timeline, alpha = clutter_alpha_new_with_func (timeline,
clutter_ramp_func, my_ramp_func,
NULL, NULL); NULL, NULL);
behave = clutter_behaviour_scale_new (alpha, behave = clutter_behaviour_scale_new (alpha,

View File

@ -43,7 +43,7 @@ static const gchar *test_behaviour =
" \"path\" : \"M 50 50 L 100 100\"," " \"path\" : \"M 50 50 L 100 100\","
" \"alpha\" : {" " \"alpha\" : {"
" \"timeline\" : \"main-timeline\"," " \"timeline\" : \"main-timeline\","
" \"function\" : \"ramp\"" " \"mode\" : \"linear\""
" }" " }"
" }," " },"
" {" " {"
@ -54,7 +54,7 @@ static const gchar *test_behaviour =
" \"axis\" : \"y-axis\"," " \"axis\" : \"y-axis\","
" \"alpha\" : {" " \"alpha\" : {"
" \"timeline\" : \"main-timeline\"," " \"timeline\" : \"main-timeline\","
" \"function\" : \"sine\"" " \"mode\" : \"ease-in-sine\""
" }" " }"
" }," " },"
" {" " {"
@ -64,7 +64,7 @@ static const gchar *test_behaviour =
" \"opacity-end\" : 0," " \"opacity-end\" : 0,"
" \"alpha\" : {" " \"alpha\" : {"
" \"timeline\" : \"main-timeline\"," " \"timeline\" : \"main-timeline\","
" \"function\" : \"ramp-inc\"" " \"mode\" : \"easeOutCubic\""
" }" " }"
" }" " }"
"]"; "]";