

/*!
 * Copyright (c) 2009 Simo Kinnunen.
 * Licensed under the MIT license.
 *
 * @version ${Version}
 */

var Cufon = (function() {

	var api = function() {
		return api.replace.apply(null, arguments);
	};

	var DOM = api.DOM = {

		ready: (function() {

			var complete = false, readyStatus = { loaded: 1, complete: 1 };

			var queue = [], perform = function() {
				if (complete) return;
				complete = true;
				for (var fn; fn = queue.shift(); fn());
			};

			// Gecko, Opera, WebKit r26101+

			if (document.addEventListener) {
				document.addEventListener('DOMContentLoaded', perform, false);
				window.addEventListener('pageshow', perform, false); // For cached Gecko pages
			}

			// Old WebKit, Internet Explorer

			if (!window.opera && document.readyState) (function() {
				readyStatus[document.readyState] ? perform() : setTimeout(arguments.callee, 10);
			})();

			// Internet Explorer

			if (document.readyState && document.createStyleSheet) (function() {
				try {
					document.body.doScroll('left');
					perform();
				}
				catch (e) {
					setTimeout(arguments.callee, 1);
				}
			})();

			addEvent(window, 'load', perform); // Fallback

			return function(listener) {
				if (!arguments.length) perform();
				else complete ? listener() : queue.push(listener);
			};

		})(),

		root: function() {
			return document.documentElement || document.body;
		}

	};

	var CSS = api.CSS = {

		Size: function(value, base) {

			this.value = parseFloat(value);
			this.unit = String(value).match(/[a-z%]*$/)[0] || 'px';

			this.convert = function(value) {
				return value / base * this.value;
			};

			this.convertFrom = function(value) {
				return value / this.value * base;
			};

			this.toString = function() {
				return this.value + this.unit;
			};

		},

		addClass: function(el, className) {
			var current = el.className;
			el.className = current + (current && ' ') + className;
			return el;
		},

		color: cached(function(value) {
			var parsed = {};
			parsed.color = value.replace(/^rgba\((.*?),\s*([\d.]+)\)/, function($0, $1, $2) {
				parsed.opacity = parseFloat($2);
				return 'rgb(' + $1 + ')';
			});
			return parsed;
		}),

		// has no direct CSS equivalent.
		// @see http://msdn.microsoft.com/en-us/library/system.windows.fontstretches.aspx
		fontStretch: cached(function(value) {
			if (typeof value == 'number') return value;
			if (/%$/.test(value)) return parseFloat(value) / 100;
			return {
				'ultra-condensed': 0.5,
				'extra-condensed': 0.625,
				condensed: 0.75,
				'semi-condensed': 0.875,
				'semi-expanded': 1.125,
				expanded: 1.25,
				'extra-expanded': 1.5,
				'ultra-expanded': 2
			}[value] || 1;
		}),

		getStyle: function(el) {
			var view = document.defaultView;
			if (view && view.getComputedStyle) return new Style(view.getComputedStyle(el, null));
			if (el.currentStyle) return new Style(el.currentStyle);
			return new Style(el.style);
		},

		gradient: cached(function(value) {
			var gradient = {
				id: value,
				type: value.match(/^-([a-z]+)-gradient\(/)[1],
				stops: []
			}, colors = value.substr(value.indexOf('(')).match(/([\d.]+=)?(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)/ig);
			for (var i = 0, l = colors.length, stop; i < l; ++i) {
				stop = colors[i].split('=', 2).reverse();
				gradient.stops.push([ stop[1] || i / (l - 1), stop[0] ]);
			}
			return gradient;
		}),

		quotedList: cached(function(value) {
			// doesn't work properly with empty quoted strings (""), but
			// it's not worth the extra code.
			var list = [], re = /\s*((["'])([\s\S]*?[^\\])\2|[^,]+)\s*/g, match;
			while (match = re.exec(value)) list.push(match[3] || match[1]);
			return list;
		}),

		recognizesMedia: cached(function(media) {
			var el = document.createElement('style'), sheet, container, supported;
			el.type = 'text/css';
			el.media = media;
			try { // this is cached anyway
				el.appendChild(document.createTextNode('/**/'));
			} catch (e) {}
			container = elementsByTagName('head')[0];
			container.insertBefore(el, container.firstChild);
			sheet = (el.sheet || el.styleSheet);
			supported = sheet && !sheet.disabled;
			container.removeChild(el);
			return supported;
		}),

		removeClass: function(el, className) {
			var re = RegExp('(?:^|\\s+)' + className +  '(?=\\s|$)', 'g');
			el.className = el.className.replace(re, '');
			return el;
		},

		supports: function(property, value) {
			var checker = document.createElement('span').style;
			if (checker[property] === undefined) return false;
			checker[property] = value;
			return checker[property] === value;
		},

		textAlign: function(word, style, position, wordCount) {
			if (style.get('textAlign') == 'right') {
				if (position > 0) word = ' ' + word;
			}
			else if (position < wordCount - 1) word += ' ';
			return word;
		},

		textShadow: cached(function(value) {
			if (value == 'none') return null;
			var shadows = [], currentShadow = {}, result, offCount = 0;
			var re = /(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)|(-?[\d.]+[a-z%]*)|,/ig;
			while (result = re.exec(value)) {
				if (result[0] == ',') {
					shadows.push(currentShadow);
					currentShadow = {};
					offCount = 0;
				}
				else if (result[1]) {
					currentShadow.color = result[1];
				}
				else {
					currentShadow[[ 'offX', 'offY', 'blur' ][offCount++]] = result[2];
				}
			}
			shadows.push(currentShadow);
			return shadows;
		}),

		textTransform: (function() {
			var map = {
				uppercase: function(s) {
					return s.toUpperCase();
				},
				lowercase: function(s) {
					return s.toLowerCase();
				},
				capitalize: function(s) {
					return s.replace(/\b./g, function($0) {
						return $0.toUpperCase();
					});
				}
			};
			return function(text, style) {
				var transform = map[style.get('textTransform')];
				return transform ? transform(text) : text;
			};
		})(),

		whiteSpace: (function() {
			var ignore = {
				inline: 1,
				'inline-block': 1,
				'run-in': 1
			};
			var wsStart = /^\s+/, wsEnd = /\s+$/;
			return function(text, style, node, previousElement) {
				if (previousElement) {
					if (previousElement.nodeName.toLowerCase() == 'br') {
						text = text.replace(wsStart, '');
					}
				}
				if (ignore[style.get('display')]) return text;
				if (!node.previousSibling) text = text.replace(wsStart, '');
				if (!node.nextSibling) text = text.replace(wsEnd, '');
				return text;
			};
		})()

	};

	CSS.ready = (function() {

		// don't do anything in Safari 2 (it doesn't recognize any media type)
		var complete = !CSS.recognizesMedia('all'), hasLayout = false;

		var queue = [], perform = function() {
			complete = true;
			for (var fn; fn = queue.shift(); fn());
		};

		var links = elementsByTagName('link'), styles = elementsByTagName('style');

		function isContainerReady(el) {
			return el.disabled || isSheetReady(el.sheet, el.media || 'screen');
		}

		function isSheetReady(sheet, media) {
			// in Opera sheet.disabled is true when it's still loading,
			// even though link.disabled is false. they stay in sync if
			// set manually.
			if (!CSS.recognizesMedia(media || 'all')) return true;
			if (!sheet || sheet.disabled) return false;
			try {
				var rules = sheet.cssRules, rule;
				if (rules) {
					// needed for Safari 3 and Chrome 1.0.
					// in standards-conforming browsers cssRules contains @-rules.
					// Chrome 1.0 weirdness: rules[<number larger than .length - 1>]
					// returns the last rule, so a for loop is the only option.
					search: for (var i = 0, l = rules.length; rule = rules[i], i < l; ++i) {
						switch (rule.type) {
							case 2: // @charset
								break;
							case 3: // @import
								if (!isSheetReady(rule.styleSheet, rule.media.mediaText)) return false;
								break;
							default:
								// only @charset can precede @import
								break search;
						}
					}
				}
			}
			catch (e) {} // probably a style sheet from another domain
			return true;
		}

		function allStylesLoaded() {
			// Internet Explorer's style sheet model, there's no need to do anything
			if (document.createStyleSheet) return true;
			// standards-compliant browsers
			var el, i;
			for (i = 0; el = links[i]; ++i) {
				if (el.rel.toLowerCase() == 'stylesheet' && !isContainerReady(el)) return false;
			}
			for (i = 0; el = styles[i]; ++i) {
				if (!isContainerReady(el)) return false;
			}
			return true;
		}

		DOM.ready(function() {
			// getComputedStyle returns null in Gecko if used in an iframe with display: none
			if (!hasLayout) hasLayout = CSS.getStyle(document.body).isUsable();
			if (complete || (hasLayout && allStylesLoaded())) perform();
			else setTimeout(arguments.callee, 10);
		});

		return function(listener) {
			if (complete) listener();
			else queue.push(listener);
		};

	})();

	function Font(data) {

		var face = this.face = data.face, wordSeparators = {
			'\u0020': 1,
			'\u00a0': 1,
			'\u3000': 1
		};

		this.glyphs = data.glyphs;
		this.w = data.w;
		this.baseSize = parseInt(face['units-per-em'], 10);

		this.family = face['font-family'].toLowerCase();
		this.weight = face['font-weight'];
		this.style = face['font-style'] || 'normal';

		this.viewBox = (function () {
			var parts = face.bbox.split(/\s+/);
			var box = {
				minX: parseInt(parts[0], 10),
				minY: parseInt(parts[1], 10),
				maxX: parseInt(parts[2], 10),
				maxY: parseInt(parts[3], 10)
			};
			box.width = box.maxX - box.minX;
			box.height = box.maxY - box.minY;
			box.toString = function() {
				return [ this.minX, this.minY, this.width, this.height ].join(' ');
			};
			return box;
		})();

		this.ascent = -parseInt(face.ascent, 10);
		this.descent = -parseInt(face.descent, 10);

		this.height = -this.ascent + this.descent;

		this.spacing = function(chars, letterSpacing, wordSpacing) {
			var glyphs = this.glyphs, glyph, kerning, k,
				jumps = [], width = 0,
				i = -1, j = -1, chr;
			while (chr = chars[++i]) {
				glyph = glyphs[chr] || this.missingGlyph;
				if (!glyph) continue;
				if (kerning) {
					width -= k = kerning[chr] || 0;
					jumps[j] -= k;
				}
				width += jumps[++j] = ~~(glyph.w || this.w) + letterSpacing + (wordSeparators[chr] ? wordSpacing : 0);
				kerning = glyph.k;
			}
			jumps.total = width;
			return jumps;
		};

	}

	function FontFamily() {

		var styles = {}, mapping = {
			oblique: 'italic',
			italic: 'oblique'
		};

		this.add = function(font) {
			(styles[font.style] || (styles[font.style] = {}))[font.weight] = font;
		};

		this.get = function(style, weight) {
			var weights = styles[style] || styles[mapping[style]]
				|| styles.normal || styles.italic || styles.oblique;
			if (!weights) return null;
			// we don't have to worry about "bolder" and "lighter"
			// because IE's currentStyle returns a numeric value for it,
			// and other browsers use the computed value anyway
			weight = {
				normal: 400,
				bold: 700
			}[weight] || parseInt(weight, 10);
			if (weights[weight]) return weights[weight];
			// http://www.w3.org/TR/CSS21/fonts.html#propdef-font-weight
			// Gecko uses x99/x01 for lighter/bolder
			var up = {
				1: 1,
				99: 0
			}[weight % 100], alts = [], min, max;
			if (up === undefined) up = weight > 400;
			if (weight == 500) weight = 400;
			for (var alt in weights) {
				if (!hasOwnProperty(weights, alt)) continue;
				alt = parseInt(alt, 10);
				if (!min || alt < min) min = alt;
				if (!max || alt > max) max = alt;
				alts.push(alt);
			}
			if (weight < min) weight = min;
			if (weight > max) weight = max;
			alts.sort(function(a, b) {
				return (up
					? (a >= weight && b >= weight) ? a < b : a > b
					: (a <= weight && b <= weight) ? a > b : a < b) ? -1 : 1;
			});
			return weights[alts[0]];
		};

	}

	function HoverHandler() {

		function contains(node, anotherNode) {
			if (node.contains) return node.contains(anotherNode);
			return node.compareDocumentPosition(anotherNode) & 16;
		}

		function onOverOut(e) {
			var related = e.relatedTarget;
			if (!related || contains(this, related)) return;
			trigger(this, e.type == 'mouseover');
		}

		function onEnterLeave(e) {
			trigger(this, e.type == 'mouseenter');
		}

		function trigger(el, hoverState) {
			// A timeout is needed so that the event can actually "happen"
			// before replace is triggered. This ensures that styles are up
			// to date.
			setTimeout(function() {
				var options = sharedStorage.get(el).options;
				api.replace(el, hoverState ? merge(options, options.hover) : options, true);
			}, 10);
		}

		this.attach = function(el) {
			if (el.onmouseenter === undefined) {
				addEvent(el, 'mouseover', onOverOut);
				addEvent(el, 'mouseout', onOverOut);
			}
			else {
				addEvent(el, 'mouseenter', onEnterLeave);
				addEvent(el, 'mouseleave', onEnterLeave);
			}
		};

	}

	function ReplaceHistory() {

		var list = [], map = {};

		function filter(keys) {
			var values = [], key;
			for (var i = 0; key = keys[i]; ++i) values[i] = list[map[key]];
			return values;
		}

		this.add = function(key, args) {
			map[key] = list.push(args) - 1;
		};

		this.repeat = function() {
			var snapshot = arguments.length ? filter(arguments) : list, args;
			for (var i = 0; args = snapshot[i++];) api.replace(args[0], args[1], true);
		};

	}

	function Storage() {

		var map = {}, at = 0;

		function identify(el) {
			return el.cufid || (el.cufid = ++at);
		}

		this.get = function(el) {
			var id = identify(el);
			return map[id] || (map[id] = {});
		};

	}

	function Style(style) {

		var custom = {}, sizes = {};

		this.extend = function(styles) {
			for (var property in styles) {
				if (hasOwnProperty(styles, property)) custom[property] = styles[property];
			}
			return this;
		};

		this.get = function(property) {
			return custom[property] != undefined ? custom[property] : style[property];
		};

		this.getSize = function(property, base) {
			return sizes[property] || (sizes[property] = new CSS.Size(this.get(property), base));
		};

		this.isUsable = function() {
			return !!style;
		};

	}

	function addEvent(el, type, listener) {
		if (el.addEventListener) {
			el.addEventListener(type, listener, false);
		}
		else if (el.attachEvent) {
			el.attachEvent('on' + type, function() {
				return listener.call(el, window.event);
			});
		}
	}

	function attach(el, options) {
		var storage = sharedStorage.get(el);
		if (storage.options) return el;
		if (options.hover && options.hoverables[el.nodeName.toLowerCase()]) {
			hoverHandler.attach(el);
		}
		storage.options = options;
		return el;
	}

	function cached(fun) {
		var cache = {};
		return function(key) {
			if (!hasOwnProperty(cache, key)) cache[key] = fun.apply(null, arguments);
			return cache[key];
		};
	}

	function getFont(el, style) {
		var families = CSS.quotedList(style.get('fontFamily').toLowerCase()), family;
		for (var i = 0; family = families[i]; ++i) {
			if (fonts[family]) return fonts[family].get(style.get('fontStyle'), style.get('fontWeight'));
		}
		return null;
	}

	function elementsByTagName(query) {
		return document.getElementsByTagName(query);
	}

	function hasOwnProperty(obj, property) {
		return obj.hasOwnProperty(property);
	}

	function merge() {
		var merged = {}, arg, key;
		for (var i = 0, l = arguments.length; arg = arguments[i], i < l; ++i) {
			for (key in arg) {
				if (hasOwnProperty(arg, key)) merged[key] = arg[key];
			}
		}
		return merged;
	}

	function process(font, text, style, options, node, el) {
		var fragment = document.createDocumentFragment(), processed;
		if (text === '') return fragment;
		var separate = options.separate;
		var parts = text.split(separators[separate]), needsAligning = (separate == 'words');
		if (needsAligning && HAS_BROKEN_REGEXP) {
			// @todo figure out a better way to do this
			if (/^\s/.test(text)) parts.unshift('');
			if (/\s$/.test(text)) parts.push('');
		}
		for (var i = 0, l = parts.length; i < l; ++i) {
			processed = engines[options.engine](font,
				needsAligning ? CSS.textAlign(parts[i], style, i, l) : parts[i],
				style, options, node, el, i < l - 1);
			if (processed) fragment.appendChild(processed);
		}
		return fragment;
	}

	function replaceElement(el, options) {
		var name = el.nodeName.toLowerCase();
		if (options.ignore[name]) return;
		var replace = !options.textless[name];
		var style = CSS.getStyle(attach(el, options)).extend(options);
		var font = getFont(el, style), node, type, next, anchor, text, lastElement;
		if (!font) return;
		for (node = el.firstChild; node; node = next) {
			type = node.nodeType;
			next = node.nextSibling;
			if (replace && type == 3) {
				// Node.normalize() is broken in IE 6, 7, 8
				if (anchor) {
					anchor.appendData(node.data);
					el.removeChild(node);
				}
				else anchor = node;
				if (next) continue;
			}
			if (anchor) {
				el.replaceChild(process(font,
					CSS.whiteSpace(anchor.data, style, anchor, lastElement),
					style, options, node, el), anchor);
				anchor = null;
			}
			if (type == 1) {
				if (node.firstChild) {
					if (node.nodeName.toLowerCase() == 'cufon') {
						engines[options.engine](font, null, style, options, node, el);
					}
					else arguments.callee(node, options);
				}
				lastElement = node;
			}
		}
	}

	var HAS_BROKEN_REGEXP = ' '.split(/\s+/).length == 0;

	var sharedStorage = new Storage();
	var hoverHandler = new HoverHandler();
	var replaceHistory = new ReplaceHistory();
	var initialized = false;

	var engines = {}, fonts = {}, defaultOptions = {
		autoDetect: false,
		engine: null,
		//fontScale: 1,
		//fontScaling: false,
		forceHitArea: false,
		hover: false,
		hoverables: {
			a: true
		},
		ignore: {
			applet: 1,
			canvas: 1,
			col: 1,
			colgroup: 1,
			head: 1,
			iframe: 1,
			map: 1,
			optgroup: 1,
			option: 1,
			script: 1,
			select: 1,
			style: 1,
			textarea: 1,
			title: 1,
			pre: 1
		},
		printable: true,
		//rotation: 0,
		//selectable: false,
		selector: (
				window.Sizzle
			||	(window.jQuery && function(query) { return jQuery(query); }) // avoid noConflict issues
			||	(window.dojo && dojo.query)
			||	(window.Ext && Ext.query)
			||	(window.YAHOO && YAHOO.util && YAHOO.util.Selector && YAHOO.util.Selector.query)
			||	(window.$$ && function(query) { return $$(query); })
			||	(window.$ && function(query) { return $(query); })
			||	(document.querySelectorAll && function(query) { return document.querySelectorAll(query); })
			||	elementsByTagName
		),
		separate: 'words', // 'none' and 'characters' are also accepted
		textless: {
			dl: 1,
			html: 1,
			ol: 1,
			table: 1,
			tbody: 1,
			thead: 1,
			tfoot: 1,
			tr: 1,
			ul: 1
		},
		textShadow: 'none'
	};

	var separators = {
		// The first pattern may cause unicode characters above
		// code point 255 to be removed in Safari 3.0. Luckily enough
		// Safari 3.0 does not include non-breaking spaces in \s, so
		// we can just use a simple alternative pattern.
		words: /\s/.test('\u00a0') ? /[^\S\u00a0]+/ : /\s+/,
		characters: '',
		none: /^/
	};

	api.now = function() {
		DOM.ready();
		return api;
	};

	api.refresh = function() {
		replaceHistory.repeat.apply(replaceHistory, arguments);
		return api;
	};

	api.registerEngine = function(id, engine) {
		if (!engine) return api;
		engines[id] = engine;
		return api.set('engine', id);
	};

	api.registerFont = function(data) {
		if (!data) return api;
		var font = new Font(data), family = font.family;
		if (!fonts[family]) fonts[family] = new FontFamily();
		fonts[family].add(font);
		return api.set('fontFamily', '"' + family + '"');
	};

	api.replace = function(elements, options, ignoreHistory) {
		options = merge(defaultOptions, options);
		if (!options.engine) return api; // there's no browser support so we'll just stop here
		if (!initialized) {
			CSS.addClass(DOM.root(), 'cufon-active cufon-loading');
			CSS.ready(function() {
				// fires before any replace() calls, but it doesn't really matter
				CSS.addClass(CSS.removeClass(DOM.root(), 'cufon-loading'), 'cufon-ready');
			});
			initialized = true;
		}
		if (options.hover) options.forceHitArea = true;
		if (options.autoDetect) delete options.fontFamily;
		if (typeof options.textShadow == 'string') {
			options.textShadow = CSS.textShadow(options.textShadow);
		}
		if (typeof options.color == 'string' && /^-/.test(options.color)) {
			options.textGradient = CSS.gradient(options.color);
		}
		else delete options.textGradient;
		if (!ignoreHistory) replaceHistory.add(elements, arguments);
		if (elements.nodeType || typeof elements == 'string') elements = [ elements ];
		CSS.ready(function() {
			for (var i = 0, l = elements.length; i < l; ++i) {
				var el = elements[i];
				if (typeof el == 'string') api.replace(options.selector(el), options, true);
				else replaceElement(el, options);
			}
		});
		return api;
	};

	api.set = function(option, value) {
		defaultOptions[option] = value;
		return api;
	};

	return api;

})();

Cufon.registerEngine('canvas', (function() {

	// Safari 2 doesn't support .apply() on native methods

	var check = document.createElement('canvas');
	if (!check || !check.getContext || !check.getContext.apply) return;
	check = null;

	var HAS_INLINE_BLOCK = Cufon.CSS.supports('display', 'inline-block');

	// Firefox 2 w/ non-strict doctype (almost standards mode)
	var HAS_BROKEN_LINEHEIGHT = !HAS_INLINE_BLOCK && (document.compatMode == 'BackCompat' || /frameset|transitional/i.test(document.doctype.publicId));

	var styleSheet = document.createElement('style');
	styleSheet.type = 'text/css';
	styleSheet.appendChild(document.createTextNode((
		'cufon{text-indent:0;}' +
		'@media screen,projection{' +
			'cufon{display:inline;display:inline-block;position:relative;vertical-align:middle;' +
			(HAS_BROKEN_LINEHEIGHT
				? ''
				: 'font-size:1px;line-height:1px;') +
			'}cufon cufontext{display:-moz-inline-box;display:inline-block;width:0;height:0;overflow:hidden;text-indent:-10000in;}' +
			(HAS_INLINE_BLOCK
				? 'cufon canvas{position:relative;}'
				: 'cufon canvas{position:absolute;}') +
		'}' +
		'@media print{' +
			'cufon{padding:0;}' + // Firefox 2
			'cufon canvas{display:none;}' +
		'}'
	).replace(/;/g, '!important;')));
	document.getElementsByTagName('head')[0].appendChild(styleSheet);

	function generateFromVML(path, context) {
		var atX = 0, atY = 0;
		var code = [], re = /([mrvxe])([^a-z]*)/g, match;
		generate: for (var i = 0; match = re.exec(path); ++i) {
			var c = match[2].split(',');
			switch (match[1]) {
				case 'v':
					code[i] = { m: 'bezierCurveTo', a: [ atX + ~~c[0], atY + ~~c[1], atX + ~~c[2], atY + ~~c[3], atX += ~~c[4], atY += ~~c[5] ] };
					break;
				case 'r':
					code[i] = { m: 'lineTo', a: [ atX += ~~c[0], atY += ~~c[1] ] };
					break;
				case 'm':
					code[i] = { m: 'moveTo', a: [ atX = ~~c[0], atY = ~~c[1] ] };
					break;
				case 'x':
					code[i] = { m: 'closePath' };
					break;
				case 'e':
					break generate;
			}
			context[code[i].m].apply(context, code[i].a);
		}
		return code;
	}

	function interpret(code, context) {
		for (var i = 0, l = code.length; i < l; ++i) {
			var line = code[i];
			context[line.m].apply(context, line.a);
		}
	}

	return function(font, text, style, options, node, el) {

		var redraw = (text === null);

		if (redraw) text = node.getAttribute('alt');

		var viewBox = font.viewBox;

		var size = style.getSize('fontSize', font.baseSize);

		var expandTop = 0, expandRight = 0, expandBottom = 0, expandLeft = 0;
		var shadows = options.textShadow, shadowOffsets = [];
		if (shadows) {
			for (var i = shadows.length; i--;) {
				var shadow = shadows[i];
				var x = size.convertFrom(parseFloat(shadow.offX));
				var y = size.convertFrom(parseFloat(shadow.offY));
				shadowOffsets[i] = [ x, y ];
				if (y < expandTop) expandTop = y;
				if (x > expandRight) expandRight = x;
				if (y > expandBottom) expandBottom = y;
				if (x < expandLeft) expandLeft = x;
			}
		}

		var chars = Cufon.CSS.textTransform(text, style).split('');

		var jumps = font.spacing(chars,
			~~size.convertFrom(parseFloat(style.get('letterSpacing')) || 0),
			~~size.convertFrom(parseFloat(style.get('wordSpacing')) || 0)
		);

		if (!jumps.length) return null; // there's nothing to render

		var width = jumps.total;

		expandRight += viewBox.width - jumps[jumps.length - 1];
		expandLeft += viewBox.minX;

		var wrapper, canvas;

		if (redraw) {
			wrapper = node;
			canvas = node.firstChild;
		}
		else {
			wrapper = document.createElement('cufon');
			wrapper.className = 'cufon cufon-canvas';
			wrapper.setAttribute('alt', text);

			canvas = document.createElement('canvas');
			wrapper.appendChild(canvas);

			if (options.printable) {
				var print = document.createElement('cufontext');
				print.appendChild(document.createTextNode(text));
				wrapper.appendChild(print);
			}
		}

		var wStyle = wrapper.style;
		var cStyle = canvas.style;

		var height = size.convert(viewBox.height);
		var roundedHeight = Math.ceil(height);
		var roundingFactor = roundedHeight / height;
		var stretchFactor = roundingFactor * Cufon.CSS.fontStretch(style.get('fontStretch'));
		var stretchedWidth = width * stretchFactor;

		var canvasWidth = Math.ceil(size.convert(stretchedWidth + expandRight - expandLeft));
		var canvasHeight = Math.ceil(size.convert(viewBox.height - expandTop + expandBottom));

		canvas.width = canvasWidth;
		canvas.height = canvasHeight;

		// needed for WebKit and full page zoom
		cStyle.width = canvasWidth + 'px';
		cStyle.height = canvasHeight + 'px';

		// minY has no part in canvas.height
		expandTop += viewBox.minY;

		cStyle.top = Math.round(size.convert(expandTop - font.ascent)) + 'px';
		cStyle.left = Math.round(size.convert(expandLeft)) + 'px';

		var wrapperWidth = Math.max(Math.ceil(size.convert(stretchedWidth)), 0) + 'px';

		if (HAS_INLINE_BLOCK) {
			wStyle.width = wrapperWidth;
			wStyle.height = size.convert(font.height) + 'px';
		}
		else {
			wStyle.paddingLeft = wrapperWidth;
			wStyle.paddingBottom = (size.convert(font.height) - 1) + 'px';
		}

		var g = canvas.getContext('2d'), scale = height / viewBox.height;

		// proper horizontal scaling is performed later
		g.scale(scale, scale * roundingFactor);
		g.translate(-expandLeft, -expandTop);
		g.save();

		function renderText() {
			var glyphs = font.glyphs, glyph, i = -1, j = -1, chr;
			g.scale(stretchFactor, 1);
			while (chr = chars[++i]) {
				var glyph = glyphs[chars[i]] || font.missingGlyph;
				if (!glyph) continue;
				if (glyph.d) {
					g.beginPath();
					if (glyph.code) interpret(glyph.code, g);
					else glyph.code = generateFromVML('m' + glyph.d, g);
					g.fill();
				}
				g.translate(jumps[++j], 0);
			}
			g.restore();
		}

		if (shadows) {
			for (var i = shadows.length; i--;) {
				var shadow = shadows[i];
				g.save();
				g.fillStyle = shadow.color;
				g.translate.apply(g, shadowOffsets[i]);
				renderText();
			}
		}

		var gradient = options.textGradient;
		if (gradient) {
			var stops = gradient.stops, fill = g.createLinearGradient(0, viewBox.minY, 0, viewBox.maxY);
			for (var i = 0, l = stops.length; i < l; ++i) {
				fill.addColorStop.apply(fill, stops[i]);
			}
			g.fillStyle = fill;
		}
		else g.fillStyle = style.get('color');

		renderText();

		return wrapper;

	};

})());

Cufon.registerEngine('vml', (function() {

	var ns = document.namespaces;
	if (!ns) return;
	ns.add('cvml', 'urn:schemas-microsoft-com:vml');
	ns = null;

	var check = document.createElement('cvml:shape');
	check.style.behavior = 'url(#default#VML)';
	if (!check.coordsize) return; // VML isn't supported
	check = null;

	var HAS_BROKEN_LINEHEIGHT = (document.documentMode || 0) < 8;

	document.write(('<style type="text/css">' +
		'cufoncanvas{text-indent:0;}' +
		'@media screen{' +
			'cvml\\:shape,cvml\\:rect,cvml\\:fill,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute;}' +
			'cufoncanvas{position:absolute;text-align:left;}' +
			'cufon{display:inline-block;position:relative;vertical-align:' +
			(HAS_BROKEN_LINEHEIGHT
				? 'middle'
				: 'text-bottom') +
			';}' +
			'cufon cufontext{position:absolute;left:-10000in;font-size:1px;}' +
			'a cufon{cursor:pointer}' + // ignore !important here
		'}' +
		'@media print{' +
			'cufon cufoncanvas{display:none;}' +
		'}' +
	'</style>').replace(/;/g, '!important;'));

	function getFontSizeInPixels(el, value) {
		return getSizeInPixels(el, /(?:em|ex|%)$|^[a-z-]+$/i.test(value) ? '1em' : value);
	}

	// Original by Dead Edwards.
	// Combined with getFontSizeInPixels it also works with relative units.
	function getSizeInPixels(el, value) {
		if (value === '0') return 0;
		if (/px$/i.test(value)) return parseFloat(value);
		var style = el.style.left, runtimeStyle = el.runtimeStyle.left;
		el.runtimeStyle.left = el.currentStyle.left;
		el.style.left = value.replace('%', 'em');
		var result = el.style.pixelLeft;
		el.style.left = style;
		el.runtimeStyle.left = runtimeStyle;
		return result;
	}

	function getSpacingValue(el, style, size, property) {
		var key = 'computed' + property, value = style[key];
		if (isNaN(value)) {
			value = style.get(property);
			style[key] = value = (value == 'normal') ? 0 : ~~size.convertFrom(getSizeInPixels(el, value));
		}
		return value;
	}

	var fills = {};

	function gradientFill(gradient) {
		var id = gradient.id;
		if (!fills[id]) {
			var stops = gradient.stops, fill = document.createElement('cvml:fill'), colors = [];
			fill.type = 'gradient';
			fill.angle = 180;
			fill.focus = '0';
			fill.method = 'sigma';
			fill.color = stops[0][1];
			for (var j = 1, k = stops.length - 1; j < k; ++j) {
				colors.push(stops[j][0] * 100 + '% ' + stops[j][1]);
			}
			fill.colors = colors.join(',');
			fill.color2 = stops[k][1];
			fills[id] = fill;
		}
		return fills[id];
	}

	return function(font, text, style, options, node, el, hasNext) {

		var redraw = (text === null);

		if (redraw) text = node.alt;

		var viewBox = font.viewBox;

		var size = style.computedFontSize || (style.computedFontSize = new Cufon.CSS.Size(getFontSizeInPixels(el, style.get('fontSize')) + 'px', font.baseSize));

		var wrapper, canvas;

		if (redraw) {
			wrapper = node;
			canvas = node.firstChild;
		}
		else {
			wrapper = document.createElement('cufon');
			wrapper.className = 'cufon cufon-vml';
			wrapper.alt = text;

			canvas = document.createElement('cufoncanvas');
			wrapper.appendChild(canvas);

			if (options.printable) {
				var print = document.createElement('cufontext');
				print.appendChild(document.createTextNode(text));
				wrapper.appendChild(print);
			}

			// ie6, for some reason, has trouble rendering the last VML element in the document.
			// we can work around this by injecting a dummy element where needed.
			// @todo find a better solution
			if (!hasNext) wrapper.appendChild(document.createElement('cvml:shape'));
		}

		var wStyle = wrapper.style;
		var cStyle = canvas.style;

		var height = size.convert(viewBox.height), roundedHeight = Math.ceil(height);
		var roundingFactor = roundedHeight / height;
		var stretchFactor = roundingFactor * Cufon.CSS.fontStretch(style.get('fontStretch'));
		var minX = viewBox.minX, minY = viewBox.minY;

		cStyle.height = roundedHeight;
		cStyle.top = Math.round(size.convert(minY - font.ascent));
		cStyle.left = Math.round(size.convert(minX));

		wStyle.height = size.convert(font.height) + 'px';

		var color = style.get('color');
		var chars = Cufon.CSS.textTransform(text, style).split('');

		var jumps = font.spacing(chars,
			getSpacingValue(el, style, size, 'letterSpacing'),
			getSpacingValue(el, style, size, 'wordSpacing')
		);

		if (!jumps.length) return null;

		var width = jumps.total;
		var fullWidth = -minX + width + (viewBox.width - jumps[jumps.length - 1]);

		var shapeWidth = size.convert(fullWidth * stretchFactor), roundedShapeWidth = Math.round(shapeWidth);

		var coordSize = fullWidth + ',' + viewBox.height, coordOrigin;
		var stretch = 'r' + coordSize + 'ns';

		var fill = options.textGradient && gradientFill(options.textGradient);

		var glyphs = font.glyphs, offsetX = 0;
		var shadows = options.textShadow;
		var i = -1, j = 0, chr;

		while (chr = chars[++i]) {

			var glyph = glyphs[chars[i]] || font.missingGlyph, shape;
			if (!glyph) continue;

			if (redraw) {
				// some glyphs may be missing so we can't use i
				shape = canvas.childNodes[j];
				while (shape.firstChild) shape.removeChild(shape.firstChild); // shadow, fill
			}
			else {
				shape = document.createElement('cvml:shape');
				canvas.appendChild(shape);
			}

			shape.stroked = 'f';
			shape.coordsize = coordSize;
			shape.coordorigin = coordOrigin = (minX - offsetX) + ',' + minY;
			shape.path = (glyph.d ? 'm' + glyph.d + 'xe' : '') + 'm' + coordOrigin + stretch;
			shape.fillcolor = color;

			if (fill) shape.appendChild(fill.cloneNode(false));

			// it's important to not set top/left or IE8 will grind to a halt
			var sStyle = shape.style;
			sStyle.width = roundedShapeWidth;
			sStyle.height = roundedHeight;

			if (shadows) {
				// due to the limitations of the VML shadow element there
				// can only be two visible shadows. opacity is shared
				// for all shadows.
				var shadow1 = shadows[0], shadow2 = shadows[1];
				var color1 = Cufon.CSS.color(shadow1.color), color2;
				var shadow = document.createElement('cvml:shadow');
				shadow.on = 't';
				shadow.color = color1.color;
				shadow.offset = shadow1.offX + ',' + shadow1.offY;
				if (shadow2) {
					color2 = Cufon.CSS.color(shadow2.color);
					shadow.type = 'double';
					shadow.color2 = color2.color;
					shadow.offset2 = shadow2.offX + ',' + shadow2.offY;
				}
				shadow.opacity = color1.opacity || (color2 && color2.opacity) || 1;
				shape.appendChild(shadow);
			}

			offsetX += jumps[j++];
		}

		// addresses flickering issues on :hover

		var cover = shape.nextSibling, coverFill, vStyle;

		if (options.forceHitArea) {

			if (!cover) {
				cover = document.createElement('cvml:rect');
				cover.stroked = 'f';
				cover.className = 'cufon-vml-cover';
				coverFill = document.createElement('cvml:fill');
				coverFill.opacity = 0;
				cover.appendChild(coverFill);
				canvas.appendChild(cover);
			}

			vStyle = cover.style;

			vStyle.width = roundedShapeWidth;
			vStyle.height = roundedHeight;

		}
		else if (cover) canvas.removeChild(cover);

		wStyle.width = Math.max(Math.ceil(size.convert(width * stretchFactor)), 0);

		if (HAS_BROKEN_LINEHEIGHT) {

			var yAdjust = style.computedYAdjust;

			if (yAdjust === undefined) {
				var lineHeight = style.get('lineHeight');
				if (lineHeight == 'normal') lineHeight = '1em';
				else if (!isNaN(lineHeight)) lineHeight += 'em'; // no unit
				style.computedYAdjust = yAdjust = 0.5 * (getSizeInPixels(el, lineHeight) - parseFloat(wStyle.height));
			}

			if (yAdjust) {
				wStyle.marginTop = Math.ceil(yAdjust) + 'px';
				wStyle.marginBottom = yAdjust + 'px';
			}

		}

		return wrapper;

	};

})());


/*!
 * The following copyright notice may not be removed under any circumstances.
 * 
 * Copyright:
 * Part of the digitally encoded machine readable outline data for producing the
 * Typefaces provided is copyrighted © 2003 - 2006 Linotype GmbH, www.linotype.com.
 * All rights reserved. This software is the property of Linotype GmbH, and may not
 * be reproduced, modified, disclosed or transferred without the express written
 * approval of Linotype GmbH. Copyright © 1988, 1990, 1993 Adobe Systems
 * Incorporated. All Rights Reserved. Helvetica is a trademark of Heidelberger
 * Druckmaschinen AG, exclusively licensed through Linotype GmbH, and may be
 * registered in certain jurisdictions. This typeface is original artwork of
 * Linotype Design Studio. The design may be protected in certain jurisdictions.
 * 
 * Trademark:
 * Helvetica is a trademark of Heidelberger Druckmaschinen AG, exclusively
 * licensed through Linotype GmbH, and may be registered in certain jurisdictions.
 * 
 * Description:
 * Helvetica is one of the most famous and popular typefaces in the world. It
 * lends an air of lucid efficiency to any typographic message with its clean,
 * no-nonsense shapes. The original typeface was called Haas Grotesk, and was
 * designed in 1957 by Max Miedinger for the Haas'sche Schriftgiesserei (Haas Type
 * Foundry) in Switzerland. In 1960 the name was changed to Helvetica (an
 * adaptation of "Helvetia", the Latin name for Switzerland). Over the years, the
 * Helvetica family was expanded to include many different weights, but these were
 * not as well coordinated with each other as they might have been. In 1983, D.
 * Stempel AG and Linotype re-designed and digitized Neue Helvetica and updated it
 * into a cohesive font family. Today, the original Helvetica family consists of 34
 * different font weights, and the Neue Helvetica family consists of 51 font
 * weights. The Helvetica family now forms an integral part of many digital
 * printers and operating systems and has become a stylistic anchor in our visual
 * culture. It is the quintessential sans serif font, timeless and neutral, and can
 * be used for all types of communication. Helvetica World, an update to the
 * classic Helvetica design using the OpenType font format, contains the following
 * Microsoft code pages: 1252 Latin 1, 1250 Latin 2 Eastern, 1251 Cyrillic, 1253
 * Greek, 1254 Turk, 1255 Hebrew, 1256 Arabic, 1257 Windows Baltic, 1258 Windows
 * Vietnamese, as well as a mixture of box drawing element glyphs and mathematical
 * symbols & operators. In total, each weight of Helvetica World contains more than
 * 1850 different glyph characters!
 * 
 * Manufacturer:
 * Linotype GmbH
 * 
 * Designer:
 * Linotype Design Studio
 * 
 * Vendor URL:
 * http://www.linotype.com
 * 
 * License information:
 * http://www.linotype.com/license
 */
Cufon.registerFont({"w":172,"face":{"font-family":"HelveticaNeueLT Com 77 BdCn","font-weight":700,"font-stretch":"normal","units-per-em":"360","panose-1":"2 11 7 6 3 5 2 3 2 4","ascent":"257","descent":"-103","x-height":"5","bbox":"-9 -324 278 78.0936","underline-thickness":"18","underline-position":"-18","unicode-range":"U+0020-U+20AC"},"glyphs":{" ":{"w":86},"!":{"d":"78,-48r0,48r-50,0r0,-48r50,0xm35,-72r-7,-102r0,-83r50,0v1,65,-2,126,-7,185r-36,0","w":106},"\"":{"d":"26,-257r45,0r0,116r-45,0r0,-116xm96,-257r45,0r0,116r-45,0r0,-116","w":166},"#":{"d":"66,-103r35,0r6,-44r-35,0xm0,-103r31,0r6,-44r-26,0r0,-40r31,0r8,-63r34,0r-7,63r35,0r8,-63r34,0r-7,63r26,0r0,40r-31,0r-6,44r26,0r0,40r-31,0r-8,63r-34,0r7,-63r-35,0r-7,63r-35,0r8,-63r-27,0r0,-40"},"$":{"d":"125,-137v70,20,55,152,-28,142r0,31r-23,0r0,-31v-50,-3,-73,-28,-71,-81r50,0v-1,22,3,39,21,43r0,-73v-38,-10,-68,-29,-68,-75v0,-45,26,-70,68,-74r0,-25r23,0r0,25v43,4,68,25,66,73r-49,0v-1,-17,-4,-31,-17,-35r0,68xm74,-217v-25,6,-23,49,0,58r0,-58xm97,-33v30,-6,25,-57,0,-64r0,64"},"%":{"d":"197,-261r32,0r-147,272r-32,0xm64,-228v-17,1,-16,19,-16,40v1,23,-3,43,16,43v18,0,16,-21,16,-43v0,-21,0,-38,-16,-40xm64,-117v-43,1,-54,-25,-54,-69v0,-43,10,-69,54,-69v44,0,54,26,54,69v0,44,-12,69,-54,69xm216,5v-44,0,-54,-27,-54,-69v0,-42,10,-68,54,-68v44,0,54,25,54,68v0,44,-10,69,-54,69xm216,-105v-17,0,-15,19,-15,40v1,23,-2,41,15,43v18,-2,16,-20,16,-43v0,-21,2,-40,-16,-40","w":280},"&":{"d":"159,-203v0,34,-20,47,-44,66r38,52v5,-10,10,-24,9,-38r45,0v0,31,-12,56,-26,75r34,48r-56,0r-14,-20v-12,16,-36,24,-62,25v-51,0,-79,-27,-79,-74v0,-37,25,-57,52,-74v-11,-18,-26,-32,-26,-60v0,-36,27,-54,65,-54v39,0,64,16,64,54xm80,-113v-32,16,-37,77,10,78v14,0,24,-5,33,-16xm94,-225v-35,2,-20,42,-3,57v11,-9,25,-18,26,-36v0,-14,-9,-22,-23,-21","w":213},"'":{"d":"24,-257r45,0r0,116r-45,0r0,-116","w":93},"(":{"d":"68,66v-64,-86,-64,-237,0,-323r39,0v-54,78,-54,246,0,323r-39,0","w":106},")":{"d":"0,66v54,-79,54,-244,0,-323r38,0v65,86,66,238,0,323r-38,0","w":106},"*":{"d":"85,-257r0,46r44,-14r9,28r-44,14r27,38r-24,17r-27,-38r-27,38r-24,-17r27,-38r-43,-14r9,-28r43,14r0,-46r30,0","w":140},"+":{"d":"86,-69r-69,0r0,-44r69,0r0,-69r44,0r0,69r69,0r0,44r-69,0r0,69r-44,0r0,-69","w":216},",":{"d":"19,34v14,-2,20,-17,19,-34r-19,0r0,-56r48,0v0,53,8,112,-48,115r0,-25","w":86,"k":{" ":13}},"-":{"d":"117,-125r0,42r-101,0r0,-42r101,0","w":133},".":{"d":"67,-56r0,56r-48,0r0,-56r48,0","w":86,"k":{" ":13}},"\/":{"d":"80,-262r41,0r-82,267r-40,0","w":119},"0":{"d":"86,5v-71,0,-80,-52,-80,-124v0,-72,6,-136,80,-136v70,0,80,51,80,124v0,74,-6,136,-80,136xm86,-221v-39,7,-28,65,-28,113v0,36,-6,76,28,79v41,-5,28,-65,28,-113v0,-37,7,-77,-28,-79"},"1":{"d":"15,-214v36,0,58,-11,64,-41r38,0r0,255r-51,0r0,-180r-51,0r0,-34"},"2":{"d":"86,-255v93,0,93,116,36,151v-20,19,-45,37,-55,64r96,0r0,40r-157,0v0,-85,68,-105,99,-158v11,-19,9,-65,-20,-63v-26,2,-29,24,-29,50r-50,0v-2,-56,24,-84,80,-84"},"3":{"d":"81,5v-50,0,-74,-30,-74,-80r50,0v1,26,3,46,28,46v24,1,29,-17,29,-41v1,-32,-14,-48,-51,-43r0,-34v32,3,47,-11,46,-41v-1,-21,-6,-32,-24,-33v-23,0,-27,18,-27,41r-47,0v-1,-50,27,-74,75,-75v45,0,73,20,73,66v0,31,-17,49,-39,57v32,5,46,27,46,60v0,50,-29,78,-85,77"},"4":{"d":"5,-95r85,-160r53,0r0,162r25,0r0,40r-25,0r0,53r-47,0r0,-53r-91,0r0,-42xm96,-93r-1,-97r-50,97r51,0"},"5":{"d":"82,-135v-15,0,-23,10,-25,24r-46,0r9,-139r133,0r0,40r-94,0r-5,58v10,-13,25,-18,47,-19v47,0,62,35,62,82v0,60,-22,94,-81,94v-53,0,-77,-27,-76,-78r50,0v1,21,3,42,25,42v26,-1,32,-20,31,-50v-1,-29,-2,-54,-30,-54"},"6":{"d":"88,-127v-25,0,-28,19,-29,48v0,26,4,49,29,50v26,0,28,-24,28,-50v0,-29,-3,-48,-28,-48xm5,-114v0,-87,18,-158,112,-138v28,7,43,28,45,62r-50,0v-1,-19,-4,-31,-23,-31v-35,-1,-34,44,-31,77v8,-14,24,-22,47,-22v47,0,63,34,63,80v0,58,-24,91,-83,91v-67,0,-80,-53,-80,-119"},"7":{"d":"165,-210v-39,56,-65,126,-75,210r-54,0v10,-82,39,-150,79,-205r-107,0r0,-45r157,0r0,40"},"8":{"d":"86,-117v-23,0,-29,19,-29,44v0,24,5,44,29,44v25,0,30,-19,30,-44v1,-25,-6,-44,-30,-44xm86,-150v18,0,27,-15,26,-36v0,-23,-9,-35,-26,-35v-17,0,-25,12,-25,35v0,21,7,36,25,36xm86,5v-54,0,-80,-27,-81,-77v-1,-33,17,-57,43,-64v-22,-7,-36,-21,-36,-49v0,-49,28,-70,74,-70v47,0,75,21,75,70v0,28,-16,42,-36,50v28,5,43,31,43,63v-1,50,-28,77,-82,77"},"9":{"d":"85,-221v-26,0,-28,24,-28,50v0,30,3,49,28,49v25,0,28,-19,28,-49v0,-26,-2,-50,-28,-50xm168,-136v3,87,-19,159,-112,138v-28,-6,-44,-26,-45,-61r50,0v1,19,4,29,23,30v34,0,33,-44,31,-77v-8,13,-25,23,-48,22v-45,-1,-62,-33,-62,-80v1,-58,24,-91,82,-91v68,-1,79,53,81,119"},":":{"d":"19,-188r48,0r0,57r-48,0r0,-57xm19,-56r48,0r0,56r-48,0r0,-56","w":86},";":{"d":"67,-188r0,57r-48,0r0,-57r48,0xm19,34v14,-2,20,-17,19,-34r-19,0r0,-56r48,0v0,53,8,112,-48,115r0,-25","w":86},"<":{"d":"17,-110r182,-75r0,45r-122,49r122,49r0,45r-182,-75r0,-38","w":216},"=":{"d":"17,-74r182,0r0,44r-182,0r0,-44xm17,-153r182,0r0,45r-182,0r0,-45","w":216},">":{"d":"17,-42r122,-49r-122,-49r0,-45r182,75r0,38r-182,75r0,-45","w":216},"?":{"d":"108,-48r0,48r-50,0r0,-48r50,0xm86,-226v-23,0,-27,23,-26,49r-47,0v-2,-53,22,-79,71,-83v73,-6,97,80,54,126v-16,17,-35,30,-33,63r-44,0v-9,-65,50,-69,50,-124v0,-16,-8,-32,-25,-31","w":173},"@":{"d":"51,-128v-4,93,116,122,180,76r32,0v-26,34,-61,57,-119,57v-81,0,-134,-54,-134,-134v0,-79,53,-133,134,-133v74,0,134,36,134,109v0,61,-37,95,-91,103v-15,2,-20,-8,-24,-19v-30,36,-96,14,-96,-42v0,-68,80,-120,121,-65r5,-19r31,0r-23,105v0,5,2,7,7,7v25,-5,38,-32,38,-62v0,-54,-42,-83,-96,-83v-60,0,-96,40,-99,100xm148,-162v-25,0,-38,20,-40,45v0,15,10,29,25,29v41,0,61,-74,15,-74","w":288},"A":{"d":"75,-97r50,0r-25,-115xm68,-257r64,0r68,257r-54,0r-12,-54r-68,0r-12,54r-54,0","w":200,"k":{"y":6,"w":6,"v":6,"Y":20,"W":4,"V":4,"T":20}},"B":{"d":"132,-77v0,-35,-26,-42,-62,-39r0,78v36,2,62,-3,62,-39xm126,-185v0,-32,-23,-35,-56,-34r0,67v32,1,56,-2,56,-33xm186,-75v3,84,-86,77,-168,75r0,-257v75,1,163,-14,160,65v-1,30,-16,48,-39,57v29,4,46,26,47,60","w":200},"C":{"d":"13,-129v0,-76,12,-133,87,-133v59,0,81,35,80,92r-52,0v-2,-32,-3,-54,-31,-54v-39,0,-33,56,-33,99v0,44,-4,92,34,92v31,0,30,-32,32,-65r52,0v0,61,-19,103,-82,103v-76,0,-87,-57,-87,-134","w":193,"k":{"\u0104":6,"\u00c4":6,"A":6}},"D":{"d":"139,-131v0,-55,-5,-97,-67,-88r0,181v65,8,67,-35,67,-93xm190,-132v0,77,-13,132,-88,132r-81,0r0,-257r84,0v72,-1,85,53,85,125","w":206,"k":{"\u0104":12,"\u00c4":12,"Y":20,"A":12,".":9,",":9}},"E":{"d":"162,-257r0,42r-92,0r0,61r86,0r0,42r-86,0r0,70r95,0r0,42r-147,0r0,-257r144,0","w":173},"F":{"d":"18,-257r144,0r0,42r-92,0r0,61r86,0r0,42r-86,0r0,112r-52,0r0,-257","w":166,"k":{"\u0119":7,"\u0105":7,"\u00e4":7,"\u0104":13,"\u00c4":13,"e":7,"a":7,"A":13,".":40,",":40}},"G":{"d":"15,-131v0,-73,13,-131,87,-131v56,0,79,28,80,81r-50,0v-2,-21,-8,-42,-29,-43v-34,5,-36,42,-36,90v0,44,-3,95,36,101v29,-3,35,-32,32,-67r-34,0r0,-39r84,0r0,139r-38,0v-1,-7,2,-18,-1,-24v-11,18,-27,29,-54,29v-71,0,-77,-64,-77,-136","w":200},"H":{"d":"18,-257r52,0r0,98r60,0r0,-98r52,0r0,257r-52,0r0,-114r-60,0r0,114r-52,0r0,-257","w":200},"I":{"d":"21,0r0,-257r51,0r0,257r-51,0","w":92},"J":{"d":"76,-33v21,-1,23,-17,23,-40r0,-184r52,0r0,185v1,54,-25,77,-78,77v-52,0,-70,-33,-68,-86r48,0v0,26,-1,48,23,48","w":166},"K":{"d":"70,-257r1,103r65,-103r56,0r-70,110r78,147r-58,0r-53,-105r-19,29r0,76r-52,0r0,-257r52,0","w":193},"L":{"d":"18,0r0,-257r52,0r0,215r92,0r0,42r-144,0","w":166,"k":{"y":13,"Y":33,"W":27,"V":27,"T":27}},"M":{"d":"19,-257r77,0r38,181r37,-181r76,0r0,257r-47,0r-1,-205r-46,205r-40,0r-46,-205r0,205r-48,0r0,-257","w":266},"N":{"d":"78,-257r63,176r0,-176r48,0r0,257r-59,0r-64,-180r0,180r-48,0r0,-257r60,0","w":206},"O":{"d":"100,5v-76,0,-87,-57,-87,-134v0,-76,12,-133,87,-133v76,0,88,58,88,133v0,75,-11,134,-88,134xm100,-224v-41,0,-36,52,-36,95v0,44,-6,96,36,96v42,0,36,-53,36,-96v0,-43,6,-95,-36,-95","w":200,"k":{"\u0104":9,"\u00c4":9,"Y":9,"T":9,"A":9,".":9,",":9}},"P":{"d":"127,-179v0,-35,-21,-43,-57,-40r0,78v34,3,57,-4,57,-38xm179,-180v1,62,-42,82,-109,77r0,103r-52,0r0,-257r91,0v47,2,70,29,70,77","w":186,"k":{"\u00f6":9,"\u00f3":9,"\u0119":9,"\u0105":9,"\u00e4":9,"\u0104":19,"\u00c4":19,"o":9,"e":9,"a":9,"A":19,".":54,",":54}},"Q":{"d":"100,-224v-41,0,-36,52,-36,95v0,44,-6,96,36,96v42,0,36,-53,36,-96v0,-43,6,-95,-36,-95xm188,-129v-1,42,-2,80,-20,105r27,28r-30,28r-31,-32v-11,4,-20,5,-34,5v-76,1,-87,-57,-87,-134v0,-76,12,-133,87,-133v76,0,89,58,88,133","w":200},"R":{"d":"139,-127v61,-1,28,95,53,127r-56,0v-20,-29,14,-108,-38,-109r-28,0r0,109r-52,0r0,-257v76,1,164,-16,164,66v0,35,-13,59,-43,64xm70,-145v35,2,60,-3,60,-38v0,-34,-26,-38,-60,-36r0,74","w":200,"k":{"\u00dc":-4,"Y":6,"W":-4,"U":-4,"T":6}},"S":{"d":"90,5v-58,0,-84,-27,-82,-85r52,0v-2,29,6,47,34,47v28,0,43,-41,21,-58v-37,-28,-103,-25,-103,-95v0,-51,29,-75,79,-76v51,0,82,23,80,76r-50,0v-1,-22,-6,-38,-28,-38v-28,0,-36,30,-25,50v33,33,111,29,111,100v0,54,-34,79,-89,79","w":186},"T":{"d":"168,-257r0,42r-56,0r0,215r-52,0r0,-215r-56,0r0,-42r164,0","k":{"\u00fc":27,"\u00f6":27,"\u00f3":27,"\u0119":27,"\u0105":27,"\u00e4":27,"\u0104":20,"\u00c4":20,"y":20,"w":27,"u":27,"r":27,"o":27,"i":6,"e":27,"a":27,"A":20,";":27,":":27,".":33,"-":20,",":33}},"U":{"d":"97,5v-55,1,-82,-27,-82,-83r0,-179r52,0r0,179v-1,26,6,45,30,45v24,0,31,-19,30,-45r0,-179r52,0r0,179v1,56,-29,82,-82,83","w":193},"V":{"d":"57,-257r37,190r38,-190r54,0r-59,257r-67,0r-59,-257r56,0","w":186,"k":{"\u00fc":11,"\u00f6":9,"\u00f3":9,"\u0119":9,"\u0105":6,"\u00e4":6,"\u0104":13,"\u00c4":13,"u":11,"o":9,"i":9,"e":9,"a":6,"A":13,";":6,":":6,".":26,"-":6,",":33}},"W":{"d":"3,-257r50,0r29,190r30,-190r50,0r31,190r28,-190r50,0r-47,257r-58,0r-30,-186r-28,186r-58,0","w":273,"k":{"\u00f6":6,"\u00f3":6,"\u0119":6,"\u0105":6,"\u00e4":6,"\u0104":6,"\u00c4":6,"o":6,"e":6,"a":6,"A":6,".":27,"-":6,",":27}},"X":{"d":"7,-257r57,0r34,83r32,-83r57,0r-60,127r64,130r-58,0r-37,-87r-37,87r-57,0r64,-130","w":193},"Y":{"d":"59,-257r35,99r36,-99r56,0r-66,156r0,101r-52,0r0,-101r-67,-156r58,0","w":187,"k":{"\u00fc":22,"\u00f6":29,"\u00f3":29,"\u0119":29,"\u0105":29,"\u00e4":29,"\u015a":6,"\u00d6":7,"\u00d3":7,"\u0104":20,"\u00c4":20,"u":22,"o":29,"i":9,"e":29,"a":29,"S":6,"O":7,"A":20,";":13,":":13,".":40,"-":27,",":40}},"Z":{"d":"9,-38r94,-177r-88,0r0,-42r148,0r0,39r-96,176r98,0r0,42r-156,0r0,-38","w":173},"[":{"d":"29,-257r82,0r0,36r-38,0r0,251r38,0r0,36r-82,0r0,-323","w":113},"\\":{"d":"-1,-262r40,0r82,267r-41,0","w":119},"]":{"d":"2,30r38,0r0,-251r-38,0r0,-36r83,0r0,323r-83,0r0,-36","w":113},"^":{"d":"20,-111r68,-139r40,0r68,139r-45,0r-43,-89r-43,89r-45,0","w":216},"_":{"d":"0,45r0,-18r180,0r0,18r-180,0","w":180},"`":{"d":"30,-217r-36,-52r50,0r19,52r-33,0","w":79},"a":{"d":"84,-165v-17,0,-24,13,-23,31r-45,0v-1,-45,25,-65,68,-65v45,1,70,14,70,60v0,46,-6,104,7,139r-48,0v-5,-5,-3,-15,-7,-20v-11,19,-22,24,-49,25v-56,3,-61,-90,-20,-108v19,-15,69,-4,70,-38v0,-15,-6,-25,-23,-24xm76,-29v34,2,32,-34,31,-68v-17,14,-51,9,-49,41v0,14,4,27,18,27","w":173,"k":{"w":-4}},"b":{"d":"109,5v-25,1,-33,-11,-45,-26r0,21r-47,0r0,-257r49,0v1,26,-2,57,1,81v9,-14,22,-23,42,-23v49,0,59,42,59,102v0,61,-10,99,-59,102xm93,-161v-28,0,-27,30,-27,64v0,34,-1,64,27,64v28,0,25,-31,25,-64v0,-34,3,-64,-25,-64","w":180},"c":{"d":"9,-97v0,-62,19,-102,79,-102v46,0,70,29,69,75r-47,0v0,-20,-4,-39,-23,-39v-30,0,-28,35,-28,67v0,32,-3,67,27,67v20,0,24,-19,24,-45r47,0v-1,50,-20,79,-73,79v-60,0,-75,-41,-75,-102","w":166,"k":{"y":4,"l":7}},"d":{"d":"71,-199v21,-1,32,11,43,23r0,-81r49,0r0,257r-47,0v-1,-6,2,-16,-1,-21v-10,17,-20,26,-44,26v-49,0,-59,-42,-59,-102v0,-61,10,-100,59,-102xm87,-161v-28,0,-25,31,-25,64v0,34,-3,64,25,64v28,0,27,-30,27,-64v0,-34,1,-64,-27,-64","w":180},"e":{"d":"86,-199v62,0,73,47,71,110r-98,0v0,28,-1,60,25,60v19,0,24,-16,26,-36r44,0v-3,45,-22,70,-70,70v-63,0,-75,-44,-75,-104v0,-59,17,-100,77,-100xm85,-165v-22,1,-27,22,-26,46r51,0v-2,-22,-1,-47,-25,-46","w":166,"k":{"x":4}},"f":{"d":"106,-226v-24,-3,-33,6,-29,32r29,0r0,34r-29,0r0,160r-50,0r0,-160r-25,0r0,-34r25,0v-7,-56,23,-75,79,-67r0,35","w":106,"k":{"\u0105":7,"\u00e4":7,"a":7}},"g":{"d":"88,-161v-30,3,-26,37,-26,70v0,24,2,51,25,51v25,0,27,-29,27,-56v-1,-38,1,-61,-26,-65xm73,-199v20,0,31,12,41,27r0,-22r48,0r0,184v-1,54,-24,76,-81,76v-40,1,-65,-15,-66,-52r48,0v-1,13,11,20,24,21v29,2,30,-34,26,-61v-9,13,-22,24,-41,24v-48,0,-59,-39,-59,-98v0,-51,8,-99,60,-99","w":180,"k":{"y":-4}},"h":{"d":"114,-134v0,-18,-4,-27,-21,-27v-18,0,-27,11,-27,32r0,129r-49,0r0,-257r49,0r1,83v22,-42,96,-32,96,30r0,144r-49,0r0,-134","w":180},"i":{"d":"18,-260r50,0r0,43r-50,0r0,-43xm18,-194r50,0r0,194r-50,0r0,-194","w":86},"j":{"d":"18,-260r50,0r0,43r-50,0r0,-43xm-9,27v23,3,27,-8,27,-31r0,-190r50,0r0,207v2,44,-30,53,-77,50r0,-36","w":86},"k":{"d":"68,-257r1,136r50,-73r55,0r-56,77r64,117r-55,0r-41,-80r-18,23r0,57r-50,0r0,-257r50,0","w":180},"l":{"d":"18,-257r50,0r0,257r-50,0r0,-257","w":86},"m":{"d":"92,-161v-18,0,-27,12,-26,34r0,127r-49,0r0,-194r47,0v1,6,-2,16,1,20v16,-34,86,-33,94,6v7,-19,24,-31,49,-31v35,0,49,22,48,58r0,141r-49,0r0,-135v0,-16,-5,-26,-20,-26v-18,0,-27,12,-26,34r0,127r-49,0r0,-135v0,-16,-5,-26,-20,-26","w":272},"n":{"d":"114,-134v0,-18,-4,-27,-21,-27v-18,0,-27,11,-27,32r0,129r-49,0r0,-194r47,0v1,7,-2,18,1,23v18,-43,98,-38,98,27r0,144r-49,0r0,-134","w":180,"k":{"y":-4}},"o":{"d":"86,5v-62,1,-76,-41,-76,-102v-1,-61,17,-101,76,-102v63,-1,77,41,77,102v1,61,-17,101,-77,102xm86,-165v-36,4,-26,57,-26,96v0,20,5,40,26,40v27,0,27,-32,27,-68v0,-37,0,-64,-27,-68","k":{"v":-4}},"p":{"d":"109,5v-21,1,-32,-11,-43,-23r0,81r-49,0r0,-257r47,0v1,6,-2,16,1,21v10,-17,20,-26,44,-26v49,0,59,42,59,102v0,61,-10,100,-59,102xm93,-161v-28,0,-27,30,-27,64v0,34,-1,64,27,64v28,0,25,-31,25,-64v0,-34,3,-64,-25,-64","w":180,"k":{".":6,",":6}},"q":{"d":"71,-199v25,-1,33,11,45,26r0,-21r47,0r0,257r-49,0v-1,-26,2,-57,-1,-81v-9,14,-22,23,-42,23v-49,0,-59,-42,-59,-102v0,-61,10,-99,59,-102xm87,-33v28,0,27,-30,27,-64v0,-34,1,-64,-27,-64v-28,0,-25,31,-25,64v0,34,-3,64,25,64","w":180},"r":{"d":"118,-150v-28,-4,-52,5,-52,34r0,116r-49,0r0,-194r47,0v1,8,-2,20,1,26v10,-17,26,-35,53,-30r0,48","w":119,"k":{"y":-6,"v":-6,"q":6,".":27,"-":13,",":27}},"s":{"d":"80,5v-50,1,-73,-20,-72,-68r45,0v-1,20,8,33,26,34v29,2,33,-38,7,-45v-35,-10,-77,-20,-76,-66v1,-41,28,-58,71,-59v44,0,68,19,66,63r-44,0v-1,-18,-4,-29,-22,-29v-31,-1,-30,37,-2,44v36,9,75,18,73,65v-1,42,-30,60,-72,61","w":159},"t":{"d":"106,0v-45,6,-79,3,-79,-49r0,-111r-25,0r0,-34r25,0r0,-55r50,0r0,55r29,0r0,34r-29,0r0,105v-3,21,11,23,29,20r0,35","w":106},"u":{"d":"66,-60v0,18,4,27,21,27v18,0,27,-11,27,-32r0,-129r49,0r0,194r-47,0v-1,-7,2,-18,-1,-23v-18,43,-98,38,-98,-27r0,-144r49,0r0,134","w":180},"v":{"d":"108,-194r50,0r-49,194r-57,0r-50,-194r52,0r28,139","w":159,"k":{"\u0105":6,"\u00e4":6,"a":6,".":20,",":20}},"w":{"d":"3,-194r49,0r24,138r24,-138r54,0r26,138r23,-138r48,0r-42,194r-56,0r-27,-138r-24,138r-57,0","w":253,"k":{".":13,",":13}},"x":{"d":"110,-194r52,0r-51,94r53,100r-52,0r-29,-63r-29,63r-51,0r52,-100r-50,-94r52,0r26,59","w":166},"y":{"d":"17,26v23,5,39,-4,39,-26r-54,-194r52,0r29,134r25,-134r50,0r-57,215v-11,39,-35,44,-84,42r0,-37","w":159,"k":{"\u0105":6,"\u00e4":6,"a":6,".":20,",":20}},"z":{"d":"9,-38r77,-115r-74,0r0,-41r133,0r0,38r-78,116r78,0r0,40r-136,0r0,-38","w":153},"{":{"d":"72,66v-74,-1,-5,-139,-61,-147r0,-29v57,-7,-13,-146,61,-147r32,0r0,36v-57,-6,6,112,-51,126v34,5,25,59,26,99v0,17,5,30,25,26r0,36r-32,0","w":113},"|":{"d":"18,-262r44,0r0,267r-44,0r0,-267","w":79},"}":{"d":"79,-51v0,49,13,118,-38,117r-32,0r0,-36v58,7,-6,-111,51,-126v-34,-5,-26,-59,-26,-99v0,-19,-5,-29,-25,-26r0,-36v43,-4,70,6,70,48v0,38,-12,97,24,99r0,29v-13,0,-24,15,-24,30","w":113},"~":{"d":"146,-101v16,0,27,-13,32,-25r13,39v-9,16,-20,30,-44,30v-34,0,-47,-24,-77,-24v-15,0,-26,13,-32,24r-13,-38v9,-16,20,-30,44,-31v28,-1,51,25,77,25","w":216},"\u00c4":{"d":"111,-320r40,0r0,42r-40,0r0,-42xm49,-320r40,0r0,42r-40,0r0,-42xm75,-97r50,0r-25,-115xm68,-257r64,0r68,257r-54,0r-12,-54r-68,0r-12,54r-54,0","w":200,"k":{"y":6,"w":6,"v":6,"Y":20,"W":4,"V":4,"T":20}},"\u0104":{"d":"135,35v-9,23,20,24,32,13r10,18v-20,16,-77,20,-75,-16v1,-24,23,-41,44,-50r-12,-54r-68,0r-12,54r-54,0r68,-257r64,0r68,257r-30,0v-12,11,-29,20,-35,35xm75,-97r50,0r-25,-115","w":200,"k":{"y":6,"w":6,"v":6,"Y":20,"W":4,"V":4,"T":20}},"\u0106":{"d":"99,-324r50,0r-35,52r-34,0xm13,-129v0,-76,12,-133,87,-133v59,0,81,35,80,92r-52,0v-2,-32,-3,-54,-31,-54v-39,0,-33,56,-33,99v0,44,-4,92,34,92v31,0,30,-32,32,-65r52,0v0,61,-19,103,-82,103v-76,0,-87,-57,-87,-134","w":193,"k":{"\u0104":6,"\u00c4":6,"A":6}},"\u0118":{"d":"123,35v-8,23,19,24,31,13r11,18v-20,16,-77,21,-75,-16v2,-24,23,-41,44,-50r-116,0r0,-257r144,0r0,42r-92,0r0,61r86,0r0,42r-86,0r0,70r95,0r0,42v-21,4,-32,21,-42,35","w":173},"\u0141":{"d":"18,-92r-18,11r0,-38r18,-11r0,-127r52,0r0,94r45,-28r0,38r-45,28r0,83r92,0r0,42r-144,0r0,-92","w":166},"\u0143":{"d":"105,-324r50,0r-35,52r-34,0xm78,-257r63,176r0,-176r48,0r0,257r-59,0r-64,-180r0,180r-48,0r0,-257r60,0","w":206},"\u00d3":{"d":"101,-324r50,0r-35,52r-34,0xm100,5v-76,0,-87,-57,-87,-134v0,-76,12,-133,87,-133v76,0,88,58,88,133v0,75,-11,134,-88,134xm100,-224v-41,0,-36,52,-36,95v0,44,-6,96,36,96v42,0,36,-53,36,-96v0,-43,6,-95,-36,-95","w":200,"k":{"\u0104":9,"\u00c4":9,"Y":9,"T":9,"A":9,".":9,",":9}},"\u00d6":{"d":"111,-319r41,0r0,42r-41,0r0,-42xm49,-319r41,0r0,42r-41,0r0,-42xm100,5v-76,0,-87,-57,-87,-134v0,-76,12,-133,87,-133v76,0,88,58,88,133v0,75,-11,134,-88,134xm100,-224v-41,0,-36,52,-36,95v0,44,-6,96,36,96v42,0,36,-53,36,-96v0,-43,6,-95,-36,-95","w":200,"k":{"\u0104":9,"\u00c4":9,"Y":9,"T":9,"A":9,".":9,",":9}},"\u015a":{"d":"94,-324r50,0r-36,52r-33,0xm90,5v-58,0,-84,-27,-82,-85r52,0v-2,29,6,47,34,47v28,0,43,-41,21,-58v-37,-28,-103,-25,-103,-95v0,-51,29,-75,79,-76v51,0,82,23,80,76r-50,0v-1,-22,-6,-38,-28,-38v-28,0,-36,30,-25,50v33,33,111,29,111,100v0,54,-34,79,-89,79","w":186},"\u00dc":{"d":"108,-319r40,0r0,42r-40,0r0,-42xm46,-319r40,0r0,42r-40,0r0,-42xm97,5v-55,1,-82,-27,-82,-83r0,-179r52,0r0,179v-1,26,6,45,30,45v24,0,31,-19,30,-45r0,-179r52,0r0,179v1,56,-29,82,-82,83","w":193},"\u0179":{"d":"89,-324r49,0r-35,52r-34,0xm9,-38r94,-177r-88,0r0,-42r148,0r0,39r-96,176r98,0r0,42r-156,0r0,-38","w":173},"\u017b":{"d":"109,-319r0,42r-40,0r0,-42r40,0xm9,-38r94,-177r-88,0r0,-42r148,0r0,39r-96,176r98,0r0,42r-156,0r0,-38","w":173},"\u00e4":{"d":"98,-264r40,0r0,43r-40,0r0,-43xm36,-264r40,0r0,43r-40,0r0,-43xm84,-165v-17,0,-24,13,-23,31r-45,0v-1,-45,25,-65,68,-65v45,1,70,14,70,60v0,46,-6,104,7,139r-48,0v-5,-5,-3,-15,-7,-20v-11,19,-22,24,-49,25v-56,3,-61,-90,-20,-108v19,-15,69,-4,70,-38v0,-15,-6,-25,-23,-24xm76,-29v34,2,32,-34,31,-68v-17,14,-51,9,-49,41v0,14,4,27,18,27","w":173,"k":{"w":-4}},"\u0105":{"d":"108,44v1,18,21,11,30,4r9,18v-18,17,-70,19,-68,-16v0,-23,20,-38,34,-50v-3,-5,-4,-15,-7,-20v-11,19,-22,24,-49,25v-56,3,-61,-90,-20,-108v19,-15,69,-4,70,-38v0,-15,-6,-25,-23,-24v-17,0,-24,13,-23,31r-45,0v-1,-45,25,-65,68,-65v45,1,70,14,70,60v0,46,-6,104,7,139r-24,0v-13,11,-29,30,-29,44xm76,-29v34,2,32,-34,31,-68v-17,14,-51,9,-49,41v0,14,4,27,18,27","w":173,"k":{"w":-4}},"\u0107":{"d":"88,-269r50,0r-35,52r-34,0xm9,-97v0,-62,19,-102,79,-102v46,0,70,29,69,75r-47,0v0,-20,-4,-39,-23,-39v-30,0,-28,35,-28,67v0,32,-3,67,27,67v20,0,24,-19,24,-45r47,0v-1,50,-20,79,-73,79v-60,0,-75,-41,-75,-102","w":166,"k":{"y":4,"l":7}},"\u0119":{"d":"78,78v-57,0,-31,-62,0,-73v-57,0,-70,-46,-69,-104v0,-59,17,-100,77,-100v62,0,73,47,71,110r-98,0v0,28,-1,60,25,60v19,0,24,-16,26,-36r44,0v-2,37,-15,59,-46,68v-13,11,-32,21,-32,41v0,17,23,11,32,4r11,18v-13,8,-22,12,-41,12xm85,-165v-22,1,-27,22,-26,46r51,0v-2,-22,-1,-47,-25,-46","w":166,"k":{"x":4}},"\u0142":{"d":"18,-102r-22,16r0,-32r22,-15r0,-124r50,0r0,91r23,-15r0,32r-23,15r0,134r-50,0r0,-102","w":86},"\u0144":{"d":"90,-269r49,0r-35,52r-34,0xm114,-134v0,-18,-4,-27,-21,-27v-18,0,-27,11,-27,32r0,129r-49,0r0,-194r47,0v1,7,-2,18,1,23v18,-43,98,-38,98,27r0,144r-49,0r0,-134","w":180,"k":{"y":-4}},"\u00f3":{"d":"88,-269r50,0r-35,52r-34,0xm86,5v-62,1,-76,-41,-76,-102v-1,-61,17,-101,76,-102v63,-1,77,41,77,102v1,61,-17,101,-77,102xm86,-165v-36,4,-26,57,-26,96v0,20,5,40,26,40v27,0,27,-32,27,-68v0,-37,0,-64,-27,-68","k":{"v":-4}},"\u00f6":{"d":"97,-264r41,0r0,43r-41,0r0,-43xm35,-264r41,0r0,43r-41,0r0,-43xm86,5v-62,1,-76,-41,-76,-102v-1,-61,17,-101,76,-102v63,-1,77,41,77,102v1,61,-17,101,-77,102xm86,-165v-36,4,-26,57,-26,96v0,20,5,40,26,40v27,0,27,-32,27,-68v0,-37,0,-64,-27,-68","k":{"v":-4}},"\u015b":{"d":"81,-269r50,0r-36,52r-33,0xm80,5v-50,1,-73,-20,-72,-68r45,0v-1,20,8,33,26,34v29,2,33,-38,7,-45v-35,-10,-77,-20,-76,-66v1,-41,28,-58,71,-59v44,0,68,19,66,63r-44,0v-1,-18,-4,-29,-22,-29v-31,-1,-30,37,-2,44v36,9,75,18,73,65v-1,42,-30,60,-72,61","w":159},"\u00df":{"d":"89,-228v-22,0,-24,17,-25,39r0,189r-49,0r0,-190v0,-52,24,-72,76,-72v44,0,70,18,71,61v1,32,-13,43,-32,54v66,18,53,169,-37,149v-5,0,-8,-1,-11,-1r0,-34v32,7,38,-20,38,-51v0,-28,-7,-48,-38,-44r0,-34v24,3,31,-12,30,-34v-1,-17,-5,-32,-23,-32","w":180},"\u00fc":{"d":"101,-264r40,0r0,43r-40,0r0,-43xm39,-264r40,0r0,43r-40,0r0,-43xm66,-60v0,18,4,27,21,27v18,0,27,-11,27,-32r0,-129r49,0r0,194r-47,0v-1,-7,2,-18,-1,-23v-18,43,-98,38,-98,-27r0,-144r49,0r0,134","w":180},"\u017a":{"d":"80,-269r50,0r-36,52r-34,0xm9,-38r77,-115r-74,0r0,-41r133,0r0,38r-78,116r78,0r0,40r-136,0r0,-38","w":153},"\u017c":{"d":"99,-264r0,43r-41,0r0,-43r41,0xm9,-38r77,-115r-74,0r0,-41r133,0r0,38r-78,116r78,0r0,40r-136,0r0,-38","w":153},"\u20ac":{"d":"86,-93v-5,68,40,76,78,37r0,45v-64,38,-132,9,-130,-82r-25,0r11,-28r13,0r1,-18r-25,0r11,-28r15,0v0,-84,79,-111,137,-71r-16,36v-30,-36,-78,-12,-70,35r61,0r-11,28r-51,0r0,18r47,0r-10,28r-36,0"},"\u00b0":{"d":"72,-228v-13,0,-26,13,-26,26v0,14,12,26,26,26v14,0,26,-12,26,-26v0,-13,-13,-26,-26,-26xm72,-148v-32,0,-53,-22,-53,-54v0,-31,21,-53,53,-53v32,0,53,22,53,53v0,32,-21,54,-53,54","w":144},"\u00a0":{"w":86}}});
